API Docs
Версия API
версия 1.0

POSTСоздать заказ

/v1/order/create

Создаёт заказ и подбирает для него маршрут платежа.

Запрос

# X-Signature: HMAC-подпись запроса секретным ключом мерчанта.
X_SIGNATURE='…'
BODY='{
  "country": "RU",
  "method": "sbp",
  "type": "c2c",
  "currency": "RUB",
  "bank": "sber",
  "amount": "1500.00",
  "description": "Оплата заказа №42",
  "account": {
    "number": "40702810000000000001"
  },
  "customer": {
    "id": "customer-42",
    "email": "customer@example.com",
    "ip": "203.0.113.10"
  },
  "params": {
    "return_url": "https://merchant.example.com/return"
  }
}'

curl -X POST '/v1/order/create' \
  --cert client.pem --key client.key \
  -H 'Content-Type: application/json' \
  -H 'X-Request-ID: string' \
  -H "X-Signature: $X_SIGNATURE" \
  -d "$BODY"
import { readFileSync } from 'node:fs';
import { request } from 'node:https';

// X-Signature: HMAC-подпись запроса секретным ключом мерчанта.
const xSignature = '…';
const body = JSON.stringify({
  "country": "RU",
  "method": "sbp",
  "type": "c2c",
  "currency": "RUB",
  "bank": "sber",
  "amount": "1500.00",
  "description": "Оплата заказа №42",
  "account": {
    "number": "40702810000000000001"
  },
  "customer": {
    "id": "customer-42",
    "email": "customer@example.com",
    "ip": "203.0.113.10"
  },
  "params": {
    "return_url": "https://merchant.example.com/return"
  }
});

const req = request('/v1/order/create', {
  method: 'POST',
  cert: readFileSync('client.pem'),
  key: readFileSync('client.key'),
  headers: {
    'Content-Type': 'application/json',
    'X-Request-ID': 'string',
    'X-Signature': xSignature,
  },
});

req.on('response', (res) => {
  const chunks = [];
  res.on('data', (chunk) => chunks.push(chunk));
  res.on('end', () => {
    console.log(res.statusCode, JSON.parse(Buffer.concat(chunks).toString()));
  });
});

req.end(body);
import json

import requests

# X-Signature: HMAC-подпись запроса секретным ключом мерчанта.
x_signature = "…"
body = json.dumps({
  "country": "RU",
  "method": "sbp",
  "type": "c2c",
  "currency": "RUB",
  "bank": "sber",
  "amount": "1500.00",
  "description": "Оплата заказа №42",
  "account": {
    "number": "40702810000000000001"
  },
  "customer": {
    "id": "customer-42",
    "email": "customer@example.com",
    "ip": "203.0.113.10"
  },
  "params": {
    "return_url": "https://merchant.example.com/return"
  }
})

response = requests.request(
    "POST",
    "/v1/order/create",
    cert=("client.pem", "client.key"),
    headers={
        "Content-Type": "application/json",
        "X-Request-ID": "string",
        "X-Signature": x_signature,
    },
    data=body,
)

print(response.status_code, response.json())

Параметры

Заголовки

X-Request-IDstring

Идентификатор запроса для трассировки. Генерируется сервером, если не передан.

Тело запроса

application/json · обязательно

countrystringобязательное

Код страны из /v1/dictionary/countries

от 1 символов
methodstringобязательное

Код метода из /v1/dictionary/methods

от 1 символов
typestringобязательное

Код типа платежа из /v1/dictionary/payment-types

от 1 символов
currencystringобязательное

Буквенный код валюты из /v1/dictionary/currencies

от 1 символов
amountstringобязательное

Сумма, строго больше нуля

accountAccountPropertyобязательное
numberstringобязательное

Номер счёта мерчанта из /v1/account/list

от 1 символов
bankstring

Код банка из /v1/dictionary/banks, участвует в подборе маршрута

descriptionstring

Назначение платежа

customerCustomerProperty

Если объект передан, должен быть заполнен хотя бы один из id или email.

idstring
emailstring
email
ipstring
paramsobject

Произвольные параметры мерчанта

Ответы

Заказ создан

Заголовки ответа

X-Request-ID

Идентификатор запроса

200 · application/json
{
  "data": {
    "id": "string",
    "merchant_id": 0,
    "payment_type": 0,
    "country": "string",
    "currency": "string",
    "method": "string",
    "bank_code": "string",
    "amount": "1500.00",
    "account_number": "string",
    "params": null,
    "last_status_code": 0,
    "created_at": 0,
    "updated_at": 0
  },
  "metadata": {
    "object": "string",
    "version": "v1.0"
  },
  "request_id": "string"
}
Поля ответа
dataOrderобязательное
idstringобязательное
uuid
merchant_idintegerобязательное
int64
payment_typeintegerобязательное
int32
countrystringобязательное
currencystringобязательное
methodstringобязательное
bank_codestringобязательное
amountMoneyобязательное

Сумма строкой, разделитель — точка, не более 2 знаков после неё. Запятая не допускается.

/^-?\d+(\.\d{1,2})?$/
account_numberstringобязательное
paramsobject | nullобязательное
last_status_codeintegerобязательное
int16
created_atUnixTimeобязательное

Unix-время в секундах

int64
updated_atUnixTimeобязательное

Unix-время в секундах

int64
order_idstring
descriptionstring
statusesarray<OrderStatus>
codeintegerобязательное
int16
created_atstringобязательное
date-time
reasonstring
last_status_reasonstring
metadataMetadataобязательное
objectstringобязательное

Тип объекта в data

versionstringобязательное
quantityinteger

Количество элементов (для списков; не передаётся, если 0)

has_moreboolean
next_cursorstring
request_idstringобязательное

Некорректный запрос: тело не распарсилось как JSON или не найден маршрут платежа (detail: payment route not found).

400 · application/json
{
  "error": {
    "code": "BAD_REQUEST",
    "detail": "payment route not found",
    "retryable": false
  },
  "request_id": "V1StGXR8_Z5jdHi6B-myT"
}
Поля ответа
errorobjectобязательное
codestringобязательное
"AUTH_MTLS_REQUIRED""AUTH_HMAC_INVALID""RATE_LIMIT_EXCEEDED""VALIDATION_ERROR""BAD_REQUEST""INTERNAL_ERROR"
retryablebooleanобязательное

Имеет ли смысл повторить запрос без изменений

detailstring
request_idstringобязательное

Нет клиентского сертификата (AUTH_MTLS_REQUIRED) или подпись не прошла проверку (AUTH_HMAC_INVALID).

401 · application/json
{
  "error": {
    "code": "AUTH_MTLS_REQUIRED",
    "retryable": false
  },
  "request_id": "V1StGXR8_Z5jdHi6B-myT"
}
Поля ответа
errorobjectобязательное
codestringобязательное
"AUTH_MTLS_REQUIRED""AUTH_HMAC_INVALID""RATE_LIMIT_EXCEEDED""VALIDATION_ERROR""BAD_REQUEST""INTERNAL_ERROR"
retryablebooleanобязательное

Имеет ли смысл повторить запрос без изменений

detailstring
request_idstringобязательное

Ошибки валидации полей запроса

422 · application/json
[
  {
    "field": "amount",
    "code": "TOO_SMALL"
  },
  {
    "field": "account.number",
    "code": "REQUIRED"
  },
  {
    "field": "currency",
    "code": "NOT_ALLOWED"
  }
]
Поля ответа
fieldstringобязательное

Путь до поля, например account.number или items[2]

codestringобязательное
"MALFORMED_PAYLOAD""INVALID_TYPE""REQUIRED""TOO_SHORT""TOO_LONG""TOO_SMALL""TOO_LARGE""INVALID_FORMAT""NOT_ALLOWED""ALREADY_EXISTS""NOT_FOUND""FORBIDDEN"
paramsobject

Параметры правила, например {"min": 1}

Превышен лимит запросов, повторите позже

429 · application/json
{
  "error": {
    "code": "RATE_LIMIT_EXCEEDED",
    "retryable": true
  },
  "request_id": "V1StGXR8_Z5jdHi6B-myT"
}
Поля ответа
errorobjectобязательное
codestringобязательное
"AUTH_MTLS_REQUIRED""AUTH_HMAC_INVALID""RATE_LIMIT_EXCEEDED""VALIDATION_ERROR""BAD_REQUEST""INTERNAL_ERROR"
retryablebooleanобязательное

Имеет ли смысл повторить запрос без изменений

detailstring
request_idstringобязательное

Внутренняя ошибка

500 · application/json
{
  "error": {
    "code": "INTERNAL_ERROR",
    "detail": "seek technical assistance with request_id",
    "retryable": false
  },
  "request_id": "V1StGXR8_Z5jdHi6B-myT"
}
Поля ответа
errorobjectобязательное
codestringобязательное
"AUTH_MTLS_REQUIRED""AUTH_HMAC_INVALID""RATE_LIMIT_EXCEEDED""VALIDATION_ERROR""BAD_REQUEST""INTERNAL_ERROR"
retryablebooleanобязательное

Имеет ли смысл повторить запрос без изменений

detailstring
request_idstringобязательное

Доступ

mutualTLSmutualTLS

Клиентский сертификат, выданный мерчанту при подключении.

X-SignatureapiKey

HMAC-подпись запроса секретным ключом мерчанта.

Разделы