ml-connector
MYOBProcore

MYOB and Procore integration

MYOB runs accounting for SMEs. Procore runs construction project financials. Connecting them keeps your supplier master data and project invoices in lockstep. New suppliers in MYOB appear in Procore as vendors, invoices flow in as requisitions mapped to the correct cost codes, and manual invoice entry into Procore is replaced by automatic sync from your accounting system. ml-connector handles the very different auth models and moves data on the schedule you control.

How MYOB works

MYOB Business API (AccountRight Live v2) exposes suppliers, purchase orders, invoices, supplier payments, GL accounts, tax codes, items, and inventory through REST endpoints with OData v3 query parameters. Authentication requires OAuth2 Authorization Code flow plus company file username and password, both sent on every API call. Access tokens expire in 20 minutes; refresh tokens last one week. MYOB publishes no webhook system, so all data detection relies on polling LastModified timestamps using OData filters. Rate limits are 8 requests per second and 1,000,000 per day per API key.

How Procore works

Procore exposes vendors, purchase order contracts, requisitions, payment applications, cost codes, budget line items, projects, and change orders through REST with JSON bodies. Authentication uses OAuth2 Client Credentials via a Developer Managed Service Account (DMSA), with tokens expiring in 1.5 hours. Procore pushes real-time updates via webhooks for Commitments, Requisitions, DirectCosts, and Vendors, but most writes to Procore come through direct REST calls. Almost all Procore endpoints require company_id as a path or query parameter, and project-scoped work also requires project_id.

What moves between them

The main flow runs from MYOB into Procore. Supplier contact records flow in first, mapped to Procore vendors. Purchase invoices follow, mapped to Procore requisitions and allocated to the correct cost codes based on GL account mapping. Payment records can also flow in to track when invoices clear in MYOB. Reference data such as cost codes and tax codes is read from both systems to ensure allocations land on valid dimensions. Procore's cost codes and budget dimensions are read-only from MYOB perspective, so ml-connector never writes budget or cost structure back into MYOB.

How ml-connector handles it

ml-connector stores MYOB OAuth tokens, company file credentials (username and password), API key, and Procore Client Credentials all encrypted in the database. On the MYOB side it refreshes the Bearer token when a 401 comes back and always includes the company file username and password Base64-encoded in the x-myobapi-cftoken header on every request. MYOB's 20-minute token refresh cycle and two-factor auth requirement (Bearer plus CF credentials) are bridged via a single encrypted credential set per customer that ml-connector unpacks at call time. On the Procore side, it refreshes the OAuth2 token when approaching the 1.5-hour expiry. MYOB rate limits at 8 requests/second and 1,000,000/day, so ml-connector batches reads and applies backoff on HTTP 429. Because MYOB is poll-only, it polls on a schedule tied to your invoice cycle rather than waiting for a push, and RowVersion fields on MYOB records are tracked to detect changes since the last sync. Every supplier and invoice carries a full audit trail.

A real-world example

A mid-sized construction firm runs MYOB for accounting across multiple projects and regions, and uses Procore to track project costs, commitments, and budget. Before the integration, the accounts payable team entered supplier invoices into MYOB as they arrived from vendors, then manually re-entered selected invoice data into Procore to allocate costs to the correct projects and cost codes. The finance team spent month-end close chasing invoice records that did not match between systems. With MYOB and Procore connected, each supplier invoice posted to MYOB flows into Procore as a requisition the next sync cycle, automatically allocated to the project cost codes that match the MYOB GL accounts. Supplier master data stays in sync, and month-end close no longer requires manual invoice matching.

What you can do

  • Sync MYOB suppliers into Procore as vendors, keeping supplier master data aligned across systems.
  • Flow MYOB purchase invoices into Procore as requisitions, mapped to the correct project cost codes.
  • Bridge MYOB's two-factor authentication (OAuth2 Bearer token plus company file credentials) with Procore OAuth2 Client Credentials.
  • Poll MYOB on a schedule tied to your invoice and payment cycle, with automatic token refresh and rate limit backoff.
  • Track MYOB RowVersion fields to detect changes and replay requisitions if a Procore write fails.

Questions

How does ml-connector handle MYOB's company file password requirement?
MYOB requires both an OAuth2 Bearer token and company file username/password on every API call in the x-myobapi-cftoken header. ml-connector stores both the company file credentials and OAuth token encrypted in the database, unpacks them at request time, and rotates the Bearer token when it expires after 20 minutes.
What happens when MYOB and Procore have different supplier or cost code hierarchies?
ml-connector maps MYOB supplier records to Procore vendors by matching names, and GL account lines to Procore cost codes based on a mapping you configure. If a cost code does not exist in Procore, the write fails with an audit entry, and you can replay the requisition after creating the cost code.
Does the integration handle partial invoice allocations across multiple projects?
Yes. MYOB invoices can have line items allocated to different GL accounts. ml-connector splits each line item to the matching cost code in Procore, so a single invoice from a supplier can populate multiple projects and cost codes in the same sync run.

Related integrations

Connect MYOB and Procore

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

Get started