What you'll see
A customer wants money back, you need to cancel a delivery-app order, an order you voided in your POS is still live on the delivery app, or you received a failed-order email that says Failure Reason: Order has expired.
Stream does not refund customers. The delivery app handles refunds and payouts. Stream only passes cancellations between the delivery app, Stream and your POS.
What it means
Refunds
Refunds always go through the delivery app. For payout or sales statements, use the delivery app's own portal.
DoorDash: DoorDash processes refunds and credits, and shows chargebacks in your weekly payout statement. You can build a DoorDash financial report in Stream Analytics (How to Create DoorDash Financial Report).
Flipdish: cancelling in Stream asks Flipdish to refund the full order amount. This is the one case where a cancel in Stream starts a refund.
A refund of your own Stream subscription is different. See Billing and invoices.
Cancellations by POS
An order can be cancelled by you in Stream, by your staff in the POS, or by the delivery app. This table shows what happens in each case.
POS | You void it in the POS | The delivery app cancels it |
Toast | Reaches Stream. Stream then cancels on the delivery app. | Stream marks the order cancelled and tries to void the ticket. If the POS refuses (for example the check is closed or paid), void it yourself. |
Square | Reaches Stream. Stream then cancels on the delivery app. | A paid order shows as Completed in Square, because Square does not allow cancelling paid orders. The delivery app payment stays on the order. |
Aloha | Reaches Stream. Stream then cancels on the delivery app. | Stream marks the order cancelled and tries to void the ticket. If the POS refuses, void it yourself. |
Lightspeed K-Series | Reaches Stream. Stream then cancels on the delivery app. | Stream prints a message on your POS printer. Void the order yourself. |
Clover | Does not reach Stream. Also cancel on the delivery app. | Stream adds a "CANCELED" note to the order. Void it yourself. |
Zonal | Does not reach Stream. Also cancel on the delivery app. | Stream cannot change the order. Void it yourself. |
Other POS | Some partner POS systems reach Stream. For the rest, also cancel on the delivery app. | Stream tries to void the ticket. If the POS refuses, void it yourself. |
Good to know: voids from the POS only reach the delivery app for apps that accept a cancel from Stream. These apps do not: Deliveroo, Glovo, Just Eat, Lieferando, Menulog and SkipTheDishes. For those, cancel on the delivery app's tablet or portal. Stream may already have voided the ticket in your POS.
Cancelling in Stream
Owners, admins and managers can cancel orders until they are completed. Team members cannot. For ChowNow, contact ChowNow customer support.
Stream cancels in your POS first, then on the delivery app. If your POS refuses, the delivery app is not cancelled. When both work, the order shows as cancelled within a minute.
With Uber Eats, Stream shows the order as cancelled even if Uber does not accept it. Check the Uber Eats tablet.
Stream does not send a message when a cancel fails, so check the order status afterwards.
"Canceled by: DSP" means the delivery app cancelled it, and a customer cancel can show this way. Most delivery apps send no reason, so Stream shows "Reason not provided". Check the delivery app's portal or tablet for the reason.
"Order has expired"
The delivery app stopped waiting before Stream could confirm the order. Most cases happened when the POS was slow or failing to accept the order while Stream kept retrying. Other causes are a short delay at Stream, or a problem with the delivery app's own confirm step. The email does not say which, and DoorDash does not publish a fixed time limit.
The order is sent to your POS before the delivery app is told it is confirmed. An expired DoorDash order can therefore leave a ticket in your POS, which Stream does not void for you. The customer will not collect the order through DoorDash. Void the ticket so it is not made.
How to fix it
Cancel in Stream: open the order in the dashboard, open the menu next to the order status button, choose a reason and select Cancel order. See Cancel an order on Stream.
Check the result. If the order still shows its old status after a minute, the cancel did not finish. Cancel on the delivery app's tablet or portal, check that the ticket is voided in your POS, then contact Stream Support.
Voided in your POS but still live on the delivery app: cancel it on the delivery app too.
Cancelled by the delivery app: check your POS and void the ticket yourself if it is still open.
"Order has expired" email: check your POS for a ticket from that order and void it. If it keeps happening for one delivery app, contact that app's support. If it happens across several apps, contact Stream Support. See Understanding Order Errors.
Customer needs a refund: it has to go through the delivery app.
Still seeing the issue? Contact Stream Support at [email protected] with your Stream location name, the delivery app, the order ID and number, the date and time, who cancelled it (you, your POS or the delivery app), and where it shows as cancelled or still open (Stream, your POS, the delivery app). For an expired order, include the failed-order email.
