ml-connector
SYSPROToast

SYSPRO and Toast integration

SYSPRO runs the back office: accounting, inventory, and supply chain for restaurant groups and food distributors. Toast runs the front of house: POS, ordering, payments, labor, and menu management. Connecting them keeps your sales and inventory accurate in the GL and your cost of goods current at the register. Sales orders and payments from each Toast location flow into SYSPRO's accounts receivable and general ledger each business day, and inventory adjustments from SYSPRO feed back to Toast's stock counts so pricing and availability stay in sync.

How SYSPRO works

Toast exposes orders, checks, payments, employees, shifts, menu items, and inventory through REST APIs at https://ws-api.toasttab.com, authenticated with OAuth2 client credentials and a Toast-Restaurant-External-ID header per location. Toast supports both event webhooks (order_updated, menu changes) and polling endpoints for historical reconciliation, with signature verification via HMAC-SHA256. Webhooks cover orders and menu but not payments or labor shifts, so a nightly reconciliation poll by business date is required. Voided orders, checks, and payments are returned in the API but flagged with a voided field so they can be excluded from posting.

How Toast works

SYSPRO exposes customers, invoices, general ledger accounts, and inventory through three API layers: e.net Business Objects (REST/SOAP with read-write via session token), OData (REST read-only with HTTP Basic Auth), and Workflow Service. Each customer provides their own server URL and credentials since SYSPRO has no public SaaS base URL. SYSPRO is poll-only with no outbound webhooks, and all write operations (posting AR invoices, GL entries, and inventory transfers) go through the e.net Business Objects layer using XML payloads over REST or SOAP/NetTcp.

What moves between them

Sales orders and payments from Toast flow daily into SYSPRO's accounts receivable and general ledger. Each Toast order becomes an ArInvoice in SYSPRO mapped to the Toast restaurant's customer record, with line items mapped to SYSPRO inventory items and revenue accounts. Toast payments post to SYSPRO AR as payment applications. Inventory adjustments flow in both directions: Toast reports stock consumed per shift, and SYSPRO warehouse counts feed back to Toast so menu pricing reflects current cost of goods. Payment and labor data move from Toast into SYSPRO only; SYSPRO customer and product data are read and validated but not written back to Toast.

How ml-connector handles it

ml-connector listens for Toast webhooks on order and menu changes, and runs a nightly reconciliation poll scoped to each restaurant's business date (accounting for Toast's configurable closeoutHour). On the SYSPRO side, ml-connector maintains a session token obtained via e.net Utilities/Logon, using it on all subsequent calls and refreshing before timeout. Voided orders and payments are filtered before posting. Multi-location restaurants are routed via separate Toast-Restaurant-External-ID per location, and SYSPRO customer records are matched by location. Revenue and cost accounts are mapped per Toast revenue center and menu category. Toast token caching avoids auth rate limits, and SYSPRO's URL-length constraints on REST payloads are handled by switching to SOAP/NetTcp for large invoice batches. Audit logs track every order, payment, and inventory adjustment, and failed postings can be replayed once the underlying issue (missing customer, invalid GL account, insufficient inventory) is resolved.

A real-world example

A restaurant group with five owned locations uses SYSPRO for back-office accounting and inventory across all units, and Toast at the register in each location. Before the integration, the manager exported daily sales reports from Toast and re-entered revenue and cost of goods by hand into SYSPRO each morning, a process that took 45 minutes and was error-prone. Inventory counts from Toast did not flow back, so pricing in the menu did not reflect current food costs, and purchase orders were placed blind to actual consumption. With the integration, Toast sales post to SYSPRO AR overnight, inventory from each location updates SYSPRO's warehouse counts by 6 AM, and the morning accounting close takes minutes instead of hours. Pricing stays current, purchase orders are informed by real consumption, and the two systems are always in agreement.

What you can do

  • Post Toast sales orders and payments to SYSPRO accounts receivable and general ledger daily, mapped to the correct customer and revenue accounts.
  • Filter voided orders and payments so they do not post to SYSPRO, keeping AR clean.
  • Sync inventory consumption from Toast locations back to SYSPRO warehouses, keeping cost of goods current for pricing and purchasing.
  • Handle multi-location restaurants by routing each Toast-Restaurant-External-ID to its own SYSPRO customer record and cost center.
  • Manage SYSPRO session tokens, OAuth2 bearer tokens, business-date boundaries, and nightly reconciliation polling with a full audit trail and replay on failure.

Questions

How are Toast locations mapped to SYSPRO customers and cost centers?
Each Toast restaurant location is identified by its unique Toast-Restaurant-External-ID and matched to a SYSPRO customer record. If a restaurant group has five Toast locations, there are five separate webhooks subscribed and five SYSPRO customer IDs in the mapping. Revenue centers and menu categories in Toast are mapped to SYSPRO GL accounts and cost centers, so labor and cost of goods can be allocated by location.
Does voided data from Toast cause problems in SYSPRO?
No. Toast returns voided orders, checks, and payments with a voided flag set to true. ml-connector filters voided records before posting, so they never appear in SYSPRO AR or GL. This keeps the accounts clean and prevents confusion during reconciliation.
How often is inventory synced from Toast back to SYSPRO?
Inventory from each Toast location is polled after each business day closes (accounting for the restaurant's configurable closeoutHour) and posted to SYSPRO as a warehouse transfer. This typically happens once per night, so SYSPRO inventory and menu pricing stay current by morning.

Related integrations

Connect SYSPRO and Toast

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

Get started