Troubleshooting

Exact error messages and what to do about them.

MessageFix
Insufficient inventory for this orderReceive stock or record a count; check expired or quarantined lots
Insufficient eligible stock: expired or quarantined lots cannot be sold or preparedRecord the lots as waste or release quarantine
Menu item has multiple active recipes; review recipe versions before sellingArchive all but one recipe
Ingredient X unit does not match inventoryUse the inventory item's unit
Choose how this option affects inventory before offering itSet inventoryAction on the modifier
Exactly one open register shift is required to record pay-at-pickup settlementOpen exactly one drawer on the POS
Immediate tender requires an open register shiftOpen a drawer first
Confirm the card terminal approved this exact amount before recording the card paymentTick the confirmation
Enter the terminal approval or reference code (4-64 letters, numbers or #._:/-)Enter a valid code
Cash refund exceeds the ... expected in the payout drawerAdd cash to the drawer or refund from a shift with enough cash
Cafe order paid status is controlled by payment settlementRecord or settle a payment instead
Cannot bump an item before the pickup request is acceptedAccept the order first
KDS item changed; refresh before issuing a new commandReload the board
The requested pickup window is at capacityChoose another time or raise capacity
Online pickup requests are temporarily paused while the cafe catches upAccept or cancel open requests
Idempotency key must be at least 16 charactersGenerate a longer key
Loyalty account requires reconciliation before refundReview the account's event ledger
Drink-credit redemption is unavailable until it is integrated with tender authorizationAdjust credits manually on the Rewards page
Lot expiry must be after the receipt timeFix the date or record the goods as waste
Inventory lot balances exceed recorded stock for this item; reconcile the stock count before continuingRun a stock count

Startup

The app will not start without DATABASE_URL, and rejects a SESSION_SECRET shorter than 32 characters. In production the five S3 values are required.

Online payment does nothing

getCoffeeStore must return onlinePayment: true: both Stripe keys, the Stripe provider enabled, and the Store Settings switch on.

On this page