ml-connector
Exact OnlineProcore

Exact Online and Procore integration

Exact Online holds your accounting records and GL accounts. Procore manages construction project costs and commitments. Connecting the two keeps your project data aligned with your books. Purchase orders and invoices created in Exact Online flow into Procore so project managers see the full commitment picture, and cost codes are mapped between systems so every charge lands on the correct GL account when it reconciles back to Exact Online.

How Exact Online works

Exact Online is a cloud-based ERP platform for SMEs with region-specific REST APIs using OData v3 query syntax. It exposes purchase orders, purchase invoices, GL accounts, cost centers, items, and contacts through REST endpoints. Authentication uses OAuth 2.0 Authorization Code flow with short-lived access tokens (10 minutes) and rotating refresh tokens (30-day lifetime). The platform supports webhooks for push notifications on topics including purchase orders, invoices, and GL accounts, but the webhook payload contains only the entity key and action, so full entity data must be fetched separately via the REST API. API access is divided by division, and each division ID must be requested from the /current/Me endpoint.

How Procore works

Procore is a construction management platform with REST APIs for projects, commitments, requisitions, cost codes, and budget tracking. It uses OAuth 2.0 Client Credentials flow with developer-managed service accounts, and tokens expire after 1.5 hours. Procore supports webhooks for real-time push on commitments, requisitions, direct costs, and vendors, and webhooks must return a 2xx response within 5 seconds. Most endpoints require company_id and project_id as path or query parameters. Procore does not have standalone GL accounts but uses Cost Codes and Cost Types as the equivalent accounting dimension for mapping project costs to the ledger.

What moves between them

Purchase orders and purchase invoices move from Exact Online into Procore as commitments and cost allocations. Cost codes in Procore are mapped to GL accounts and cost centers in Exact Online so that project commitments and spend can be reconciled to the accounting ledger. Exact Online is the source of truth for purchase orders and invoices; Procore reads this data to ensure project budgets reflect actual commitments. The flow is one-directional from Exact Online into Procore, with no writes back to Exact Online.

How ml-connector handles it

ml-connector manages the two distinct OAuth flows: Exact Online's Authorization Code grant with refresh token rotation (refresh tokens must be used within 30 days or the user re-authorizes), and Procore's Client Credentials with 1.5-hour token lifetime. Because Exact Online webhooks deliver only the entity key and action, ml-connector fetches the full purchase order and invoice records from the Exact Online REST API when a webhook fires. It polls Exact Online on a regular schedule to catch any changes not delivered via webhook, and it matches purchase order line items to Procore cost codes based on the mapped GL account and cost center. Cost codes in Procore that do not exist in Exact Online trigger a validation error, which ml-connector surfaces in the audit log so the mapping can be corrected. All records carry a full audit trail and can be replayed if a downstream cost allocation fails.

A real-world example

A mid-sized construction contractor uses Procore to manage multiple projects and budgets across sites, and Exact Online in the Netherlands to maintain the accounting books. Before the integration, the finance team manually entered purchase orders from Exact Online into Procore as commitments, often weeks after approval, causing budget overages and reconciliation mismatches at month-end. With Exact Online and Procore connected, purchase orders and invoices sync automatically into Procore within minutes of creation in Exact Online. Project managers see accurate commitment totals, cost codes map to the correct GL accounts, and the finance team reconciles Procore project costs to the Exact Online ledger in hours instead of days.

What you can do

  • Sync purchase orders and invoices from Exact Online into Procore as commitments and cost allocations.
  • Map Exact Online GL accounts and cost centers to Procore cost codes so project costs reconcile to the ledger.
  • Bridge Exact Online OAuth 2.0 Authorization Code flow with refresh token rotation and Procore OAuth 2.0 Client Credentials.
  • Fetch full purchase order and invoice data from Exact Online REST API when webhooks fire, since webhook payloads contain only entity keys.
  • Validate cost codes exist in Procore before allocating costs, with full audit trail and replay on failure.

Questions

Why does ml-connector fetch full purchase order data even when Exact Online fires a webhook?
Exact Online webhooks deliver only the entity key and action (create/update/delete), not the full record. ml-connector must fetch the complete purchase order and invoice details from the Exact Online REST API to extract the GL account, cost center, line amounts, and other fields needed to create an accurate commitment in Procore.
How does ml-connector handle the different token lifetimes between Exact Online and Procore?
Exact Online access tokens expire in 10 minutes, and refresh tokens must be used at least once every 30 days or the user must re-authorize. Procore tokens expire in 1.5 hours. ml-connector refreshes Exact Online tokens proactively and monitors their expiry, and it refreshes Procore tokens on every request cycle since the 1.5-hour window is short enough that a token can expire mid-workflow without notice.
What happens if a Procore cost code does not exist in Exact Online?
ml-connector validates that every cost code referenced in a purchase order line maps to a GL account or cost center in Exact Online before creating a commitment in Procore. If the mapping is missing or the Exact Online account does not exist, the record is flagged in the audit log and the sync is paused until the mapping is corrected. This prevents orphaned costs in Procore that cannot reconcile back to the ledger.

Related integrations

Connect Exact Online and Procore

Free to use. Add your credentials, ping your real systems, and see if we fit.

Get started