ml-connector
Sage 50Toast

Sage 50 and Toast integration

Toast runs your restaurant POS, orders, and payments. Sage 50 runs your accounting on Windows. Connecting the two keeps your sales and labor costs flowing into GL accounts without manual re-entry. Orders and payments from Toast post into Sage 50 by business date, mapped to the revenue and receivables accounts you control. Labor shifts from Toast flow into Sage 50's labor expense accounts, so month-end close has the full cost picture already in the ledger.

How Sage 50 works

Sage 50 is a Windows desktop accounting application available in US (formerly Peachtree) and UK (formerly Sage Line 50) editions. It stores all company data locally in Windows files and has no cloud REST API. Integration happens through a local .NET SDK (US edition) or Sage Data Objects COM layer (UK edition), which requires a Windows process with direct file access to the company folder. Sage 50 authentication uses Windows-local username and password, a company file path, and an ApplicationID. Since Sage 50 has no webhooks, records are read by polling against LastModifiedDate or TransactionDate, with a recommended minimum interval of 5-15 minutes for near-real-time sync.

How Toast works

Toast is a cloud-based restaurant management platform that exposes sales orders, payments, labor shifts, and menu items through a REST API. Authentication requires OAuth2 Client Credentials: exchange a clientId and clientSecret for a bearer token, and include the Toast-Restaurant-External-ID header on every request to specify the location. Multi-location restaurants need a separate ID per location. Toast supports both webhooks (order and menu updates) and polling; payments and labor require polling. The platform enforces a 20 request per second rate limit and requires nightly reconciliation polls due to non-guaranteed webhook delivery.

What moves between them

Sales orders and payments flow from Toast into Sage 50 GL on a nightly business-date reconciliation. Toast's businessDate field accounts for each location's configurable closeout hour, so a sale at 1 AM belongs to the prior date if closeout is 3 AM. Labor shift hours flow the same direction, mapped to labor cost accounts in Sage 50. Because Sage 50 is read-only on the Toast side, no data flows back to the POS.

How ml-connector handles it

ml-connector runs a local SDK session against Sage 50 to query the company data files and post GL entries, and authenticates Toast via OAuth2, caching the bearer token to avoid hitting the auth rate limit. It reconciles Toast orders and payments each business date, summing by revenue category and payment type, then posts compound GL entries into Sage 50 with offsetting accounts (sales revenue contra to receivables or bank, depending on payment status). It filters voided orders and excludes fundraising items per Toast API rules. For labor, it sums shift hours by wage type and posts to Sage 50 labor expense accounts. Because Toast's multi-location restaurants require a separate Restaurant-External-ID per location, ml-connector makes individual API calls per location and merges the GL into a single Sage 50 company file. It polls nightly rather than relying on Toast webhooks since webhooks are not guaranteed delivery. If a GL post fails, the order record is flagged and can be replayed the next night.

A real-world example

A regional restaurant group with five locations runs Toast at each site for POS, ordering, and shift management. Finance uses Sage 50 on a Windows server for GL accounting and month-end close. Previously, the accountant collected daily sales and labor reports from Toast's web UI and manually entered totals into Sage 50 GL accounts every morning, a 30-minute daily task that introduced transcription errors and delayed close. With Sage 50 and Toast connected, each night's nightly reconciliation poll posts that day's sales, payments, and labor costs into GL accounts by location-specific cost center, and month-end close begins with revenues and labor already reconciled. The accountant now uses that half-hour for variance analysis instead of re-entry.

What you can do

  • Post Toast daily sales by revenue category into Sage 50 GL accounts, reconciled by business date and location.
  • Sync Toast payments into Sage 50 bank and receivables accounts, flagged by payment type (card, cash, check).
  • Flow labor shift hours from Toast into Sage 50 labor expense accounts by wage type and location cost center.
  • Handle Toast OAuth2 token refresh, multi-location Restaurant-External-ID routing, and Sage 50 local SDK session setup without interactive login.
  • Nightly reconciliation polling with order voided-record filtering and fundraising-item exclusion per Toast API constraints.

Questions

How does ml-connector interact with Sage 50 if it is desktop-only with no cloud API?
ml-connector runs a local Windows process with access to the Sage 50 company data files on the same machine or LAN. It uses the Sage 50 .NET SDK (US edition) or Sage Data Objects COM layer (UK edition) to query GL accounts and post transactions. The process authenticates with local Windows username and password plus company file path, the same credentials a Sage 50 desktop user would use.
Does ml-connector handle Toast's multi-location setup?
Yes. Each Toast location requires a separate Restaurant-External-ID. ml-connector retrieves all accessible locations via Toast's partner API, makes individual API calls per location to fetch orders and payments, and posts the results into Sage 50 GL accounts tagged by location cost center so revenue and labor are tracked separately. This works for restaurants with single or multiple locations.
Why nightly reconciliation polling instead of Toast webhooks?
Toast webhooks are not guaranteed delivery, and payments and labor shifts have no webhooks at all, so polling is required. ml-connector reconciles each business date via a nightly poll, sums orders and payments by category, and posts compound GL entries. If a post fails, the record is flagged and can be replayed the next night, providing a safety net that webhooks alone cannot guarantee.

Related integrations

Connect Sage 50 and Toast

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

Get started