Skip to content

Account transfer

The payer sends money to the recipient's bank account by account number. The payment works like an SBP payment: the same API method, statuses, callbacks and retry rules. What differs is payment_method and the requisite.

Card transfer Account transfer
payment_method card_transfer account_transfer
What the payer gets a card number in requisite an account number in requisite
How the payer pays a transfer by card number a transfer by account number in the bank app

Create a payment

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

{
  "merchant_payment_id": "order-1004",
  "amount": "30000.00",
  "payment_method": "account_transfer",
  "bank_code": "Промсвязьбанк",
  "is_intrabank": true
}

All fields and rules are in SBP payments → Request fields; allowed methods, banks and amounts are in Contract limits. The method must be in your project's contract.

bank_code is the payer's bank, a name from the bank directory (not a BIC). is_intrabank: true together with bank_code means a transfer within that bank: the recipient account is in the same bank as the payer's (for example, Promsvyazbank → Promsvyazbank). Without these fields the account is picked from all available banks. Transfers within Promsvyazbank, the link into the bank app and what to show the payer are on the Promsvyazbank page.

Response

Response 201 Created:

{
  "id": "9c4e2f1a-6b7d-4c8e-a1f2-3b4c5d6e7f80",
  "merchant_payment_id": "order-1004",
  "status": "processing",
  "amount": 30000,
  "initial_amount": 30000,
  "currency": "RUB",
  "geo_code": "RU",
  "payment_method": "account_transfer",
  "bank_code": "Промсвязьбанк",
  "is_intrabank": true,
  "requisite": "40817810000000000001",
  "requisite_bank": "Промсвязьбанк",
  "holder_name": "Иван С.",
  "created_at": "2026-10-13T09:30:00Z",
  "updated_at": "2026-10-13T09:30:01Z"
}
  • requisite — the recipient's account number;
  • holder_name — the recipient as the payer will see them in the bank;
  • requisite_bank — the account's bank.

The other response fields and merchant_information are the same as for SBP: Response and merchant_information.

What to show the payer

  • Account number — the whole requisite, with a "Copy" button. Do not shorten it, and if you group digits with spaces, let the payer copy the number without them.
  • Recipient and bank — holder_name and requisite_bank: the payer checks the transfer against them.
  • Amount — exactly amount, in one transfer.
  • Time limit — a countdown from created_at for your project's payment lifetime (15 minutes by default).

The account is for this payment only

Do not store the account 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.

Edge cases

Everything in SBP payments → Edge cases applies to account transfers as well. In addition:

  • No accounts in the requested bank. bank_code and is_intrabank narrow the choice; if nothing fits, the response is 422 payment_not_routable. Retry without these fields.
  • The method is not in the contract — 422 payment_not_covered: ask your manager to enable account_transfer.