Skip to content
TURANYOLDevelopers

Error codes

The API never returns localized text. Every failure is a JSON envelope with a stable machine-readable code; you map that code to your own strings.

The envelope

statusCode repeats the HTTP status, code is the stable identifier, message is an English developer hint that may change at any time, and details carries structured context for some codes (for example which items were out of stock).

application/json
{
  "statusCode": 409,
  "code": "ERR_OUT_OF_STOCK",
  "message": "insufficient stock for 2 items",
  "details": { "items": [{ "productId": "…", "requested": 5, "available": 2 }] }
}

Match on code, never on message

message is written for a human reading a log. It is not part of the contract and is not translated; code is.

The catalogue

97 codes

General

General
CodeMeaning
ERR_VALIDATIONThe request body or query failed validation; details lists the offending fields.
ERR_BAD_REQUESTThe request was malformed in a way validation could not describe.
ERR_UNAUTHORIZEDNo credential was sent, or the access token has expired.
ERR_FORBIDDENAuthenticated, but not allowed to perform this action.
ERR_NOT_FOUNDThe resource does not exist, or is not visible to you.
ERR_CONFLICTThe write conflicted with concurrent activity; retry the request.
ERR_RATE_LIMITEDToo many requests for this key. Wait the number of seconds in Retry-After.
ERR_INTERNALAn unexpected server error. Safe to retry with backoff.
ERR_NETWORKThe request never reached the API (network, DNS or CORS).
ERR_UNKNOWNAn unrecognised error; check the raw response.

Authentication and accounts

Authentication and accounts
CodeMeaning
ERR_OTP_INVALIDThe one-time code does not match.
ERR_OTP_EXPIREDThe one-time code has expired; request a new one.
ERR_OTP_RATE_LIMITEDToo many code requests for this phone number or email address.
ERR_OTP_TOO_MANY_ATTEMPTSToo many wrong codes; request a new one.
ERR_USER_BLOCKEDThe account is blocked; every token for it is refused.
ERR_STAFF_PHONE_EXISTSA user with that phone number already exists.
ERR_PHONE_REQUIREDThis account has no contact phone number — add one before placing the order.
ERR_CONTACT_TAKENThat phone number or email address already belongs to another account.
ERR_CHANNEL_DISABLEDThat sign-in method is switched off here — use the other one.

Partner API, keys and webhooks

Partner API, keys and webhooks
CodeMeaning
ERR_API_KEY_INVALIDThe X-Api-Key header is missing or does not match any key.
ERR_API_KEY_REVOKEDThe key was revoked, or its rotation grace period has ended.
ERR_API_KEY_SCOPEThe key is valid but does not carry the scope this endpoint needs.
ERR_API_KEY_ENVIRONMENTA sandbox key was sent to the live API, or the other way round.
ERR_API_KEY_LIMITYou already hold the maximum number of active keys.
ERR_WEBHOOK_URL_INVALIDThe endpoint URL must be https (http is allowed only for localhost outside production).
ERR_WEBHOOK_LIMITThis key already has the maximum number of webhooks.
ERR_WEBHOOK_DISABLEDThis webhook is disabled — re-enable it before sending a test delivery.
ERR_PARTNER_ORDER_NOT_ASSIGNEDThe order is not assigned to your partner account.

Payments

Payments
CodeMeaning
ERR_PAYMENT_METHOD_UNAVAILABLEThat payment method is disabled in this environment.
ERR_PAYMENT_PROVIDER_UNAVAILABLEThe card provider is not configured or did not answer.
ERR_PAYMENT_INTENT_INVALID_STATEThe payment intent is not in a status that allows this action.
ERR_PAYMENT_SIGNATURE_INVALIDThe provider webhook signature did not verify.
ERR_PAYMENT_ALREADY_PAIDThe order has already been paid.

Orders

Orders
CodeMeaning
ERR_NO_DEFAULT_ADDRESSThe customer has no default delivery address.
ERR_OUT_OF_STOCKOne or more lines exceed available stock; details lists them.
ERR_PRODUCT_UNAVAILABLEA product in the order is no longer purchasable.
ERR_OUT_OF_ZONEThe delivery address falls outside every active delivery zone.
ERR_ORDER_NOT_CANCELLABLEThe order has moved past the point where it can be cancelled.
ERR_ORDER_NOT_RATABLEOnly a delivered order can be rated.
ERR_ALREADY_RATEDThis order already carries a rating.
ERR_INVALID_TRANSITIONThe order state machine refuses this transition from the current status.
ERR_IDEMPOTENCY_KEY_REQUIREDThis write needs an Idempotency-Key header.
ERR_IDEMPOTENCY_CONFLICTThe same Idempotency-Key was reused with a different body.
ERR_ORDER_NOT_ACCEPTABLEThe order is not in a status a vendor can accept or reject.
ERR_ORDER_ALREADY_CLAIMEDAnother runner has already claimed this order.
ERR_ORDER_NOT_CLAIMEDThe order is not claimed by you.
ERR_ORDER_NOT_PACKABLEThe order is not in a state that can be packed, re-packed or printed.

Catalog and vendors

Catalog and vendors
CodeMeaning
ERR_VENDOR_NOT_FOUNDNo vendor profile for this user or id.
ERR_ITEMS_ALREADY_DECIDEDThese order items were already accepted or rejected.
ERR_PRODUCT_NOT_OWNEDThe product belongs to a different vendor.
ERR_CATEGORY_INVALIDThe category id is unknown or not a leaf category.
ERR_SKU_CONFLICTThe generated SKU collided with an existing one.
ERR_MEDIA_UNAVAILABLEObject storage is not configured or not reachable.
ERR_MEDIA_INVALIDThe upload was rejected: wrong content type or too large.
ERR_CATEGORY_NOT_EMPTYThe category still has products or child categories.
ERR_CATEGORY_CYCLEThe move would make a category its own ancestor.

Dispatch and delivery

Dispatch and delivery
CodeMeaning
ERR_PICKUP_INCOMPLETENot every accepted item has been picked yet.
ERR_ITEM_NOT_PICKABLEThis item is not in a status that can be picked.
ERR_DRIVER_NOT_FOUNDNo driver profile for this user.
ERR_DRIVER_OFFLINEThe driver is not online, so no batch can be offered.
ERR_DRIVER_BUSYThe driver already has an active batch.
ERR_BATCH_NOT_OFFEREDThe batch is not currently offered to this driver.
ERR_OFFER_EXPIREDThe 90-second accept window has passed.
ERR_BATCH_NOT_ASSIGNEDThe batch is not assigned to this driver.
ERR_SCAN_INCOMPLETEThe scan gate refused departure: not every item is scanned.
ERR_SCAN_WRONG_BATCHThat barcode belongs to an item in another batch.
ERR_STOP_ALREADY_RESOLVEDThe stop is already delivered or failed.
ERR_BATCH_INCOMPLETEThe batch still has unresolved stops.
ERR_COD_VARIANCE_NOTE_REQUIREDCollected cash differs from the expected total; a note is required.
ERR_BATCH_INVALID_TRANSITIONThe batch state machine refuses this transition.
ERR_ROUTE_UNAVAILABLEThe routing provider failed and the fallback could not build a route.
ERR_DELIVERY_RETRY_LIMITThis order has already been retried the maximum number of times.
ERR_ITEM_NOT_EXPECTEDThe scanned line is not one the hub should receive: its order was cancelled, or the vendor rejected it.
ERR_INTAKE_INCOMPLETEIntake cannot be completed yet — some accepted lines of the order have not been scanned in at the hub.
ERR_PARCEL_NOT_IN_BATCHThat parcel code belongs to no order in the batch being loaded.
ERR_WRONG_STOP_PARCELThe parcel scanned at the door belongs to another stop of the route; it is never recorded as a delivery.
ERR_PARCEL_NOT_LOADEDNo van scan ever put this parcel on this batch, so it cannot be handed over at the door.
ERR_OUTSIDE_GEOFENCEThe position is further from the stop’s address than the delivery geofence allows, and no override reason was given.
ERR_DELIVERY_SCAN_INCOMPLETEEvery parcel of the stop must be scanned at the door before it can be marked delivered.
ERR_LOCATION_REQUIREDThe route cannot start without a recent online driver-presence heartbeat.

Support, refunds and returns

Support, refunds and returns
CodeMeaning
ERR_TICKET_CLOSEDThe support ticket is closed and cannot receive new messages.
ERR_TICKET_NOT_ASSIGNABLEThe ticket cannot be assigned to that agent.
ERR_CSAT_NOT_ALLOWEDA satisfaction score can only be left on a resolved or closed ticket.
ERR_CSAT_ALREADY_GIVENThis ticket already has a satisfaction score.
ERR_REFUND_AMOUNT_EXCEEDSThe refund would exceed what was paid or already refunded on the order.
ERR_REFUND_INVALID_STATEThe refund is not in a status that allows this action.
ERR_REFUND_ORDER_NOT_ELIGIBLEThe order cannot be refunded in its current status.
ERR_RETURN_NOT_ELIGIBLEThe order cannot be returned in its current status.

Platform administration

Platform administration
CodeMeaning
ERR_DEPENDENCY_UNAVAILABLEA backing service (Redis) was unreachable — nothing was applied. Safe to retry with backoff.
ERR_ZONE_INVALID_POLYGONThe delivery zone polygon is not a valid closed ring.
ERR_SETTLEMENT_EXISTSA settlement already exists for this vendor and period.
ERR_SETTLEMENT_INVALID_STATEThe settlement is not in a status that allows this action.
ERR_SETTLEMENT_PERIOD_OPENThe settlement period has not ended yet.
ERR_SETTING_UNKNOWNNo platform setting with that key.
ERR_SETTING_INVALIDThe setting value is outside the allowed range or type.
ERR_COUPON_INVALIDThe coupon code does not apply — unknown, expired, not yet started, over its redemption limit, or below its minimum order amount.
ERR_COUPON_CODE_TAKENA coupon with this code already exists; codes are unique.