Integration GuideAPI Reference
Integration Guide

"DCB" Payment Method

Payment Method Definition

📓

displayedPaymentMethods

It is a parameter in the Intent creation request that defines which payment method should be displayed to the payer on the checkout form. It is an alternative to paymentMethodName in host-to-host integration.
This parameter is provided in: paymentIntent.formDetails.displayedPaymentMethods
For this method you need to provide the DCB_RU value.

📘

DCB (Direct Carrier Billing) is a carrier-billed payment method. On the checkout form the payer enters their mobile phone number — the account the payment is charged to. There is no QR and no redirect to a bank app: the mobile operator sends the payer an SMS, the payer confirms the charge by replying to it, and the checkout form shows the result. We notify you of the final status via a webhook.

Payment Method Features

FeatureValue
CountryRussia
Processing CurrenciesRUB
PaymentsYes
-- Min per transaction amountVary, depends on your contract
-- Max per transaction amountVary, depends on your contract
RefundsYes (Full amount & MTS subscribers only)
ChargebacksNo

Workflow

Download in high resolution


Checkout Flow

StageWhat happens
Intent Creation[1.1] The payer initiates a payment on your side.
[1.2] You create an Intent with useCheckoutForm = true via POST /processing/api/v1/intents.
[1.3–1.4] Our platform creates the Intent and the checkout session, and returns the checkout URL in the synchronous response (paymentIntent.additionalData.url).
[1.5–1.6] You redirect the payer to the checkout URL.
Payment Creation[2.1–2.2] The payer selects the DCB method (skipped automatically if it is the only method in the session).
[2.3–2.4] The form displays the phone number input; the payer enters their number and confirms.
[2.5–2.10] A Payment is created within the Intent and submitted to the payer's mobile network operator.
[2.11–2.13] The form shows a waiting screen; the operator sends the payer an SMS.
Payment Finalisation[3.1–3.2] The payer replies to the SMS; the operator returns the final result.
[3.3–3.5] The payment becomes CAPTURED or DECLINED, the Intent is finalised, and a webhook is sent.
[3.6–3.7] The form shows the success screen and redirects the payer back to the store, or shows the failure screen with an option to retry.

⚠️

Confirmation happens outside the checkout form

The payer confirms the charge by replying to an SMS from their mobile network operator, not on the form itself. Confirmation is expected within 30 minutes. The waiting screen stays on until the result arrives — the payer may background the browser to answer the SMS and return later.

⚠️

Declines are not itemised

The operator does not distinguish between a payment the payer refused, a payment that failed for lack of funds, and a payment that expired without a reply. All of them arrive as a single DECLINED status with no specific reason. After a decline the payer can retry within the same checkout session — a retry creates a new Payment within the same Intent.


Create Intent Request

Specifics

  • We use one unified Intent creation request for all supported payment methods: POST /processing/api/v1/intents
  • The overall structure is the same, but some fields change depending on the payment method and the way of integration: Host-to-Host or Hosted Checkout.
    • For Host-to-Host we will expect you to complete the Payment object
    • For Hosted Checkout we will expect you to complete the PaymentIntent object
  • You do not send the payer's phone number. The payer enters it on the checkout form — this is the key difference from the Host-to-Host integration of this method.

'Intent' vs 'Payment' vs 'PaymentIntent'

Some objects and parameters in this API may appear similar, but they represent different concepts and are used in different integration scenarios. The explanation below clarifies the purpose of each term.

TermMeaning
Intent
  • A universal top-level container for transaction-related operations.
  • Depending on the integration scenario, it may contain objects such as Payment, PaymentIntent, or other transaction types.
Payment
  • Used in Host-to-Host integrations.
  • You provide the payment method, payment instrument, amount, currency, and other payment details upfront because the payment flow is handled on your side.
PaymentIntent
  • Used in Hosted Checkout integrations.
  • It contains the order details and checkout configuration, but not the full payment instrument data.
  • The actual Payment object is created later, when the payer completes the checkout form.
  • Multiple payment attempts might occur within one Intent. But all of them follow the rules and configuration defined in the corresponding PaymentIntent.

Request/Response Description

Request Description

    {
      "clientReferenceId": "070826-1",
      "useCheckoutForm": true,
      "paymentIntent": {
        "formDetails": {
          "template": "string",
          "displayedPaymentMethods": ["DCB_RU"],
          "backToStoreRedirectUrl": "https://merchant.example.com/checkout"
        },
        "submittedAmount": {
          "value": 200.00,
          "currency": "RUB"
        },
        "description": "Order 070826-1",
        "webhookUrl": "https://merchant.example.com/webhooks/payments"
      }
    }

Top-Level Request Parameters

ParameterTypeRequiredDescription
clientReferenceIdStringRequiredOrder number in the merchant system.
useCheckoutFormBooleanConditionalOptional in general.
Must be set to true when using the Checkout Form integration.
paymentIntentObjectConditionalOptional in general.
Must be provided when using the Checkout Form integration.
descriptionStringOptionalOrder description.
Displayed if paymentIntent.description is not provided.
merchantObjectOptionalMerchant information.
Required if the store name must be displayed on the checkout form.


paymentIntent

ParameterTypeRequiredDescription
formDetailsObjectOptionalCheckout parameters
submittedAmountObjectRequiredOrder amount and currency. The currency is always RUB for this method.
descriptionStringOptionalOrder Description that can be displayed on the Checkout Form.
webhookUrlStringRequiredURL to which we will send webhooks related to payments created within the Intent and their status changes


formDetails

ParameterTypeRequiredDescription
templateStringOptionalThe name of the checkout template to be used.
Multiple templates can be configured and selected for different use cases
displayedPaymentMethodsArray of StringsOptionalList of payment methods to be made available to the payer.
If only one payment method is provided, no selection screen is shown and the payer is taken directly to the phone number form
backToStoreRedirectUrlStringOptionalURL to which the payer is redirected if they leave the Checkout Form or after payment completion. Must start with "https://".


submittedAmount

ParameterTypeRequiredDescription
valueNumberRequiredSubmitted order amount in major units (roubles), e.g. 200.00.
currencyStringRequiredSubmitted order currency in ISO 4217 alpha-3 format. Always RUB for this method.


merchant

ParameterTypeRequiredDescription
nameStringOptionalThe name of store, that might be displayed on the checkout form if configured
websiteStringOptionalThe website of the store


Webhooks

🔗
  • After the checkout form is created, the payer can make multiple payment attempts during the payment session lifetime.
    • By default, the session remains active for 20 minutes, although this value can be changed by your integration manager.
    • The platform sends webhooks to the URL provided in paymentIntent.webhookUrl from the request whenever the status of a payment changes.
      For more information about payment webhooks, see the dedicated page
⚠️

A payment can complete after the session expires

The checkout session lifetime limits how long the form is accessible — it does not cancel a payment that is already waiting for SMS confirmation. A payment in progress resolves within the operator's own window (up to 30 minutes) and its final webhook (CAPTURED or DECLINED) is delivered even if the session has already expired. Rely on webhooks, not on the session deadline, to settle the order.


Did this page help you?