ml-connector
MYOBTradeshift

MYOB and Tradeshift integration

MYOB runs accounting for ANZ SMEs. Tradeshift runs procure-to-pay and invoice management across a global B2B network. Connecting them keeps your suppliers and your accounts payable in sync. Purchase invoices created in Tradeshift flow into MYOB's AP, supplier payments in MYOB reconcile against Tradeshift remittance advice, and purchase orders from MYOB upload to Tradeshift so your network partners see what is coming. ml-connector bridges the very different authentication layers and document formats on each side.

How MYOB works

MYOB exposes suppliers, purchase invoices, purchase orders, supplier payments, GL accounts, and general journal entries through the AccountRight Live API v2, a REST service with OData v3 query parameters. The API uses OAuth2 authorization code flow plus company file username and password on every call - three headers are required: Authorization Bearer token, x-myobapi-key, and x-myobapi-cftoken (Base64 of CF credentials). Access tokens expire in 20 minutes and refresh tokens in 1 week. MYOB does not support webhooks, so records are detected by polling with OData $filter on LastModified timestamps. Rate limits are 8 requests per second and 1,000,000 per day per API key.

How Tradeshift works

Tradeshift exposes invoices, purchase orders, credit notes, receipts, despatch advice, and remittance advice as JSON or UBL 2.0/2.2 XML documents through REST API with a changedAfter timestamp filter. Every call requires OAuth 1.0a server-to-server credentials (consumer_key, consumer_secret, token, token_secret) and the X-Tradeshift-TenantId header identifying the tenant. Documents are identified by documentProfileId and carry line items with GL codes and dimensions embedded in the UBL XML. Tradeshift offers polling via GET documents/v2/ or an optional continuous event stream for registered plugins, but no outbound webhooks. Sandbox is available at https://api-sandbox.tradeshift.com/ with the same OAuth flow.

What moves between them

Purchase invoices and orders flow in both directions. MYOB purchase invoices create Tradeshift invoice documents tagged with the supplier's networkId, and Tradeshift invoices addressed to your company become MYOB purchase bills. Purchase orders from MYOB upload to Tradeshift so suppliers see incoming demand. Supplier payments in MYOB are reconciled against Tradeshift remittance advice to track which invoices have been settled. GL codes and cost centers are embedded in UBL line items on the Tradeshift side and mapped to MYOB GL accounts and categories. Both systems are polled on a fixed schedule tied to your AP cycle, with changes detected via OData LastModified and Tradeshift changedAfter filters.

How ml-connector handles it

ml-connector stores both OAuth credential sets encrypted and handles the dual-layer authentication: MYOB requires the bearer token plus company file credentials on every call (returning 401 if CF token is bad), while Tradeshift requires OAuth 1.0a signatures on the request and the tenant ID in a header. MYOB access tokens expire in 20 minutes, so ml-connector refreshes transparently on 401. Purchase invoices are mapped between MYOB bill line items (Item, Service, Professional, Miscellaneous types) and Tradeshift invoice line items, with GL codes extracted from UBL XML and matched to MYOB GL accounts and categories. MYOB requires RowVersion on PATCH/PUT calls or returns 409 conflict, so ml-connector tracks RowVersion per record and re-reads if a stale conflict occurs. MYOB rate-limit is 8 requests/second and 1,000,000/day, so ml-connector batches requests and backs off on HTTP 429. Tradeshift documents are UBL XML format with embedded GL dimensions, so ml-connector parses the XML to extract GL codes and supplier networkId before mapping. Every record carries a full audit trail and can be replayed if a downstream call fails.

A real-world example

A mid-market Australian manufacturing company uses MYOB for accounting and Tradeshift to manage invoices from global suppliers. Before the integration, the finance team exported purchase invoices from Tradeshift, re-entered line items into MYOB by hand, and manually matched supplier remittance advice from Tradeshift against MYOB payments. With MYOB and Tradeshift connected, each new invoice in Tradeshift becomes a MYOB purchase bill automatically, GL codes from Tradeshift UBL line items map to MYOB GL accounts, and supplier payments posted in MYOB are reconciled against Tradeshift remittance advice without re-keying. Month-end AP close starts with all invoices and payments already in sync.

What you can do

  • Map purchase invoices between MYOB and Tradeshift, with GL codes from UBL line items matched to MYOB GL accounts and categories.
  • Sync purchase orders from MYOB to Tradeshift so suppliers see incoming demand on the network.
  • Reconcile MYOB supplier payments against Tradeshift remittance advice to track invoice settlement.
  • Authenticate MYOB with OAuth2 plus company file credentials on every call, and Tradeshift with OAuth 1.0a and tenant ID header.
  • Poll MYOB via OData LastModified filter and Tradeshift via changedAfter timestamp, with refresh-token handling and rate-limit backoff.

Questions

How does ml-connector handle MYOB's two-layer authentication?
MYOB requires OAuth2 bearer token plus company file credentials (username and password) on every API call. ml-connector stores both sets encrypted, refreshes the bearer token when it expires (20-minute lifetime), and presents the company file credentials Base64-encoded in the x-myobapi-cftoken header. If the CF token is invalid, MYOB returns 401 and ml-connector raises an error so the credentials can be refreshed.
Which direction do purchase invoices and orders flow?
Invoices and orders flow in both directions. MYOB purchase invoices create Tradeshift invoice documents on the network so suppliers can view them, and Tradeshift invoices addressed to your company become MYOB purchase bills. Purchase orders from MYOB upload to Tradeshift so your suppliers see demand as it arrives on the network.
How does the integration handle MYOB's RowVersion conflict and Tradeshift's UBL XML format?
MYOB requires a RowVersion field on every PATCH/PUT call; if the version is stale, MYOB returns 409 conflict and ml-connector re-reads the record to get the current version before retrying. Tradeshift documents are in UBL 2.0/2.2 XML format with GL codes and dimensions embedded in line items; ml-connector parses the XML, extracts GL codes, and maps them to MYOB GL accounts and categories so invoices land on the correct accounts.

Related integrations

Connect MYOB and Tradeshift

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

Get started