ml-connector
MYOBServiceNow

MYOB and ServiceNow integration

MYOB handles accounting and purchase orders for Australian and New Zealand SMEs. ServiceNow's Source-to-Pay module manages accounts payable, procurement, and supplier lifecycle at the enterprise level. Connecting the two keeps purchase orders from MYOB synchronized with ServiceNow procurement workflows, and supplier invoices from MYOB flow into ServiceNow's AP staging so they can be matched to orders and forwarded for payment. ml-connector manages the two different authentication schemes and runs the sync on the schedule you define.

How MYOB works

MYOB exposes purchase orders, supplier invoices, contacts (suppliers and customers), GL accounts, and journal entries through the MYOB Business API (AccountRight Live API v2), a REST service with OData v3 query parameters. Every call requires three headers: an OAuth2 Authorization Code bearer token that expires in 20 minutes, an API Key (x-myobapi-key), and a Base64-encoded company file username and password (x-myobapi-cftoken). MYOB rate limits at 8 requests per second per API key and 1 million requests per day. MYOB does not support webhooks, so record changes must be detected by polling with OData $filter on LastModified timestamps.

How ServiceNow works

ServiceNow offers the Source-to-Pay Operations suite covering accounts payable, procurement, sourcing, and supplier lifecycle management through REST APIs and JSON responses. Every call requires OAuth2 Client Credentials (recommended for machine-to-machine) or Basic Auth, and customers must specify their own instance subdomain since each customer runs an isolated instance. Source-to-Pay staging tables for inbound purchase orders and invoices are module-licensed add-ons. ServiceNow tokens last 30 minutes by default. The platform does not have a native outbound webhook system; real-time inbound data requires custom Business Rules and Outbound REST Messages, so the standard pattern is polling on a schedule.

What moves between them

Purchase orders and supplier invoices flow from MYOB into ServiceNow S2P staging tables on a schedule defined per customer. Supplier contact records from MYOB (contacts with IsSupplier=true) are synced to ServiceNow core_company and supplier staging tables so procurement references valid vendors. GL account mappings ensure invoices posted in ServiceNow land against the correct cost centers and accounts that exist in MYOB. The data moves one direction: MYOB is the source of truth for orders and invoices, and ServiceNow receives and stages them for AP processing and matching.

How ml-connector handles it

ml-connector stores the MYOB OAuth token, API Key, and company file credentials encrypted, and refreshes the 20-minute bearer token before it expires on every call. It polls MYOB purchase orders, invoices, and supplier contacts using OData $filter on LastModified to detect changes, and it respects the 8-request-per-second rate limit by spreading calls across multiple seconds per batch. ServiceNow requires a customer-supplied instance subdomain and an OAuth service account with S2P module roles; ml-connector maintains the OAuth token separate from MYOB's because ServiceNow tokens last 30 minutes. Purchase orders from MYOB are mapped to ServiceNow proc_po staging, supplier invoices map to sn_apo_invoice staging, and suppliers map to core_company. RowVersion tracking on MYOB records prevents stale updates (RowVersion required on PATCH/PUT), and the sync idles between polling cycles to respect rate limits.

A real-world example

A mid-sized Australian distribution company runs MYOB Business for accounting and purchase order management. Their procurement team works in ServiceNow to manage supplier contracts and approve incoming invoices before payment. Before the integration, purchase orders created in MYOB were manually re-keyed into ServiceNow procurement, and invoices received by email were typed into both systems. With MYOB and ServiceNow connected, every purchase order appears in ServiceNow automatically as an inbound staging record ready for approval, and supplier invoices from MYOB flow directly into the AP staging queue, cut the re-keying step, and arrive with order and line-item context already populated.

What you can do

  • Sync MYOB purchase orders and line items into ServiceNow Source-to-Pay staging tables on a configurable schedule.
  • Pull MYOB supplier invoices into ServiceNow AP staging, ready for order matching and payment approval.
  • Map MYOB supplier contacts to ServiceNow company and supplier records so procurement references valid vendors.
  • Refresh MYOB's 20-minute OAuth token automatically and respect the 8-request-per-second rate limit with backoff.
  • Detect record changes in MYOB using OData LastModified $filter, track RowVersion to prevent stale updates, and maintain a full audit trail on all synced records.

Questions

How does ml-connector handle MYOB's dual authentication requirement (OAuth token plus company file credentials)?
ml-connector stores both the OAuth2 bearer token and the company file username and password encrypted. It sends the bearer token in the Authorization header, the API Key in x-myobapi-key, and the Base64-encoded CF credentials in x-myobapi-cftoken on every MYOB call. Before each request, it refreshes the OAuth token if the 20-minute lifetime is approaching.
What happens when MYOB returns a rate limit (429) or the OAuth token expires?
ml-connector implements exponential backoff and retry when receiving a 429 response, spreading requests across multiple seconds. If the OAuth token expires (detected by a 401 response), ml-connector refreshes it automatically using the refresh token and retries the original call.
Which direction does data flow between MYOB and ServiceNow?
Purchase orders, invoices, and supplier records flow from MYOB into ServiceNow S2P staging tables. ServiceNow is the destination and does not send data back to MYOB. The sync runs on a polling schedule because MYOB does not support outbound webhooks or push notifications.

Related integrations

Connect MYOB and ServiceNow

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

Get started