Документация 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-доступ активирован администратором для вашего аккаунта.

  1. Откройте свой профиль: /settings.php (или /security.php).
  2. Найдите блок «🔌 API доступ». Если статус «● Активен» — вам доступны API-ключ и секрет.
  3. Нажмите «👁 Показать», чтобы раскрыть полное значение, или «📋 Копировать», чтобы сразу скопировать в буфер обмена.
  4. В этом же блоке готовые curl-примеры с уже подставленными вашими ключами для эндпоинтов «Курсы», «Создание заявки» и «Проверка статуса».
  5. Если статус «○ Выключен» — попросите владельца включить 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 / nameanyВладелец API-ключа = владелец возвращаемого баланса. Используйте, чтобы убедиться в каком именно аккаунте находится баланс.
balance.usdtnumberПолный баланс USDT в ecpay для этого аккаунта.
balance.reserved_usdtnumberЗарезервировано под активные заявки (статусы new / accepted / in_progress / processing / active / paywait).
balance.available_usdtnumberДоступно для новых заявок: usdt − reserved_usdt.
today.completed_count / completed_usdtint / numberСколько заявок и на какую сумму закрыто сегодня.
today.open_count / open_usdtint / 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[].codestringКод валюты для использования в currency_code при создании заявки.
banks[].identifierstringИдентификатор банка для поля bank_code при создании заявки.
banks[].ratenumberАктуальный курс. Используйте для расчёта amount_from.
banks[].min_amount / max_amountnumberЛимиты банка (если выставлены).
banks[].payout_time_minutesintЦелевое время выплаты в минутах.
banks[].rate_updated_atdatetimeКогда курс был обновлён.
banks[].is_active0/1Активен ли банк прямо сейчас.

Создание заявки

МетодЭндпоинтОписание
POST/api/exchange_request_create.phpСоздаёт новую заявку в системе.

Заявка через API создаётся по той же логике, что и через сайт: курс берётся автоматически из БД для пары currency_code + bank_code, сумма списания amount_from рассчитывается сервером по этому курсу, баланс аккаунта владельца ключа списывается атомарно. Достаточно передать amount_to и направление — серверу всё остальное известно.

Поля запроса

FieldTypeRequiredОписание
apikeystringyesПубличный API-ключ обменника. Связан с балансом, лимитами и доступными валютами.
currency_codestringyesКод валюты назначения, например KZT, TRY, UAH. Список — в секции «Коды валют» ниже.
bank_codestringyes*Идентификатор банка из «Кодов банков». Альтернативно bank_id (int).
amount_tonumberyesСумма к выплате клиенту в валюте назначения (например 10000 KZT).
amount_fromnumbernoНе передавайте — будет рассчитано сервером по актуальному курсу банка. Если передадите, значение проигнорируется и пересчитается.
from_currencystringnoПо умолчанию USDT.
requisitesobjectyes**Объект с реквизитами получателя. Какие поля обязательны — зависит от банка (см. секцию «📝 Реквизиты по банкам»).
external_request_idstringnoВаш ID заявки. Используется для идемпотентности: повторный запрос с тем же ID вернёт ту же заявку.
external_tokenstringnoДополнительный токен заявки.
callback_urlstringnoURL для webhook-уведомлений о смене статуса. См. секцию «Callback / Webhook».
client_name / client_contactstringnoИмя и контакт клиента (для привязки заявки на стороне партнёра).

* Достаточно одного из 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).
phone6–25 символов: цифры, +, -, пробелы, скобки.
lettersТолько буквы, пробел и дефис (для ФИО).
digitsТолько цифры.
noneПроизвольная строка.

Конкретные банки и валюты

Список ниже формируется автоматически из вашей админки: добавите новую валюту или банк через интерфейс — они сразу появятся здесь со своими полями, валидацией и готовым примером запроса.

💱 AED — Дирха́м ОАЭ · банков: 1

Bank transfer bank_code: ACCAED курс: 3.6333 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 курс: 364.31258463 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": 54600,
    "external_request_id": "ORD-1001",
    "callback_url": "https:\/\/partner.example\/callback",
    "requisites": {
        "card": "4400 4302 1234 5678",
        "account_holder": "Иванов Иван Иванович"
    }
}'
IDRAM bank_code: IDRAMAMD курс: 362.45009994 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": 54400,
    "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.5866346 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.61262961 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.318 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.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": "FORTEKZT,FRTBKZT",
    "amount_to": 73100,
    "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.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": "JUSANKZT,JSNBKZT",
    "amount_to": 73100,
    "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.429284 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 курс: 487.55010009 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": 73100,
    "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.9540188 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.66933759 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.6551893 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.15563339 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.5104 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.5401 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.6291802 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.07 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_tonumberСколько уже выплачено клиенту в валюте назначения.
remaining_amount_tonumberСколько осталось доплатить: 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)>

Коды валют

IDCodeName
20AEDДирха́м ОАЭ
21AMDАрмянский драм
23AZNАзербайджанский манат
25CZKЧешская крона
19EURЕвро
15GELГрузинский лари
22KGSКыргызский сом
13KZTКазахстанские тенге
18MDLМолдавский лей
17PLNПольский злотый
24TJSТаджикский сомони
14TRYТурецкая лира
12UAHУкраинская гривна
16USDДоллар США

Коды банков

IDCurrencyNamebank_code
20AEDBank transferACCAED
22AMDCard TransferCARDAMD
21AMDIDRAMIDRAMAMD
24AZNCard TransferCARDAZN
29CZKBank TransferCARDCZK
27EURPaypalPPEUR
19EURSEPA InstantSEPAEUR
9GELBank transferWIREGEL
23KGSCard TransferCARDKGS
16KZTBereke BankBEREKEKZT,BRBKZT
17KZTCenterCreditCENTERKZT,CCBKZT
12KZTForteFORTEKZT,FRTBKZT
7KZTHalyk BankHALYKKZT,HLKBKZT
11KZTJusan BankJUSANKZT,JSNBKZT
4KZTKaspi BankKASPIKZT,KSPBKZT
5KZTVISA/Master CardCARDKZT
18KZTЕвразийский банкEURASIANKZT,ERSNBKZT
6KZTФридом банкFFBKZT,FFBKZT
14MDLCard TransferUSDTTRC20CARDMDL,CARDMDL
15PLNBLIKBLIKPLN
13PLNWire TransferACCPLN
25TJSCard TransferCARDTJS
8TRYWire TransferWHIRETRY
3UAHVISA/Master CardCARDUAH
2UAHМоноБанкMONOBUAH
1UAHПриват БанкP24UAH
10USDPAYPALPAYPALUSD
26USDSkrillSKRILLUSD