MYOB and Zuora integration
MYOB runs the accounting ledger and GL for SMEs across Australia and New Zealand. Zuora handles subscription orders, invoicing, and payment collection for recurring-revenue businesses. Connecting the two means customer account hierarchies and subscription invoice data move seamlessly into MYOB, so your accounting records reflect what your billing platform has already processed. When Zuora invoices, MYOB sees the transaction without re-keying. When a payment clears in Zuora, MYOB recognizes the cash.
What moves between them
Customer accounts and subscription data flow from Zuora into MYOB on a polling schedule. When a subscription is created in Zuora, ml-connector reads the account and subscription details, maps the Zuora account to an MYOB contact (customer or supplier), and adds or updates the MYOB record. When Zuora invoices post, ml-connector polls the invoice and its line items, maps each item to the corresponding MYOB GL account and job code, and creates a matching MYOB purchase invoice or customer payment to record the transaction in the ledger. Payment records from Zuora flow into MYOB as customer or supplier payments once received. MYOB itself is read-only in this pairing; ml-connector does not write sales, GL entries, or account data back into Zuora.
How ml-connector handles it
ml-connector stores Zuora OAuth credentials (client_id and client_secret) encrypted and refreshes the bearer token every 50 minutes, well before the one-hour expiry. On the MYOB side, it stores the OAuth access token and company file credentials encrypted, and it maintains a separate OAuth session since MYOB requires both headers on every request. Because neither system pushes unsolicited notifications by default, ml-connector polls both Zuora and MYOB on a schedule you configure, typically after each billing cycle when Zuora invoices are finalized. When polling Zuora, ml-connector reads invoices and payments via REST list endpoints; it then queries MYOB for the matching GL account and job code and constructs the appropriate MYOB invoice or payment record. If a Zuora GL code or job does not yet exist in MYOB, the record is held in an error state until the reference is added. MYOB's rate limit of 8 requests per second is respected in all bulk operations, and ml-connector retries on 429. The Zuora webhook system can optionally supplement polling for faster notification, but polling remains the primary path because payment notifications fire only for electronic payments. Every record synced carries a full audit trail so payment reconciliation discrepancies can be traced back to the source.
A real-world example
A SaaS company in Australia runs MYOB for accounting and tax compliance and uses Zuora for subscription order management and invoicing. Previously, the finance team downloaded subscription invoices from Zuora every billing cycle and re-entered them manually into MYOB, mapping each subscription tier and add-on to the correct GL account by hand. Month-end close meant comparing Zuora revenue reports against MYOB income accounts to spot missed entries. With Zuora and MYOB connected, each new subscription invoice flows directly into MYOB under the correct GL account, and payment collections are recorded automatically. The finance team now runs month-end close against a ledger that is already in sync with the billing platform, eliminating the manual entry step and reducing errors.
What you can do
- Sync Zuora customer accounts and subscription data into MYOB contact records, keeping customer hierarchies aligned across both systems.
- Flow Zuora invoices directly into MYOB as purchase or customer invoices, mapped to the correct GL accounts and job codes.
- Capture Zuora payments and record them in MYOB as customer or supplier payments without manual re-entry.
- Authenticate Zuora with OAuth2 client credentials and MYOB with OAuth2 plus company file credentials, managing token expiry and refresh automatically.
- Poll both systems on a schedule tied to your billing cycle, with full error recovery and audit trails for every synced record.
Questions
- Which direction does data flow between MYOB and Zuora?
- Data flows primarily from Zuora into MYOB. Zuora customer accounts, subscriptions, and invoices are read by ml-connector and synced into MYOB as contacts and invoices. Payment records from Zuora are recorded in MYOB as customer or supplier payments. MYOB acts as the accounting ledger and is not written back to Zuora; Zuora remains the system of record for subscription and billing events.
- How does ml-connector handle MYOB's dual authentication requirement?
- MYOB requires both an OAuth2 bearer token and company file credentials (username and password) on every API call. ml-connector maintains two encrypted credential pairs: the OAuth access token (refreshed every 20 minutes) and the Base64-encoded company file credentials supplied in a separate x-myobapi-cftoken header. Both are presented together on every request, and the company file token refresh is handled automatically.
- What happens if a Zuora invoice references a GL account that does not yet exist in MYOB?
- ml-connector queues the invoice in an error state with an audit record showing which GL account or job code is missing. Once the reference is added to MYOB, the invoice can be replayed on the next sync cycle. This prevents incorrect GL mappings and keeps the audit trail clear for reconciliation.
Related integrations
More MYOB integrations
Other systems that connect to Zuora
Connect MYOB and Zuora
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started