Skip to main content

Responses

Every gateway response has the same envelope, success or not.

Success
{
"status": "ok",
"result": { },
"traceId": "0HN7A9K2M4P1X"
}
Fault
{
"status": "fault",
"fault": { "code": "TRAFFIC_LIMIT_REACHED", "detail": "turnover limit reached (Shop, Day): 4980.00 of 5000.00 USD" },
"traceId": "0HN7A9K2M4P1X"
}

HTTP codes

CodeMeaningWhat to do
200Done.Read result.
201Created. Returned by order and appeal creation.Read result.
400The request is wrong for this cash desk right now.Read fault.code, fix or wait; see Errors.
401The signature did not pass.See Authentication.
404The order, appeal or cash desk does not exist or is not yours.Check the id.
409A conflict: a replayed nonce, a paid order being cancelled.Do not retry the same request.
429Too many requests.Back off and retry. Order creation allows 30 requests per 10 seconds per cash desk.
503No provider accepted the order.Retry later, with a back-off.
5xxSomething failed on our side.Retry with a back-off; send the traceId to support if it persists.

Branch on the code, not the text

fault.code is stable and listed in Errors. fault.detail is for a person reading a log: its wording can change without notice and may include values such as the current limit.

Keep the trace id

traceId is the identifier we write in our logs for this exact request. When you contact support, send it instead of describing the time and the amount.

Data formats

  • Amounts are strings, never floating-point numbers: "5000.00" for customer amounts, "54.71000000" for settlement amounts and rates, which carry eight decimals. Parse with a decimal type.
  • Times are ISO 8601 in UTC with a trailing Z: "2026-09-04T15:20:00Z".
  • Enumerations are PascalCase names: statuses such as Completed, methods such as Classic, rails such as Sbp. Compare them case-sensitively.
  • Ids carry a prefix that says what they are: ord_ orders, shp_ cash desks, apl_ appeals, evt_ callback events. Each is followed by 26 characters and sorts by creation time.

One exception

The signature middleware answers before the request reaches the API, so its faults (AUTH_*, REPLAY_DETECTED) come in the same envelope but with no result field at all, and a traceId that may differ in shape. Treat them like any other fault.