ml-connector
Microsoft Dynamics 365 Business CentralToast

Microsoft Dynamics 365 Business Central and Toast integration

Microsoft Dynamics 365 Business Central runs finance and accounting. Toast runs the restaurant: point of sale, ordering, payments, and labor. Connecting the two turns each day of restaurant activity into clean ledger entries without re-keying. After each business date closes, the gross sales, tax collected, discounts, service charges, and tender from Toast post into Business Central as a journal, split across the GL accounts and dimensions you choose. ml-connector handles the different APIs on each side and moves the data on the cadence you set.

How Microsoft Dynamics 365 Business Central works

Microsoft Dynamics 365 Business Central exposes vendors, customers, purchase invoices, sales invoices, GL accounts, general ledger entries, dimensions, journals, and items through the Business Central API v2.0, a REST API built on OData v4. All company-scoped resources nest under a tenant and environment-specific base URL, so there is no shared hostname. Authentication uses Microsoft Entra ID OAuth2 client credentials with the application scope, which suits unattended connectors. The chart of accounts and general ledger entries are read-only over the API, while journals accept new lines, so financial activity is recorded by posting journal lines rather than editing the ledger directly. Business Central also supports change-notification webhooks on many entities, with subscriptions that expire every three days.

How Toast works

Toast is a restaurant point-of-sale platform, not an ERP, so it has no vendor, purchase order, AP bill, or GL account objects. Its REST APIs expose orders and their checks, payments and refunds, menu items, labor records such as employees and time entries, and configuration objects including revenue centers, sales categories, tax rates, discounts, and service charges. Every call uses an OAuth2 machine-client bearer token plus a Toast-Restaurant-External-ID header that targets one location. Orders and payments are queried by businessDate, which respects each restaurant's closeout hour. Toast pushes order webhooks signed with HMAC-SHA256, but has no webhook for payments or labor, so those are read by polling.

What moves between them

The flow runs from Toast into Microsoft Dynamics 365 Business Central. After each business date closes, ml-connector pulls that date's orders, checks, and payments from Toast, sums sales, tax, discounts, service charges, and tender by revenue center and sales category, and posts the totals as a journal in Business Central against the matching GL accounts and dimensions. Toast revenue centers and sales categories are aligned to BC GL accounts and dimension values first, so every journal line lands on a valid target. Toast is treated as a read-only sales source, so ml-connector never writes orders, payments, or configuration back into Toast.

How ml-connector handles it

ml-connector stores both credential sets encrypted. On the Toast side it requests a TOAST_MACHINE_CLIENT bearer token, caches it until near expiry to stay under the separate authentication rate limit, and sends the Toast-Restaurant-External-ID header for each location. On the Business Central side it exchanges Entra ID client credentials for a token against the tenant's token URL and builds the base URL from the stored environment name, such as production or sandbox. Sync is driven by businessDate so totals match Toast Web reports across the closeout hour, with Toast order webhooks used to trigger a same-day refresh and a nightly poll as a reconciliation safety net since webhook delivery is not guaranteed. Revenue centers and sales categories map to BC GL accounts and dimension values, which are validated against the read-only chart of accounts before any post. Voided orders, voided checks, and refunded payments are filtered out, and gratuity service charges are separated from non-gratuity charges so tip liability is posted correctly. BC journal posts carry a stable jobId derived from the business date to prevent duplicate entries, Toast 429 responses honor the Retry-After header, and BC 429 responses back off with jitter.

A real-world example

A regional restaurant group with a dozen locations runs Toast at every site for point of sale and labor, and keeps the books for the whole group in Microsoft Dynamics 365 Business Central. Before the integration, a bookkeeper logged into Toast each morning, read the prior day's sales summary for each location, and hand-keyed gross sales, tax, comps, and credit card tender into Business Central as a journal, which took hours and drifted from what the bank deposited. With the two systems connected, each location's closed business date posts into Business Central automatically, split by revenue center and sales category and tagged to the right location dimension, with voids and refunds already removed. The morning data-entry routine disappears and month-end starts from sales that already tie to the deposits.

What you can do

  • Post each closed Toast business date into Microsoft Dynamics 365 Business Central as a sales journal, split by revenue center and sales category.
  • Map Toast revenue centers, sales categories, and tax rates to BC GL accounts and dimensions, validated against the read-only chart of accounts before posting.
  • Exclude voided orders, voided checks, and refunded payments, and separate gratuity service charges from tips so tip liability posts correctly.
  • Authenticate Toast with a machine-client token and per-location restaurant GUID, and Business Central with Entra ID OAuth2 client credentials.
  • Trigger same-day updates from signed Toast order webhooks and run a nightly reconciliation poll, with retries and a full audit trail on every record.

Questions

Which direction does data move between Microsoft Dynamics 365 Business Central and Toast?
The flow is one way, from Toast into Business Central. Daily sales, tax, discounts, service charges, and tender move from Toast and post as journal entries in Business Central. Toast is treated as a read-only sales source, so ml-connector does not write orders, payments, or configuration back into Toast.
Does Toast send invoices or a chart of accounts into Business Central?
No. Toast is a restaurant point-of-sale platform and has no AP bills, purchase orders, vendors, or GL accounts. What it provides is orders, checks, payments, labor, and configuration such as revenue centers and sales categories. ml-connector maps that activity into Business Central as journal lines, since the BC chart of accounts and general ledger entries are read-only over the API.
How does the integration make sure daily totals match what Toast reports show?
Toast assigns every sale to a businessDate based on each restaurant's closeout hour, so a late-night sale can belong to the prior day. ml-connector syncs by businessDate rather than raw timestamps, which keeps posted totals aligned with Toast Web reports. It also filters voided and refunded activity and runs a nightly reconciliation poll to catch anything a webhook missed, since Toast does not guarantee webhook delivery.

Related integrations

Connect Microsoft Dynamics 365 Business Central and Toast

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

Get started