Skip to content

Card payments

The payer transfers money to the recipient's card number from their bank app. The payment works like an SBP payment: the same API method, statuses, callbacks and retry rules. What differs is payment_method and what requisite holds.

SBP Card
payment_method sbp card_transfer
requisite phone number: +79991234567 card number: 2200123456789010
How the payer pays "SBP transfer" by phone number "Card transfer" by card number

Create a payment

POST /api/v1/payments with payment_method: "card_transfer". The request is signed the same way as for SBP.

{
  "merchant_payment_id": "order-1002",
  "amount": "12500.00",
  "payment_method": "card_transfer",
  "bank_code": "sber"
}

All fields and rules are in SBP payments → Request fields. bank_code is the payer's bank, a code from our bank catalog (not a BIC): requisites are picked for it. is_intrabank: true together with bank_code means a transfer within that bank: the recipient card is at the same bank as the payer's. Both are rare filters: without them, requisites come from any bank.

Response 201 Created:

{
  "id": "7a2d4c1e-9b3f-4e8a-b1c2-3d4e5f6a7b8c",
  "merchant_payment_id": "order-1002",
  "flow": "runtime_live",
  "status": "processing",
  "amount": 12500,
  "initial_amount": 12500,
  "currency": "RUB",
  "geo_code": "RU",
  "payment_method": "card_transfer",
  "bank_code": "sber",
  "is_intrabank": false,
  "callback_url": null,
  "is_test": false,
  "merchant_information": {
    "course": 100.00,
    "rate": 11.00,
    "amount_usdt": "125.0000",
    "amount_rate": "11125.0000",
    "amount_usdt_rate": "111.2500"
  },
  "requisite": "2200123456789010",
  "holder_name": "Мария П.",
  "created_at": "2026-09-29T09:30:00Z",
  "updated_at": "2026-09-29T09:30:01Z"
}

Response fields and merchant_information are the same as for SBP: Response and Settlement.

What to show the payer

  • Card number from requisite — in groups of four (2200 1234 5678 9010), with a "Copy" button that copies the number without spaces.
  • Recipient from holder_name — the bank shows this name before the transfer.
  • Amount — exactly amount. Warn that bank fees are paid on top: what arrives on the card is what gets credited.
  • Deadline — a countdown from created_at over your project's payment lifetime (15 minutes by default).

The card number is for this payment only

Do not store the card number or show it again. Create a new payment for a new transfer.

Statuses and result

Statuses, callbacks and polling are the same as for SBP: Statuses and Getting the result. Once a card is issued, the payment ends only as completed or canceled, each with a callback; error means no card was issued and shows in the create response.

Edge cases

Everything in SBP payments → Edge cases applies to cards too. Card-specific:

  • Transfer with a fee. If the payer's bank deducts a fee from the transfer, less arrives on the card. The actual amount may be confirmed on a payment re-check; the callback then says completed with a new amount.
  • No cards of the requested bank. With bank_code the choice is narrower; if nothing fits, the payment closes with provider_no_requisites or the answer is 422 payment_not_routable. Try without bank_code.