ml-connector
Workday Financial ManagementToast

Workday Financial Management and Toast integration

Workday Financial Management runs your enterprise accounting and procurement. Toast runs your restaurant operations and point of sale. Connecting the two moves restaurant revenue directly into your general ledger without re-keying. Sales, payments, and discounts from Toast post into Workday as journal entries on the GL accounts and cost centers you configure, and the integration handles the different authentication schemes and XML message formats on each side.

How Workday Financial Management works

Workday Financial Management exposes suppliers, supplier invoices, purchase orders, GL accounts, worktags, customers, and journal entries through two API surfaces: SOAP with WS-Security UsernameToken authentication over XML, and REST with OAuth2 refresh-token flow over JSON. ISU (Integration System User) credentials are required and must be configured with appropriate security group assignments in the tenant. Workday has no native webhooks, so financial records are read by polling with date-range filters; polling intervals are typically 15 to 60 minutes for transactional entities. The minimum safe polling interval is 5 minutes before tenant-level rate throttling becomes a risk.

How Toast works

Toast exposes sales orders, checks, payments, menu items, employees, shifts, and revenue centers through REST APIs authenticated with OAuth2 client credentials. Every request requires two headers: an Authorization bearer token and a Toast-Restaurant-External-ID that identifies the location. Toast supports both webhooks for real-time order updates and polling for historical reconciliation, but webhooks are not available for payments and labor records. Webhook signatures use HMAC-SHA256 verification. Business date is configurable per restaurant based on closeoutHour, and multi-location deployments require separate API calls per location. Rate limits are 20 requests per second with a 5-requests-per-second ceiling for historical orders over 1 month old.

What moves between them

The integration flows from Toast into Workday Financial Management. Sales orders and payments from Toast are read on a daily schedule aligned to each restaurant's business date, filtered to exclude voided transactions and fundraising items that should not post to accounting. Each sale becomes a debit to a Toast revenue account and a credit to a customer account or cash account, while payments map to cash receipt journal entries. Discounts and service charges are broken out into separate journal entries so they post to the correct GL accounts. No data flows back to Toast; all writes are into Workday.

How ml-connector handles it

ml-connector stores Toast OAuth2 credentials and exchanges them for a bearer token before each request, caching the token to avoid hitting the authentication rate limit. For Workday, it stores the ISU username and password and constructs SOAP WS-Security envelopes containing the credentials. The integration reads Toast orders for the prior business date, filtering out voided orders and checks where voided=true, and excluding fundraising items flagged in menu selections. Each order's payments are read separately since Toast does not include payment details in order events; payments are matched to the originating order via the order ID. The restaurant location is identified by Toast-Restaurant-External-ID, and multi-location chains are synced as separate tasks per location. For Workday, orders are converted to journal entry details: each revenue item maps to a Workday GL account via a configuration mapping, the cost center is pulled from a Toast revenue center custom field or defaults to a company-wide center, and the entire entry is submitted via the SOAP Put_Journal_Entry operation. Business date logic accounts for each Toast restaurant's configurable closeoutHour; a sale at 1 AM belongs to the prior business date if closeoutHour is 3 AM. If a Workday submission fails, the entire order is marked for replay; on retry, the integration checks if the journal entry already exists via a unique external ID before resubmitting, preventing duplicates.

A real-world example

A regional restaurant group runs Toast across fifteen locations for point of sale and operations, and uses Workday Financial Management for consolidated accounting and cost center reporting. Before the integration, the accounting team manually exported sales summaries from Toast every night, matched them to the restaurant locations and revenue streams in a spreadsheet, and re-entered the total sales and payment allocations into Workday the next morning. Month-end close required reconciling Workday revenue accounts against Toast sales reports and investigating every mismatch. With Toast and Workday connected, each restaurant's sales and payments post automatically to the correct GL accounts and location cost centers every night. The accounting team verifies the nightly summary report instead of re-keying, and month-end close starts with revenue accounts already reconciled to Toast; the manual entry step is eliminated.

What you can do

  • Post Toast sales orders into Workday Financial Management as journal entries, allocated to the correct GL accounts and cost center per restaurant location.
  • Sync Toast payments and discounts as separate journal entries so they land on the right accounting accounts.
  • Filter voided orders and fundraising items automatically so only net revenue posts to the general ledger.
  • Handle Toast's multi-location setup and restaurant-specific business-date closeout logic without manual configuration per location.
  • Manage OAuth2 token refresh for Toast and SOAP envelope construction for Workday, with automatic replay if a submission fails.

Questions

How does the integration handle Toast's multi-location setup?
Each Toast location has a unique Toast-Restaurant-External-ID. The integration retrieves all accessible locations via the Toast API and runs a separate sync task per location, reading that location's orders and payments and posting them to the Workday cost center assigned to that restaurant. Configuration is done once per location.
Do voided Toast orders and payments need to be filtered manually?
No. The integration automatically excludes orders where voided=true and filters out fundraising items flagged in menu selections. Only net revenue posts to Workday. Service charges classified as gratuity are also filtered if your restaurant policy excludes them from taxable sales.
What happens if a Workday journal entry submission fails?
The order is marked for replay. On the next sync, the integration checks if the journal entry was already created by querying Workday with the order's external ID. If it exists, the order is skipped to prevent duplicate posting. If not, the submission is retried.

Related integrations

Connect Workday Financial Management and Toast

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

Get started