🇷🇺 RU: SberPay - Payments
"paymentMethodName": "SberPay"
Payment Method Features
| Payment Method | SberPay |
|---|---|
| Country | Russia |
| Processing Currencies | RUS |
| Payments | Yes |
| -- Min per transaction amount | Vary, depends on your contract |
| -- Max per transaction amount | Vary, depends on your contract |
| Refunds | Full & Partial |
| Chargebacks | No |
Possible Payment Scenarios:
Our API will provide you with all the necessary information to execute on of the following scenarios:
Name | paymentScenario | Steps |
|---|---|---|
Payment via Sber Web Form | SberWebForm |
|
Payment via Mobile Application | SberAppDeeplink |
|
Push/SMS notification with payment link | SberPushSMS |
|
Each of the scenarios supports:
- Single-stage authorisation flow - the payment is authorised and captured in a single step
- Two-stage authorisation flow - the payment is authorised first and captured later via a separate capture request
Workflow: Payment & Refund
Download in high resolution
Section “Payment Order Creation”
[Step 1.3] You need to create a new intent
- Use the following API method to create an intent:
POST /processing/api/v1/intents. - When creating the intent, complete the
Paymentobject. - Most fields are common across all payment methods and are thoroughly described in the API Reference section.
- Method-specific parameters ( please make sure you provided them correctly):
-
"paymentMethodName": "SberPay"← always “SberPay” for SberPay payment method -
"incomingDetails":{ "paymentScenario": "SberWebForm", "paymentAuthorizationModel": "single_stage", "redirectUrl": "url" }
-
- Ensure these all the required fields are completed accurately so that we can process your request correctly.
Please note that the SberPushSMS scenario requires the payer’s phone number to be specified in the
payments[].payer.phonefield in the7XXXXXXXXXXformat .
Request Example
{
"clientReferenceId": "1234",
"payments": [
{
"paymentInstrument": {
"paymentMethodName": "SberPay",
"incomingDetails": {
"paymentScenario": "SberWebForm",
"paymentAuthorizationModel": "single_stage",
"redirectUrl": "url"
}
},
"description": "Purchase description",
"webhookUrl": "webhookUrl",
"submittedAmount": {
"value": 100.05,
"currency": "RUB"
},
"authCurrencyCode": "RUB"
}
]
}{
"clientReferenceId": "1234",
"payments": [
{
"paymentInstrument": {
"paymentMethodName": "SberPay",
"incomingDetails": {
"paymentScenario": "SberAppDeeplink",
"paymentAuthorizationModel": "single_stage",
"redirectUrl": "url"
}
},
"description": "Purchase description",
"webhookUrl": "webhookUrl",
"submittedAmount": {
"value": 100.05,
"currency": "RUB"
},
"authCurrencyCode": "RUB"
}
]
}{
"clientReferenceId": "1234",
"payments": [
{
"payer": {
"phone": "79990005566"
},
"paymentInstrument": {
"paymentMethodName": "SberPay",
"incomingDetails": {
"paymentScenario": "SberPushSMS",
"paymentAuthorizationModel": "single_stage",
"redirectUrl": "url"
}
},
"description": "Purchase description",
"webhookUrl": "webhookUrl",
"submittedAmount": {
"value": 100.05,
"currency": "RUB"
},
"authCurrencyCode": "RUB"
}
]
}Fileds Description
| Type | Scenario SberWebForm | Scenario SberAppDeeplink | Scenario SberPushSMS | Description |
|---|---|---|---|---|---|
| String |
|
|
| |
| Array_of_objects |
|
|
| |
| Object |
|
|
| |
| String |
|
|
| The payer’s phone number in the 7XXXXXXXXXX format |
| Object |
|
|
| |
| String |
|
|
| Always "SberPay" for this method |
| Object |
|
|
| Configuration details that are required for the selected Payment Method |
| String |
|
|
| Enum:
|
| String |
|
|
| Enum:
|
| String |
|
|
| URL to which the payer is redirected after a successful payment attempt |
| String |
|
|
| URL to which the payer is redirected after a failed or cancelled payment attempt |
| Object |
|
|
| |
| Number |
|
|
| |
| String |
|
|
| |
| String |
|
|
| |
| String |
|
|
| |
| String |
|
|
|
[Step 1.5] Return the link in response
- In the response, you will receive an additional object
payments.additionalData. It contains the following fields:url– a payment link
Response Example
{
"intentId": "232510340021612544",
"payments": [
{
"id": "232510340646563840",
"submittedAmount": {
"value": 100.05,
"currency": "RUB"
},
"authAmount": {
"value": 100.05,
"currency": "RUB"
},
"paymentInstrument": {
"id": "PI204264628196626432",
"paymentMethodId": "PM199507277233246209",
"paymentMethodName": "SberPay"
},
"status": "ACCEPTED",
"additionalData": {
"url": "string",
}
}
],
"disbursements": [],
"clientReferenceIntentId": "123456789",
"paymentCreationErrors": [],
"disbursementCreationErrors": [],
"intentStatus": "CREATED"
}Section “Payment / Expiration”
[2.5] Receive the webhook with the transaction status
More about Payment Callbacks on the dedicated page
- After the transaction was processed and reached its final status (CAPTURED or DECLINED)
- The Platform will notify you about the latest status change via the callback
Section "CANCELLATION"
IMPROTANT
The timeframe between the authorization and cancellation must not exceed 5 days
- To cancel the payment transaction and release funds on the payer’s account, you must send a separate Cancellation request.
- Use the following endpoint: Update Payment status and specify the action you wish to perform:
status = CAPTURED- to capture the authorised amount.status = CANCELLED- to cancel the authorisation and release the reserved funds
- After receiving your request, we will initiate the capture process and send you a standard webhook with the updated transaction status.
Section "CAPTURE"
IMPROTANT
The timeframe between the authorization and cancellation must not exceed 5 days
-
To finalise the payment transaction and deduct funds from the payer’s account, you must send a separate Capture request.
-
Use the following endpoint: Update Payment status and specify the action you wish to perform:
status = CAPTURED- to capture the authorised amount.status = CANCELLED- to cancel the authorisation and release the reserved funds
-
After receiving your request, we will initiate the capture process and send you a standard webhook with the updated transaction status.
Section "REFUNDS"
- Refunds cannot exceed the total value of confirmed transactions for the current day.
[Step 5.1] Send a Refund Request
- To initiate the refund (full or partial) to the payer's original payment instrument, you must send a separate Refund request.
- Use the following endpoint: Create Refund inside existing Intent and specify the following parameters:
Field | Type | Required | Description |
|---|---|---|---|
paymentId | int64 | Yes | You must to let us know what payment transaction this refund must be linked to. Input here the ID of a Payment transaction your received during the Intent Creation |
partial | boolean | Optional |
|
amount | object | Optional | |
-- value | number | Optional | |
-- currency | string | Optional | If the payment involved FX and there two currencies involved, then you can use any these two currencies here. There is no difference between currencies, because we will use the historical rate that was used during the payment processing and the payer will receive the exact amount they spent. |
reason | string | Optional | |
webhookUrl | string | Optional |
- After the creation of the refund request you must wait for the callback, that will provide you with the latest transaction status
Test Data
Our system allows emulating different test cases in the sandbox environment.
To simulate specific scenarios and receive different results, use the intent.description parameter.
SBP Payment Test flow
Download in high resolution
SINGLE-STAGE (SS) AUTHORISATION FLOW CASES
List of Test Scenarios
| No | Case | intent.description | final paymentStatus |
|---|---|---|---|
| SS_1 | Successful payment | -- | CAPTURED |
| SS_2 | Link preparation (or sending for Push) error | LinkCreationError | ERROR |
| SS_3 | Declined payment | FailedAuthorization | DECLINED |
| SS_4 | Expired payment link | ExpiredLink | DECLINED |
Step-by-Step Scenario Description
No | Case | Steps |
|---|---|---|
SS_1 | Successful payment |
|
SS_2 | Link preparation (or sending for Push) error |
|
SS_3 | Declined payment |
|
SS_4 | Expired payment link |
|
TWO-STAGE (TS) AUTHORISATION FLOW CASES
List of Test Scenarios
| No | Case | intent.description | final paymentStatus |
|---|---|---|---|
| TS_1 | Successful Authorization & Capture | -- | CAPTURED |
| TS_2 | Successful Authorization & Cancellation | -- | CANCELLED |
| TS_3 | Link preparation (or sending for Push) error | LinkCreationError | ERROR |
| TS_4 | Declined payment | FailedAuthorization | DECLINED |
| TS_5 | Expired payment link | ExpiredLink | DECLINED |
| TS_6 | Successful Authorisation & Unsuccessful Capture | FailedCaptureOrCancellation | DECLINED |
| TS_7 | Successful Authorisation & Unsuccessful Cancellation | FailedCaptureOrCancellation | AUTHORIZED |
| TS_8 | Expired authorisation | ExpiredAuthorization | CANCELLED |
Step-by-Step Scenario Description
No | Case | Steps |
|---|---|---|
TS_1 | Successful Authorization & Capture |
|
TS_2 | Successful Authorization & Cancellation |
|
TS_3 | Link preparation (or sending for Push) error |
|
TS_4 | Declined payment |
|
TS_5 | Expired payment link |
|
TS_6 | Successful Authorisation & Unsuccessful Capture |
|
TS_7 | Successful Authorisation & Unsuccessful Cancellation |
|
TS_8 | Expired authorisation |
|
Updated 1 day ago
