Перейти к содержанию

ДЕЙСТВУЮЩИЙ КОНТРАКТ

Заявки на пополнение

Создать заявку

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/, затем решайте, нужен ли повтор исходного запроса.