MYOB and BILL integration
MYOB runs accounting for small to medium businesses across Australia and New Zealand. BILL automates accounts payable, accounts receivable, and spend workflows. Connecting the two keeps your vendor master synchronized between accounting and payables automation, and moves bills and payments between systems without re-keying. ml-connector manages the different authentication schemes on each side and moves the data on a schedule you control.
What moves between them
The main flow is MYOB to BILL. Supplier contacts from MYOB are synchronized into BILL as vendors, and purchase bills created in MYOB flow into BILL as bills. When a supplier is updated in MYOB or a bill changes, ml-connector detects the modification on the next poll cycle using LastModified timestamps and pushes the update to BILL. BILL's purchase orders are not available in the REST API, so only bills flow in this direction. BILL webhook events for vendor, bill, and payment changes are received and can trigger downstream sync to other connected systems or audit logging.
How ml-connector handles it
ml-connector stores both MYOB OAuth credentials and company file username/password encrypted, and supplies the full dual-auth header set on every MYOB REST call. The 20-minute OAuth access token is refreshed proactively before expiry to avoid mid-request failures. ml-connector polls MYOB suppliers and bills on a regular cadence using OData $filter with the LastModified field to detect only changed records since the last sync; this avoids re-processing unchanged data. For BILL, ml-connector calls POST /v3/login with the provided username, password, organizationId, and devKey to obtain a sessionId, then uses that session on subsequent API calls until the 35-minute inactivity timer expires. BILL's webhook subscriptions are registered at setup, and every webhook payload is validated using HMAC-SHA256 signature verification with the stored securityKey before processing. When MYOB rate limits (8 req/s) are hit, ml-connector backs off exponentially and retries. MYOB requires RowVersion on PATCH and PUT operations; ml-connector fetches the current RowVersion before update to avoid 409 conflicts. BILL does not support purchase orders in its v3 API, so bill-only sync is enforced. Every record carries a full audit trail with timestamps and can be replayed if a webhook or downstream call fails.
A real-world example
A small accounting firm in Melbourne runs MYOB AccountRight for 15 client businesses, managing supplier invoices, payments, and general ledger entries across all clients. The firm also uses BILL internally to automate its own accounts payable and spend workflows. Before the integration, when a client's supplier changed address or payment terms in MYOB, the firm's staff had to manually enter that change into BILL's vendor list. When bills arrived and were entered in MYOB, they were re-keyed into BILL, duplicating effort and creating reconciliation gaps. With MYOB and BILL connected, supplier changes sync automatically into BILL's vendor master, and bills created in MYOB flow directly into BILL for payment automation. The accounting team no longer re-enters vendor data, and bills hit BILL in real time for timely payment processing.
What you can do
- Synchronize supplier contacts from MYOB to BILL as vendors, with LastModified polling to detect updates.
- Post purchase bills created in MYOB into BILL, mapped to the matching vendor record.
- Refresh MYOB OAuth tokens automatically before expiry to prevent mid-request failures.
- Handle MYOB's dual authentication (OAuth2 Bearer token plus company file credentials) on every call.
- Verify BILL webhook signatures using HMAC-SHA256 and respond to vendor, bill, and payment events in real time.
Questions
- Does ml-connector support MYOB purchase orders?
- No. MYOB's AccountRight Live API v2 exposes purchase orders, but BILL's v3 API does not support purchase orders in its REST endpoints. The integration syncs supplier contacts and purchase bills between the systems. If purchase order tracking is needed, those records must be managed separately or in MYOB alone.
- How does ml-connector handle MYOB's 20-minute access token expiry?
- ml-connector proactively refreshes the MYOB access token before the 20-minute expiry window closes, using the stored refresh token (which lasts 1 week). This prevents mid-request authentication failures. If a refresh token expires, ml-connector will return a new OAuth2 authorization grant via the stored credentials.
- What happens if MYOB or BILL rate limits are reached?
- MYOB enforces 8 requests per second and 1 million requests per day per API key; BILL's limits are enforced at the gateway. When a 429 (Too Many Requests) response is received, ml-connector pauses, backs off exponentially with jitter, and retries the request. Every retry is logged in the audit trail so the sync can be reviewed.
Related integrations
More MYOB integrations
Other systems that connect to BILL
Connect MYOB and BILL
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started