SAP Business One and Toast integration
SAP Business One runs the financials and inventory for your restaurant holding company. Toast runs the point-of-sale, payments, and labor for each location. Connecting the two keeps your general ledger and accounts receivable in sync with every transaction that flows through the tills. Each business day's orders and payments post automatically into Business One's sales and cash accounts, mapped to the correct revenue center and customer, so month-end close starts with the numbers already right and your accountant can stop re-keying Toast sales registers by hand.
What moves between them
The integration reads Toast orders and payments on a business-date schedule (YYYYMMDD) that accounts for each restaurant's configurable closeoutHour, ensuring sales at 1 AM belong to the correct date. Orders and payments flow from Toast into SAP Business One's general ledger as sales journal entries (net of voids, fundraising items, and service charges per Toast constraints) and cash or accounts-receivable postings. Revenue centers and customers are mapped first so each line item references valid Business One dimensions. Voided orders, checks, and payments are filtered out, and service charges classified as gratuity are excluded from net sales. The reconciliation poll runs nightly as a safety net even if webhooks are enabled.
How ml-connector handles it
ml-connector stores Toast OAuth2 credentials and Business One session parameters encrypted. On startup it exchanges Toast credentials for a bearer token (reusing cached tokens to avoid rate limit exhaustion) and creates a Business One session via the customer-provided Service Layer URL. For each business date it polls Toast's ordersBulk endpoint with the businessDate parameter, filters voided and fundraising items, aggregates net sales and payments by revenue center and customer, and posts the resulting journal entries and payment records into Business One's ChartOfAccounts and IncomingPayments entities. It validates revenue-center and customer mappings before posting so invalid dimensions are caught before they land in the ledger. Business One's 30-minute session timeout requires session reuse rather than per-request authentication. Toast's rate limits (20 req/sec, 1 req/sec for menu, 5 req/sec for historical orders) are honored via backoff and jitter. Every record carries a full audit trail and can be replayed if a downstream Business One POST fails. Toast multi-location setups require separate Toast-Restaurant-External-ID per location; the integration retrieves all accessible locations via GET /partners/v1/restaurants.
A real-world example
A restaurant holding company operates 12 locations under the same SAP Business One instance, each running Toast POS. Before the integration, the central finance team extracted sales and payment reports from each Toast location at the end of each business day, consolidated them into a spreadsheet, and manually re-entered the totals into Business One's sales journal by revenue center. Month-end close required chasing variance reports to find which locations had been entered wrong. With Toast and Business One connected, each location's orders and payments post automatically into the correct revenue center and customer account at end of day. Reconciliation is instant because the ledger reflects reality, the multi-location setup requires no additional manual consolidation, and the finance team can start close procedures with the sales numbers locked in.
What you can do
- Post Toast net sales and payment records into SAP Business One's general ledger by business date, filtered for voided items, fundraising items, and gratuity service charges.
- Map each Toast order to the correct SAP revenue center and customer account so sales land on valid dimensions.
- Reconcile each business date nightly via polling even if Toast webhooks are enabled, ensuring no transactions are missed.
- Authenticate Toast via OAuth2 with token caching and Business One via session-based authentication with session reuse to honor rate limits.
- Retrieve all multi-location Toast restaurants via the partner API and sync each location to its own Business One mapping.
Questions
- How does the integration handle Toast's business-date closeoutHour requirement?
- Toast's closeoutHour determines which calendar date a sale belongs to; a sale at 1 AM June 12 may belong to June 11 if closeoutHour is 3 AM. ml-connector stores the closeoutHour per restaurant and polls orders using the business date, not calendar date, so every order lands in the correct Business One accounting period.
- Why does ml-connector poll Toast if webhooks are available?
- Toast webhooks are not guaranteed delivery, so ml-connector uses a nightly reconciliation poll as a safety net even when webhooks are enabled. This ensures no orders or payments slip through due to webhook failures.
- How does the integration avoid reposting voided or fraudulent orders into SAP Business One?
- ml-connector filters Toast orders before posting: voided orders, checks, and payments are excluded, and items marked as fundraising are stripped from net sales. Service charges flagged as gratuity are also excluded from revenue postings so tip reporting and net sales remain accurate.
Related integrations
More SAP Business One integrations
Other systems that connect to Toast
Connect SAP Business One and Toast
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started