SAP ECC and Toast integration
SAP ECC runs your enterprise accounting and inventory. Toast manages your restaurants' point of sale, orders, and payments. Connecting the two keeps your general ledger current with daily sales from every location without re-keying. Sales totals from Toast flow into SAP ECC's general ledger allocated by revenue center and location, payments reconcile automatically, and voided transactions are filtered out so only valid sales post to accounting.
What moves between them
The main flow is Toast into SAP ECC. After each business day, ml-connector polls Toast via GET /ordersBulk using the restaurant's business date (accounting for Toast's configurable close-out hour) and retrieves all orders, checks, and payments. It filters out voided transactions and fundraising items, sums sales and payments by revenue center, and posts the daily journal entries into SAP ECC's general ledger via BAPI_ACC_DOCUMENT_POST. Each entry is mapped to the matching GL account and cost center for the restaurant location. If webhooks are enabled, ml-connector can also process order_updated events in real time, but reconciliation polling still runs each night to catch any missed events.
How ml-connector handles it
ml-connector handles the very different architectures on each side. On the Toast side, it manages OAuth token caching to avoid hitting authentication rate limits, stores the bearer token encrypted, and refreshes it when needed. It polls each restaurant's orders grouped by business date, adjusting for the close-out hour configured in Toast so sales from 1 AM land on the correct prior day. It filters voided==true orders and checks, excludes fundraising items flagged in selections, and respects service charge and gratuity classifications for accurate net sales. On the SAP ECC side, ml-connector connects through the customer's on-premises RFC agent using Basic Auth and the SAP .NET Connector or Java Connector library. It builds the GL entry using BAPI_ACC_DOCUMENT_POST with the correct company code, fiscal period, and GL account and cost center from the restaurant location mapping. It calls BAPI_TRANSACTION_COMMIT immediately after to persist the entry, and uses the REF_DOC_NO field to detect and skip duplicate submissions on retry. Every record is audited with the source order ID and business date.
A real-world example
A restaurant group with 12 locations runs Toast for point of sale and order management across all sites, and SAP ECC for enterprise accounting and inventory. Before the integration, the accounting team downloaded Toast daily sales reports each morning and manually entered totals into SAP's general ledger by location, spending 30 minutes per day on data entry and frequently encountering mismatches between Toast counts and SAP entries during month-end close. With SAP ECC and Toast connected, daily sales from each location flow into SAP's GL automatically, allocated to the correct revenue center and location cost center. The accounting team now runs a reconciliation query each morning to confirm the prior day posted correctly, eliminating manual entry and making close-out faster and more accurate.
What you can do
- Poll Toast sales orders and payments each business day and post them into SAP ECC's general ledger via BAPI_ACC_DOCUMENT_POST.
- Filter voided orders, checks, and payments, and exclude fundraising items so only valid sales post to accounting.
- Map Toast revenue centers to SAP GL accounts and restaurant locations to cost centers.
- Authenticate Toast with OAuth 2.0 token caching and SAP ECC via RFC Basic Auth through the on-premises agent.
- Adjust business date for each restaurant's configurable close-out hour so sales timing is correct in SAP.
Questions
- Does the integration require an on-premises agent for SAP ECC?
- Yes. SAP ECC is an on-premises product and RFC/BAPI calls cannot originate from the cloud. ml-connector uses your customer's SAP .NET Connector or Java Connector running on their network to authenticate and post GL documents. HTTP Basic Auth for OData is an option if SAP Gateway is configured, but RFC/BAPI is the more direct path.
- How does the integration handle Toast's business date and close-out hour?
- Each Toast restaurant has a configurable closeoutHour (e.g., 3 AM) that determines when a business day ends. A sale at 1:30 AM belongs to the prior calendar day if the close-out hour is 3 AM. ml-connector polls orders grouped by business date and adjusts for each location's close-out hour so entries land on the correct day in SAP.
- What happens to voided orders and other special transaction types?
- ml-connector filters out orders and checks where voided==true before posting to the GL, and excludes menu items flagged as fundraising since they affect net sales reporting. It respects service charge and gratuity classifications so accounting records only the net sales amount. If a transaction is voided after posting, a reconciliation poll the next day detects the void and you can choose to reverse the entry.
Related integrations
More SAP ECC integrations
Other systems that connect to Toast
Connect SAP ECC and Toast
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started