ml-connector
MYOBTableau

MYOB and Tableau integration

MYOB runs your accounting. Tableau visualizes your business. Connecting them puts real-time financial data into the hands of your team without manual exports. Invoice aging, GL balance reconciliation, cash flow forecasts, and customer profitability reports all pull directly from MYOB, updated on a schedule you control. No more stale spreadsheets or month-end data scrambles.

How MYOB works

MYOB AccountRight Live API exposes general ledger accounts, journals, invoices, bills, suppliers, customers, and employees through REST with OData v3 query parameters. Authentication requires OAuth2 Authorization Code flow plus company file username and password passed in three headers on every call: Authorization Bearer token (20-minute expiry, 1-week refresh token), x-myobapi-key (API Key), and x-myobapi-cftoken (Base64 company file credentials). MYOB does not support webhooks, so changes are detected by polling with OData $filter on LastModified timestamps. Rate limits are 8 requests per second and 1,000,000 per day; pages are capped at 1,000 records. Desktop-only files must be hosted in MYOB Business cloud; local http://localhost:8080 instances are unreachable from server-side connectors.

How Tableau works

Tableau exposes workbooks, data sources, views, projects, users, groups, and extract schedules through REST API available on Tableau Cloud (SaaS) and Tableau Server (self-hosted). Authentication uses Personal Access Token (PAT) exchanged for a session token valid 240 minutes by default, or Connected App with JWT. The API is site-scoped, so all operations require a site ID in the path. Tableau publishes webhook events for datasource and workbook lifecycle (created, updated, deleted, refresh-started, refresh-succeeded, refresh-failed), but webhooks carry no HMAC signature, so secret tokens must be embedded in the URL. Tableau Cloud PAT credentials expire after 15 days of non-use; Tableau Server PAT expires after 1 year. Views are read-only derived objects; only workbooks and data sources can be written.

What moves between them

General ledger accounts, invoices, bills, and customer contacts flow from MYOB into Tableau as data source extracts on a poll interval you set, typically daily or after business hours. MYOB is the authoritative source; Tableau is read-mostly for analysis and reporting. No data flows back from Tableau into MYOB. Customer and supplier contact hierarchies update in Tableau whenever MYOB contacts change, so reports always reflect the current customer list and supplier terms. GL account hierarchies and invoice aging flow the same way, refreshing workbook datasets automatically.

How ml-connector handles it

ml-connector polls MYOB using OData LastModified filters to detect changes since the last sync, respecting the 8-request-per-second rate limit by spacing calls with backoff. It retrieves MYOB's OAuth token on each sync window and refreshes it if the 20-minute window has elapsed; it also stores the company file username and password encrypted and includes them in the x-myobapi-cftoken header on every MYOB call. On the Tableau side, ml-connector obtains a session token from the PAT credentials, refreshes it before the 240-minute window expires, and uses that token to publish new data source extracts or trigger workbook refreshes. Because Tableau webhooks carry no signature, ml-connector validates the webhook source by checking the registered endpoint secret and storing every MYOB extract publication with an audit trail. If a Tableau refresh fails or an MYOB poll returns rate-limit 429, ml-connector retries with exponential backoff after a short delay. GL accounts and customer hierarchies are mapped in both directions so Tableau reports slice GL data by customer, region, or business unit exactly as MYOB tracks it.

A real-world example

A mid-sized consulting firm runs MYOB AccountRight for accounting across three offices and four business lines. Finance spends the first three days of every month exporting invoice aging, GL balances, and cash flow reports from MYOB, then manually rebuilding pivot tables in Excel to track profitability by business line and office. With MYOB and Tableau connected, the team logs into a Tableau dashboard that auto-refreshes each morning from MYOB, showing current invoice aging, GL balances by cost center, and year-to-date cash flow. Month-end close starts with the data already current and the team's three days of manual work becomes thirty minutes of variance review.

What you can do

  • Poll MYOB general ledger accounts, invoices, bills, and customer contacts on a daily schedule, filtering by LastModified date to detect only new and changed records.
  • Publish GL and invoice data as Tableau data source extracts and refresh workbooks automatically so dashboards always reflect the current MYOB ledger.
  • Bridge MYOB company file authentication (OAuth2 plus company file credentials) with Tableau personal access token authentication, refreshing both on each sync cycle.
  • Respect MYOB rate limits (8 requests per second) with intelligent backoff and retry, and handle Tableau PAT token expiry before it can cause extraction failures.
  • Track every MYOB record sync and Tableau refresh in a full audit trail, allowing replay if a downstream refresh fails or a record needs reprocessing.

Questions

Which direction does data move between MYOB and Tableau?
Data flows from MYOB into Tableau only. MYOB is the authoritative source for all financial data. GL accounts, invoices, bills, and customer contacts are polled from MYOB and published to Tableau as data source extracts on a schedule you control. Tableau is read-mostly for analysis and dashboards; no data flows back to MYOB.
How does ml-connector handle MYOB's company file credentials and short token expiry?
ml-connector stores both the OAuth token and company file username/password encrypted. On each sync it checks if the 20-minute OAuth token window has elapsed and refreshes it if needed. The company file credentials are sent in the x-myobapi-cftoken header on every MYOB call, allowing ml-connector to reach your MYOB company file regardless of how many times the OAuth token rotates.
What happens when Tableau or MYOB rate-limits the connection?
MYOB returns HTTP 429 when 8 requests per second are exceeded. Tableau does not publish its rate limit policy. ml-connector detects 429 on MYOB and backs off with exponential delay before retrying, respecting the rate limit window. All rate-limit retries are logged in the audit trail so you can track when throttling occurs and adjust the poll frequency if needed.

Related integrations

Connect MYOB and Tableau

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

Get started