Базовый URL {{base_url}}/api/v1. В каждом запросе:
Authorization: Bearer {{merchant_token}}
Content-Type: application/json
Суммы — строки; знаков после запятой по валюте: обычно 2, KRW — 0, BHD/JOD — 3.
#Приём платежа
POST /api/v1/pay-in/{метод}. В теле — amount, currency, merchant_order_id (ваш идентификатор, ключ идемпотентности). Реквизит для оплаты вернётся в ответе (формат — в разделе «Ответ»).
#RUB
#Карта
curl '{{base_url}}/api/v1/pay-in/card' \
-H 'Authorization: Bearer {{merchant_token}}' -H 'Content-Type: application/json' \
-d '{"amount":"100","currency":"RUB","merchant_order_id":"order-1"}'
#СБП
curl '{{base_url}}/api/v1/pay-in/sbp' \
-H 'Authorization: Bearer {{merchant_token}}' -H 'Content-Type: application/json' \
-d '{"amount":"100","currency":"RUB","merchant_order_id":"order-2"}'
#Счёт
curl '{{base_url}}/api/v1/pay-in/account' \
-H 'Authorization: Bearer {{merchant_token}}' -H 'Content-Type: application/json' \
-d '{"amount":"100","currency":"RUB","merchant_order_id":"order-3"}'
#QR-НСПК
curl '{{base_url}}/api/v1/pay-in/qr' \
-H 'Authorization: Bearer {{merchant_token}}' -H 'Content-Type: application/json' \
-d '{"amount":"100","currency":"RUB","merchant_order_id":"order-4"}'
#Карта · Монобанк
curl '{{base_url}}/api/v1/pay-in/mono-card' \
-H 'Authorization: Bearer {{merchant_token}}' -H 'Content-Type: application/json' \
-d '{"amount":"100","currency":"RUB","bank_name":"Альфа-Банк","merchant_order_id":"order-5"}'
#СБП · Монобанк
curl '{{base_url}}/api/v1/pay-in/mono-sbp' \
-H 'Authorization: Bearer {{merchant_token}}' -H 'Content-Type: application/json' \
-d '{"amount":"100","currency":"RUB","bank_name":"Сбербанк","merchant_order_id":"order-6"}'
#QR-Монобанк
curl '{{base_url}}/api/v1/pay-in/mono-qr' \
-H 'Authorization: Bearer {{merchant_token}}' -H 'Content-Type: application/json' \
-d '{"amount":"100","currency":"RUB","bank_name":"Т-Банк","merchant_order_id":"order-7"}'
#Универсальный QR
curl '{{base_url}}/api/v1/pay-in/qr-req' \
-H 'Authorization: Bearer {{merchant_token}}' -H 'Content-Type: application/json' \
-d '{"amount":"100","currency":"RUB","merchant_order_id":"order-7b"}'
#Карта · Трансгран
curl '{{base_url}}/api/v1/pay-in/transgran-card' \
-H 'Authorization: Bearer {{merchant_token}}' -H 'Content-Type: application/json' \
-d '{"amount":"100","currency":"RUB","merchant_order_id":"order-8"}'
#СБП · Трансгран
curl '{{base_url}}/api/v1/pay-in/transgran-sbp' \
-H 'Authorization: Bearer {{merchant_token}}' -H 'Content-Type: application/json' \
-d '{"amount":"100","currency":"RUB","merchant_order_id":"order-9"}'
#QR · Трансгран
curl '{{base_url}}/api/v1/pay-in/transgran-qr' \
-H 'Authorization: Bearer {{merchant_token}}' -H 'Content-Type: application/json' \
-d '{"amount":"100","currency":"RUB","merchant_order_id":"order-10"}'
#VietQR
curl '{{base_url}}/api/v1/pay-in/vietqr' \
-H 'Authorization: Bearer {{merchant_token}}' -H 'Content-Type: application/json' \
-d '{"amount":"100","currency":"RUB","merchant_order_id":"order-10b"}'
#Мобком
curl '{{base_url}}/api/v1/pay-in/mobcom' \
-H 'Authorization: Bearer {{merchant_token}}' -H 'Content-Type: application/json' \
-d '{"amount":"100","currency":"RUB","merchant_order_id":"order-11"}'
#Мобком · Трансгран
curl '{{base_url}}/api/v1/pay-in/transgran-mobcom' \
-H 'Authorization: Bearer {{merchant_token}}' -H 'Content-Type: application/json' \
-d '{"amount":"100","currency":"RUB","merchant_order_id":"order-12"}'
#UZS
#Карта UZS
curl '{{base_url}}/api/v1/pay-in/card' \
-H 'Authorization: Bearer {{merchant_token}}' -H 'Content-Type: application/json' \
-d '{"amount":"50000","currency":"UZS","merchant_order_id":"order-13"}'
#Humo
curl '{{base_url}}/api/v1/pay-in/humo' \
-H 'Authorization: Bearer {{merchant_token}}' -H 'Content-Type: application/json' \
-d '{"amount":"50000","currency":"UZS","merchant_order_id":"order-13b"}'
#KZT
#Карта KZT
curl '{{base_url}}/api/v1/pay-in/card' \
-H 'Authorization: Bearer {{merchant_token}}' -H 'Content-Type: application/json' \
-d '{"amount":"15000","currency":"KZT","merchant_order_id":"order-14"}'
#Карта KZT · Трансгран
curl '{{base_url}}/api/v1/pay-in/transgran-card' \
-H 'Authorization: Bearer {{merchant_token}}' -H 'Content-Type: application/json' \
-d '{"amount":"15000","currency":"KZT","merchant_order_id":"order-14b"}'
#Kaspi · Казахстан
curl '{{base_url}}/api/v1/pay-in/sbp' \
-H 'Authorization: Bearer {{merchant_token}}' -H 'Content-Type: application/json' \
-d '{"amount":"15000","currency":"KZT","bank_name":"Kaspi Bank","merchant_order_id":"order-15"}'
#KRW
#Счёт KRW
curl '{{base_url}}/api/v1/pay-in/account' \
-H 'Authorization: Bearer {{merchant_token}}' -H 'Content-Type: application/json' \
-d '{"amount":"100000","currency":"KRW","merchant_order_id":"order-16"}'
#KakaoPay · KRW
curl '{{base_url}}/api/v1/pay-in/kakaopay' \
-H 'Authorization: Bearer {{merchant_token}}' -H 'Content-Type: application/json' \
-d '{"amount":"100000","currency":"KRW","merchant_order_id":"order-krw-kakao-1","payer_name":"Gildong","payer_surname":"Hong"}'
#TRY
#IBAN · Турция
curl '{{base_url}}/api/v1/pay-in/iban' \
-H 'Authorization: Bearer {{merchant_token}}' -H 'Content-Type: application/json' \
-d '{"amount":"500","currency":"TRY","payer_name":"Ivan","payer_surname":"Petrov","merchant_order_id":"order-17"}'
#MNT
#IBAN · Монголия
curl '{{base_url}}/api/v1/pay-in/iban' \
-H 'Authorization: Bearer {{api_key}}' -H 'Content-Type: application/json' \
-d '{"amount":"250000","currency":"MNT","merchant_order_id":"order-mn-1"}'
#AZN
#Карта · Азербайджан
curl '{{base_url}}/api/v1/pay-in/card' \
-H 'Authorization: Bearer {{merchant_token}}' -H 'Content-Type: application/json' \
-d '{"amount":"100","currency":"AZN","merchant_order_id":"order-18"}'
#Телефон · Азербайджан
curl '{{base_url}}/api/v1/pay-in/sbp' \
-H 'Authorization: Bearer {{merchant_token}}' -H 'Content-Type: application/json' \
-d '{"amount":"100","currency":"AZN","merchant_order_id":"order-19"}'
#KGS
#Карта · Киргизия
curl '{{base_url}}/api/v1/pay-in/card' \
-H 'Authorization: Bearer {{merchant_token}}' -H 'Content-Type: application/json' \
-d '{"amount":"1000","currency":"KGS","merchant_order_id":"order-20"}'
#Телефон · Киргизия
curl '{{base_url}}/api/v1/pay-in/sbp' \
-H 'Authorization: Bearer {{merchant_token}}' -H 'Content-Type: application/json' \
-d '{"amount":"1000","currency":"KGS","merchant_order_id":"order-21"}'
#EGP
#InstaPay · Египет
curl '{{base_url}}/api/v1/pay-in/qr' \
-H 'Authorization: Bearer {{merchant_token}}' -H 'Content-Type: application/json' \
-d '{"amount":"200","currency":"EGP","merchant_order_id":"order-22"}'
#Телефон · Египет
curl '{{base_url}}/api/v1/pay-in/sim' \
-H 'Authorization: Bearer {{merchant_token}}' -H 'Content-Type: application/json' \
-d '{"amount":"200","currency":"EGP","merchant_order_id":"order-23"}'
#BHD
#Телефон · Бахрейн
curl '{{base_url}}/api/v1/pay-in/sbp' \
-H 'Authorization: Bearer {{merchant_token}}' -H 'Content-Type: application/json' \
-d '{"amount":"5.500","currency":"BHD","merchant_order_id":"order-24"}'
#JOD
#Телефон · Иордания
curl '{{base_url}}/api/v1/pay-in/sbp' \
-H 'Authorization: Bearer {{merchant_token}}' -H 'Content-Type: application/json' \
-d '{"amount":"5.500","currency":"JOD","merchant_order_id":"order-25"}'
#SAR
#BarqWallet · Саудовская Аравия
curl '{{base_url}}/api/v1/pay-in/sbp' \
-H 'Authorization: Bearer {{merchant_token}}' -H 'Content-Type: application/json' \
-d '{"amount":"100","currency":"SAR","merchant_order_id":"order-26"}'
#ARS
#Банк-перевод · Аргентина
curl '{{base_url}}/api/v1/pay-in/bank-transfer' \
-H 'Authorization: Bearer {{merchant_token}}' -H 'Content-Type: application/json' \
-d '{"amount":"5000","currency":"ARS","merchant_order_id":"order-27"}'
#QR · Аргентина
curl '{{base_url}}/api/v1/pay-in/qr' \
-H 'Authorization: Bearer {{merchant_token}}' -H 'Content-Type: application/json' \
-d '{"amount":"5000","currency":"ARS","merchant_order_id":"order-28"}'
#PKR
#JazzCash/EasyPaisa · Пакистан
curl '{{base_url}}/api/v1/pay-in/sbp' \
-H 'Authorization: Bearer {{merchant_token}}' -H 'Content-Type: application/json' \
-d '{"amount":"1000","currency":"PKR","merchant_order_id":"order-29"}'
#LBP
#WhishWallet · Ливан
curl '{{base_url}}/api/v1/pay-in/sbp' \
-H 'Authorization: Bearer {{merchant_token}}' -H 'Content-Type: application/json' \
-d '{"amount":"100000","currency":"LBP","merchant_order_id":"order-30"}'
#BRL
#PIX · Бразилия
curl '{{base_url}}/api/v1/pay-in/qr' \
-H 'Authorization: Bearer {{merchant_token}}' -H 'Content-Type: application/json' \
-d '{"amount":"100","currency":"BRL","merchant_order_id":"order-31"}'
#Особенности методов
mono-card/mono-sbp/mono-qr:bank_nameобязателен.Kaspi · Казахстан: используйтеbank_nameсо значениемKaspi Bank.kakaopay: обязательныpayer_nameиpayer_surname; в ответеpayment_link— прямая ссылка KakaoPay, банковские реквизиты иphone_number—null.ibanдляTRY: обязательныpayer_nameиpayer_surname.qr-req:qrиpayment_linkведут на страницу оплаты;qr_image_url— прямая ссылка на QR в PNG, для SVG замените.../qr.pngна.../qr.svg.vietqr:qrсодержит строку VietQR (EMVCo), которая отображается наpayment_link;qr_image_url—null.
#Ответ
201 (при повторе с тем же merchant_order_id — 200 и та же транзакция):
{
"id": "ceadf9ea-6eba-4664-a99c-4404eb412c9d",
"merchant_order_id": "order-1",
"status": "pending",
"sub_status": "waiting_for_payment",
"expires_at": "2026-06-12T13:57:36Z",
"amount": "100.00",
"currency": "RUB",
"currency_rate": "78.2",
"amount_usdt": "1.27",
"commission_percent": "8.00",
"commission": "0.10",
"card_number": "2202 2050 1234 5678",
"phone_number": null,
"iban": null,
"account_number": null,
"qr": null,
"qr_image_url": null,
"owner_name": "IVAN PETROV",
"bank_name": "sberbank",
"country_name": "Россия",
"payment_currency": "RUB",
"payment_link": "https://pay.example.com/pay/ceadf9ea-…",
"created_at": "2026-06-12T13:42:36Z"
}
Реквизит — в поле по методу (card_number / phone_number / iban / account_number / qr), остальные — null. Обычно payment_link — наша страница оплаты. currency_rate / amount_usdt / commission_percent / commission — предпросмотр комиссии в USDT ("", если курс/тариф не настроен).
country_name и payment_currency — производные от currency (страна — её русское название, только для отображения). В своей логике опирайтесь на currency (ISO-код), а не на них.
status: pending → success | fail. sub_status: waiting_details_to_be_selected → waiting_for_payment → successfully_paid | expired | cancelled | declined_no_requisites.
GET /api/v1/pay-in/{id} — статус транзакции.
#Чек по заказу
После оплаты вы можете приложить чек к заказу. multipart/form-data, поле файла — receipt (PDF); {id} — id заказа из ответа pay-in.
curl -X POST '{{base_url}}/api/v1/pay-in/{id}/receipt' \
-H 'Authorization: Bearer {{merchant_token}}' \
-F 'receipt=@check.pdf;type=application/pdf'
#Выплаты
POST /api/v1/pay-out/{метод}. В теле — merchant_payout_id (ключ идемпотентности), amount, currency и реквизит назначения.
#Карта
curl '{{base_url}}/api/v1/pay-out/card' \
-H 'Authorization: Bearer {{merchant_token}}' -H 'Content-Type: application/json' \
-d '{"merchant_payout_id":"po-1","amount":"4000","currency":"RUB","card_number":"2202209912345678"}'
#Humo
curl '{{base_url}}/api/v1/pay-out/humo' \
-H 'Authorization: Bearer {{merchant_token}}' -H 'Content-Type: application/json' \
-d '{"merchant_payout_id":"po-1b","amount":"50000","currency":"UZS","card_number":"9860123412345678"}'
#СБП / телефон
curl '{{base_url}}/api/v1/pay-out/sbp' \
-H 'Authorization: Bearer {{merchant_token}}' -H 'Content-Type: application/json' \
-d '{"merchant_payout_id":"po-2","amount":"4000","currency":"RUB","phone_number":"+79991234567"}'
#Счёт
curl '{{base_url}}/api/v1/pay-out/account' \
-H 'Authorization: Bearer {{merchant_token}}' -H 'Content-Type: application/json' \
-d '{"merchant_payout_id":"po-3","amount":"4000","currency":"RUB","account_number":"40817810099910004312"}'
#IBAN
curl '{{base_url}}/api/v1/pay-out/iban' \
-H 'Authorization: Bearer {{merchant_token}}' -H 'Content-Type: application/json' \
-d '{"merchant_payout_id":"po-4","amount":"500","currency":"TRY","iban":"TR33...","recipient_name":"Ivan","recipient_surname":"Petrov"}'
#IBAN · Монголия
curl '{{base_url}}/api/v1/pay-out/iban' \
-H 'Authorization: Bearer {{api_key}}' -H 'Content-Type: application/json' \
-d '{"merchant_payout_id":"po-mn-1","amount":"250000","currency":"MNT","iban":"MN12 1234 1234 5678 9123","recipient_name":"Bat-Erdene","recipient_surname":"Bold"}'
#Оператор (SIM)
curl '{{base_url}}/api/v1/pay-out/sim' \
-H 'Authorization: Bearer {{merchant_token}}' -H 'Content-Type: application/json' \
-d '{"merchant_payout_id":"po-5","amount":"200","currency":"EGP","phone_number":"+201234567890"}'
#Банк-перевод
curl '{{base_url}}/api/v1/pay-out/bank-transfer' \
-H 'Authorization: Bearer {{merchant_token}}' -H 'Content-Type: application/json' \
-d '{"merchant_payout_id":"po-6","amount":"5000","currency":"ARS","account_number":"0001234567890123456789"}'
#Особенности методов
iban: обязательныrecipient_nameиrecipient_surname.
#Ответ
201:
{
"id": "9f1c…",
"merchant_payout_id": "po-1",
"status": "pending",
"currency": "RUB",
"amount": "4000.00",
"destination": "2202209912345678",
"fee_usdt": "0.51",
"fail_reason": null,
"created_at": "2026-06-12T13:42:36Z"
}
Сумма + комиссия удерживаются с баланса при создании; не хватает → INSUFFICIENT_FUNDS; при failed — возвращаются. status: pending → taken → completed | failed.
GET /api/v1/pay-out/{id} — статус выплаты.
#Баланс
GET /api/v1/balance — баланс мерчанта в USDT.
curl '{{base_url}}/api/v1/balance' -H 'Authorization: Bearer {{merchant_token}}'
{"balance_usdt": "1250.00"}
#Вывод (сеттл)
POST /api/v1/settlements — заявка на вывод баланса. Кошелёк — из настроек кабинета (TRC20), в запросе только сумма.
curl '{{base_url}}/api/v1/settlements' \
-H 'Authorization: Bearer {{merchant_token}}' -H 'Content-Type: application/json' \
-d '{"amount":"100"}'
Ответ 201:
{
"id": "3f2b9c10-8a1d-4e77-9c2e-5b0f1a2d3e44",
"status": "pending",
"amount": "100.00",
"currency": "USDT",
"network": "TRC20",
"wallet": "••••4F2a",
"tx_hash": "",
"created_at": "2026-07-14T10:00:00Z"
}
- Сумма холдируется с баланса; больше баланса →
INSUFFICIENT_FUNDS. - Кошелёк в запросе не принимается; TRC20-кошелёк не задан в настройках →
VALIDATION_ERROR. status:pending→paid|rejected(при отклонении сумма возвращается).GET /api/v1/settlements/{id}— статус заявки.
#Споры (апелляции)
POST /api/v1/appeals — multipart/form-data.
curl '{{base_url}}/api/v1/appeals' -H 'Authorization: Bearer {{merchant_token}}' \
-F 'transaction_id=ceadf9ea-6eba-4664-a99c-4404eb412c9d' \
-F 'amount=1001' \
-F 'attachments=@receipt.jpg' \
-F 'attachments=@proof.mp4'
transaction_id— нашid(UUID) или вашmerchant_order_id.attachments— 1..10 файлов, ≤ 50 МиБ: jpg, jpeg, png, webp, gif, heic, pdf, mp4, mov, webm, m4v, avi.- Один спор на сделку.
Ответ 201: id, status (open), amount, currency, attachments. GET /api/v1/appeals?limit=&offset= — список; GET /api/v1/appeals/{id} — один; GET /api/v1/appeals/{id}/files/{aid} — скачать вложение.
#Webhooks
POST на ваш callback_url при смене статуса. Верните 2xx — это подтверждение приёма. 5xx/таймаут → повтор с backoff'ом (до 7 попыток, ~1 час); 4xx повтором не сопровождается — считаем, что сервер получил и осознанно отклонил. Обрабатывайте события идемпотентно; при пропуске статус всегда можно добрать опросом GET /api/v1/pay-in/{id} (и аналоги для выплат/спора). Подпись — заголовок X-Starex-Signature: hex(HMAC-SHA256(сырое тело, ваш callback-токен)). Тип события по полю type: нет поля → платёж; "payout" → выплата; "dispute" → спор.
- Платёж:
id,merchant_order_id,status,sub_status,currency,amount,requisite,holder_name,bank,expires_at,created_at,event_at. - Выплата:
type,id,merchant_payout_id,status,currency,amount,destination,fail_reason,event_at. - Спор:
type,event(dispute.approved/dispute.rejected),id,transaction_id,merchant_order_id,status,amount,currency,reason,created_at,event_at.
#Коды ошибок
| Код | HTTP | Когда |
|---|---|---|
VALIDATION_ERROR | 422 | Некорректные поля/сумма/JSON или неизвестное поле |
METHOD_NOT_AVAILABLE | 422 | Метод недоступен для валюты |
METHOD_NOT_ENABLED | 422 | Метод не включён вашему аккаунту |
AMOUNT_OUT_OF_RANGE | 422 | Сумма вне вашего диапазона (min/max) |
RATE_SOURCE_NOT_CONFIGURED | 422 | Валюта без настроенного курса |
INSUFFICIENT_FUNDS | 422 | Баланса не хватает на выплату + комиссию |
UNAUTHORIZED | 401 | Токен неверен/отсутствует либо IP вне whitelist |
PAYIN_NOT_FOUND / PAYOUT_NOT_FOUND / APPEAL_NOT_FOUND | 404 | Нет объекта |
INTERNAL_ERROR | 500 | Наша проблема — повторите запрос |