.png)
MYOB Integration Guide
Connect MYOB AccountRight and MYOB Business with enterprise systems through OAuth 2.0-secured REST APIs, selected notifications, and Martini workflows.
MYOB integration options at a glance
MYOB AccountRight and MYOB Business provide REST APIs for accessing and maintaining accounting and business data, including Accounts, Contacts, Items, Invoices, Bills, Payments, and Jobs where supported. OAuth 2.0 secures application access, with product-specific permissions, company-file context, and organization rules. Selected products and events may provide notification or webhook-style capabilities, but coverage must be verified for each API. Martini can consume these APIs, manage token renewal, paginate and checkpoint synchronization, transform JSON payloads, apply validation and financial rules, and expose a normalized API for downstream applications. Attachments may be supported for selected resources and should be confirmed before implementation.
| Integration point | Supported by MYOB? | Common use cases | How Martini supports it |
|---|---|---|---|
| REST APIs | Yes | AccountRight and MYOB Business expose accounting and business resources over HTTP with JSON-oriented requests and responses. Use them to retrieve, create, or update supported MYOB objects. | Martini can consume MYOB REST endpoints from workflows, map payloads, apply business rules, handle pagination, and expose normalized APIs for other systems. |
| Authentication | Yes | MYOB APIs use OAuth 2.0 application authorization with client credentials, consent, bearer access tokens, refresh tokens, and product-specific permissions. | Martini can store credentials and refresh tokens as environment-specific secrets and orchestrate authorization, token renewal, and protected API calls. |
| Webhooks / outbound callbacks | Limited | Notification or webhook-style capabilities are available for selected products and events, but coverage is not universal across MYOB objects or APIs. | Martini can receive supported notifications through an API endpoint or webhook workflow, then retrieve the authoritative MYOB resource and process it idempotently. |
| File / attachment APIs | Limited | Supporting documents or attachments may be available for selected resources and products. Endpoint coverage, file limits, and associations must be verified. | Martini can transfer and transform files when the selected MYOB API exposes the required attachment operations, while preserving object references and processing status. |
| Bulk / async / batch APIs | Not confirmed | A general-purpose MYOB bulk or asynchronous import API was not confirmed. Large transfers should use pagination and workflow-level batching. | Martini can control concurrency, process pages in batches, checkpoint progress, throttle requests, and retry recoverable failures. |
| Scheduled synchronization | Yes | Scheduled polling is appropriate when notifications are unavailable or when periodic reconciliation is needed for Contacts, Invoices, Bills, Payments, and other supported resources. | Martini scheduler-triggered workflows can retrieve incremental pages, persist checkpoints, reconcile missed notifications, and write results to target systems. |
| Database access | No | MYOB does not provide a documented direct customer database integration interface. API access or an intermediary data store is the supported pattern. | Martini can consume MYOB APIs and write normalized data to a supported SQL database for reporting and downstream analytics. |
How MYOB exposes data and business events
MYOB REST APIs
MYOB AccountRight and MYOB Business provide REST APIs for business and accounting resources. The available objects, operations, fields, permissions, and company-file rules depend on the selected product and API version.
Martini implementation pattern
Martini implementation pattern: a workflow authenticates with OAuth 2.0, calls the appropriate MYOB endpoint, handles JSON responses and pagination, maps the result to a canonical model, applies validation and business rules, and writes to the target system. For writes, the workflow stores external IDs and processing outcomes for idempotency and reconciliation.
Implementation sequence
MYOB notifications and webhooks
MYOB provides notification or webhook-style capabilities for selected products and events. Coverage is not universal, so each event must be confirmed against the relevant API documentation.
Martini implementation pattern
Martini implementation pattern: expose a controlled Martini API endpoint or webhook workflow to receive the notification, validate its authenticity and identifiers, then retrieve the complete MYOB resource through the REST API. The notification is treated as a synchronization signal rather than the authoritative business payload, with scheduled reconciliation used as a fallback.
Implementation sequence
MYOB scheduled synchronization
Scheduled retrieval is appropriate for incremental synchronization, missed-event recovery, and resources without confirmed notification coverage. Pagination, filtering, and modification-date behavior must be verified for the selected API.
Martini implementation pattern
Martini implementation pattern: a scheduler-triggered workflow loads the last successful checkpoint, retrieves pages with bounded concurrency, transforms each object, writes results transactionally where possible, and advances the checkpoint only after successful processing. Separate reconciliation runs can compare financial totals or time windows.
Implementation sequence
MYOB attachments
Supporting documents or attachments may be available for selected MYOB resources and products. Attachment endpoints, content types, file limits, and object associations must be confirmed before implementation.
Martini implementation pattern
Martini implementation pattern: retrieve or receive the source document, resolve its MYOB object association, validate file metadata and size, and call the relevant MYOB attachment operation when supported. Martini can route unsupported or failed files to an exception process without marking the parent transaction complete.
Implementation sequence
Common MYOB integration patterns
Pattern 1: Sync MYOB Contacts to a CRM
When to use this pattern
Use this pattern when MYOB is the accounting source for customer or supplier contact details and a CRM needs aligned account information. It supports scheduled synchronization and selected notification-driven updates.
Integration direction
Example Mapping
| MYOB Field | Canonical Field | Target Field |
|---|---|---|
| UID | externalContactId | MYOB_Contact_ID__c |
| CompanyName | organizationName | Account.Name |
| Phone | primaryPhone | Account.Phone |
| primaryEmail | Contact.Email |
Martini implementation pattern
A scheduler or supported MYOB notification starts the workflow. Martini retrieves the complete Contact, applies matching rules and field validation, maps it to Salesforce Account or Contact data, and performs an idempotent upsert. The workflow records inactive or deleted-state handling, retries transient failures, and sends ambiguous matches to an exception queue or review process.
Martini capabilities used
- workflows
- API consumption
- scheduling
- data mapping
- business rules
- error handling
Pattern 2: Create MYOB Invoices from commerce orders
When to use this pattern
Use this pattern when an approved order from Shopify or WooCommerce must become an MYOB Invoice. The workflow should resolve customer and item references before creating the financial transaction.
Integration direction
Example Mapping
| MYOB Field | Canonical Field | Target Field |
|---|---|---|
| order.id | sourceOrderId | Invoice.ExternalReference |
| customer.email | customerEmail | Contact.Email |
| line_items[].sku | itemCode | Invoice.Lines[].Item |
| total_tax | taxAmount | Invoice.TaxTotal |
Martini implementation pattern
Martini receives an order event or polls for approved orders, retrieves authoritative order details, matches the customer to a MYOB Contact and each SKU to an Item, and validates tax treatment, account codes, currency, and totals. It checks the source ID before creating an Invoice, persists the MYOB identifier, and retries only recoverable API failures.
Martini capabilities used
- API consumption
- webhook receiving
- data mapping
- validation
- business rules
- idempotency
- retry handling
Pattern 3: Load MYOB financial data into a reporting store
When to use this pattern
Use this pattern when finance or analytics teams need normalized MYOB data without direct database access to MYOB. It is suitable for Invoices, Bills, Payments, and Accounts with incremental checkpoints.
Integration direction
Example Mapping
| MYOB Field | Canonical Field | Target Field |
|---|---|---|
| Invoice.UID | invoiceId | fact_invoice.source_id |
| Invoice.Date | invoiceDate | fact_invoice.invoice_date |
| Invoice.TotalAmount | grossAmount | fact_invoice.gross_amount |
| Payment.Amount | paymentAmount | fact_payment.amount |
Martini implementation pattern
A scheduled Martini workflow retrieves paginated resources, normalizes product-specific fields into a stable reporting model, and writes them to SQL using source identifiers and load timestamps. Checkpoints advance after successful pages, while financial-period reconciliation, immutable transaction history, and replayable error records protect data quality.
Martini capabilities used
- workflows
- scheduling
- API consumption
- pagination control
- data transformation
- SQL database access
- monitoring
Pattern 4: Reconcile MYOB Payments with Stripe
When to use this pattern
Use this pattern when payment activity in Stripe must be reconciled against MYOB Invoices and Payments. It is useful for identifying unmatched, duplicated, partially paid, or delayed transactions.
Integration direction
Example Mapping
| MYOB Field | Canonical Field | Target Field |
|---|---|---|
| payment.id | paymentReference | Payment.ExternalReference |
| payment.amount | paymentAmount | Payment.Amount |
| payment.currency | currency | Payment.Currency |
| metadata.myob_invoice_id | invoiceReference | Payment.Invoice |
Martini implementation pattern
Martini consumes Stripe payment data, resolves the related MYOB Invoice using configured references or matching rules, validates currency and decimal amounts, and creates or updates a supported MYOB Payment. It records reconciliation status, prevents duplicate processing, and routes unmatched or conflicting payments for review.
Martini capabilities used
- API consumption
- data mapping
- decimal-safe transformation
- business rules
- idempotency
- error handling
Applications commonly integrated with MYOB
MYOB can be connected to adjacent business applications when accounting, customer, commerce, payment, service, or reporting data must be coordinated. These are practical enterprise architecture patterns rather than claims of MYOB-certified integrations; the required objects and ownership model should be confirmed for each implementation.
| Application | Scenario | Direction | Martini Pattern |
|---|---|---|---|
| Salesforce | Synchronize MYOB Contacts, Items, Invoices, and payment status with customer and opportunity processes. | Salesforce → Martini → MYOB | Use Salesforce events or API requests to initiate workflows, resolve MYOB Contacts and Items, validate accounting fields, and create or update supported MYOB resources. Store cross-system identifiers and use scheduled reconciliation for missed events. |
| Shopify | Transfer orders, customers, products, refunds, and payment information into accounting workflows. | Shopify → Martini → MYOB | Receive commerce notifications where available, retrieve the authoritative order, map customers and SKUs to MYOB Contacts and Items, create accounting transactions, and synchronize invoice or payment status back to Shopify. |
| HubSpot | Keep customer and company information aligned with MYOB Contacts and relevant financial status. | HubSpot → Martini → MYOB | Schedule incremental MYOB Contact retrieval and process HubSpot changes through APIs. Apply matching rules, normalize tax and billing fields, and retain MYOB identifiers to make updates idempotent. |
| NetSuite | Exchange financial, customer, supplier, and transaction data where both platforms participate in a multi-system operating model. | NetSuite → Martini → MYOB | Define ownership by object and direction, then orchestrate REST API workflows with canonical mappings, validation, correlation IDs, conflict handling, and periodic reconciliation to avoid competing updates. |
| ServiceNow | Provide financial, supplier, or cost information to operational workflows and return approved service or procurement data when required. | MYOB → Martini → ServiceNow | Retrieve relevant MYOB data on a schedule or through a controlled API request, map it to ServiceNow fields, apply approval and validation rules, and record source identifiers for reconciliation. |
| Microsoft Power BI | Build reporting datasets from MYOB accounting data without querying a MYOB database directly. | MYOB → Martini → SQL database → Microsoft Power BI | Extract MYOB Invoices, Bills, Payments, and Accounts with checkpointed workflows, normalize them into a SQL data store, and expose a stable reporting model for Power BI. |
| Stripe | Reconcile payment activity with MYOB Invoices and Payments. | Stripe → Martini → MYOB | Consume Stripe payment data, match it to MYOB invoice references, validate amounts and currency, write supported MYOB Payments, and propagate reconciliation status with duplicate protection. |
| WooCommerce | Transfer online orders, customers, products, and refunds into MYOB accounting processes. | WooCommerce → Martini → MYOB | Receive or poll WooCommerce orders, map products and customers to MYOB Items and Contacts, create supported transactions, and run scheduled reconciliation for refunds and payment status. |
How to build a MYOB integration in Martini
Objective
Establish access to the correct MYOB product and API version while keeping credentials and company context environment-specific.
Instructions in Martini
- Register or identify the MYOB developer application
- Configure OAuth 2.0 client credentials, consent, scopes, and refresh-token handling
- Store secrets and company-file or organization identifiers in Martini environment configuration
- Confirm the selected AccountRight or MYOB Business API and supported resources
Objective
Select an event-driven or scheduled initiation model based on the confirmed notification coverage and synchronization requirements.
Instructions in Martini
- Use a Martini API or webhook workflow for supported MYOB notifications
- Use a scheduler for polling, incremental synchronization, and reconciliation
- Define the source event, polling window, checkpoint, and fallback behavior
- Avoid assuming that every MYOB object supports notifications
Objective
Call MYOB REST resources reliably and obtain complete authoritative objects before transformation.
Instructions in Martini
- Build authenticated REST API requests for the selected resources
- Process pagination and supported filters without assuming fixed page sizes
- Renew expired access tokens and apply bounded concurrency
- Persist checkpoints and correlation identifiers during long-running runs
Objective
Coordinate retrieval, enrichment, validation, target writes, and exception handling as a maintainable Martini workflow.
Instructions in Martini
- Separate resource retrieval, mapping, validation, and target writes into clear workflow stages
- Resolve Contacts, Items, Accounts, and other references before dependent transactions
- Apply ownership and conflict rules for bidirectional flows
- Record processing state so failed work can be replayed safely
Objective
Convert MYOB JSON resources into target application or canonical models while preserving financial meaning.
Instructions in Martini
- Map actual MYOB fields such as Accounts, Contacts, Items, Invoices, Bills, and Payments
- Preserve decimal precision and explicitly handle tax-inclusive or tax-exclusive values
- Normalize dates, identifiers, statuses, currencies, and line-item structures
- Version mappings by MYOB product and API version
Objective
Validate financial and operational constraints before creating or updating downstream or MYOB resources.
Instructions in Martini
- Validate required customer, item, account, tax, and transaction references
- Check source IDs and existing MYOB IDs before creating records
- Apply ownership rules for customer master data, item codes, invoice numbering, and payment status
- Route ambiguous matches, conflicts, and validation failures for review
Common MYOB data objects used in integrations
| Object | Typical Use | Common target systems | Martini handling |
|---|---|---|---|
| Accounts | Chart-of-accounts entries used to classify financial activity and map transactions. | SQL databases, Microsoft Power BI, NetSuite, Salesforce | Martini retrieves and normalizes Accounts, applies versioned account mappings, and stores external IDs for reconciliation. |
| Contacts | Customers, suppliers, and other business contacts used in sales, purchasing, and payment flows. | Salesforce, HubSpot, Shopify, WooCommerce, ServiceNow | Martini matches Contacts using configured keys, validates billing and tax fields, and creates or updates target records idempotently. |
| Items | Products or services used for sales, purchasing, inventory, and transaction line mapping. | Shopify, WooCommerce, Salesforce, NetSuite | Martini maps SKU or item identifiers, validates availability and account references, and applies product-specific transformation rules. |
| Invoices | Sales invoices containing customer references, line items, tax information, amounts, and statuses. | Salesforce, Shopify, WooCommerce, SQL databases, Microsoft Power BI | Martini validates customer and item references, preserves decimal precision, prevents duplicate creation, and synchronizes status changes. |
| Bills | Supplier bills and associated purchasing information used for accounts payable and reporting. | NetSuite, ServiceNow, SQL databases, Microsoft Power BI | Martini retrieves or writes supported Bills, maps supplier and account codes, records failures for replay, and reconciles totals. |
| Payments | Customer, supplier, and other payment transactions used for reconciliation and financial status. | Stripe, Salesforce, Shopify, SQL databases, Microsoft Power BI | Martini matches payment references to invoices or bills, validates amount and currency, and applies duplicate detection before writing updates. |
Authentication and security considerations
OAuth 2.0 application authorization
MYOB APIs use OAuth 2.0 with application registration, client credentials, consent, bearer access tokens, refresh tokens, and product-specific permissions. AccountRight and MYOB Business can have different scopes, access rules, and company or organization context.
Protect credentials and tenant context
- Store client secrets, refresh tokens, access tokens, and company-file identifiers as environment-specific secrets or configuration.
- Do not embed credentials or organization identifiers directly in reusable workflows.
- Limit permissions to the resources and operations required by the integration.
- Control access to Martini APIs that expose normalized MYOB data through appropriate authentication and authorization.
Operational considerations for MYOB integrations
Rate limits and pagination
Confirm MYOB quotas and API behavior for the customer’s product and subscription. Use bounded concurrency, retry-after handling where supplied, exponential backoff, workflow-level throttling, and complete page processing.
Idempotency and financial precision
Store source IDs, MYOB IDs, correlation IDs, and processing status before retrying writes. Preserve decimal precision and explicitly handle tax codes, rounding, tax-inclusive pricing, account codes, currencies, and payment matching.
Versioning and reconciliation
AccountRight and MYOB Business differ in resources and field structures. Version mappings by product and API version, monitor schema changes, and run scheduled reconciliation even when selected notifications are available.
Testing and recovery
- Test authentication renewal, pagination, partial failures, attachment behavior, and company-file context.
- Separate retryable failures from validation, permission, conflict, and business-rule errors.
- Keep failed transactions replayable without creating duplicates.
- Verify ownership rules to prevent bidirectional update loops.
Why use Martini instead of scripts or point-to-point integrations?
Reliable orchestration
Scripts often combine authentication, pagination, mappings, retries, and business rules in code that becomes difficult to operate. Martini represents this behavior as maintainable workflows and APIs with reusable integration logic.
Controlled transformation
Martini can map MYOB JSON into canonical or application-specific models, validate accounting references, preserve financial precision, and apply ownership and duplicate-prevention rules before writing data.
Operational resilience
- Use scheduled and notification-driven workflows together with checkpoints and reconciliation.
- Centralize environment-specific secrets and configuration.
- Handle retries, exceptions, monitoring, and replayable failures consistently.
- Expose a controlled normalized API rather than coupling every consuming system directly to MYOB.
Frequently asked questions
MYOB can be integrated through its AccountRight and MYOB Business REST APIs using OAuth 2.0. Enterprise workflows can retrieve or update supported Accounts, Contacts, Items, Invoices, Bills, Payments, and Jobs, use selected notification or webhook-style events where available, and rely on scheduled polling and reconciliation for broader coverage.
Yes. Martini can consume MYOB REST APIs with OAuth 2.0, manage pagination and token renewal, transform MYOB data, apply validation and business rules, write to downstream systems, and expose a controlled API for normalized MYOB data. It can also receive supported MYOB notifications where product and event coverage is confirmed.
No. A dedicated MYOB connector is not required. Martini can integrate using MYOB's native REST APIs, OAuth 2.0 authentication, selected notification or webhook-style endpoints, and supported file or attachment operations.
Lonti does not charge an additional per-connector or per-vendor fee to integrate MYOB. The integration is subject to the provisioned capacity of the Martini environment. Separate costs may apply from MYOB, cloud infrastructure, or other third-party systems based on subscription, API usage, and deployment model.
REST APIs are the primary and recommended method for new integrations with AccountRight and MYOB Business. OAuth 2.0 is used for application authorization. Selected notifications or webhook-style mechanisms can complement REST APIs, while pagination, scheduled workflows, and reconciliation should be used where event coverage is unavailable. No official current GraphQL or SOAP integration path was confirmed.
For selected products and events, MYOB may provide notification or webhook-style capabilities. Coverage is not universal, so the exact product, API version, and event must be confirmed. Martini can receive the signal, retrieve the complete authoritative MYOB resource, and use scheduled reconciliation as a fallback.
Martini can run scheduled or notification-driven workflows that retrieve paginated MYOB resources, map JSON payloads into canonical or target models, validate financial and reference data, and write idempotent updates. Checkpoints, external IDs, decimal-safe monetary handling, and versioned mappings support reliable synchronization.
Martini can distinguish authentication, validation, conflict, rate-limit, and transient HTTP failures, then apply appropriate retry or exception handling. Workflows should store source and MYOB identifiers, correlation IDs, checkpoints, and processing status so retries do not duplicate Invoices, Bills, Payments, or Contacts. Martini can also expose a normalized API façade for controlled access to MYOB data.
Related Martini documentation
API Access
Workflows
Connect MYOB with the rest of your enterprise systems
Use Martini to connect MYOB AccountRight or MYOB Business with CRM, commerce, payment, service, database, and analytics platforms through maintainable workflows, APIs, mappings, and secure environment configuration.