MYOB and Coupa integration
MYOB runs accounting for mid-market SMEs across ANZ. Coupa handles procurement and spend management. Connecting them keeps your purchase orders and supplier data flowing from MYOB into Coupa without manual re-entry. When a purchase order is created or an invoice is posted in MYOB, ml-connector moves it to Coupa on your schedule, mapped to the matching suppliers and cost codes, and Coupa can confirm receipt by posting events back so MYOB always reflects the procurement state of record.
What moves between them
The main flow runs from MYOB into Coupa. ml-connector polls MYOB on a schedule tied to your purchase cycle and reads newly modified purchase orders and invoices. Supplier master data is read from MYOB and pushed into Coupa first so every purchase order references a supplier that already exists. Purchase orders and invoices flow into Coupa after the supplier sync so they land on valid suppliers. The reverse direction is optional: Coupa can push purchase order and invoice events back to ml-connector via webhook, and these can be logged into MYOB as audit records or trigger downstream workflows.
How ml-connector handles it
ml-connector stores the MYOB company file credentials and API key encrypted and supplies them on every request: the OAuth bearer token in the Authorization header, the API key in x-myobapi-key, and the company file credential Base64 in x-myobapi-cftoken. MYOB access tokens expire in 20 minutes, so ml-connector refreshes the token before each batch of requests to avoid mid-batch 401 failures. It polls MYOB using OData $filter with LastModified timestamps to find only records changed since the last sync, which reduces request volume and keeps latency low. On the Coupa side, ml-connector accepts webhook events signed with a pre-shared secret, validates each signature with HMAC-SHA256, and rejects any webhook with an invalid signature so no unsigned payloads enter the pipeline. Suppliers are synced first, then purchase orders and invoices reference them by external ID. Coupa rate limits return HTTP 429, so ml-connector backs off and retries with exponential backoff capped at 30 seconds. Every record carries a full audit trail so the procurement chain is traceable from MYOB through Coupa and back.
A real-world example
A mid-market professional services firm manages projects and purchase orders in MYOB for ANZ operations, and uses Coupa for spend management and supplier compliance. Before the integration, the procurement team exported purchase orders from MYOB and manually created them in Coupa, then re-entered invoices from MYOB when they arrived. This caused delays in procurement visibility and mismatches between what MYOB said was ordered and what Coupa tracked. With MYOB and Coupa connected, each purchase order flows from MYOB into Coupa automatically, tied to the correct supplier and cost code, and invoices are automatically matched. Procurement visibility is real-time, and the manual data re-entry step is eliminated.
What you can do
- Sync suppliers from MYOB into Coupa so purchase orders land on valid suppliers.
- Move purchase orders from MYOB into Coupa on a polling schedule aligned with your purchase cycle.
- Push invoices from MYOB to Coupa after supplier and PO sync so they reference existing records.
- Handle MYOB company file authentication, 20-minute token refresh, and Coupa webhook signature verification automatically.
- Retry on rate limit (HTTP 429) and network failures with exponential backoff up to 30 seconds per Coupa policy.
Questions
- Which direction does data move between MYOB and Coupa?
- The main flow is MYOB into Coupa. Suppliers, purchase orders, and invoices move from MYOB to Coupa on a polling schedule. Coupa can push purchase order and invoice events back via webhook, which ml-connector receives, validates with HMAC-SHA256, and can log into MYOB for audit or trigger downstream workflows.
- Does MYOB support webhooks, or must ml-connector poll?
- MYOB does not support webhooks on the AccountRight Live API v2, so ml-connector polls using OData $filter on LastModified timestamps to find changed records since the last sync. This keeps data fresh on a schedule tied to your purchase-to-pay cycle and avoids duplicate work.
- How does ml-connector handle MYOB's two-part authentication requirement?
- Every MYOB API call requires three headers: an OAuth2 bearer token that expires in 20 minutes, an API key, and a Base64 company file credential. ml-connector supplies all three on every request, refreshes the OAuth token before each batch, and encrypts the company file credential so it is never logged or leaked.
Related integrations
More MYOB integrations
Other systems that connect to Coupa
Connect MYOB and Coupa
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started