Exact Online and Toast integration
Exact Online handles accounting and finance for restaurant chains. Toast runs the POS and orders. Connecting the two keeps your sales journal current without re-keying daily totals. Toast sales orders and payments post into Exact Online's general ledger on a nightly schedule, allocated to the revenue center for each location, so month-end close begins with your sales accounts already reconciled.
What moves between them
The primary flow is Toast into Exact Online. Each night, ml-connector polls Toast orders and payments for the previous business date, filters out voided orders and non-revenue items (fundraising), rolls up revenue and discounts by revenue center and menu category, then posts the daily sales journal into Exact Online's GL with one line per revenue center. Exact Online GL accounts and revenue centers are pre-mapped to Toast menu categories and revenue centers, so every line references a valid GL account and revenue center that already exists. The flow runs nightly after Toast business-date closeout to ensure the full day's sales are included.
How ml-connector handles it
ml-connector stores both credential sets encrypted. On the Exact Online side it refreshes the OAuth Authorization Code Grant token when a call returns 401 and caches it to avoid re-authorization overhead. On the Toast side it uses OAuth Client Credentials with the clientId and clientSecret, caches the bearer token, and includes the Toast-Restaurant-External-ID header on every request. Because Toast webhook delivery is not guaranteed, ml-connector polls nightly via GET /ordersBulk with the business date parameter rather than relying on webhooks. Before posting, it filters out voided orders (voided==true) and fundraising items and sums revenue by revenue center and menu category. Toast business dates are configurable per location (closeoutHour sets the boundary), so the poll query must account for each location's timezone and closeout rules to avoid missing sales that fall after midnight UTC. Toast rate limits are 20 requests per second by default, so ml-connector spaces requests with backoff and retries on 429. Every order carry a full audit trail and can be replayed if a downstream GL posting fails.
A real-world example
A fast-casual restaurant chain operates 12 Toast POS locations across a metro area and uses Exact Online for accounting and P&L by location. Before the integration, the accounting team downloaded the daily sales summary from Toast each morning, manually added up revenue by location and category, then entered journal entries into Exact Online to post the sales. Reconciliation was manual, error-prone, and delayed P&L close by a day. With Exact Online and Toast connected, each location's daily sales post into the GL at midnight, allocated to the correct revenue center, and the morning sales report is already waiting with GL accounts reconciled. Month-end close begins with the revenue accounts complete and verified.
What you can do
- Post Toast daily sales totals into Exact Online general ledger, allocated by revenue center and menu category, on a nightly schedule.
- Filter voided orders and non-revenue items (fundraising) so only net sales post to GL.
- Map Toast menu categories and revenue centers to Exact Online GL accounts and revenue centers so every line references valid dimensions.
- Handle Toast business dates per location by accounting for each restaurant's configurable closeout hour, so sales after midnight land on the correct day.
- Audit every order and payment, track which transactions posted to GL, and replay failed postings if a downstream GL call fails.
Questions
- Why does ml-connector poll Toast every night instead of using webhooks?
- Toast webhooks do not cover payments and are not guaranteed to deliver. ml-connector uses nightly polling via GET /ordersBulk with the business-date parameter as a reliable safety net, even where webhooks are enabled for orders. This ensures every sale is captured and no late-arriving orders are missed after a webhook is sent.
- How does ml-connector handle Toast's multi-location and business-date rules?
- Toast requires a separate Toast-Restaurant-External-ID header per location, and business dates vary by location (configured via closeoutHour). ml-connector queries each location separately, accounts for its timezone and closeout rules to determine the correct business date, and rolls up sales by that location's revenue center. This ensures a sale at 1 AM is posted to the correct business date even if it occurs after midnight UTC.
- How are sales mapped to Exact Online GL accounts and revenue centers?
- Before the first sync, ml-connector builds a mapping from Toast menu categories and revenue centers to Exact Online GL accounts and revenue centers. On each nightly poll, sales are grouped by these dimensions and one journal line is posted per revenue center. If a Toast revenue center has no mapping, that sale is flagged and not posted, ensuring every GL entry references a valid account and dimension.
Related integrations
More Exact Online integrations
Other systems that connect to Toast
Connect Exact Online and Toast
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started