ml-connector
MYOBRamp

MYOB and Ramp integration

MYOB is the accounting software for SMEs in Australia and New Zealand. Ramp is the spend management platform for corporate cards, bills, and expenses. Connecting the two keeps your accounting and your spend data in sync. Purchase invoices and bills created in MYOB flow into Ramp for approval workflows, matching supplier records and GL accounts, so the finance team sees all commitments and cash flows in one place. ml-connector handles the different authentication models and ensures that MYOB source data arrives in Ramp without re-entry.

How MYOB works

MYOB AccountRight Live API v2 exposes suppliers, purchase invoices, bills, sales invoices, GL accounts, and general journals through REST with OData v3 query parameters, against a tenant-specific base URL containing a company file ID. It authenticates with OAuth2 Authorization Code flow plus company file username and password supplied in headers on every request, with access tokens expiring in 20 minutes and refresh tokens valid for 1 week. MYOB does not support webhooks or push notifications, so all polling must detect changes by filtering on LastModified timestamps. Desktop-only files are unreachable from server-side connectors and require MYOB Business cloud hosting. Rate limits are 8 requests per second and 1 million per day per API key, and write operations require the RowVersion field to detect conflicts.

How Ramp works

Ramp Developer API exposes bills, vendors, purchase orders, GL accounts, transactions, departments, and accounting dimensions through REST with JSON bodies. It authenticates with OAuth2 Client Credentials flow for server-to-server integration, with tokens valid for 10 days, or Authorization Code flow for user consent with 1-hour tokens. Ramp supports push webhooks for real-time event notifications on bills, transactions, vendors, users, and reimbursements, with signature verification via HMAC-SHA256. Vendors cannot be created directly through the API; they are created implicitly when bills are entered. GL Accounts and custom field writes require both accounting:read and accounting:write scopes.

What moves between them

Purchase invoices and bills created in MYOB flow into Ramp on a polling schedule. For each MYOB bill, ml-connector creates a corresponding Ramp bill with the supplier, amount, GL account mapping, and any custom spend dimensions. The integration polls MYOB every 30 minutes for bills with LastModified timestamps newer than the last sync marker, translates MYOB supplier contacts to Ramp vendors using name matching, and maps MYOB GL accounts to Ramp GL Accounts by account code. The flow is one-directional from MYOB into Ramp; Ramp bill updates and payments flow back to Ramp webhooks for audit only.

How ml-connector handles it

ml-connector stores MYOB OAuth credentials and company file username/password encrypted, and refreshes the OAuth token before every sync window when the 20-minute lifetime nears expiry. On each poll it sends the company file credentials as x-myobapi-cftoken and x-myobapi-key headers alongside the bearer token. It uses OData $filter on LastModified to fetch only bills changed since the prior sync, handles the 1000-record page size limit by paging through results, and retries on HTTP 429 rate-limit responses with exponential backoff. For Ramp, it presents OAuth2 Client Credentials tokens valid for 10 days, and every MYOB bill becomes a Ramp bill with GL account and department tags matched by the supplier name and MYOB account code. The RowVersion field on MYOB bills is never updated by ml-connector, so concurrent changes in MYOB do not produce 409 conflicts on read operations. Ramp webhooks on bill.created and bill.updated are registered once and provide real-time notifications for audit and downstream flow triggers.

A real-world example

An Australian SME importing goods and services across multiple departments uses MYOB for accounting and Ramp for corporate cards and bill approval. Before integration, the finance controller received invoices in MYOB from vendors, manually created bill records in Ramp for spend visibility, and cross-checked the two systems monthly to ensure no invoices were missed. The payables team had no real-time visibility into which invoices were approved in Ramp. With MYOB and Ramp connected, each MYOB invoice automatically appears as a Ramp bill tagged with the correct GL account and cost center, and the team approves bills in Ramp while MYOB remains the ledger of record. Reconciliation is instant, and invoices are never re-keyed.

What you can do

  • Sync MYOB purchase invoices and bills into Ramp on a polling schedule, with LastModified timestamp filtering to find only new and changed records.
  • Map MYOB suppliers to Ramp vendors by name matching, creating vendor records implicitly as bills are entered.
  • Allocate MYOB GL accounts and cost centers to Ramp bills using account code and custom dimension matching.
  • Refresh MYOB OAuth tokens and company file credentials automatically, and retry on rate limits and 429 responses with exponential backoff.
  • Track audit events and support bill replay if a downstream Ramp approval or posting fails.

Questions

Does the integration create vendors in Ramp automatically?
Yes. Ramp does not have a direct vendor creation endpoint, so ml-connector creates vendors implicitly when a bill is entered. Each MYOB supplier is matched by name to a Ramp vendor, and if no vendor exists, Ramp creates it during bill creation.
How does ml-connector handle MYOB's dual authentication requirement?
ml-connector stores MYOB OAuth credentials and company file username/password encrypted. On every API call it sends three headers: the Authorization Bearer token, the x-myobapi-key API key, and x-myobapi-cftoken with Base64-encoded company file credentials. OAuth tokens expire in 20 minutes, so ml-connector refreshes them before each polling window.
What happens if MYOB and Ramp bill data falls out of sync?
ml-connector tracks every bill sync in an audit log with the MYOB RowVersion and Ramp bill ID. If a Ramp operation fails, the bill can be replayed without re-fetching from MYOB. The polling filter uses LastModified timestamps, so manual changes to MYOB bills will be detected and re-synced on the next polling cycle.

Related integrations

Connect MYOB and Ramp

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

Get started