ml-connector
MYOBTipalti

MYOB and Tipalti integration

MYOB runs the general ledger and purchase register for SME accounting. Tipalti runs accounts payable and payments downstream. Connecting the two keeps invoices, purchase orders, and supplier records moving from MYOB into Tipalti's approval and payment workflows without re-entry. When Tipalti processes payments, webhooks notify MYOB so the payment status is recorded back in the source system.

How MYOB works

MYOB Business API exposes suppliers and customers as Contacts, purchase orders as Purchase/Orders, supplier invoices as Purchase/Bills, GL accounts and journals as GeneralLedger/Accounts and GeneralLedger/GeneralJournals, and payments as Purchase/SupplierPayments, all through REST endpoints with OData v3 filtering. Authentication combines OAuth2 Authorization Code flow with company file credentials (Base64 encoded as a custom header), and access tokens expire in 20 minutes, requiring refresh token rotation. Rate limits are 8 requests per second and 1,000,000 requests per day per API key. MYOB does not support webhooks, so invoices and purchase orders are detected via polling using OData $filter on LastModified timestamps.

How Tipalti works

Tipalti exposes suppliers as Payees, invoices as Invoices, purchase orders as Purchase Orders, and GL accounts as GL Accounts through two separate API families: SOAP endpoints (PayeeFunctions.asmx and PayerFunctions.asmx) authenticated with HMAC-SHA256 signatures, and REST endpoints authenticated with OAuth2 client credentials or a static API key header. Tipalti supports IPN (Instant Payment Notifications) webhooks via a single account-wide endpoint configured in Tipalti Hub, with events including payee_details_changed, payment_submitted, payment_cancelled, and completed, each signed with HMAC-SHA256 for verification.

What moves between them

The main data flow is from MYOB into Tipalti. Purchase orders and supplier invoices are read from MYOB on a polling schedule, mapped to Tipalti purchase orders and invoices, and written via Tipalti's API. Suppliers in MYOB are synced to Tipalti Payees, and GL accounts are aligned so invoice lines land on valid accounts. Payment completion events flow back from Tipalti via webhooks into MYOB as status updates on the source invoices. Reference data such as GL account mappings is maintained bidirectionally.

How ml-connector handles it

ml-connector manages two separate authentication contexts: on the MYOB side, it caches the OAuth2 bearer token and monitors its 20-minute expiry window, while simultaneously providing the company file credentials in a Base64-encoded custom header for every API call; on the Tipalti side, it chooses between SOAP (HMAC-SHA256 signing of the payer name and API key) and REST (OAuth2 client credentials) depending on the operation, since the two families use different endpoints and signatures. MYOB polling respects the 8 request per second rate limit and $filters on LastModified to detect changes since the last run. Suppliers are matched by name or a custom external ID field in both systems so repeated syncs do not create duplicates. GL account mappings are cached after first sync and validated on each invoice write so lines land on accounts that exist in Tipalti. When Tipalti payment events arrive via webhook, ml-connector verifies the HMAC-SHA256 signature and writes the completion status back into MYOB so invoices are marked paid without manual intervention. If a write to Tipalti fails, the job is re-enqueued under the same ID for automatic replay once the error is resolved.

A real-world example

A mid-sized professional services firm in Australia uses MYOB for accounting and GL management and has recently adopted Tipalti to automate their AP and payment processing across multiple countries where they have contractors and vendors. Before the integration, the accounting team exported a daily list of approved invoices from MYOB, manually re-entered them into Tipalti by hand, and then waited for payment confirmations from Tipalti to be manually posted back into MYOB as paid status. With MYOB and Tipalti integrated, invoices flow automatically from MYOB into Tipalti's approval workflow every hour, suppliers are matched on the first sync, and payment completion events return to MYOB automatically so the cash reconciliation is complete without manual data entry.

What you can do

  • Poll MYOB purchase orders and supplier invoices on a schedule and write them into Tipalti as purchase orders and invoices, mapped to matching Tipalti payees.
  • Map MYOB suppliers and contacts to Tipalti payees by name or external ID, with deduplication on repeated syncs.
  • Align MYOB GL accounts to Tipalti GL dimensions so invoice line items land on valid accounts in both systems.
  • Authenticate MYOB with OAuth2 bearer tokens plus company file credentials in a custom header, and handle Tipalti SOAP signatures or OAuth2 depending on the endpoint.
  • Receive Tipalti payment completion events via HMAC-SHA256 verified webhooks and write payment status back into MYOB as supplier payment records.

Questions

Which direction does data move between MYOB and Tipalti?
The primary flow is from MYOB into Tipalti: purchase orders, invoices, and supplier records move into Tipalti's AP workflow. Payment completion events flow back from Tipalti via webhooks so MYOB records when an invoice has been paid. Reference data such as GL accounts is aligned in both directions.
How does ml-connector handle MYOB's three-header authentication requirement?
ml-connector caches the OAuth2 bearer token, monitors its 20-minute expiry window, and includes the company file credentials (Base64 encoded) as a custom header on every API call. When the token expires, the refresh token is used to obtain a new one without losing sync continuity.
What happens if a supplier or GL account does not exist in Tipalti when an invoice arrives from MYOB?
ml-connector caches GL accounts and payee mappings after the first sync and validates them on each invoice write. If an account or payee is missing, the job logs the error and is re-enqueued for replay once the missing record is created in Tipalti.

Related integrations

Connect MYOB and Tipalti

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

Get started