Appearance
SBP Payments
SBP — Faster Payments System (Система Быстрых Платежей) — is a bank-to-bank instant transfer scheme. The payer receives the recipient credentials (phone number, bank and recipient name) and completes the transfer in their own banking application.
Use this page to create payments via SBP using the common Payment API endpoint. Authentication and base URL follow the Payment API docs.
- Base URL:
https://api.wirekassa.com/api/v1/payment/ - Endpoint:
POST /v1/payment/
The payment method identifier transmitted in the API is fps. SBP is the public name of the same method.
You can receive the mispaid status in this method! Please, pay your attention to the Mispaid instruction.
Supported Currencies
- RUB
Integration Models
SBP payments support two integration models:
- Redirect flow: The customer is redirected to our secure hosted page. Redirect the user using
redirect_url. - Server-to-Server: You will receive the recipient credentials in
payment_methodand display them yourself.
The model applied to a transaction depends on your channel configuration. If your channel is configured to collect payer personal data, the payer provides it on our hosted page and the recipient credentials are issued only afterwards. Please specify the configuration of your channel.
Flow
Common fields (see Payment API):
channel(UUID, required)amount(object, required)currency(ISO 4217, required)value(string, required)
external_id(string, optional)return_url(string, recommended)payment_method(object, required)
payment_method (type: fps)
Required:
type→"fps"
SBP takes no additional fields in the request. Any extra field sent inside payment_method is ignored.
Example Request
json
{
"channel": "550e8400-e29b-41d4-a716-446655440000",
"amount": {
"currency": "RUB",
"value": "1000.00"
},
"external_id": "ORDER-10002",
"payment_method": {
"type": "fps"
},
"return_url": "https://your-company.com/return",
"callback_url": "https://your-company.com/callback"
}Example Response (Server to Server)
json
{
"status": "processing",
"transaction_id": "7d1c94b2-6f3a-4e58-9a21-15c0be7742d9",
"amount": {
"currency": "RUB",
"value": "1000.00"
},
"redirect_url": "https://pay.wirekassa.com/7d1c94b2-6f3a-4e58-9a21-15c0be7742d9/",
"channel": "550e8400-e29b-41d4-a716-446655440000",
"payment_method": {
"type": "fps",
"phone": "+79997775544",
"amount": "1000.00",
"bank_name": "SBER",
"recipient": "IVAN I."
},
"create_date": "2025-10-15T23:54:13.008007+00:00"
}Recipient Credentials
When the recipient credentials are issued, payment_method contains:
phone→ Phone number of the recipient the payer must transfer toamount→ Exact amount the payer must transfer, as returned by the providerbank_name→ Bank of the recipientrecipient→ Name of the recipient
All four fields are issued together. Show all of them to the payer: an SBP transfer is matched by the recipient phone, bank and the exact amount, so a transfer of a different amount is settled as mispaid.
Example Response (Hosted)
If your channel collects payer personal data on our hosted page, the create response contains no recipient credentials yet. Redirect the payer using redirect_url.
json
{
"status": "processing",
"transaction_id": "7d1c94b2-6f3a-4e58-9a21-15c0be7742d9",
"amount": {
"currency": "RUB",
"value": "1000.00"
},
"redirect_url": "https://pay.wirekassa.com/7d1c94b2-6f3a-4e58-9a21-15c0be7742d9/",
"channel": "550e8400-e29b-41d4-a716-446655440000",
"payment_method": {
"type": "fps"
},
"create_date": "2025-10-15T23:54:13.008007+00:00"
}Completing the Payment
The payer performs the transfer in their banking application. There is no confirmation call for SBP — the provider reports the result and the transaction is settled on our side.
Poll GET /v1/payment/ or wait for the callback until the transaction reaches a final status:
completed→ the transfer was received in fullmispaid→ the transfer was received, but the amount differs from the requested one. Useamount.receivedinstead ofamount.valuefailed→ the transfer was not received before the payment expired, or the provider declined the payment
Example Response (Completed)
json
{
"status": "completed",
"transaction_id": "7d1c94b2-6f3a-4e58-9a21-15c0be7742d9",
"amount": {
"currency": "RUB",
"value": "1000.00"
},
"redirect_url": "https://pay.wirekassa.com/7d1c94b2-6f3a-4e58-9a21-15c0be7742d9/",
"channel": "550e8400-e29b-41d4-a716-446655440000",
"create_date": "2025-10-15T23:54:13.008007+00:00",
"update_date": "2025-10-15T23:58:41.114902+00:00"
}Notes:
- The recipient credentials are issued per transaction. Do not cache them and do not reuse them for another payment.
- If the provider returns incomplete recipient credentials, the payment is declined. Create a new payment in that case.