Deltek and Procore integration
Procore is where construction teams run project budgets, commitments, and field billing. Deltek Vantagepoint is where the same firm keeps project accounting, vendors, and the general ledger. Connecting the two moves approved project spend from Procore into the Deltek ledger without re-keying. Approved subcontractor invoices, direct costs, and committed purchase orders from Procore become AP invoices and journal entries in Deltek, coded to the right firm, project, and GL account. ml-connector handles the different access models on each side and moves the data on a schedule you control.
What moves between them
The flow runs from Procore into Deltek. ml-connector reads approved subcontractor invoices, direct costs, and committed purchase orders from each Procore project and posts them into Deltek as AP invoices and journal entries, with each line mapped to the matching Deltek firm, project, and GL account. Procore vendors are carried into the Deltek firm records that those invoices reference, and committed purchase order and change order totals post as journal entries because Vantagepoint exposes no public purchase order endpoint. Procore cost codes and cost types are aligned to Deltek GL accounts so every posted line lands on a valid account. Procore owns the project cost detail, so ml-connector treats Deltek as the accounting destination and does not push ledger entries back into Procore.
How ml-connector handles it
ml-connector stores both credential sets encrypted and runs two separate auth paths. On the Procore side it requests a client-credentials token for the service account and refreshes it before the 90 minute expiry, paginating each project at up to 100 records per page and reading the rate-limit headers to back off on a 429. On the Deltek side it runs the OAuth2 password grant against the customer's tenant URL and refreshes the bearer token when a call returns 401. Procore vendors map to Deltek firms, Procore cost codes and cost types map to Deltek GL accounts and projects, and these maps are built first so every posted line references a firm and account that already exists. Three real gotchas shape the flow: Vantagepoint has no public purchase order endpoint, so committed POs and change orders are posted as AP invoices and journal entries rather than as Deltek POs; Deltek has no idempotency key, so the connector queries Deltek by invoice and vendor number before writing to avoid duplicates; and the Deltek API user role must have full field visibility or amounts can come back as zero. Procore webhook delivery is not guaranteed, so a Requisitions or DirectCosts event can trigger a run while a nightly reconciliation poll catches anything a webhook missed. Every record carries a full audit trail and can be replayed if a downstream call fails.
A real-world example
A mid-sized general contractor with around 250 staff runs project budgets, commitments, and subcontractor billing in Procore across several active job sites, while its accounting team keeps the project ledger in Deltek Vantagepoint. Before the integration, an AP clerk exported approved subcontractor invoices and direct costs from each Procore project every week and typed the totals into Deltek by hand, set up new subcontractors twice, once in each system, and month-end close stalled while staff reconciled project costs against the ledger. With Deltek and Procore connected, each approved invoice and direct cost posts into Deltek as an AP invoice on the right firm, project, and GL account, new Procore vendors arrive as Deltek firms, and the manual export and re-keying step is gone.
What you can do
- Post approved Procore subcontractor invoices and direct costs into Deltek as AP invoices on the right firm, project, and GL account.
- Carry committed Procore purchase orders and change orders into Deltek as journal entries, since Vantagepoint exposes no PO endpoint.
- Sync Procore vendors into Deltek firm records so every posted invoice references a payee that already exists.
- Map Procore cost codes and cost types to Deltek GL accounts so each line lands on a valid account.
- Bridge Procore client-credentials tokens and the Deltek tenant OAuth2 login, with GET-before-POST dedup, retries, and a full audit trail.
Questions
- Which direction does data move between Deltek and Procore?
- The flow runs from Procore into Deltek. Approved subcontractor invoices, direct costs, committed purchase orders, and the vendors behind them move from Procore into Deltek. Procore owns the project cost detail, so ml-connector treats Deltek as the accounting destination and does not push ledger entries back into Procore.
- How are Procore purchase orders handled when Deltek has no PO API?
- Vantagepoint has purchase order features in its UI but no clearly documented purchase order REST endpoint, so ml-connector does not create Deltek POs. Instead it posts committed Procore purchase orders and change orders into Deltek as AP invoices and journal entries against the matching project and GL account. Procore stays the system of record for commitments while Deltek carries the resulting accounting.
- How does the integration prevent duplicate postings into Deltek?
- Deltek has no native idempotency key, so the connector checks each record before writing. It queries Deltek by invoice number and vendor number, creates the record only when no match exists, and keys its own job dedup to the Procore resource ID. Procore webhook delivery is not guaranteed, so a nightly reconciliation poll catches any event a webhook missed without re-posting work that already landed.
Related integrations
More Deltek integrations
Other systems that connect to Procore
Connect Deltek and Procore
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started