🇷🇺 RU: SberPay - Payments

📘

"paymentMethodName": "SberPay"


Payment Method Features

Payment MethodSberPay
CountryRussia
Processing CurrenciesRUS
PaymentsYes
-- Min per transaction amountVary, depends on your contract
-- Max per transaction amountVary, depends on your contract
RefundsFull & Partial
ChargebacksNo

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

  1. The client creates a payment request via the API.
  2. The system creates the payment and returns a Sber Web Form URL.
  3. The client redirects the payer to the provided URL or displays it as a link or QR code.
  4. The payer completes the payment on the Sber Web Form.
  5. Sber processes the payment and returns the result to the system.
  6. The system updates the payment status.
  7. The system sends a callback with the final payment status to the client.

Payment via Mobile Application

SberAppDeeplink

  1. The client creates a payment request via the API.
  2. The system creates the payment and returns a Carusell Redirect URL.
  3. The client provides the redirect URL to the payer (for example, via a button, link, QR).
  4. The payer opens the redirect URL.
  5. The system attempts to open a compatible Sber banking application on the payer’s device using deeplink fallback mechanism.
  6. If a compatible banking application is found, the payer is redirected to it; otherwise, the payer is redirected to the Sber landing page.
  7. The payer completes the payment.
  8. The system updates the payment status
  9. The system sends a callback with the final payment status to the client.

Push/SMS notification with payment link

SberPushSMS

  1. The client creates a payment request via the API.
  2. The system notifies Sber that a payer with a specific phone number intends to complete the payment via a push notification or SMS.
  3. Sber identifies the payer and sends a push notification or SMS containing the payment link.
  4. The payer opens the received link.
  5. The payer completes the payment via the Sber flow.
  6. The system updates the payment status.
  7. The system sends a callback with the final payment status to the client.
📘

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 Payment object.
  • 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.phone field in the 7XXXXXXXXXX format .


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

Field Path

Type

Scenario SberWebForm

Scenario SberAppDeeplink

Scenario SberPushSMS

Description

clientReferenceId

String

Required

Required

Required

payments

Array_of_objects

Required

Required

Required

payments[].payer

Object

Optional

Optional

Required

payments[].payer.phone

String

Optional

Optional

Required

The payer’s phone number in the 7XXXXXXXXXX format

payments[].paymentInstrument

Object

Required

Required

Required

payments[].paymentInstrument.paymentMethodName

String

Required SberPay

Required SberPay

Required SberPay

Always "SberPay" for this method

payments[].paymentInstrument.incomingDetails

Object

Required

Required

Required

Configuration details that are required for the selected Payment Method

payments[].paymentInstrument.incomingDetails.paymentScenario

String

Required SberWebForm

Required SberAppDeeplink

Required SberPushSMS

Enum:

  • SberWebForm
  • SberAppDeeplink
  • SberPushSMS

payments[].paymentInstrument.incomingDetails.paymentAuthorizationModel

String

Required

Required

Required

Enum:

  • single_stage
  • two_stage

payments[].paymentInstrument.incomingDetails.redirectUrl

String

Required

Required

Required

URL to which the payer is redirected after a successful payment attempt

payments[].paymentInstrument.incomingDetails.failureUrl

String

Optional

Optional

Optional

URL to which the payer is redirected after a failed or cancelled payment attempt

payments[].submittedAmount

Object

Required

Required

Required

payments[].submittedAmount.value

Number

Required

Required

Required

payments[].submittedAmount.currency

String

Required

Required

Required

payments[].authCurrencyCode

String

Required

Required

Required

payments[].webhookUrl

String

Required

Required

Required

description

String

Optional

Optional

Optional



[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

  • true - for partial refunds. If the refund is partial, then you need to specify the amount and currency
  • fasle - for full refunds. You don't need to specify the amount. If the filed is not specified at all, the platform will try to issue the refund for the full available amount

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

NoCaseintent.descriptionfinal paymentStatus
SS_1Successful payment--CAPTURED
SS_2Link preparation (or sending for Push) errorLinkCreationErrorERROR
SS_3Declined paymentFailedAuthorizationDECLINED
SS_4Expired payment linkExpiredLinkDECLINED

Step-by-Step Scenario Description

No

Case

Steps

SS_1

Successful payment

  1. You send a request to create a new Intent.
  2. You receive a successful response confirming the Intent and Payment creation, along with a payment link (for Web Form and Deeplink scenarios).
  3. Our platform emulates a successful payment completion by the payer.
  4. The system waits for 5 seconds.
  5. You receive a webhook notifying you that the payment status has changed into CAPTURED.

SS_2

Link preparation (or sending for Push) error

  1. You send a request to create a new Intent.
  2. You receive a successful response confirming the Intent and Payment creation, however the creation link error occurred
  3. You receive a webhook notifying you that the payment status has changed into ERROR.

SS_3

Declined payment

  1. You send a request to create a new Intent.
  2. You receive a successful response confirming the Intent and Payment creation, along with a payment link (for Web Form and Deeplink scenarios).
  3. Our platform emulates a unsuccessful payment completion by the payer.
  4. The system waits for 5 seconds.
  5. You receive a webhook notifying you that the payment status has changed into DECLINED.

SS_4

Expired payment link

  1. You send a request to create a new Intent.
  2. You receive a successful response confirming the Intent and Payment creation, along with a payment link (for Web Form and Deeplink scenarios).
  3. Our platform emulates a case when the link is expired without payment.
  • The system waits for 5 seconds.

  • You receive a webhook notifying you that the payment status has changed into DECLINED.


TWO-STAGE (TS) AUTHORISATION FLOW CASES

List of Test Scenarios

NoCaseintent.descriptionfinal paymentStatus
TS_1Successful Authorization & Capture--CAPTURED
TS_2Successful Authorization & Cancellation--CANCELLED
TS_3Link preparation (or sending for Push) errorLinkCreationErrorERROR
TS_4Declined paymentFailedAuthorizationDECLINED
TS_5Expired payment linkExpiredLinkDECLINED
TS_6Successful Authorisation & Unsuccessful CaptureFailedCaptureOrCancellationDECLINED
TS_7Successful Authorisation & Unsuccessful CancellationFailedCaptureOrCancellationAUTHORIZED
TS_8Expired authorisationExpiredAuthorizationCANCELLED

Step-by-Step Scenario Description

No

Case

Steps

TS_1

Successful Authorization & Capture

  1. You send a request to create a new Intent.
  2. You receive a successful response confirming the Intent and Payment creation, along with a payment link (for Web Form and Deeplink scenarios).
  3. Our platform emulates a successful payment completion by the payer.
  4. The system waits for 5 seconds.
  5. You receive a webhook notifying you that the payment status has changed into AUTHORIZED.
  6. You send a capture request for the authorised payment
  7. You receive a successful response
  8. You receive a webhook notifying you that the payment status has changed into CAPTURED

TS_2

Successful Authorization & Cancellation

  1. You send a request to create a new Intent.
  2. You receive a successful response confirming the Intent and Payment creation, along with a payment link (for Web Form and Deeplink scenarios).
  3. Our platform emulates a successful payment completion by the payer.
  4. The system waits for 5 seconds.
  5. You receive a webhook notifying you that the payment status has changed into AUTHORIZED.
  6. You send a cancellation request for the authorised payment
  7. You receive a successful response
  8. You receive a webhook notifying you that the payment status has changed into CANCELLED

TS_3

Link preparation (or sending for Push) error

  1. You send a request to create a new Intent.
  2. You receive a successful response confirming the Intent and Payment creation, however the creation link error occurred
  3. You receive a webhook notifying you that the payment status has changed into ERROR.

TS_4

Declined payment

  1. You send a request to create a new Intent.
  2. You receive a successful response confirming the Intent and Payment creation, along with a payment link (for Web Form and Deeplink scenarios).
  3. Our platform emulates a unsuccessful payment completion by the payer.
  4. The system waits for 5 seconds.
  5. You receive a webhook notifying you that the payment status has changed into DECLINED.

TS_5

Expired payment link

  1. You send a request to create a new Intent.
  2. You receive a successful response confirming the Intent and Payment creation, along with a payment link (for Web Form and Deeplink scenarios).
  3. Our platform emulates a case when the link is expired without payment.
  4. The system waits for 5 seconds.
  5. You receive a webhook notifying you that the payment status has changed into DECLINED.

TS_6

Successful Authorisation & Unsuccessful Capture

  1. You send a request to create a new Intent.
  2. You receive a successful response confirming the Intent and Payment creation, along with a payment link (for Web Form and Deeplink scenarios).
  3. Our platform emulates a successful payment completion by the payer.
  4. The system waits for 5 seconds.
  5. You receive a webhook notifying you that the payment status has changed into AUTHORIZED.
  6. You send a capture request for the authorised payment
  • You receive an unsuccessful response

  • You receive a webhook notifying you that the payment status has changed into DECLINED

TS_7

Successful Authorisation & Unsuccessful Cancellation

  1. You send a request to create a new Intent.
  2. You receive a successful response confirming the Intent and Payment creation, along with a payment link (for Web Form and Deeplink scenarios).
  3. Our platform emulates a successful payment completion by the payer.
  4. The system waits for 5 seconds.
  5. You receive a webhook notifying you that the payment status has changed into AUTHORIZED.
  6. You send a cancellation request for the authorised payment
  • You receive an unsuccessful response

  • Status won't change, not webhooks will be sent

TS_8

Expired authorisation

  1. You send a request to create a new Intent.
  2. You receive a successful response confirming the Intent and Payment creation, along with a payment link (for Web Form and Deeplink scenarios).
  3. Our platform emulates a successful payment completion by the payer.
  4. The system waits for 5 seconds.
  5. You receive a webhook notifying you that the payment status has changed into AUTHORIZED.
  6. Our platform emulates a situation that the authorisation time has expired.
  7. The system waits for 5 seconds.
  8. You receive a webhook notifying you that the payment status has changed into DECLINED.