SBP (RUB)
How to create payouts using SBP phone numbers
Payouts allow you to send funds from your merchant account to phone numbers via SBP.
Creating an SBP payout is a two-step process:
- Get the list of banks available for the recipient's phone number.
- Create the payout, passing the selected bank's
idasaccount.bankName.
Before you start
How to authorize requests
Before making requests, ensure that your merchant account has sufficient funds for the payout.
Depending on the payment method, the phone number format may differ. Some methods
require the number without the +7 or 7 prefix (for example, 9117883630
instead of 79117883630). Check the format expected by the method you use.
Step 1. Get the list of banks
Before creating a payout, request the list of banks that can receive an SBP transfer for the recipient's phone number:
GET /v1/payouts/banks?account=79117883630Request example
curl -X GET "https://api.1capital.capital/v1/payouts/banks?account=79117883630" \
-H "X-Api-Token: YOUR_API_TOKEN"Query parameters
| Field | Type | Required | Description |
|---|---|---|---|
| account | string | ✅ Yes | Recipient phone number |
Response example
[
{ "id": "100000000004", "name": "T-Bank - Т-Банк" },
{ "id": "100000000111", "name": "Sberbank - Сбербанк" }
]Pick the bank the recipient wants to receive funds at and use its id as the
account.bankName value in the next step.
Step 2. Create a payout
Send a POST request to create a new payout:
POST /v1/payoutsRequest example
curl -X POST "https://api.1capital.capital/v1/payouts" \
-H "Content-Type: application/json" \
-H "X-Api-Token: YOUR_API_TOKEN" \
-d '{
"amount": 1000,
"currency": "RUB",
"paymentType": "SBP",
"account": {
"name": "John Doe",
"requisites": "79117883630",
"bankName": "100000000004",
"userId": "user_12345"
},
"note": "Payout for order #1234"
}'Request parameters
Main parameters
| Field | Type | Required | Description |
|---|---|---|---|
| amount | number | ✅ Yes | Payout amount |
| currency | string | ✅ Yes | Currency code |
| paymentType | string | ✅ Yes | Payment type |
| account | object | ✅ Yes | Recipient details |
| note | string | ❌ No | Note for the payout |
| externalId | string | ❌ No | Payout identifier in your system |
| callbackUrl | string | ❌ No | Webhook notification address for the payout |
Account object
| Field | Type | Required | Description |
|---|---|---|---|
| name | string | ✅ Yes | Recipient name |
| requisites | string | ✅ Yes | Account details (phone number) |
| bankName | string | ✅ Yes | Bank id from GET /v1/payouts/banks (for example, 100000000004) |
| userId | string | ✅ Yes | User ID in your system |
Supported currencies
| Value | Description |
|---|---|
| RUB | Russian Ruble |
Payment types
| Value | Description |
|---|---|
| SBP | SBP transfer |
Successful response example
{
"id": "123e4567-e89b-12d3-a456-426614174000",
"merchantId": "123e4567-e89b-12d3-a456-426614174000",
"amount": "1000",
"account": {
"name": "John Doe",
"requisites": "79117883630",
"bankName": "100000000004",
"userId": "user_12345"
},
"status": "CREATED",
"type": "SBP",
"requisites": {},
"statusMessage": null,
"metadata": null,
"callbackUrl": null,
"createdAt": "2023-03-21T12:34:56Z",
"updatedAt": "2023-03-21T12:34:56Z",
"completedAt": null
}Response fields
| Field | Type | Description |
|---|---|---|
| id | string | Payout UUID |
| merchantId | string | Your merchant UUID |
| amount | string | Payout amount |
| account | object | Recipient details |
| status | string | Current payout status |
| type | string | Payment type |
| requisites | object | Additional requisites |
| statusMessage | string / null | Status message (if any) |
| metadata | object / null | Additional metadata |
| callbackUrl | string / null | Webhook notification address for this payout (null — merchant settings are used) |
| createdAt | string | Creation time |
| updatedAt | string | Last update time |
| completedAt | string / null | Completion time |
Payout statuses
| Status | Description |
|---|---|
| CREATED | Payout created |
| PENDING | Payout is being processed |
| COMPLETED | Payout completed successfully |
| FAILED | Payout failed |
| CANCELED | Payout canceled |
| EXPIRED | Payout expired |
Checking payout status
To check the current status of a payout, send a GET request:
GET /v1/payouts/{payoutId}Request example
curl -X GET "https://api.1capital.capital/v1/payouts/123e4567-e89b-12d3-a456-426614174000" \
-H "X-Api-Token: YOUR_API_TOKEN"Payout status updates are also delivered via webhooks: pass callbackUrl in
the request body or specify it in your merchant settings. Polling the status
by ID may be used as a fallback (for example, every 30 minutes).
Payout Webhooks
Recommendations
- Always check your merchant balance before creating payouts
- Fetch the list of banks first and pass the selected bank
idasaccount.bankName - Mind the phone number format required by the method (some require it without
+7/7) - Save the payout
idfrom the response for status tracking - Use webhook notifications (
callbackUrl) and verify theX-Signatureheader; polling the status by ID is a fallback - Handle all possible status values in your integration