#Общие поля запроса

Поля разделены на две группы:

  • Универсальные - принимаются всеми 17 методами (PayIn + PayOut)
  • Зависящие от метода - нужны только некоторым (bank_id, country_code, operator_id, owner_name, card_number, phone_number, account_number)

#Универсальные поля

ПолеТипОбяз.Описание
amountstring✅Сумма в currency
currencystring✅Код ISO-4217 в верхнем регистре: RUB, BYN, KZT, UZS, KGS, TJS, TMT, AMD, AZN, GEL, MDL, UAH, KRW, CNY, HKD, TWD, MOP, JPY, MNT, THB, VND, IDR, MYR, SGD, PHP, KHR, LAK, MMK, BND, INR, PKR, BDT, LKR, NPR, MVR, AFN, TRY, AED, SAR, QAR, KWD, BHD, OMR, JOD, ILS, LBP, IQD, YER, ARS, BRL, CLP, COP, PEN, MXN, UYU, PYG, BOB, VES, DOP, USD, EUR, GBP.
merchant_transaction_idstring✅UNIQUE на мерчанта
client_idstring-Только для интеграций по use_counterparty
webhook_urlstring-Per-tx callback (перебивает дефолт из dashboard)

#PayIn - суффикс-зависимые поля

Методbank_idcountry_codeoperator_id
card---
card-internal✅ обяз.--
card-cross-✅ обяз.-
card-internal-cross✅ обяз.✅ обяз.-
sbp---
sbp-internal✅ обяз.--
sbp-cross-✅ обяз.-
sbp-internal-cross✅ обяз.✅ обяз.-
qr---
qr-internal✅ обяз.--
qr-cross-✅ обяз.-
qr-internal-cross✅ обяз.✅ обяз.-
qr-nspk---
qr-nspk-multi---
mobile---
mobile-internal--✅ обяз.
mobile-cross-✅ обяз.-
mobile-internal-cross-✅ обяз.✅ обяз.
account---
acquiring---

«-» = поле не нужно (передадите - будет проигнорировано).

bank_id берётся из GET /merchant/banks, country_code - ISO-2, operator_id - UUID мобильного оператора.


#PayOut - обязательные доп. поля

ПолеТипОбяз.Описание
owner_namestring✅ФИО получателя (для всех PayOut)
bank_idUUID✅UUID банка из GET /merchant/banks (для всех PayOut). Если банк не найден → 400 INVALID_BANK

#PayOut - поля по методам

МетодДоп. обязательное полеФормат
card-outcard_number16 цифр, без пробелов и тире
sbp-outphone_number11 цифр без +
account-outaccount_number20 цифр

#СВОДКА - какие поля валидируем

МетодRequired-поля (помимо amount/currency/merchant_transaction_id)
payin/card-
payin/card-internalbank_id
payin/card-crosscountry_code
payin/card-internal-crossbank_id + country_code
payin/sbp-
payin/sbp-internalbank_id
payin/sbp-crosscountry_code
payin/sbp-internal-crossbank_id + country_code
payin/qr-
payin/qr-internalbank_id
payin/qr-crosscountry_code
payin/qr-internal-crossbank_id + country_code
payin/qr-nspk-
payin/qr-nspk-multi-
payin/mobile-
payin/mobile-internaloperator_id
payin/mobile-crosscountry_code
payin/mobile-internal-crossoperator_id + country_code
payin/account-
payin/acquiringreturn_url
payout/cardcard_number, owner_name, bank_id
payout/sbpphone_number, owner_name, bank_id
payout/accountaccount_number, owner_name, bank_id

Любые другие поля в запросе → 400 VALIDATION_ERROR.

Optional всегда: client_id, webhook_url.


#Что вернёт сервер при ошибке валидации

HTTPCodeКогда
400VALIDATION_ERRORПоле отсутствует или невалидно (или передано лишнее поле)
400INVALID_BANKbank_id корректный UUID, но банка нет в справочнике (PayOut)
400DUPLICATE_ORDERmerchant_transaction_id уже использовался