API · v2.4

Документация

REST API для приёма QR-СБП платежей. Базовый URL https://api.trax-pay.com. Авторизация через Bearer-токен, выдаётся менеджером после подписания.

Авторизация

Все запросы авторизуются через заголовок Authorization: Bearer sk_live_…. Тестовые ключи начинаются с sk_test_ и работают только в песочнице.

HEADER · все запросы
Authorization: Bearer sk_live_8f29ab…

Ошибки

API возвращает стандартные HTTP-коды. Тело ошибки содержит поля error и message. Для большинства ошибок в ответе есть request_id — приложите его, когда обращаетесь к поддержке.

КодЗначениеОписание
400invalid_requestПоля заполнены некорректно — смотрите message.
401unauthorizedКлюч невалиден или устарел.
409order_id_conflictorder_id уже использовался — идемпотентность.
429rate_limitedПревышен лимит. Заголовок Retry-After подскажет паузу.
5xxserver_errorСо стороны TraX. Запрос можно безопасно повторить с тем же order_id.

Создать платёж

POST /v2/payments

Создаёт новый QR-СБП платёж. В ответе вы получаете URL для отображения QR — покажите его пользователю любым удобным способом (картинкой, диплинком в банк-приложение или нативным шерингом).

ПолеТипОписание
amount REQUIREDintegerСумма платежа в копейках. Минимум — 100.
currency REQUIREDstringТолько RUB на текущий момент.
order_id REQUIREDstringВаш идентификатор заказа. Идемпотентный ключ — повторный запрос вернёт тот же платёж.
methodstringМетод оплаты. Сейчас доступен только sbp_qr.
webhook_urlstringURL для статусных вебхуков. По умолчанию — указанный в настройках.
expires_inintegerСрок жизни QR в секундах. Дефолт 900, максимум 3600.
metadataobjectПроизвольные ключ/значение, вернутся в вебхуке.
EXAMPLE · curl
curl https://api.trax-pay.com/v2/payments \ -H "Authorization: Bearer sk_live_…" \ -H "Content-Type: application/json" \ -d '{ "amount": 499000, "currency": "RUB", "order_id": "ord_8f2…", "method": "sbp_qr", "webhook_url": "https://you.app/hook" }'

Ответ

200 OK
{ "id": "pay_8f29ab…", "order_id": "ord_8f2…", "status": "pending", "amount": 499000, "qr_url": "https://qr.nspk.ru/AS1000…", "deeplink": "https://qr.nspk.ru/sbp?…", "expires_at": "2026-05-10T14:32:00Z", "created_at": "2026-05-10T14:17:00Z" }

Получить платёж

GET /v2/payments/{id}

Возвращает текущее состояние платежа. Используйте для ручных перепроверок — основной канал для статусов это вебхуки.

Статусы

СтатусОписание
pendingQR создан, ждём оплату клиента.
processingПолучили подтверждение от банка, идёт зачисление.
succeededДеньги у вас на счету. Финальный статус.
expiredСрок жизни QR истёк, оплата не поступила.
failedОтказ банка или таймаут СБП. Финальный.

Webhooks

На ваш webhook_url прилетает POST на каждое изменение статуса платежа. Подпись находится в заголовке X-Trax-Signature — HMAC-SHA256 от тела запроса с вашим секретом подписи.

POST · webhook_url
X-Trax-Signature: sha256=2a1c… X-Trax-Event: payment.succeeded Content-Type: application/json { "event": "payment.succeeded", "payment": { "id": "pay_8f29ab…", "order_id": "ord_8f2…", "status": "succeeded", "amount": 499000, "paid_at": "2026-05-10T14:18:24.142Z" } }

Возвращайте 2xx за 5 секунд. При любом другом ответе мы повторим доставку с экспоненциальной паузой — 8 попыток за 24 часа.

SDK

Готовые библиотеки для основных языков. Все SDK типизированы, поддерживают idle-retry и проверку подписи вебхуков из коробки.

ЯзыкПакетВерсия
Node.js@trax/sdk2.4.1
Pythontrax-sdk2.4.0
PHPtrax/sdk2.3.2
Gogithub.com/trax-pay/sdk-gov2.4.0

Нужны
тестовые ключи?

Напишите менеджеру в Telegram — через час у вас будут ключи и доступ к песочнице.

Telegram ← На главную