Added a customers array to the order payload of the order.confirmed event. For single-customer orders it contains exactly one element. Read More
Added an optional provider_loyalty_id to customer objects, carrying the customer's loyalty program identifier when the ordering platform supplies one. Orders without a loyalty identifier omit the field, so existing integrations are unaffected. Read More
Documented cash_amount_due on the order.confirmed payload. When an order is unpaid (for example drive_thru), this is the cash amount to collect at fulfillment in the lowest denomination; it may be less than total when the ordering platform funds benefits that are not sent as discount lines. The field has been sent since 2026-05-04 and was already documented on the DSP and POS APIs — this adds the missing Events API documentation. Read More
Deprecated the singular customer field on the order.confirmed payload in favor of customers. It is still populated with the first customer for backwards compatibility, so no action is required to keep existing integrations working.
Corrected the documented merchant cancellation status value. The API spec previously listed the order.canceled merchant status as canceled; the value Stream actually sends is merchant_canceled, which is what the Order Canceled page has always shown. No behavior changed — only the spec was wrong. If your integration matches on canceled for merchant cancellations, switch to merchant_canceled.
Items and modifiers in the order.confirmed event now include a stream_id — the Stream catalog ID matching the stream_id exposed on the DSP menu — so order contents can be reconciled against stored menu data instead of by name. Read More
Modifiers in the order.confirmed event can now contain their own nested modifiers array, allowing multi-level modifier selections to be represented. The field is only present when a modifier has nested selections, so existing integrations are unaffected. Read More