SBP Payout
Method for creating a payout via SBP from a Sber corporate card (Sber Business Card).
The payout is created with status processing; the response includes a redirect_url for confirming the operation
in Sber. After confirmation, the payout status is updated via the payout confirmation method.
URL
Method: POST
- Production:
https://api.pay.kvell.group/v1/orders/payout/sbp/sber - Stage:
https://api.pay.stage.kvell.group/v1/orders/payout/sbp/sber
Request parameters
Name |
Data type | Required | Description |
|---|---|---|---|
amount |
integer | Yes | Amount in kopecks |
phone |
string | Yes | Recipient's phone number. Digits only. |
fio |
string | Yes | Recipient's full name |
bank_id |
string | Yes | Bank name obtained from the list of banks |
transaction |
string | Yes | Unique transaction number on the merchant's side |
description |
string | Yes | Transaction description. Maximum 110 characters. |
session_id |
string | Yes | Sber authorized session identifier |
business_card_id |
string | Yes | Identifier of the Sber corporate card the payout is made from |
fio_check |
boolean | No | Flag indicating that the passed full name must be checked against the one returned by NSPK |
request_id |
string | No | Parameter obtained when calling the payout feasibility check method |
user_crypto_type |
string | No | Sber user crypto profile: SMS or Token. Default is 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 |
Example request
{
"amount": 10000,
"phone": "79991234567",
"fio": "Иванов Иван Иванович",
"bank_id": "100100000014",
"transaction": "f4462ba6-37c5-4455-b0b2-53b179f7a25c",
"description": "Выплата по договору №123",
"request_id": "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 | Data 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. The RSA/SHA256 algorithm is used.
This value must be passed in the X-Signature HTTP request header.
The signature generation algorithm is the same as for a card payout.
Attention
Signature validation is performed against the actual request body. Sign exactly the JSON that you send to the API (without reordering fields, additional transformations, or re-serialization between steps).
Request response
Example response
{
"order": {
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"status": "processing",
"transaction": "f4462ba6-37c5-4455-b0b2-53b179f7a25c",
"amount": 10000,
"commission": 0,
"description": "Выплата по договору №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/#/sbp-transfer-creator/external-id"
}
- The transaction must be left in processing and the payout must not be recreated with a new
transactionnumber. - The procedure is described in the Handling errors and timeouts section.
Response parameters
| Name | Data 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, comes 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. So that the user
returns to the merchant's page after signing, append the backUrl parameter with the return address, URL-encoded,
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. 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 was already performed |
20015 |
Insufficient funds |
20019 |
Shop payout limit exceeded |
20038 |
Invalid draft number |
20040 |
Payout draft not found |
20041 |
The resulting description field exceeds the allowed length |
20042 |
Payout and payout draft data do not match |
20098 |
Request field validation error |