Skip to main content
The API uses conventional HTTP status codes and returns a consistent JSON error body.
statusCode
integer
The HTTP status code.
error
string
A short, machine-friendly label for the status (for example Bad Request, Not Found).
message
string
A human-readable explanation you can show to operators or log for support. When a message refers to a product, it uses the productCode you sent in the request.
Placeholders below use {productCode}, {reference}, {min}, {max}, {expected}, {productCurrency}, {requested}, and {seconds} for values that depend on your request. All other text is returned exactly as shown.

Status codes

Authentication (401)

See Authentication for examples.

Rate limiting (429)

The Retry-After response header matches {seconds}. See Rate limits.

Catalog (404)

Returned by GET /catalog/products/{productCode} when the productCode is not in your active catalog.

Orders - request validation (400)

Returned by POST /orders when the request body fails checks before the order is accepted.
Prices in mismatch and denomination messages are in minor units (same as the catalog), e.g. 10000 = 100.00.

Orders - rejected at placement (400)

Returned by POST /orders when the order cannot be accepted after validation.
Order each product for the market shown in the catalog (countryCode). Mismatched country or currency often surfaces as “not available for ordering with the supplied country or currency”.

Orders - forbidden (403)

Orders - conflict (409)

Orders - unprocessable (422)

Orders - not found (404)

Returned by GET /orders/{reference}. {reference} is the path value you sent (the UUID orderId or your externalOrderCode).

Orders - bad gateway (502)

Returned when the order cannot be created or processing is temporarily unavailable.

Server errors (500)

Returned when an unexpected error occurs. Retry with backoff; contact support if the problem persists. The error field is omitted on some 500 responses.

Handling errors in your integration

1

Log statusCode and message

Persist both fields for support and retries. Treat message as human-readable text.
2

Map by productCode

When message starts with Product {productCode}, attach the error to that line in your cart or order payload.
3

Retry only when appropriate

Retry 502 and 429 with backoff. Do not retry 400, 403, 404, 409, or 422 without fixing the request.
4

Refresh catalog on configuration errors

If you see “not available for ordering with the supplied country or currency”, re-fetch the product from GET /catalog/products and verify countryCode, price, and open-denomination bounds.