QuickBooks Desktop and Toast integration
QuickBooks Desktop runs the books for many restaurants and food service operations. Toast powers the POS, ordering, and labor. Connecting the two keeps your sales orders, vendor expenses, and labor allocations in sync between front-of-house and back office. Sales orders from Toast flow into QuickBooks as invoices, posting to the correct accounts by outlet; vendor expenses sync back to Toast for cost-per-location analysis. Payroll and labor costs stay aligned without manual re-entry.
What moves between them
Sales orders from Toast post into QuickBooks Desktop as invoices, one per Toast order, mapped to the vendor and account derived from the Toast outlet and menu category. Order line items become invoice line items with the menu item description and Toast revenue center mapped to the QuickBooks account structure. Payments in Toast sync into QuickBooks as journal entries allocating to the correct revenue and clearing account per restaurant. Vendor data in QuickBooks syncs back to Toast to populate the expense posting accounts and cost centers for labor allocation reports. The flow runs on a schedule tied to the Toast business date (which accounts for each restaurant's closeoutHour), with reconciliation pulls each business date to catch any missed records.
How ml-connector handles it
ml-connector opens a QBWC session with QuickBooks by calling authenticate() with QBWC-supplied credentials and caching the session token for all subsequent calls in the session. On the Toast side it refreshes the OAuth bearer token on a 24-hour cycle and caches it to avoid auth rate limits. When a Toast order is ready to post, ml-connector reads the order via Toast REST API, maps the outlet GUID to the QuickBooks account, looks up the current EditSequence (version counter) for that account to prevent concurrent-edit conflicts, and sends an InvoiceAddRq QBXML request with all line items, quantities, and amounts. Toast orders are idempotency-checked via the externalId field: if an order was already posted, retrying the same request checks the externalId and skips re-creation. Voided or fundraising orders are filtered before posting. On the return path, ml-connector queries QuickBooks for vendors and account updates on a schedule, sends those back to Toast via its limited write endpoints where supported, and skips read-only entities like menu items. QBXML requests timeout in approximately 60 seconds, so large queries are paginated. Every record carries audit metadata: Toast order ID, QB transaction ID, timestamp, and outcome, so a failed GL post can be replayed once the root cause is fixed.
A real-world example
A multi-location casual dining group runs QuickBooks Desktop at headquarters to consolidate AP, AR, payroll, and GL accounts across four restaurant locations. Each location uses Toast for its POS, ordering, and labor management. Before the integration, the back-office manager exported sales summaries from each Toast outlet every day and manually entered them into QuickBooks as invoices and GL entries, matching the sales breakdown by outlet to the correct GL accounts and cost centers. Month-end close required cross-checking Toast payment totals against QB deposits and chasing discrepancies between labor hours in Toast and payroll register in QuickBooks. After connecting Toast to QuickBooks, each day's sales orders post automatically to the GL with zero re-keying, allocated to the correct outlet and revenue center. Labor allocations sync from Toast into QB expense accounts by location. The back-office team spends half the time on reconciliation, and the GL is balanced and ready for close by the first business day of the month.
What you can do
- Post Toast sales orders into QuickBooks Desktop as invoices, one per order, with line items mapped to menu category and QB account.
- Map Toast outlets and revenue centers to QuickBooks accounts, vendors, and cost centers so every sale lands on the right GL account.
- Sync Toast payments into QuickBooks as journal entries allocating to the correct clearing and revenue accounts per location.
- Push vendor and account updates from QuickBooks back to Toast for expense posting accounts, and handle idempotency so retries do not create duplicates.
- Poll on a schedule tied to each restaurant's business date, handle the 60-second QBXML timeout with pagination, and maintain a full audit trail on every transaction.
Questions
- Does the integration handle multiple Toast locations?
- Yes. Toast requires a separate external ID (Toast-Restaurant-External-ID) per location. ml-connector retrieves all accessible locations via the Toast API and maps each location's outlet to the correct QuickBooks account or cost center. Multi-location posting happens in a single schedule, so all outlets sync together.
- What happens if a Toast order is voided after posting?
- Toast returns voided orders from the API with a voided flag set to true. ml-connector filters voided orders before posting them as new invoices. If an order was already posted and then voided in Toast, a manual reversal or credit memo in QuickBooks is required; the integration does not auto-reverse.
- How does the integration handle QuickBooks' EditSequence version counter?
- QuickBooks enforces an EditSequence (version counter) on every transaction to prevent concurrent edits. Before posting a Toast order as an invoice, ml-connector queries the target account for its current EditSequence, includes it in the InvoiceAddRq QBXML request, and retries if a conflict is detected. This ensures Toast orders post cleanly even if the account is edited in QuickBooks at the same time.
Related integrations
More QuickBooks Desktop integrations
Other systems that connect to Toast
Connect QuickBooks Desktop and Toast
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started