ml-connector
Oracle JD EdwardsToast

Oracle JD Edwards and Toast integration

Oracle JD Edwards EnterpriseOne powers on-premises enterprise financials and procurement. Toast operates cloud-based restaurants and captures all sales, payments, and labor. Connecting them keeps your GL in lockstep with restaurant operations without manual posting. Sales orders and payment journals flow from Toast into JD Edwards on a daily reconciliation schedule, mapped to your revenue centers, tax codes, and GL accounts. All records carry a full audit trail and can be replayed if a downstream post fails.

How Oracle JD Edwards works

Oracle JD Edwards EnterpriseOne runs on premises and exposes financial and operational data through an Application Interface Services (AIS) REST Server hosted at the customer infrastructure. The API authenticates with a session token obtained via POST to the customer's AIS Server, or with HTTP Basic Auth in Tools 9.2.5.2 and later. Key tables include the Account Ledger (F0911 for GL transactions), Supplier Master (F0401), Customer Master (F03012), Item Master (F4101), and journal entry batches (F0911Z1). JD Edwards has no native outbound webhooks and supports polling only via its data service with date filters. All writes require named orchestrations or form services, and pagination uses the maxPageSize parameter with a moreRecords flag. The AIS Server URL is customer-specific with no shared public hostname, and the server enforces session token lifetime (30-60 minutes) and IP allowlist restrictions that must be managed by the customer.

How Toast works

Toast is a cloud-based restaurant operating system providing a REST API over HTTPS that exposes orders, payments, labor shifts, menu items, and revenue data. Authentication uses OAuth2 Client Credentials to exchange clientId and clientSecret for a bearer token, and every API call requires two headers: the bearer token and a Toast-Restaurant-External-ID GUID identifying the location. Toast supports both webhooks (push events for orders, menu, and stock) and polling (GET /ordersBulk?businessDate=YYYYMMDD). Webhook signatures are verified via HMAC-SHA256. Key entities include Order, Check, Payment, MenuItem, Employee, and TimeEntry. Rate limits are 20 requests per second with special lower limits for the Menu API (1 req/sec per location) and historical orders. Toast requires separate location GUIDs for multi-location chains and uses business-date-aware order classification based on each restaurant's configurable close-out hour. The Token must include userAccessType: TOAST_MACHINE_CLIENT and is cached to avoid hitting auth rate limits.

What moves between them

Daily reconciliation flows from Toast into Oracle JD Edwards. Each business date, ml-connector polls Toast's orders and payments via GET /ordersBulk?businessDate=YYYYMMDD, retrieves the full order detail including items, discounts, and service charges, and posts summary journal entries into the JD Edwards GL. Revenue is mapped to GL accounts by revenue center (Toast's RevenueCenter dimension); discounts and service charges are mapped to separate accounts. Payments are classified by tender type and posted to the cash or credit liability GL accounts corresponding to each Toast payment method. Voided orders and checks (identified by the voided==true flag in the Toast API) are excluded from GL posting. Tax collected is segregated and posted to the appropriate tax payable GL account. All postings are tagged with the Toast-Restaurant-External-ID so that multi-location restaurants can reconcile back to Toast by location. Reference data such as revenue centers, discount codes, and tax rates are pre-mapped and validated before any journal entry is created.

How ml-connector handles it

ml-connector stores both credential sets encrypted and authenticates to each system independently. On the Toast side, it caches the OAuth2 bearer token to avoid hitting the auth rate limit, observes Toast's 20 req/sec general rate limit and 1 req/sec menu rate limit per location, and staggers historical order requests with 5-10 second spacing when pulling orders older than one month. On the JD Edwards side, it posts to the customer's AIS Server URL (obtained from the credential), re-authenticates when a session token expires (HTTP 444 signals this), and includes the customer's whitelisted IP in its egress to clear the AIS Server inbound IP allowlist. Orders are polled by business date (which accounts for each Toast restaurant's closeoutHour setting) and checked for the voided flag before posting. All journal entries are posted using a named orchestration or the journal entry batch form service (F0911Z1); batch deduplication uses the Toast order ID as the external reference so that retries do not create duplicate GL entries. Every record is logged to a full audit trail including order ID, payment ID, amount, GL account, and the JD Edwards batch ID. If a downstream GL post fails, the entire batch is replayed from Toast source data without manual intervention.

A real-world example

A regional restaurant group with six locations runs Toast for POS and payments across all units and uses Oracle JD Edwards for consolidated accounting and AP management. Before the integration, the accounting team spent two hours every morning exporting sales reports from each Toast location, consolidating them in a spreadsheet, and manually posting the summary to the GL by revenue center. Month-end close required drilling through six sets of Toast reports and six GL detail lines to reconcile sales, and corrections meant reversing and re-posting in JD Edwards. With Toast and JD Edwards connected, each night the system polls the prior business day from Toast across all locations, maps each location to its GL revenue center, and posts the complete journal. The accounting team now opens JD Edwards to find the GL pre-posted and reconciled to Toast, and can spend their time on variance analysis instead of data entry. Adding a new location is as simple as adding the Toast-Restaurant-External-ID to the mapping table; the sync continues without code changes.

What you can do

  • Post Toast orders, discounts, and service charges to Oracle JD Edwards GL accounts mapped by revenue center and business date.
  • Classify Toast payments by tender type and post to the appropriate cash and credit liability accounts.
  • Exclude voided orders and checks from GL posting and match them by Toast order ID to prevent duplicate entries on retry.
  • Authenticate with Toast OAuth2 bearer tokens and JD Edwards AIS Server session tokens while respecting rate limits and token expiry.
  • Poll Toast by business date (accounting for each location's closeoutHour) with full audit trail and error replay to JD Edwards.

Questions

How does ml-connector handle multi-location Toast accounts with Oracle JD Edwards?
Toast requires a separate Restaurant-External-ID GUID for each location, and ml-connector retrieves all accessible locations via GET /partners/v1/restaurants. Each order and payment is tagged with its source Toast-Restaurant-External-ID and posted to the JD Edwards GL account corresponding to that location's revenue center mapping. A single organization can map many Toast locations to their respective GL cost centers or consolidate all into one if needed.
What prevents duplicate GL entries if a Toast poll fails and is retried?
ml-connector uses the Toast order ID and payment ID as the external reference key when posting to JD Edwards, and includes the JD Edwards batch number in the audit log. Orchestrations or batch form service calls (F0911Z1) are idempotent on the reference key, so retrying the same Toast orders does not create duplicate GL lines. The full order details from Toast are logged so corrections can be traced back to the source.
How does ml-connector work around Toast's business-date complexity and JD Edwards session tokens?
Toast classifies orders by business date (YYYYMMDD) based on each restaurant's configurable closeoutHour setting, not calendar date. ml-connector respects this and polls GET /ordersBulk by the Toast business date. On JD Edwards, session tokens expire every 30-60 minutes (signals HTTP 444), and ml-connector automatically re-authenticates to the AIS Server and resubmits the post. Both systems' constraints are bridged at the ml-connector layer.

Related integrations

Connect Oracle JD Edwards and Toast

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

Get started