Документация API
Подключение партнёра к ECPAY Systems для создания заявок и получения статусов. Ниже приведены точные точки входа, обязательные заголовки, поля, а также живые коды валют и банков из вашей базы.
Авторизация
X-Authorization передаётся в заголовке каждого API-запроса. Значение должно совпадать с секретом, который сохранён в настройках API.
Обязательные заголовки
X-Authorization: YOUR_API_SECRET
Content-Type: application/json
Кроме заголовка, в теле каждого запроса передаётся поле apikey — публичный идентификатор обменника. Пара apikey + secret однозначно идентифицирует пользователя в системе.
🔑 Получить API-ключ
API-ключ и секрет для работы с API ecpay видны в вашем личном кабинете в разделе «🔌 API доступ» — если API-доступ активирован администратором для вашего аккаунта.
- Откройте свой профиль: /settings.php (или /security.php).
- Найдите блок «🔌 API доступ». Если статус «● Активен» — вам доступны API-ключ и секрет.
- Нажмите «👁 Показать», чтобы раскрыть полное значение, или «📋 Копировать», чтобы сразу скопировать в буфер обмена.
- В этом же блоке готовые
curl-примеры с уже подставленными вашими ключами для эндпоинтов «Курсы», «Создание заявки» и «Проверка статуса».
- Если статус «○ Выключен» — попросите владельца включить API-доступ в настройках вашего аккаунта (
users.php → API).
💡 Что куда подставлять при вызовах:
apikey (в теле JSON) — это публичный API key из блока «🔌 API доступ».
X-Authorization (заголовок) — это API secret из того же блока.
🧪 Тестовая среда
Тестовый режим позволяет проверить интеграцию без списания баланса. URL и контракт API остаются теми же.
- Баланс не списывается при создании заявок.
- В ответе на создание заявки приходит поле
is_test: true.
Включение и отключение тестового режима — только через администрацию.
💰 Получить баланс
Получение баланса по ключу.
| Метод | Эндпоинт | Описание |
| POST / GET | /api/balance.php | Баланс и сводка по заявкам. |
Примеры
curl -X POST 'https://ecpay.systems/api/balance.php' \
-H 'X-Authorization: YOUR_SECRET' \
-H 'Content-Type: application/json' \
-d '{"apikey":"YOUR_API_KEY"}'
Ответ
{
"ok": true,
"exchanger": {
"id": 12,
"email": "partner@example.com",
"name": "Partner Name"
},
"balance": {
"usdt": 12345.67,
"reserved_usdt": 250.00,
"available_usdt": 12095.67
},
"today": {
"completed_count": 3,
"completed_usdt": 480.00,
"open_count": 2,
"open_usdt": 250.00
},
"ts": 1745000000
}
Поля ответа
| Поле | Тип | Описание |
exchanger.id / email / name | any | Владелец API-ключа = владелец возвращаемого баланса. Используйте, чтобы убедиться в каком именно аккаунте находится баланс. |
balance.usdt | number | Полный баланс USDT в ecpay для этого аккаунта. |
balance.reserved_usdt | number | Зарезервировано под активные заявки (статусы new / accepted / in_progress / processing / active / paywait). |
balance.available_usdt | number | Доступно для новых заявок: usdt − reserved_usdt. |
today.completed_count / completed_usdt | int / number | Сколько заявок и на какую сумму закрыто сегодня. |
today.open_count / open_usdt | int / number | Сколько активных заявок прямо сейчас и какой их объём. |
💱 Получить курсы
Возвращает список всех валют и банков с актуальными курсами для вашего аккаунта. Это те же курсы, по которым создаются заявки в UI.
| Метод | Эндпоинт | Описание |
| POST / GET | /api/exchange_rates.php | Список валют с банками и курсами. |
Примеры
curl -X POST 'https://ecpay.systems/api/exchange_rates.php' \
-H 'X-Authorization: YOUR_SECRET' \
-H 'Content-Type: application/json' \
-d '{"apikey":"YOUR_API_KEY"}'
Ответ
{
"ok": true,
"exchanger": {
"id": 12,
"email": "partner@example.com",
"name": "Partner Name"
},
"currencies": [
{
"id": 3, "code": "TRY", "name": "Турецкая лира",
"banks": [
{
"id": 17, "name": "Vakıfbank", "identifier": "vakifbank",
"rate": 40.6116,
"rate_mode": "manual",
"rate_updated_at": "2026-04-30 12:34:56",
"min_amount": 100, "max_amount": 50000,
"payout_time_minutes": 30,
"is_active": 1
}
]
}
],
"ts": 1745000000
}
Поля ответа
| Поле | Тип | Описание |
currencies[].code | string | Код валюты для использования в currency_code при создании заявки. |
banks[].identifier | string | Идентификатор банка для поля bank_code при создании заявки. |
banks[].rate | number | Актуальный курс. Используйте для расчёта amount_from. |
banks[].min_amount / max_amount | number | Лимиты банка (если выставлены). |
banks[].payout_time_minutes | int | Целевое время выплаты в минутах. |
banks[].rate_updated_at | datetime | Когда курс был обновлён. |
banks[].is_active | 0/1 | Активен ли банк прямо сейчас. |
Создание заявки
| Метод | Эндпоинт | Описание |
| POST | /api/exchange_request_create.php | Создаёт новую заявку в системе. |
Заявка через API создаётся по той же логике, что и через сайт: курс берётся автоматически из БД для пары currency_code + bank_code, сумма списания amount_from рассчитывается сервером по этому курсу, баланс аккаунта владельца ключа списывается атомарно. Достаточно передать amount_to и направление — серверу всё остальное известно.
Поля запроса
| Field | Type | Required | Описание |
apikey | string | yes | Публичный API-ключ обменника. Связан с балансом, лимитами и доступными валютами. |
currency_code | string | yes | Код валюты назначения, например KZT, TRY, UAH. Список — в секции «Коды валют» ниже. |
bank_code | string | yes* | Идентификатор банка из «Кодов банков». Альтернативно bank_id (int). |
amount_to | number | yes | Сумма к выплате клиенту в валюте назначения (например 10000 KZT). |
amount_from | number | no | Не передавайте — будет рассчитано сервером по актуальному курсу банка. Если передадите, значение проигнорируется и пересчитается. |
from_currency | string | no | По умолчанию USDT. |
requisites | object | yes** | Объект с реквизитами получателя. Какие поля обязательны — зависит от банка (см. секцию «📝 Реквизиты по банкам»). |
external_request_id | string | no | Ваш ID заявки. Используется для идемпотентности: повторный запрос с тем же ID вернёт ту же заявку. |
external_token | string | no | Дополнительный токен заявки. |
callback_url | string | no | URL для webhook-уведомлений о смене статуса. См. секцию «Callback / Webhook». |
client_name / client_contact | string | no | Имя и контакт клиента (для привязки заявки на стороне партнёра). |
* Достаточно одного из bank_code или bank_id. ** Поля requisites зависят от выбранного банка — см. список ниже.
Примеры
curl -X POST 'https://ecpay.systems/api/exchange_request_create.php' \
-H 'X-Authorization: YOUR_SECRET' \
-H 'Content-Type: application/json' \
-d '{
"apikey": "YOUR_API_KEY",
"currency_code": "KZT",
"bank_code": "kaspi",
"amount_to": 100000,
"external_request_id": "ORD-1001",
"callback_url": "https://partner.example/callback",
"requisites": {
"card": "4400 4302 1234 5678",
"account_holder": "ИВАНОВ ИВАН"
}
}'
Успешный ответ (HTTP 200)
{
"ok": true,
"created": true,
"request_id": 123,
"external_request_id": "ORD-1001",
"external_token": "...",
"status": "new",
"internal_status": "new",
"is_test": false,
"min_amount_usdt": 100,
"amount_to_usdt": 218.34,
"below_min_fee_applied": false,
"below_min_fee_percent": 0,
"below_min_fee_amount": 0
}
amount_from и rate рассчитываются сервером по актуальному курсу банка. Списание баланса = amount_from.
min_amount_usdt — минимум USDT для этого банка. Если amount_to_usdt ≥ него — заявка обычная.
Поведение при сумме ниже минимума
Сервер сравнивает amount_to / rate (= USDT) с банковским min_amount_usdt. Дальше — таблица:
| Условие | Поведение | Ответ API |
usdt ≥ min_amount_usdt |
Обычная заявка, без комиссии |
HTTP 200, below_min_fee_applied: false |
usdt < below_min_floor_usdt (абсолютный пол) |
Отказ — даже с комиссией нельзя |
HTTP 422, {"ok":false,"message":"Сумма ниже абсолютного порога банка: ..."} |
usdt < min_amount_usdt и allow_below_min_request = 0 |
Отказ — банк не разрешает below-min |
HTTP 422, {"ok":false,"message":"Сумма ниже минимума банка: ... allow_below_min_request=0"} |
usdt < min_amount_usdt и allow_below_min_request = 1 и below_min_fee_percent > 0 |
Применяется доп.комиссия → amount_from увеличивается на % |
HTTP 200, below_min_fee_applied: true, below_min_fee_percent: 2.0, below_min_fee_amount: 1.234 |
Параметры банка (min_amount_usdt, allow_below_min_request, below_min_floor_usdt, below_min_fee_percent) можно проверить заранее через /api/exchange_rates.php — там в каждом банке возвращается min_amount/max_amount.
Ошибочные ответы (HTTP 422)
| Сообщение | Когда |
amount_to must be greater than 0 | сумма не передана или ≤ 0 |
Валюту не удалось сопоставить: KZT | код валюты неизвестен |
Банк не найден для currency_id=N | код банка не привязан к валюте |
Для выбранного банка не задан курс. | в БД нет rate_value |
Сумма ниже абсолютного порога банка: ... | см. таблицу выше |
Сумма ниже минимума банка: ... | см. таблицу выше (когда allow_below_min_request=0) |
Обменник не найден. | API-ключ не привязан к user.role=exchanger |
Недостаточно баланса USDT (...) | на счёте обменника меньше чем amount_from |
📝 Реквизиты по банкам
Объект requisites при создании заявки содержит набор полей, обязательность и валидация которых зависят от выбранного банка. Ниже — точная схема для каждого активного банка из вашей системы.
Если поле обязательное и не передано — сервер вернёт {"ok": false, "error": "field name required"}. Опциональные поля можно опустить.
Типы валидации
| Тип | Что принимается |
card | Номер карты — 12–19 цифр (пробелы и дефисы можно, очищаются). |
iban / alnum | Буквы и цифры (без специальных символов). |
email | Стандартный email (filter_var FILTER_VALIDATE_EMAIL). |
phone | 6–25 символов: цифры, +, -, пробелы, скобки. |
letters | Только буквы, пробел и дефис (для ФИО). |
digits | Только цифры. |
none | Произвольная строка. |
Конкретные банки и валюты
Список ниже формируется автоматически из вашей админки: добавите новую валюту или банк через интерфейс — они сразу появятся здесь со своими полями, валидацией и готовым примером запроса.
💱 AED
— Дирха́м ОАЭ
· банков: 1
Bank transfer
bank_code: ACCAED
курс: 3.63231
min: 200.00 USDT
| Поле | Метка | Обязательное | Валидация | Пример |
iban |
IBAN |
да |
alnum |
UA00 0000 0000 0000 0000 0000 000 |
account_holder |
ФИО получателя |
да |
letters |
Иванов Иван Иванович |
📋 Полный пример запроса для этого банка
curl -X POST 'https://ecpay.systems/api/exchange_request_create.php' \
-H 'X-Authorization: YOUR_SECRET' \
-H 'Content-Type: application/json' \
-d '{
"apikey": "YOUR_API_KEY",
"currency_code": "AED",
"bank_code": "ACCAED",
"amount_to": 1100,
"external_request_id": "ORD-1001",
"callback_url": "https:\/\/partner.example\/callback",
"requisites": {
"iban": "UA00 0000 0000 0000 0000 0000 000",
"account_holder": "Иванов Иван Иванович"
}
}'
💱 AMD
— Армянский драм
· банков: 2
Card Transfer
bank_code: CARDAMD
курс: 363.53863726
min: 100.00 USDT
⏱ 180 мин
| Поле | Метка | Обязательное | Валидация | Пример |
card |
Номер карты |
да |
card |
4400 4302 1234 5678 |
account_holder |
ФИО получателя |
да |
letters |
Иванов Иван Иванович |
📋 Полный пример запроса для этого банка
curl -X POST 'https://ecpay.systems/api/exchange_request_create.php' \
-H 'X-Authorization: YOUR_SECRET' \
-H 'Content-Type: application/json' \
-d '{
"apikey": "YOUR_API_KEY",
"currency_code": "AMD",
"bank_code": "CARDAMD",
"amount_to": 54500,
"external_request_id": "ORD-1001",
"callback_url": "https:\/\/partner.example\/callback",
"requisites": {
"card": "4400 4302 1234 5678",
"account_holder": "Иванов Иван Иванович"
}
}'
IDRAM
bank_code: IDRAMAMD
курс: 362.23532356
min: 100.00 USDT
⏱ 180 мин
| Поле | Метка | Обязательное | Валидация | Пример |
card |
Номер карты |
да |
card |
4400 4302 1234 5678 |
account_holder |
ФИО получателя |
да |
letters |
Иванов Иван Иванович |
📋 Полный пример запроса для этого банка
curl -X POST 'https://ecpay.systems/api/exchange_request_create.php' \
-H 'X-Authorization: YOUR_SECRET' \
-H 'Content-Type: application/json' \
-d '{
"apikey": "YOUR_API_KEY",
"currency_code": "AMD",
"bank_code": "IDRAMAMD",
"amount_to": 54300,
"external_request_id": "ORD-1001",
"callback_url": "https:\/\/partner.example\/callback",
"requisites": {
"card": "4400 4302 1234 5678",
"account_holder": "Иванов Иван Иванович"
}
}'
💱 AZN
— Азербайджанский манат
· банков: 1
Card Transfer
bank_code: CARDAZN
курс: 1.645
min: 100.00 USDT
⏱ 180 мин
| Поле | Метка | Обязательное | Валидация | Пример |
card |
Номер карты |
да |
card |
4400 4302 1234 5678 |
account_holder |
ФИО получателя |
да |
letters |
Иванов Иван Иванович |
📋 Полный пример запроса для этого банка
curl -X POST 'https://ecpay.systems/api/exchange_request_create.php' \
-H 'X-Authorization: YOUR_SECRET' \
-H 'Content-Type: application/json' \
-d '{
"apikey": "YOUR_API_KEY",
"currency_code": "AZN",
"bank_code": "CARDAZN",
"amount_to": 200,
"external_request_id": "ORD-1001",
"callback_url": "https:\/\/partner.example\/callback",
"requisites": {
"card": "4400 4302 1234 5678",
"account_holder": "Иванов Иван Иванович"
}
}'
💱 CZK
— Чешская крона
· банков: 1
Bank Transfer
bank_code: CARDCZK
курс: 20.5770308
min: 150.00 USDT
⏱ 180 мин
| Поле | Метка | Обязательное | Валидация | Пример |
account_holder |
ФИО получателя |
да |
letters |
Иванов Иван Иванович |
📋 Полный пример запроса для этого банка
curl -X POST 'https://ecpay.systems/api/exchange_request_create.php' \
-H 'X-Authorization: YOUR_SECRET' \
-H 'Content-Type: application/json' \
-d '{
"apikey": "YOUR_API_KEY",
"currency_code": "CZK",
"bank_code": "CARDCZK",
"amount_to": 4600,
"external_request_id": "ORD-1001",
"callback_url": "https:\/\/partner.example\/callback",
"requisites": {
"account_holder": "Иванов Иван Иванович"
}
}'
💱 EUR
— Евро
· банков: 2
Paypal
bank_code: PPEUR
курс: 0.86
min: 300.00 USDT
| Поле | Метка | Обязательное | Валидация | Пример |
email |
Email |
да |
email |
name@example.com |
📋 Полный пример запроса для этого банка
curl -X POST 'https://ecpay.systems/api/exchange_request_create.php' \
-H 'X-Authorization: YOUR_SECRET' \
-H 'Content-Type: application/json' \
-d '{
"apikey": "YOUR_API_KEY",
"currency_code": "EUR",
"bank_code": "PPEUR",
"amount_to": 400,
"external_request_id": "ORD-1001",
"callback_url": "https:\/\/partner.example\/callback",
"requisites": {
"email": "name@example.com"
}
}'
SEPA Instant
bank_code: SEPAEUR
курс: 0.83
min: 250.00 USDT
| Поле | Метка | Обязательное | Валидация | Пример |
iban |
IBAN |
да |
alnum |
UA00 0000 0000 0000 0000 0000 000 |
account_holder |
ФИО получателя |
да |
letters |
Иванов Иван Иванович |
📋 Полный пример запроса для этого банка
curl -X POST 'https://ecpay.systems/api/exchange_request_create.php' \
-H 'X-Authorization: YOUR_SECRET' \
-H 'Content-Type: application/json' \
-d '{
"apikey": "YOUR_API_KEY",
"currency_code": "EUR",
"bank_code": "SEPAEUR",
"amount_to": 300,
"external_request_id": "ORD-1001",
"callback_url": "https:\/\/partner.example\/callback",
"requisites": {
"iban": "UA00 0000 0000 0000 0000 0000 000",
"account_holder": "Иванов Иван Иванович"
}
}'
💱 GEL
— Грузинский лари
· банков: 1
Bank transfer
bank_code: WIREGEL
курс: 2.61294422
min: 100.00 USDT
| Поле | Метка | Обязательное | Валидация | Пример |
iban |
IBAN |
да |
alnum |
UA00 0000 0000 0000 0000 0000 000 |
account_holder |
ФИО получателя |
да |
letters |
Иванов Иван Иванович |
📋 Полный пример запроса для этого банка
curl -X POST 'https://ecpay.systems/api/exchange_request_create.php' \
-H 'X-Authorization: YOUR_SECRET' \
-H 'Content-Type: application/json' \
-d '{
"apikey": "YOUR_API_KEY",
"currency_code": "GEL",
"bank_code": "WIREGEL",
"amount_to": 400,
"external_request_id": "ORD-1001",
"callback_url": "https:\/\/partner.example\/callback",
"requisites": {
"iban": "UA00 0000 0000 0000 0000 0000 000",
"account_holder": "Иванов Иван Иванович"
}
}'
💱 KGS
— Кыргызский сом
· банков: 1
Card Transfer
bank_code: CARDKGS
курс: 87.3378
min: 100.00 USDT
⏱ 180 мин
| Поле | Метка | Обязательное | Валидация | Пример |
card |
Номер карты |
да |
card |
4400 4302 1234 5678 |
account_holder |
ФИО получателя |
да |
letters |
Иванов Иван Иванович |
📋 Полный пример запроса для этого банка
curl -X POST 'https://ecpay.systems/api/exchange_request_create.php' \
-H 'X-Authorization: YOUR_SECRET' \
-H 'Content-Type: application/json' \
-d '{
"apikey": "YOUR_API_KEY",
"currency_code": "KGS",
"bank_code": "CARDKGS",
"amount_to": 13100,
"external_request_id": "ORD-1001",
"callback_url": "https:\/\/partner.example\/callback",
"requisites": {
"card": "4400 4302 1234 5678",
"account_holder": "Иванов Иван Иванович"
}
}'
💱 KZT
— Казахстанские тенге
· банков: 9
Bereke Bank
bank_code: BEREKEKZT,BRBKZT
курс: 487.37383737
min: 100.00 USDT
⏱ 180 мин
| Поле | Метка | Обязательное | Валидация | Пример |
card |
Номер карты |
да |
card |
4400 4302 1234 5678 |
account_holder |
ФИО получателя |
да |
letters |
Иванов Иван Иванович |
📋 Полный пример запроса для этого банка
curl -X POST 'https://ecpay.systems/api/exchange_request_create.php' \
-H 'X-Authorization: YOUR_SECRET' \
-H 'Content-Type: application/json' \
-d '{
"apikey": "YOUR_API_KEY",
"currency_code": "KZT",
"bank_code": "BEREKEKZT,BRBKZT",
"amount_to": 73100,
"external_request_id": "ORD-1001",
"callback_url": "https:\/\/partner.example\/callback",
"requisites": {
"card": "4400 4302 1234 5678",
"account_holder": "Иванов Иван Иванович"
}
}'
CenterCredit
bank_code: CENTERKZT,CCBKZT
курс: 487.37383737
min: 100.00 USDT
⏱ 180 мин
| Поле | Метка | Обязательное | Валидация | Пример |
card |
Номер карты |
да |
card |
4400 4302 1234 5678 |
account_holder |
ФИО получателя |
да |
letters |
Иванов Иван Иванович |
📋 Полный пример запроса для этого банка
curl -X POST 'https://ecpay.systems/api/exchange_request_create.php' \
-H 'X-Authorization: YOUR_SECRET' \
-H 'Content-Type: application/json' \
-d '{
"apikey": "YOUR_API_KEY",
"currency_code": "KZT",
"bank_code": "CENTERKZT,CCBKZT",
"amount_to": 73100,
"external_request_id": "ORD-1001",
"callback_url": "https:\/\/partner.example\/callback",
"requisites": {
"card": "4400 4302 1234 5678",
"account_holder": "Иванов Иван Иванович"
}
}'
Forte
bank_code: FORTEKZT,FRTBKZT
курс: 487.88011897
min: 100.00 USDT
⏱ 180 мин
| Поле | Метка | Обязательное | Валидация | Пример |
card |
Номер карты |
да |
card |
4400 4302 1234 5678 |
account_holder |
ФИО получателя |
да |
letters |
Иванов Иван Иванович |
📋 Полный пример запроса для этого банка
curl -X POST 'https://ecpay.systems/api/exchange_request_create.php' \
-H 'X-Authorization: YOUR_SECRET' \
-H 'Content-Type: application/json' \
-d '{
"apikey": "YOUR_API_KEY",
"currency_code": "KZT",
"bank_code": "FORTEKZT,FRTBKZT",
"amount_to": 73200,
"external_request_id": "ORD-1001",
"callback_url": "https:\/\/partner.example\/callback",
"requisites": {
"card": "4400 4302 1234 5678",
"account_holder": "Иванов Иван Иванович"
}
}'
Halyk Bank
bank_code: HALYKKZT,HLKBKZT
курс: 492.8801
min: 100.00 USDT
⏱ 180 мин
| Поле | Метка | Обязательное | Валидация | Пример |
card |
Номер карты |
да |
card |
4400 4302 1234 5678 |
account_holder |
ФИО получателя |
да |
letters |
Иванов Иван Иванович |
📋 Полный пример запроса для этого банка
curl -X POST 'https://ecpay.systems/api/exchange_request_create.php' \
-H 'X-Authorization: YOUR_SECRET' \
-H 'Content-Type: application/json' \
-d '{
"apikey": "YOUR_API_KEY",
"currency_code": "KZT",
"bank_code": "HALYKKZT,HLKBKZT",
"amount_to": 73900,
"external_request_id": "ORD-1001",
"callback_url": "https:\/\/partner.example\/callback",
"requisites": {
"card": "4400 4302 1234 5678",
"account_holder": "Иванов Иван Иванович"
}
}'
Jusan Bank
bank_code: JUSANKZT,JSNBKZT
курс: 487.88011897
min: 100.00 USDT
⏱ 180 мин
| Поле | Метка | Обязательное | Валидация | Пример |
card |
Номер карты |
да |
card |
4400 4302 1234 5678 |
account_holder |
ФИО получателя |
да |
letters |
Иванов Иван Иванович |
📋 Полный пример запроса для этого банка
curl -X POST 'https://ecpay.systems/api/exchange_request_create.php' \
-H 'X-Authorization: YOUR_SECRET' \
-H 'Content-Type: application/json' \
-d '{
"apikey": "YOUR_API_KEY",
"currency_code": "KZT",
"bank_code": "JUSANKZT,JSNBKZT",
"amount_to": 73200,
"external_request_id": "ORD-1001",
"callback_url": "https:\/\/partner.example\/callback",
"requisites": {
"card": "4400 4302 1234 5678",
"account_holder": "Иванов Иван Иванович"
}
}'
Kaspi Bank
bank_code: KASPIKZT,KSPBKZT
курс: 503.186275
min: 100.00 USDT
⏱ 180 мин
| Поле | Метка | Обязательное | Валидация | Пример |
card |
Номер карты |
да |
card |
4400 4302 1234 5678 |
account_holder |
ФИО получателя |
да |
letters |
Иванов Иван Иванович |
📋 Полный пример запроса для этого банка
curl -X POST 'https://ecpay.systems/api/exchange_request_create.php' \
-H 'X-Authorization: YOUR_SECRET' \
-H 'Content-Type: application/json' \
-d '{
"apikey": "YOUR_API_KEY",
"currency_code": "KZT",
"bank_code": "KASPIKZT,KSPBKZT",
"amount_to": 75500,
"external_request_id": "ORD-1001",
"callback_url": "https:\/\/partner.example\/callback",
"requisites": {
"card": "4400 4302 1234 5678",
"account_holder": "Иванов Иван Иванович"
}
}'
VISA/Master Card
bank_code: CARDKZT
курс: 488.3802
min: 100.00 USDT
⏱ 180 мин
| Поле | Метка | Обязательное | Валидация | Пример |
card |
Номер карты |
да |
card |
4400 4302 1234 5678 |
account_holder |
ФИО получателя |
да |
letters |
Иванов Иван Иванович |
📋 Полный пример запроса для этого банка
curl -X POST 'https://ecpay.systems/api/exchange_request_create.php' \
-H 'X-Authorization: YOUR_SECRET' \
-H 'Content-Type: application/json' \
-d '{
"apikey": "YOUR_API_KEY",
"currency_code": "KZT",
"bank_code": "CARDKZT",
"amount_to": 73300,
"external_request_id": "ORD-1001",
"callback_url": "https:\/\/partner.example\/callback",
"requisites": {
"card": "4400 4302 1234 5678",
"account_holder": "Иванов Иван Иванович"
}
}'
Евразийский банк
bank_code: EURASIANKZT,ERSNBKZT
курс: 487.37383737
min: 100.00 USDT
⏱ 180 мин
| Поле | Метка | Обязательное | Валидация | Пример |
card |
Номер карты |
да |
card |
4400 4302 1234 5678 |
account_holder |
ФИО получателя |
да |
letters |
Иванов Иван Иванович |
📋 Полный пример запроса для этого банка
curl -X POST 'https://ecpay.systems/api/exchange_request_create.php' \
-H 'X-Authorization: YOUR_SECRET' \
-H 'Content-Type: application/json' \
-d '{
"apikey": "YOUR_API_KEY",
"currency_code": "KZT",
"bank_code": "EURASIANKZT,ERSNBKZT",
"amount_to": 73100,
"external_request_id": "ORD-1001",
"callback_url": "https:\/\/partner.example\/callback",
"requisites": {
"card": "4400 4302 1234 5678",
"account_holder": "Иванов Иван Иванович"
}
}'
Фридом банк
bank_code: FFBKZT,FFBKZT
курс: 487.37383737
min: 100.00 USDT
⏱ 180 мин
| Поле | Метка | Обязательное | Валидация | Пример |
card |
Номер карты |
да |
card |
4400 4302 1234 5678 |
account_holder |
ФИО получателя |
да |
letters |
Иванов Иван Иванович |
📋 Полный пример запроса для этого банка
curl -X POST 'https://ecpay.systems/api/exchange_request_create.php' \
-H 'X-Authorization: YOUR_SECRET' \
-H 'Content-Type: application/json' \
-d '{
"apikey": "YOUR_API_KEY",
"currency_code": "KZT",
"bank_code": "FFBKZT,FFBKZT",
"amount_to": 73100,
"external_request_id": "ORD-1001",
"callback_url": "https:\/\/partner.example\/callback",
"requisites": {
"card": "4400 4302 1234 5678",
"account_holder": "Иванов Иван Иванович"
}
}'
💱 MDL
— Молдавский лей
· банков: 1
Card Transfer
bank_code: USDTTRC20CARDMDL,CARDMDL
курс: 16.9480188
min: 100.00 USDT
| Поле | Метка | Обязательное | Валидация | Пример |
card |
Номер карты |
да |
card |
4400 4302 1234 5678 |
account_holder |
ФИО получателя |
да |
letters |
Иванов Иван Иванович |
mia |
MIA |
нет |
none |
Номер телефона привязан к онлайн банку |
📋 Полный пример запроса для этого банка
curl -X POST 'https://ecpay.systems/api/exchange_request_create.php' \
-H 'X-Authorization: YOUR_SECRET' \
-H 'Content-Type: application/json' \
-d '{
"apikey": "YOUR_API_KEY",
"currency_code": "MDL",
"bank_code": "USDTTRC20CARDMDL,CARDMDL",
"amount_to": 2500,
"external_request_id": "ORD-1001",
"callback_url": "https:\/\/partner.example\/callback",
"requisites": {
"card": "4400 4302 1234 5678",
"account_holder": "Иванов Иван Иванович"
}
}'
💱 PLN
— Польский злотый
· банков: 2
BLIK
bank_code: BLIKPLN
курс: 3.65662504
min: 90.00 USDT
| Поле | Метка | Обязательное | Валидация | Пример |
account_holder |
ФИО получателя |
да |
letters |
Иванов Иван Иванович |
phone |
Телефон |
да |
phone |
+7 700 123 4567 |
📋 Полный пример запроса для этого банка
curl -X POST 'https://ecpay.systems/api/exchange_request_create.php' \
-H 'X-Authorization: YOUR_SECRET' \
-H 'Content-Type: application/json' \
-d '{
"apikey": "YOUR_API_KEY",
"currency_code": "PLN",
"bank_code": "BLIKPLN",
"amount_to": 500,
"external_request_id": "ORD-1001",
"callback_url": "https:\/\/partner.example\/callback",
"requisites": {
"account_holder": "Иванов Иван Иванович",
"phone": "+7 700 123 4567"
}
}'
Wire Transfer
bank_code: ACCPLN
курс: 3.652824
min: 100.00 USDT
| Поле | Метка | Обязательное | Валидация | Пример |
iban |
IBAN |
да |
alnum |
UA00 0000 0000 0000 0000 0000 000 |
account_holder |
ФИО получателя |
да |
letters |
Иванов Иван Иванович |
📋 Полный пример запроса для этого банка
curl -X POST 'https://ecpay.systems/api/exchange_request_create.php' \
-H 'X-Authorization: YOUR_SECRET' \
-H 'Content-Type: application/json' \
-d '{
"apikey": "YOUR_API_KEY",
"currency_code": "PLN",
"bank_code": "ACCPLN",
"amount_to": 500,
"external_request_id": "ORD-1001",
"callback_url": "https:\/\/partner.example\/callback",
"requisites": {
"iban": "UA00 0000 0000 0000 0000 0000 000",
"account_holder": "Иванов Иван Иванович"
}
}'
💱 TJS
— Таджикский сомони
· банков: 1
Card Transfer
bank_code: CARDTJS
курс: 9.2862
min: 100.00 USDT
⏱ 180 мин
| Поле | Метка | Обязательное | Валидация | Пример |
card |
Номер карты |
да |
card |
4400 4302 1234 5678 |
account_holder |
ФИО получателя |
да |
letters |
Иванов Иван Иванович |
📋 Полный пример запроса для этого банка
curl -X POST 'https://ecpay.systems/api/exchange_request_create.php' \
-H 'X-Authorization: YOUR_SECRET' \
-H 'Content-Type: application/json' \
-d '{
"apikey": "YOUR_API_KEY",
"currency_code": "TJS",
"bank_code": "CARDTJS",
"amount_to": 1400,
"external_request_id": "ORD-1001",
"callback_url": "https:\/\/partner.example\/callback",
"requisites": {
"card": "4400 4302 1234 5678",
"account_holder": "Иванов Иван Иванович"
}
}'
💱 TRY
— Турецкая лира
· банков: 1
Wire Transfer
bank_code: WHIRETRY
курс: 48.0546
min: 100.00 USDT
⏱ 180 мин
| Поле | Метка | Обязательное | Валидация | Пример |
iban |
IBAN |
да |
alnum |
UA00 0000 0000 0000 0000 0000 000 |
account_holder |
ФИО получателя |
да |
letters |
Иванов Иван Иванович |
📋 Полный пример запроса для этого банка
curl -X POST 'https://ecpay.systems/api/exchange_request_create.php' \
-H 'X-Authorization: YOUR_SECRET' \
-H 'Content-Type: application/json' \
-d '{
"apikey": "YOUR_API_KEY",
"currency_code": "TRY",
"bank_code": "WHIRETRY",
"amount_to": 7200,
"external_request_id": "ORD-1001",
"callback_url": "https:\/\/partner.example\/callback",
"requisites": {
"iban": "UA00 0000 0000 0000 0000 0000 000",
"account_holder": "Иванов Иван Иванович"
}
}'
💱 UAH
— Украинская гривна
· банков: 3
VISA/Master Card
bank_code: CARDUAH
курс: 44.3718
min: 100.00 USDT
| Поле | Метка | Обязательное | Валидация | Пример |
card |
Номер карты |
да |
card |
4400 4302 1234 5678 |
account_holder |
ФИО получателя |
да |
letters |
Иванов Иван Иванович |
📋 Полный пример запроса для этого банка
curl -X POST 'https://ecpay.systems/api/exchange_request_create.php' \
-H 'X-Authorization: YOUR_SECRET' \
-H 'Content-Type: application/json' \
-d '{
"apikey": "YOUR_API_KEY",
"currency_code": "UAH",
"bank_code": "CARDUAH",
"amount_to": 6700,
"external_request_id": "ORD-1001",
"callback_url": "https:\/\/partner.example\/callback",
"requisites": {
"card": "4400 4302 1234 5678",
"account_holder": "Иванов Иван Иванович"
}
}'
МоноБанк
bank_code: MONOBUAH
курс: 44.3916
min: 100.00 USDT
| Поле | Метка | Обязательное | Валидация | Пример |
card |
Номер карты |
да |
card |
4400 4302 1234 5678 |
account_holder |
ФИО получателя |
да |
letters |
Иванов Иван Иванович |
📋 Полный пример запроса для этого банка
curl -X POST 'https://ecpay.systems/api/exchange_request_create.php' \
-H 'X-Authorization: YOUR_SECRET' \
-H 'Content-Type: application/json' \
-d '{
"apikey": "YOUR_API_KEY",
"currency_code": "UAH",
"bank_code": "MONOBUAH",
"amount_to": 6700,
"external_request_id": "ORD-1001",
"callback_url": "https:\/\/partner.example\/callback",
"requisites": {
"card": "4400 4302 1234 5678",
"account_holder": "Иванов Иван Иванович"
}
}'
Приват Банк
bank_code: P24UAH
курс: 44.8771752
min: 100.00 USDT
| Поле | Метка | Обязательное | Валидация | Пример |
card |
Номер карты |
да |
card |
4400 4302 1234 5678 |
account_holder |
ФИО получателя |
да |
letters |
Иванов Иван Иванович |
📋 Полный пример запроса для этого банка
curl -X POST 'https://ecpay.systems/api/exchange_request_create.php' \
-H 'X-Authorization: YOUR_SECRET' \
-H 'Content-Type: application/json' \
-d '{
"apikey": "YOUR_API_KEY",
"currency_code": "UAH",
"bank_code": "P24UAH",
"amount_to": 6700,
"external_request_id": "ORD-1001",
"callback_url": "https:\/\/partner.example\/callback",
"requisites": {
"card": "4400 4302 1234 5678",
"account_holder": "Иванов Иван Иванович"
}
}'
💱 USD
— Доллар США
· банков: 2
PAYPAL
bank_code: PAYPALUSD
курс: 1.06930001
min: 200.00 USDT
⏱ 4320 мин
| Поле | Метка | Обязательное | Валидация | Пример |
email |
Email |
да |
email |
name@example.com |
📋 Полный пример запроса для этого банка
curl -X POST 'https://ecpay.systems/api/exchange_request_create.php' \
-H 'X-Authorization: YOUR_SECRET' \
-H 'Content-Type: application/json' \
-d '{
"apikey": "YOUR_API_KEY",
"currency_code": "USD",
"bank_code": "PAYPALUSD",
"amount_to": 300,
"external_request_id": "ORD-1001",
"callback_url": "https:\/\/partner.example\/callback",
"requisites": {
"email": "name@example.com"
}
}'
Skrill
bank_code: SKRILLUSD
курс: 1
min: 300.00 USDT
⏱ 180 мин
| Поле | Метка | Обязательное | Валидация | Пример |
email |
Email |
да |
email |
name@example.com |
📋 Полный пример запроса для этого банка
curl -X POST 'https://ecpay.systems/api/exchange_request_create.php' \
-H 'X-Authorization: YOUR_SECRET' \
-H 'Content-Type: application/json' \
-d '{
"apikey": "YOUR_API_KEY",
"currency_code": "USD",
"bank_code": "SKRILLUSD",
"amount_to": 500,
"external_request_id": "ORD-1001",
"callback_url": "https:\/\/partner.example\/callback",
"requisites": {
"email": "name@example.com"
}
}'
📊 Статусы заявки
Каждая заявка проходит через жизненный цикл от создания до финального состояния. Ниже — все возможные значения поля status в ответах API и callback'ах.
| Статус | Что значит | Финальный |
new | Заявка создана, ожидает оператора. | нет |
accepted | Оператор принял заявку в работу. | нет |
in_progress | Оператор начал выплату. Может быть частичная оплата — сумма приходит несколькими частями. | нет |
processing | Оплата завершена, идёт финальная сверка/подтверждение со стороны оператора. | нет |
completed | Заявка успешно завершена. Деньги выплачены клиенту, сумма списана с баланса окончательно. | да |
cancelled | Заявка отменена. Списанные USDT возвращены на баланс автоматически. В ответе появляется поле cancel_reason с текстом причины. | да |
Финальные vs нефинальные
- Финальные:
completed, cancelled. После них статус больше не меняется. Можно прекращать опрос /api/exchange_request_status.php.
- Промежуточные:
new, accepted, in_progress, processing. Любой из них может ещё измениться.
Получение причины отмены
Когда заявка переходит в cancelled, ответ /api/exchange_request_status.php и тело callback'а будут содержать поле cancel_reason:
{
"ok": true,
"request_id": 123,
"external_request_id": "ORD-1001",
"status": "cancelled",
"internal_status": "cancelled",
"cancel_reason": "Реквизиты получателя неверны",
"amount_from": 218.34,
"amount_to": 100000,
"currency_code": "KZT",
"ts": 1745000000
}
Поле cancel_reason присутствует только при статусе cancelled. Возврат USDT на баланс происходит автоматически, дополнительных действий с вашей стороны не требуется.
Частичная оплата
Пока заявка в статусе in_progress, оператор может закрывать её несколькими частями. В ответе появляются поля:
| Поле | Тип | Описание |
paid_amount_to | number | Сколько уже выплачено клиенту в валюте назначения. |
remaining_amount_to | number | Сколько осталось доплатить: amount_to − paid_amount_to. |
Проверка статуса
| Метод | Эндпоинт | Описание |
| POST | /api/exchange_request_status.php | Возвращает текущий статус заявки. |
Идентифицировать заявку можно либо по нашему request_id, либо по вашему external_request_id (что передавали при создании).
Примеры
curl -X POST 'https://ecpay.systems/api/exchange_request_status.php' \
-H 'X-Authorization: YOUR_SECRET' \
-H 'Content-Type: application/json' \
-d '{"apikey":"YOUR_API_KEY","external_request_id":"ORD-1001"}'
Ответ
{
"ok": true,
"request_id": 123,
"external_request_id": "ORD-1001",
"status": "processing",
"internal_status": "in_progress",
"amount_from": 218.34,
"amount_to": 100000,
"paid_amount_to": 50000,
"remaining_amount_to": 50000,
"currency_code": "KZT",
"ts": 1745000000
}
Полный список значений status и какие из них финальные — в секции «📊 Статусы заявки» выше.
📡 Callback / Webhook
Если при создании заявки вы передали callback_url, ecpay будет слать на этот адрес уведомления о смене статуса (POST с JSON-телом).
🌐 IP-адреса ecpay для whitelist
Уведомления отправляются с фиксированных IP. Добавьте их в whitelist на стороне вашего сервера, если используете строгую фильтрацию входящих соединений.
89.116.198.48
Формат тела
POST <ваш callback_url>
Content-Type: application/json
{
"request_id": 123,
"external_request_id": "ORD-1001",
"status": "completed",
"internal_status": "completed",
"amount_from": 242.42,
"amount_to": 10000,
"currency_code": "TRY",
"ts": 1745000000
}
Подпись (опционально)
Для проверки подлинности входящего callback'а ecpay передаёт два заголовка:
X-Authorization: <ваш api_secret>
X-Signature: <hmac_sha256(api_secret, json_body)>
Коды валют
| ID | Code | Name |
|---|
| 20 | AED | Дирха́м ОАЭ |
| 21 | AMD | Армянский драм |
| 23 | AZN | Азербайджанский манат |
| 25 | CZK | Чешская крона |
| 19 | EUR | Евро |
| 15 | GEL | Грузинский лари |
| 22 | KGS | Кыргызский сом |
| 13 | KZT | Казахстанские тенге |
| 18 | MDL | Молдавский лей |
| 17 | PLN | Польский злотый |
| 24 | TJS | Таджикский сомони |
| 14 | TRY | Турецкая лира |
| 12 | UAH | Украинская гривна |
| 16 | USD | Доллар США |
Коды банков
| ID | Currency | Name | bank_code |
|---|
| 20 | AED | Bank transfer | ACCAED |
| 22 | AMD | Card Transfer | CARDAMD |
| 21 | AMD | IDRAM | IDRAMAMD |
| 24 | AZN | Card Transfer | CARDAZN |
| 29 | CZK | Bank Transfer | CARDCZK |
| 27 | EUR | Paypal | PPEUR |
| 19 | EUR | SEPA Instant | SEPAEUR |
| 9 | GEL | Bank transfer | WIREGEL |
| 23 | KGS | Card Transfer | CARDKGS |
| 16 | KZT | Bereke Bank | BEREKEKZT,BRBKZT |
| 17 | KZT | CenterCredit | CENTERKZT,CCBKZT |
| 12 | KZT | Forte | FORTEKZT,FRTBKZT |
| 7 | KZT | Halyk Bank | HALYKKZT,HLKBKZT |
| 11 | KZT | Jusan Bank | JUSANKZT,JSNBKZT |
| 4 | KZT | Kaspi Bank | KASPIKZT,KSPBKZT |
| 5 | KZT | VISA/Master Card | CARDKZT |
| 18 | KZT | Евразийский банк | EURASIANKZT,ERSNBKZT |
| 6 | KZT | Фридом банк | FFBKZT,FFBKZT |
| 14 | MDL | Card Transfer | USDTTRC20CARDMDL,CARDMDL |
| 15 | PLN | BLIK | BLIKPLN |
| 13 | PLN | Wire Transfer | ACCPLN |
| 25 | TJS | Card Transfer | CARDTJS |
| 8 | TRY | Wire Transfer | WHIRETRY |
| 3 | UAH | VISA/Master Card | CARDUAH |
| 2 | UAH | МоноБанк | MONOBUAH |
| 1 | UAH | Приват Банк | P24UAH |
| 10 | USD | PAYPAL | PAYPALUSD |
| 26 | USD | Skrill | SKRILLUSD |