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
| Code | Meaning | What to do |
|---|---|---|
200 | Done. | Read result. |
201 | Created. Returned by order and appeal creation. | Read result. |
400 | The request is wrong for this cash desk right now. | Read fault.code, fix or wait; see Errors. |
401 | The signature did not pass. | See Authentication. |
404 | The order, appeal or cash desk does not exist or is not yours. | Check the id. |
409 | A conflict: a replayed nonce, a paid order being cancelled. | Do not retry the same request. |
429 | Too many requests. | Back off and retry. Order creation allows 30 requests per 10 seconds per cash desk. |
503 | No provider accepted the order. | Retry later, with a back-off. |
5xx | Something 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 asClassic, rails such asSbp. 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.