MYOB and Toast integration
Toast runs your restaurant's point of sale, labor, and orders. MYOB is your accounting backbone in Australia and New Zealand. Connecting them means your daily sales reconcile automatically into MYOB's general ledger after each business close, without manual journals or spreadsheets. Discounts, tax, and service charges flow as separate line items, and every transaction carries a full audit trail for month-end review.
What moves between them
The main flow runs from Toast into MYOB nightly after each restaurant's business close. ml-connector polls Toast orders and checks via GET /ordersBulk?businessDate=YYYYMMDD (accounting for each location's closeoutHour), filters out voided==true records, extracts payments, discounts, service charges, and tax, then maps menu items to MYOB sales invoice item types. It posts a daily net revenue journal into MYOB's general ledger, breaking out net sales, discount impact, service charges (if not gratuity), and tax on separate line items, each mapped to the correct MYOB GL account and customer. Multi-location restaurants require separate Toast-Restaurant-External-ID calls per location; all daily journals post to the same MYOB company file.
How ml-connector handles it
ml-connector caches Toast OAuth2 tokens to avoid hitting the auth rate limit on high-volume reconciliations. For each restaurant location, it retrieves the closeoutHour configuration and adjusts the business date filter accordingly so Toast sales post to the correct calendar day in MYOB. It polls Toast orders at 5 requests/second for historical orders and avoids the menu and config endpoints to stay within rate limits. On the MYOB side, it refreshes the company file token on 401, stores the bearer token and x-myobapi-cftoken header values encrypted, and maintains the RowVersion on any subsequent PATCH or PUT. When posting daily journals, it pre-checks GL account existence via OData $filter before constructing the journal; if an account is missing, it surfaces an error with the account name and allows replay once the account is created. Fundraising items (flagged selections in Toast) are excluded from net sales. Service charges classified as gratuity (gratuityServiceCharge==true) are not posted as revenue, aligning with tip reporting. Every journal carry a full audit trail and can be replayed if a downstream call fails. MYOB does not support an Idempotency-Key header, so ml-connector uses BullMQ jobId deduplication to prevent duplicate journal posts on retry.
A real-world example
A 5-location restaurant group in Sydney uses Toast for point of sale across all sites and MYOB for consolidated accounting. Before the integration, the group manager exported Toast daily sales summaries each morning, manually entered the net revenue and discounts into MYOB as a single journal entry per day, and spent hours each month reconciling discrepancies between Toast and MYOB. With Toast and MYOB connected, the nightly poll automatically posts the previous day's sales, with net revenue, discounts, and service charges broken out to the correct GL accounts, and each location's transactions clearly linked to that restaurant's center. The manager logs in to MYOB each morning to see the previous day's sales already posted, and month-end reconciliation is a matter of spot-checking a summary report rather than re-keying.
What you can do
- Post daily Toast revenue summaries into MYOB's general ledger, automatically breaking out net sales, discounts, service charges, and tax on separate line items.
- Handle Toast's multi-location restaurants by polling each Toast-Restaurant-External-ID separately and consolidating all daily journals into a single MYOB company file.
- Filter out voided orders, checks, and payments and exclude fundraising items and gratuity service charges so only billable revenue posts.
- Adjust Toast's business date based on each restaurant's configurable closeoutHour so sales post to the correct calendar day in MYOB.
- Authenticate MYOB with OAuth2 plus company file credentials, cache Toast OAuth tokens to avoid rate limits, and queue every journal post with full audit trail and replay capability.
Questions
- How does ml-connector handle Toast's multi-location restaurants when posting to a single MYOB company file?
- ml-connector calls Toast separately for each restaurant location using its unique Toast-Restaurant-External-ID guid, retrieves that location's business date and sales, then consolidates all daily journals from every location and posts them into the single MYOB general ledger. You can optionally assign each Toast location to a separate MYOB customer or job code so the reconciliation remains location-specific within the ledger.
- What happens if a Toast sale includes a voided order or a gratuity service charge?
- ml-connector filters out any Toast record with voided==true before extracting revenue, so voided orders and payments do not post to MYOB. Service charges flagged as gratuity (gratuityServiceCharge==true) are excluded from net revenue and not posted, aligning with tip reporting conventions. Fundraising items (flagged selections) are also excluded from revenue.
- How often does ml-connector post Toast sales to MYOB, and what if MYOB returns an error?
- ml-connector polls Toast nightly after each restaurant's business close (accounting for closeoutHour), extracts sales and payments, and posts a single daily journal into MYOB's general ledger. Every journal is queued with a full audit trail and jobId deduplication, so if MYOB returns an error such as a missing GL account or a rate-limit 429, ml-connector retries the same jobId and will not post duplicate entries once MYOB recovers or the account is created.
Related integrations
More MYOB integrations
Other systems that connect to Toast
Connect MYOB and Toast
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started