Payout to a Card
A method for creating a payout to a card from a Sber corporate card (Sber Business Card).
The payout is created with processing status; the response includes redirect_url for
confirming the operation in Sber. After confirmation, the payout status is updated using the
payout confirmation method.
URL
Method: POST
- Production:
https://api.pay.kvell.group/v1/orders/account2card/sber - Stage:
https://api.pay.stage.kvell.group/v1/orders/account2card/sber
Request parameters
Name |
Type | Required | Description |
|---|---|---|---|
amount |
integer | Yes | Amount in kopecks |
transaction |
string | Yes | Unique transaction number on the merchant's side |
description |
string | Yes | Transaction description. Up to 210 characters. |
session_id |
string | Yes | Identifier of the authorized Sber session |
business_card_id |
string | Yes | Identifier of the Sber corporate card the payout is made from |
recipient_pan |
string | Conditional | Recipient's card PAN |
customer_card |
json | Conditional | Customer's linked card object |
∟customer_key |
string | Yes | Customer identifier in the merchant's system |
∟customer_card_token |
string | Yes | Linked card token |
user_crypto_type |
string | No | Sber user crypto profile: SMS or Token. Defaults to SMS. |
payout_draft_id |
integer | No | ID of the payout draft. The draft is confirmed together with the payout. |
customer |
string | No | Customer's email / phone number |
extra_data |
json | No | Additional data |
fiscal_data |
json | No | Receipt fiscalization under 54-FZ |
Request example
{
"recipient_pan": "4111111111111111",
"amount": 10000,
"transaction": "f4462ba6-37c5-4455-b0b2-53b179f7a25c",
"description": "Payout under contract No. 123",
"session_id": "11111111-1111-1111-1111-111111111111",
"business_card_id": "business-card-id",
"user_crypto_type": "SMS",
"customer": "user@example.com"
}
Request headers
| Name | Type | Required | Description |
|---|---|---|---|
X-Api-Key |
string | Yes | Unique shop identifier |
X-Signature |
string | Yes | Signature |
Building the signature
An electronic signature must be used when building the request, with the RSA/SHA256 algorithm.
This value must be passed in the X-Signature HTTP request header.
The signature building algorithm is the same as for making a payout to a card.
Attention
Signature validation is performed against the actual request body. Sign exactly the JSON you will send to the API (without reordering fields, additional transformations, or re-serialization between steps).
Response
Response example
{
"order": {
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"status": "processing",
"transaction": "f4462ba6-37c5-4455-b0b2-53b179f7a25c",
"amount": 10000,
"commission": 0,
"description": "Payout under contract No. 123",
"additional_data": {
"auth_code": null,
"rrn": null
},
"error_code": null,
"error_message": null,
"created_at": "2026-07-29T10:00:00"
},
"transaction": null,
"status": "processing",
"redirect_url": "https://sber.example/#/transfer-creator/external-id"
}
- The transaction must be left in processing, and the payout must not be recreated with a
new
transactionnumber. - The steps to take are described in the Error and timeout handling section.
Response parameters
| Name | Type | Description |
|---|---|---|
order |
json | Payout object |
∟id |
string | Payment ID in the system |
∟status |
string | Transaction status |
∟transaction |
string | Unique transaction number on the merchant's side |
∟amount |
integer | Amount in kopecks |
∟commission |
integer | Commission in kopecks |
∟description |
string | Transaction description |
∟additional_data |
json | Additional data (authorization code, RRN) |
∟error_code |
string | Error code (if any) |
∟error_message |
string | Error message (if any) |
∟created_at |
string | Transaction creation date |
transaction |
string | Not used in this method, returned with value null |
status |
string | Transaction status |
redirect_url |
string | Link for confirming the operation in Sber |
Return redirect
The redirect_url link must be opened to confirm the operation in the SberBusiness interface. For
the user to return to the merchant's page after signing, the backUrl parameter with the
URLEncode-encoded return address is appended to the end of the received link:
If backUrl is not specified, the user won't be able to return to the merchant's platform after
signing. See more details in the General section.
List of statuses
| Name | Description |
|---|---|
new |
New transaction |
processing |
Transaction is being processed |
canceled |
Transaction rejected |
completed |
Transaction completed |
Error codes
| Code | Description |
|---|---|
20001 |
Invalid api-key |
20002 |
Invalid signature |
20003 |
Payout profile is not linked to the shop |
20005 |
Error from the PSP service |
20007 |
Transaction has already been performed |
20015 |
Insufficient funds |
20019 |
Shop payout limit exceeded |
20020 |
Recipient not specified |
20038 |
Invalid draft number |
20040 |
Payout draft not found |
20041 |
The resulting description field exceeds the allowed length |
20042 |
Payout data and payout draft data do not match |
20098 |
Request field validation error |