Overview
A reference for the most common problems merchants run into with online ordering, with diagnostics and fixes. If you can't find the issue here, contact support with the order number and a screenshot.
Customers report "Couldn't load menu"
Symptom: customer scans a QR or opens a link and gets a "Couldn't load menu" error screen.
Check, in order:
- Branch is set Online Ordering: Enabled: Settings → Branches → [branch] → Online Ordering.
- Branch has a published menu: Catalog → Menus → confirm the menu shows "Published" and is assigned to that branch.
- The Menu Link's branch/menu pairing is correct: Sidebar → Menu Links → the link in question → Link Details. The branch must match, the menu must be the published one.
- The branch slug is unchanged, if you renamed the branch's slug recently, old QR codes / URLs will 404.
If the customer arrived via a table QR specifically:
- The table still exists in Table Management → Floors → [floor]. Deleted tables produce a not-found error on scan.
Orders are placed but don't appear in the dashboard
Symptom: customer says they placed an order, but you can't find it in Live Orders.
Check:
- Branch filter at the top of Live Orders, you may be looking at a different branch.
- Date filter: orders sometimes land in "today" of the customer's timezone but "yesterday" in yours; check both days.
- Order status filter: Live Orders by default hides terminal statuses. Switch to "All" to see Cancelled / Delivered.
- Customer's payment actually succeeded, if the payment was declined, no order was created. Ask them for the email/SMS confirmation receipt; if they don't have one, the order never went through.
- Customer ordered from the right brand, if you have multiple brands, the order is under whichever brand the link belongs to.
Customer was charged but no order exists
This is the inverse of the previous problem and is more serious.
In almost all cases the charge is actually a pending authorisation, not a settled payment, and the provider will void it within 1-7 days. To confirm:
- Ask the customer for the transaction reference from their bank app.
- Cross-check in Transactions → Payments in the dashboard.
- If the payment shows as Authorised but not Captured, no order was created and the auth will fall off automatically. Reassure the customer.
- If the payment shows as Captured with no matching order, you need to refund it manually from Transactions → Payments → [the payment] → Refund.
If this happens repeatedly, the payment provider integration may be misconfigured. Contact support with examples.
Menu changes I made in the dashboard aren't showing up online
- Did you click Publish on the menu? Saved-but-unpublished changes don't ship to the customer.
- The customer app pulls menu data on each page load. Have them hard-refresh / close and reopen the tab.
- Confirm you edited the menu that's actually assigned to the Menu Link for this branch, it's easy to publish changes to the wrong menu.
- If item availability is off (86'd), the item will be hidden even if it's in the published menu. Check Selling → Item Availability.
Delivery is offered to addresses where we don't deliver
Customers can place delivery orders to addresses outside your zone.
- Settings → Branches → [branch] → Delivery Zones: check the zones are still Active.
- Check the polygon is drawn correctly on the map.
- If multiple zones overlap, the customer's address falls into all of them; the most permissive fee/ETA wins. If you want stricter behaviour, redraw with cleaner boundaries.
Customers say payment is failing
- Test it yourself on a phone with a real card. The customer-facing error message is usually accurate ("expired", "insufficient funds", "issuer declined").
- If every customer's payment fails, your provider connection may have lapsed. Settings → Payment Methods → reconnect.
- If payments fail only for a specific card brand or country, that's a provider-side configuration issue; contact your provider (Stripe / Paymob / Fawry) directly.
QR-on-table dine-in orders go to the wrong table
- The QR encodes a
branchIdandtableId. If you regenerated table IDs (deleted and re-added the table) the old printed QR points at a non-existent table. - Print fresh QRs from Table Management → Floors → Tables.
- If multiple guests scanned different table QRs but ended up on the same ticket, that's because they joined the existing session of whichever table they landed on. Confirm each table's QR points at its own table, easiest is to scan each QR yourself and check the table number that appears.
"Branch is currently closed" appears at unexpected times
- The branch may have custom online-ordering hours different from its general hours. Settings → Branches → [branch] → Online Ordering → Hours.
- The cut-off kicks in before closing time. If you close at 11pm with a 30-minute cut-off, the last accepted order is 10:30pm.
- The branch's timezone is wrong, check Settings → Branches → [branch]. A tenant in Dubai with a branch timezone of America/New_York would close at very strange-looking times.
- Someone hit Pause Online Ordering and forgot to unpause it.
Loyalty points aren't being applied
- Confirm loyalty is enabled for the tenant, Sidebar → Marketing → Loyalty → check program is Active.
- Confirm the customer is signed in, points accrue per customer, identified by phone number. Guest orders accrue nothing.
- Earn and redemption rules are set in Loyalty → Configuration; mistakes there cause silent zero-points.
When to escalate to support
- Repeated discrepancies between payment provider and Tappya records.
- Customers placing orders that never appear, with no payment auth on their side either (means the request never reached the order service).
- An entire branch's online ordering goes down, every customer sees a generic error.
- Custom-domain DNS issues.
Have ready: the order number(s), screenshots of what the customer saw, and the branch name and timezone.
Related articles
- Online Ordering Overview
- Customer Experience
- Merchant Setup
Key Concepts
- Pending authorisation vs Capture: An auth reserves funds; a capture takes them. Failed orders sometimes leave a pending auth that drops off without ever taking money.
- Slug: The branch's short URL fragment. Changing it invalidates old QRs.
- Pause Online Ordering: A temporary toggle that doesn't change underlying config. Easy to forget to unpause.

