Payment methods¶
The payment method is the payment_method field of POST /api/v1/payments.
All methods share the same request, statuses, callbacks and retry rules — what differs is the
requisite the payer gets and how they pay.
All methods¶
payment_method |
Name | What the payer gets (requisite) |
How they pay | Page |
|---|---|---|---|---|
sbp |
SBP | a phone number: +79991234567 |
an SBP transfer by phone number | SBP payments |
card_transfer |
Card transfer | a card number: 2200123456789010 |
a transfer by card number | Card payments |
cross_border_sbp |
Cross-border SBP | a phone number in another country | a transfer abroad by phone number | Cross-border transfer |
cross_border_card |
Cross-border card | a card number in another country | a transfer abroad to a card | Cross-border transfer |
nspk |
NSPK QR | an NSPK QR link (and/or a QR image) | scans the QR in the bank app | NSPK QR |
account_transfer |
Account transfer | a bank account number | a transfer by account number | Account transfer |
viet_qr |
Viet QR | a VietQR string (and a link to the QR image) | scans the QR in a Vietnamese bank app, pays in dong | Viet QR |
mobile_topup |
Mobile top-up | a phone number, the operator in requisite_bank |
tops up the phone balance | Mobile top-up |
card_matching |
Card transfer (matching) | a card number | a card transfer, then you upload the receipt | Matching |
sbp_matching |
SBP (matching) | a phone number | an SBP transfer, then you upload the receipt | Matching |
payment_method takes only the values from this table. The by_map method is gone: it was a
duplicate of card_transfer — use card_transfer.
Matching
card_matching and sbp_matching are matching methods: the provider credits the payment
only by the payer's receipt. After the transfer, upload the receipt file to
POST /api/v1/payments/{id}/receipt. Without a receipt the payment is
canceled on expiry. Details are on the Matching page.
Request fields by method¶
All methods use one request — POST /api/v1/payments; the fields are described in
SBP payments → Request fields. Required for every method:
merchant_payment_id, amount, payment_method. The rest are optional.
payment_method |
What matters in the request | What else is in the response besides requisite |
|---|---|---|
sbp, card_transfer |
bank_code — the payer's bank, if you need a requisite for it |
requisite_bank, holder_name |
cross_border_sbp, cross_border_card |
a Russian payment (RU, RUB); bank_code is the payer's bank in geo_code; the recipient country is not sent |
cross_border_country — the requisite's country |
nspk |
— | qrcode_link (https://qr.nspk.ru/…) and/or qrcode_image |
account_transfer |
bank_code and is_intrabank: true — a transfer within one bank |
requisite_bank, holder_name |
viet_qr |
a Russian payment (RU, RUB), amount in rubles |
qrcode_link — the QR image, requisite_bank, holder_name |
mobile_topup |
— | requisite_bank — the mobile operator |
card_matching, sbp_matching |
as for card_transfer / sbp |
as for card_transfer / sbp; after payment — the receipt |
deeplink_url — a link into the banking app — may come with any method when available.
qrcode_link, deeplink_url, cross_border_country and qrcode_image are present only when
they have a value. All response fields are in SBP payments → Response and in
the API reference.
Countries and currencies¶
The country and currency are the geo_code and currency fields. Without them the payment is
created for Russia in roubles (RU, RUB).
| Country | geo_code |
currency |
Methods |
|---|---|---|---|
| Russia | RU |
RUB |
all methods above |
| Kazakhstan | KZ |
KZT |
card_transfer — card transfer in tenge |
amount is in the payment currency: tenge for KZT. A cross-border transfer is a Russian
payment (RU, RUB): the payer pays in roubles and the requisite is issued in another country,
see Cross-border transfer.
Payer bank and intrabank transfers¶
bank_codeis the payer's bank, a name from the bank directory in thegeo_codecountry. Requisites are picked for that bank. Empty means any bank.is_intrabank: truetogether withbank_codemeans a transfer within one bank: the recipient's requisite is in the same bank as the payer's. For example, Promsvyazbank → Promsvyazbank.
Both fields are optional filters: the narrower the filter, the more likely no matching
requisites are available (422 payment_not_routable).
What your project has enabled¶
GET /api/v1/project/limits shows which methods, countries, banks and
amounts your project's contract accepts. A payment with a method outside the contract gets
422 payment_not_covered — ask your manager to enable it.
{
"limits": [
{"geo_code": "RU", "payment_method": "account_transfer", "currency": "RUB",
"bank_code": "Промсвязьбанк", "is_intrabank": true, "min_amount": 1000, "max_amount": 300000},
{"geo_code": "KZ", "payment_method": "card_transfer", "currency": "KZT",
"bank_code": null, "is_intrabank": false, "min_amount": 10000, "max_amount": 500000}
]
}
See also¶
- Kazakhstan — card transfers in tenge.
- Promsvyazbank — intrabank account transfers and other options for PSB.
- Matching —
card_matching,sbp_matchingand the payment receipt. - Mobile top-up —
mobile_topup. - Viet QR —
viet_qr, a pay-in from Vietnam by QR. - Banks — the name directory for
bank_code. - Statuses and errors.