Sandbox Products

Returned by GET /api/v1/pos/products when the sandbox backend has these draws configured.

product_idproduct_nameprice (AED)SeriesDraw DatePromotionMax Qty
251Grand Lucky Draw35.00GLD-2025-A2025-01-15Buy 2 Get 1 Free10
252Car Draw150.00CAR-2025-A2025-02-01None5
253Daily Cash Draw10.00DCD-2025-A2025-01-10None20

Synthetic Test Customers

Use these synthetic identities for testing the customer upsert workflow. No real persons. Never use real passport numbers or Emirates ID values.

vendor_customer_idNameNationalityDocument TypeExpected Result
CUST-SANDBOX-001Sandbox User AlphaAEPASSPORTLinked (profile_complete)
CUST-SANDBOX-002Sandbox User BetaINPASSPORTLinked (profile_complete)
CUST-SANDBOX-003Sandbox User GammaPKEMIRATES_IDReview required
⚠️ KYC Security: Document numbers in the table above are synthetic fixtures. Real passport/Emirates ID numbers must never appear in logs, code, screenshots or support tickets.

Payment Scenarios

Scenariopayment.methodpayment.resultpayment.collected_byExpected outcome
Normal cash saleCASHPAIDVENDORTickets issued, e-ticket queued
Promotional sale (Buy 2 Get 1)CASHPAIDVENDOR2 PAID + 1 FREE ticket, totals from hold

Error Code Reference

Safe error codes returned by the Nitro BFF layer. These are normalised from Vendora upstream codes — no raw SQL messages or stack traces reach the browser.

Safe CodeHTTP StatusRetryableMeaning
UNAUTHORIZED401NoMissing or invalid portal/API authentication
RATE_LIMITED429YesToo many requests — wait before retrying
VALIDATION_ERROR422NoRequest body failed server-side validation
TICKET_SELECTION_UNAVAILABLE409NoOne or more selected tickets are no longer available
HOLD_EXPIRED410NoThe hold has expired — create a new hold
HOLD_NOT_FOUND404NoHold reference not found
TRANSACTION_NOT_FOUND404NoOrder reference not found
CUSTOMER_REVIEW_REQUIRED200NoCustomer profile requires manual review before promotional holds
CUSTOMER_MAPPING_MISSING422Novendor_customer_id is required for this operation
PRICE_VALIDATION_FAILED422NoPayment amount does not match the hold total
UPSTREAM_UNAVAILABLE502YesThe Vendora API is temporarily unavailable
UPSTREAM_TIMEOUT504YesThe Vendora API did not respond in time
CONFIG_INVALID503NoThe server is not correctly configured — contact administrator