General
Payouts via Sber are made from a corporate card (Sber Business Card) within an authorized Sber user session obtained through the merchant's personal account in the "Integrations" section. Each payout is confirmed by the user on Sber's side, after which the merchant calls the payout confirmation method.
Base url
Payout API methods (payouts to a card or via SBP):
- Production url:
https://api.pay.kvell.group/v1 - Stage url:
https://api.pay.stage.kvell.group/v1
Reference API methods (user information, list of corporate cards, list of SBP banks):
- Production url:
https://api.baas.kvell.group/v1 - Stage url:
https://api.baas.stage.kvell.group/v1
Request headers
| Name | Type | Required | Description |
|---|---|---|---|
X-Api-Key |
string | Yes | Unique shop identifier |
X-Signature |
string | Yes | Signature |
Building the signature
For the payout creation methods, an electronic signature is used with the RSA/SHA256 algorithm:
- Payout to a card —
POST /v1/orders/account2card/sber - SBP payout —
POST /v1/orders/payout/sbp/sber
The merchant generates a key pair on their own side and passes the public part to technical support. The signature building algorithm is the same as for making a payout to a card.
For the remaining methods, the signature is formed by concatenating the request parameters, and sha256 is taken from the resulting string:
| Method | Signature |
|---|---|
| User information | sha256({X-Api-Key}{session_id}{secret_key}) |
| List of corporate cards | sha256({X-Api-Key}{session_id}{secret_key}) |
| List of SBP banks | sha256({X-Api-Key}{session_id}{secret_key}) |
| SBP payout feasibility check | sha256({X-Api-Key}{phone}{bank_id}{secret_key}) |
| Getting the payout feasibility check status | sha256({X-Api-Key}{request_id}{secret_key}) |
| Payout confirmation | sha256({X-Api-Key}{transaction}{session_id}{secret_key}) |
where secret_key is the secret key found in the merchant's shop settings.
Sber session parameters
Name |
Type | Description |
|---|---|---|
session_id |
string | Identifier of the authorized Sber session. Created after the user completes authorization with Sber. |
business_card_id |
string | Identifier of the corporate card the payout is made from. Returned in the business_card_id field of the card list method. |
user_crypto_type |
string | Sber user crypto profile: SMS — SMS confirmation, Token — electronic key (token). Returned in the user_crypto_type field of the user information method. Defaults to SMS. |
Method call order
Payout to a card:
- User information — get
user_crypto_typebysession_id. - List of corporate cards — choose a card and get
business_card_id. - Payout to a card — create the payout; the response includes
redirect_url. - Open
redirect_urland confirm the operation in Sber. - Payout confirmation — update the payout status in KVELL.
SBP payout:
- User information — get
user_crypto_typebysession_id. - List of corporate cards — choose a card and get
business_card_id. - List of SBP banks — check that the recipient's bank is available for payouts via Sber.
- SBP payout feasibility check — get
request_id. This step is optional. - Getting the payout feasibility check status. This step is optional.
- SBP payout — create the payout, passing the obtained
request_id; the response includesredirect_url. - Open
redirect_urland confirm the operation in Sber. - Payout confirmation — update the payout status in KVELL.
Payout feasibility check
Calling the SBP payout feasibility check and status methods is optional — a payout to a card or
via SBP can be created right away. The check is needed if you need to confirm in advance that a
payout to the recipient's bank details is possible, verify the recipient's full name against NSPK
data, or obtain a request_id to pass in the payout request.
Payout status
If the payout remains in processing status after confirmation, the final status must be
obtained using the transaction status method.
Return redirect
The redirect_url link from the payout creation methods' response is opened to confirm the
operation in the SberBusiness interface. redirect_url arrives without a return address, so the
backUrl parameter with the merchant's return page address is appended to the end of the received
link:
Sber's requirements for the parameter:
backUrlmust beURLEncode-encoded;- if
backUrlis not specified, the user won't be able to return to the merchant's platform after signing;
Error codes
Errors are returned in the errors list of the JSON response body. 5xx responses, timeouts, and
connection drops are handled separately — see Error and timeout handling.
| 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 |
20009 |
Order not found |
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 |