QuickBooks Online and Procore integration
QuickBooks Online runs accounting for your business; Procore tracks construction project costs and commitments. When a vendor bill arrives in QuickBooks Online, the costs need to land on the right Procore project and cost code so your budget and actuals stay in sync. ml-connector reads bills and vendors from QuickBooks Online, maps them to Procore cost codes and budget line items, and posts payment applications back to Procore as bills are paid. Your project ledger stays current without re-keying.
What moves between them
Bills flow from QuickBooks Online into Procore as requisitions and direct costs allocated to the matching cost code. Vendors are synced from QuickBooks Online to Procore's vendor list so purchase orders can reference them. When a bill is marked paid in QuickBooks Online, ml-connector posts a payment application in Procore so the commitment status reflects the cash flow. The sync runs on a schedule that matches your payable cycle.
How ml-connector handles it
ml-connector stores both credential sets encrypted and refreshes the QuickBooks Online access token before it expires every 60 minutes. It listens to QuickBooks Online webhooks for bill and vendor changes and also polls the CDC endpoint on a schedule to catch any changes missed by webhooks, since QuickBooks Online webhook delivery is best-effort. On the Procore side it accepts OAuth 2.0 client credentials and uses the company_id and project_id from the customer configuration to scope all API calls. Bill line items are mapped to Procore cost codes using a configurable lookup table so the integration adapts to your chart of accounts. When Procore API calls rate-limit or fail, ml-connector backs off and retries, and it tracks the OAuth token expiry on both sides so a stale credential does not turn into an outage. Every record carries a full audit trail and can be replayed if a downstream call fails.
A real-world example
A mid-sized construction firm runs QuickBooks Online for general ledger and accounts payable and uses Procore as the system of record for project costs and budgets across five active projects. Before the integration, the accounting team received bills in QuickBooks Online, manually identified which project cost code each line item belonged to, and entered the charges into Procore by hand. This created delays, manual entry errors, and discrepancies between what QuickBooks Online showed as paid and what Procore showed as committed. With QuickBooks Online and Procore connected, each vendor bill flows into Procore immediately with the correct cost code allocation, payment applications post automatically when the bill is paid, and the project managers see accurate budget-to-actual on every project in real time.
What you can do
- Sync vendors from QuickBooks Online to Procore and keep the vendor list in both systems aligned.
- Map QuickBooks Online bill line items to Procore cost codes and budget line items based on your chart of accounts.
- Post bills from QuickBooks Online as requisitions and direct costs in Procore with the correct project and cost code.
- Automatically post payment applications in Procore when bills are marked paid in QuickBooks Online.
- Poll for missed changes in QuickBooks Online and retry failed Procore API calls with exponential backoff and a full audit trail.
Questions
- How are QuickBooks Online bill line items matched to Procore cost codes?
- ml-connector uses a configurable mapping table that matches QuickBooks Online account codes and line item descriptions to Procore cost codes and cost types. The mapping is set up during configuration and can be updated without code changes. If a line item does not match any configured rule, it is flagged in the audit log so you can refine the mapping.
- Does the integration handle both QuickBooks Online webhooks and polling?
- Yes. ml-connector listens to QuickBooks Online webhook events for real-time bill and vendor changes, but also polls the CDC endpoint on a schedule to catch any changes that webhooks may have missed. This dual approach ensures no bills slip through even if webhook delivery is delayed or out of order.
- What happens if the Procore API call fails or times out?
- ml-connector backs off and retries the call up to a configured limit with exponential backoff and jitter. If the call continues to fail, the record is held in the audit queue with full context so you can investigate and replay it manually once the issue is resolved. Every failed call is logged with the Procore error response so you see exactly why it failed.
Related integrations
More QuickBooks Online integrations
Other systems that connect to Procore
Connect QuickBooks Online and Procore
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started