ml-connector
MYOBCin7

MYOB and Cin7 integration

MYOB holds your accounting records, suppliers, and purchase history. Cin7 Core manages your inventory and purchase-to-pay lifecycle. Connecting them keeps your supplier master data aligned and flows purchase invoices from MYOB into Cin7 without re-entry. MYOB requires both OAuth and company file credentials, and it polls for changes rather than pushing, so ml-connector handles both sides of that auth bridge and drives the sync on a schedule you control.

How MYOB works

MYOB exposes suppliers as Contacts, purchase invoices as Bills, and GL accounts through the AccountRight Live API v2 via REST with OData v3 query parameters. Authentication requires three headers: an OAuth2 bearer token with a 20-minute expiry, an API key, and a Base64-encoded company file username/password pair. MYOB does not support webhooks, so changes are detected by polling with OData $filter on LastModified timestamps. Rate limits are 8 requests per second and 1,000,000 requests per day per API key. RowVersion is required on updates, and stale versions return 409 conflict.

How Cin7 works

Cin7 Core exposes suppliers, purchases, and the chart of accounts through a REST API using custom API key headers for authentication. The Supplier and Purchase entities cover the full procure-to-pay lifecycle via an Approach field that distinguishes between orders, invoices, and receipts. Cin7 supports both webhooks for outbound events and polling via API. Chart of Accounts is read-only, so supplier and purchase data flow primarily from MYOB into Cin7 without writing GL entries back.

What moves between them

Purchase invoices and suppliers flow from MYOB into Cin7 on a polling schedule. After each sync run, ml-connector reads MYOB's Contacts marked as suppliers and Bills within a date window, maps them to Cin7 supplier and purchase records, and creates or updates them in Cin7. Supplier master data (name, ABN, contact details) aligns in both systems, while purchase invoice line items land as Cin7 purchase records with the correct Approach field to mark them as invoices.

How ml-connector handles it

ml-connector stores MYOB credentials encrypted and builds each API call with three required headers: the OAuth bearer token (refreshing it every 20 minutes before expiry), the API key, and the Base64 company file token. It uses OData $filter on LastModified to detect changes since the last run, working around MYOB's lack of webhooks. Cin7 authentication uses simple custom API key headers with no expiry. MYOB rate limits at 8 requests/second, so ml-connector throttles requests and backs off on 429 responses. RowVersion tracking ensures PATCH operations do not collide with concurrent updates. Supplier and purchase records are mapped by external reference so re-runs do not duplicate. A full audit trail tracks every record created, updated, or skipped due to data mismatches.

A real-world example

A small product business in Australia uses MYOB for accounting and Cin7 Core to manage inventory and purchase orders across two warehouses. Before the integration, purchase invoices received from suppliers in MYOB had to be manually entered into Cin7, delaying stock receipt matching and creating reconciliation work at month-end. With MYOB and Cin7 Core connected, each supplier invoice from MYOB flows into Cin7 automatically, mapped to the matching supplier record. The business confirms stock receipt in Cin7 against the invoice that came from MYOB, and the two systems stay aligned without manual re-keying.

What you can do

  • Sync suppliers from MYOB Contacts into Cin7, keeping name, ABN, and contact details aligned.
  • Flow purchase invoices from MYOB Bills into Cin7 on a schedule you control, mapped to the correct supplier.
  • Detect changes using MYOB's OData LastModified timestamps, handling the lack of webhooks with efficient polling.
  • Authenticate MYOB with OAuth, API key, and company file credentials, and Cin7 with custom API keys.
  • Map MYOB purchase line items to Cin7 purchase records with the correct Approach field to mark them as invoices.

Questions

How does ml-connector handle MYOB's dual authentication requirement?
MYOB requires OAuth bearer token, API key, and Base64-encoded company file credentials on every call. ml-connector stores all three encrypted, refreshes the OAuth token every 20 minutes before expiry, and includes all three headers on each API request. If the company file token is wrong or expires, MYOB returns 401 and ml-connector surfaces the error.
Why does ml-connector poll MYOB instead of waiting for webhooks?
MYOB does not support webhooks on the AccountRight Live API. ml-connector uses OData $filter on LastModified timestamps to detect changes since the last run, polling on a schedule tied to your business cycle. This avoids constant polling of unchanged records and keeps Cin7 up to date without manual intervention.
How are MYOB purchase invoices mapped to Cin7 purchases?
MYOB Bills become Cin7 purchases with Approach set to INVOICE to mark them in the procure-to-pay lifecycle. Supplier references are matched by ABN or external ID so re-runs do not duplicate. Line items from MYOB invoices land as individual Cin7 purchase line records tied to the correct supplier.

Related integrations

Connect MYOB and Cin7

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

Get started