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.
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
More MYOB integrations
Other systems that connect to Procore
Connect MYOB and Procore
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started