Payment Docs
Payments by countryRussia

Russia

SBP payments by QR code in RUB

Before you start

This payment method is not enabled for all merchants. Check availability with your manager.

Overview

CurrencyPayment methodFlow
RUBSBP (QR code)You request a QR link and show it to the payer yourself

If SBP is enabled on your terminal, the hosted payment page offers it without extra parameters. This page describes the host-to-host flow: you get the SBP QR link directly from the API and render it in your own interface.

Order requirements

Two SBP integration options are available: with the customer object and without it. Which one is enabled for your account depends on your terminal settings.

Not sure which option you have? Ask your manager.

Pass the payer's phone and IP address in the customer object and the amount in whole rubles: an order with kopecks won't get a QR link.

Customer fields

FieldTypeRequiredDescription
phonestring✅ YesPayer's phone number, e.g. +79991234567
ipstring✅ YesPayer's IP address (real)

Request example

{
  "purpose": "Payment for order #1234",
  "amount": "9000",
  "currency": "RUB",
  "externalId": "external_id",
  "successUrl": "https://example.com/success",
  "failUrl": "https://example.com/fail",
  "callbackUrl": "https://example.com/webhooks/payments",
  "customer": {
    "phone": "+79991234567",
    "ip": "198.51.100.24"
  }
}

The customer object is not passed: send a regular order creation request with the RUB currency.

Request example

{
  "purpose": "Payment for order #1234",
  "amount": "9000",
  "currency": "RUB",
  "externalId": "external_id",
  "successUrl": "https://example.com/success",
  "failUrl": "https://example.com/fail",
  "callbackUrl": "https://example.com/webhooks/payments"
}

Flow

Create an order

Create a regular order in RUB and save its id.

Create payment

POST /v1/orders/{orderId}/h2h/sbp
curl -X POST "https://api.platinout.com/v1/orders/{orderId}/h2h/sbp" \
  -H "Content-Type: application/json" \
  -H "X-Api-Token: YOUR_API_TOKEN"

The QR link is generated on the bank side. Set the request timeout to 30 seconds or more.

Response:

{
  "qrLink": "https://qr.nspk.ru/..."
}

If no payment details can be issued, the API responds with 503 and the NO_REQUISITES code in the message. Create a new order.

Show the QR code

Render qrLink as a QR code, or open it as a link on mobile devices. The payer confirms the transfer in their banking app.

Wait for the result

The order status changes to COMPLETED when the transfer is confirmed. You receive a webhook or can poll the order by ID.

Order status and webhooks

Order statuses

StatusFinalDescription
CREATEDNoOrder created, payment link not yet opened
PENDINGNoAwaiting payment
COMPLETEDYesPayment successful, funds received
FAILEDConditionallyPayment error
CANCELEDConditionallyOrder canceled by the system
EXPIREDConditionallyOrder expired before it was paid
BLOCKEDConditionallyTransaction blocked by the bank
REFUNDYesPayment refunded to the payer (e.g. your refund is completed). Set after COMPLETED
CHARGEBACKYesPayment disputed by the payer and reversed by the bank. Set after COMPLETED

FAILED, CANCELED, EXPIRED and BLOCKED are not strictly final. If the bank confirms the payment later because of an error on its side, the order moves to COMPLETED and the webhook for this change is sent automatically. Be ready to receive COMPLETED for an order you have already marked as unsuccessful.

See also

On this page