ДЕЙСТВУЮЩИЙ КОНТРАКТ
Заявки на пополнение¶
Создать заявку¶
POST /api/v1/merchant/create_order/?type=api
Authorization: Bearer <access_token>
Content-Type: application/json
{
"merchant_order_id": "payment-20260904-001",
"merchant_client_id": "client-1042",
"currency_code_from": "USDT",
"currency_code_to": "UZS",
"expected_income": "100000",
"requisite_type": "C2C"
}
Используйте type=api: без него маршрут по умолчанию возвращает перенаправление
на платёжную страницу.
| Поле | Обязательность | Описание |
|---|---|---|
merchant_order_id |
Передавайте всегда | Ваш уникальный ID заявки, до 64 символов |
merchant_client_id |
Нет | ID плательщика в вашей системе |
currency_code_from |
Да | USDT |
currency_code_to |
Да | Код из /currencies/?operation=order |
expected_income |
Да | Сумма в фиатной валюте |
requisite_type |
Нет | C2C, SBP, TRANSFER или C2C/SBP; только из разрешённых для валюты. R_UZS и R_TJS — трансграничные переводы из рублей на карты Узбекистана и Таджикистана, подключаются по запросу; QR — оплата по QR-коду в UZS: вместо номера карты в ответе приходят qr_image и qr_payload |
bank |
Нет | Название банка из списка банков: реквизит будет выдан только этого банка |
external_course |
Только по согласованию | Переданный мерчантом курс |
Пример успешного ответа:
{
"id": "71f25851-28d3-47eb-8770-51f717f5821e",
"status": "BRAND_NEW",
"merchant_order_id": "payment-20260904-001",
"merchant_client_id": "client-1042",
"create_dt": "2026-09-04T10:00:00+03:00",
"currency_code_from": "USDT",
"currency_code_to": "UZS",
"expected_income": "100000.000000",
"requisite": {
"account_number": "8600 1234 5678 9012",
"phone_number": null,
"fio": "CARD HOLDER",
"bank": {"name": "BANK_A"},
"payment_type": ["C2C"]
},
"course": 12500.0,
"external_course": 12500.0,
"remote_host": "passed"
}
Сохраните id: это UUID заявки в EasyTokenPay. Реквизит и сумма из ответа
должны быть показаны плательщику без самостоятельной замены.
course — курс мерчанта в фиатной валюте за 1 USDT с учётом комиссии
мерчанта; это тот же курс, что возвращает статус заявки, и по нему считается
сумма к получению: expected_income / course. external_course в ответе
создания дублирует course (тот же курс с комиссией) и сохранён для
совместимости; для расчётов используйте course.
remote_host — служебное значение окружения, в котором принят запрос. Не
используйте его в платёжной логике.
requisite.bank.name — кодовое название банка для мерчанта; оно может
отличаться от названия, которое видит плательщик в своём приложении.
Список банков¶
GET /api/v1/merchant/get_banks/?currency=UZS&requisite_type=C2C
Authorization: Bearer <access_token>
Оба параметра необязательны: без currency возвращаются банки всех валют,
подключённых мерчанту для заявок, без requisite_type — все способы оплаты.
[
{
"id": 51,
"name": "BANK_A",
"currency_code_to": "UZS",
"requisite_types": ["C2C"],
"available": true
}
]
| Поле | Значение |
|---|---|
name |
Название банка; его же передавайте в bank при создании заявки |
currency_code_to |
Валюта, в которой у банка есть реквизиты |
requisite_types |
Способы оплаты, по которым у банка есть реквизиты |
available |
Есть ли у банка включённый реквизит прямо сейчас |
Если передать в bank название не из списка, создание отвечает 400. Если у
выбранного банка нет свободного реквизита на сумму, ответ такой же, как без
реквизита вообще: 404 с UUID заявки в статусе REQUISITES_NOT_FOUND;
реквизит другого банка не подставляется. Валюта, не подключённая мерчанту,
в запросе списка даёт 400.
Проверить статус¶
GET /api/v1/merchant/get_order_status/71f25851-28d3-47eb-8770-51f717f5821e/
Authorization: Bearer <access_token>
{
"id": "71f25851-28d3-47eb-8770-51f717f5821e",
"merchant_order_id": "payment-20260904-001",
"create_dt": "2026-09-04T10:00:00+03:00",
"currency_code_from": "USDT",
"currency_code_to": "UZS",
"expected_income": 100000.0,
"course": 12500.0,
"status": "BRAND_NEW"
}
Список своих заявок доступен через GET /api/v1/orders/; одна заявка — через
GET /api/v1/orders/{order_id}/. Фильтры списка: status, status__in, id,
page, page_size.
Отменить активную заявку¶
POST /api/v1/merchant/cancel_order/71f25851-28d3-47eb-8770-51f717f5821e/
Authorization: Bearer <access_token>
Отмена недоступна в последние 5 секунд срока. После успешного запроса заявка
переходит в TIME_OUT. Метод GET на этом маршруте пока поддерживается как
устаревший и отвечает с предупреждением; переходите на POST.
Ответы создания¶
| HTTP | Значение | Действие |
|---|---|---|
200 |
Заявка создана, реквизит выдан | Сохранить UUID и весь ответ |
400 |
Поля, сумма, валюта или способ оплаты недопустимы | Исправить запрос |
404 |
Подходящий реквизит не найден (в том числе у выбранного bank); в ответе есть UUID созданной заявки |
Не показывать оплату, сохранить UUID для сверки |
409 |
Недостаточный баланс подходящего трейдера | Проверить отсутствие заявки и повторить позже с тем же merchant_order_id |
503 |
Временно недоступна зависимость создания | Проверить список своих заявок перед повтором |
merchant_order_id уникален внутри мерчанта. При тайм-ауте клиента или
неопределённом ответе не создавайте новый ID: сначала найдите заявку в
/orders/, затем решайте, нужен ли повтор исходного запроса.