Выплаты по СБП
Создание выплаты, проверка получателя по PAM, подтверждение операции и получение финального статуса.
Мерчант создаёт заявку через POST /out/sbp-transfer. VEPAY запрашивает PAM в банке и сверяет ФИО. До завершения проверки мерчант опрашивает POST /out/state. Подтверждение выполняется только при результате MATCH.
На этой странице
Создание заявки
Мерчант создаёт операцию выплаты через СБП.
{
"client": {
"firstName": "Иван",
"middleName": "Иванович",
"lastName": "И"
},
"phone": "79000000000",
"bic": "044525225",
"amount": 100000,
"extid": "string"
}Проверка получателя
VEPAY запрашивает PAM в банке и сверяет маскированное ФИО с данными заявки.
- МерчантСоздаёт заявкуPOST /out/sbp-transfer
- VEPAYЗапрашивает PAMphone + bic → банк
- БанкВозвращает PAMмаскированное ФИО
- VEPAYСверяет ФИОФИО заявки ↔ PAM
Блок-схема сверки ФИОПоказать схемуСкрыть схему
Сверка PAM и ФИО
VEPAY получает маскированное ФИО от банка, сопоставляет его с данными заявки и передаёт результат мерчанту через POST /out/state.
Блок-схема: мерчант создаёт заявку, VEPAY регистрирует операцию, запрашивает PAM у банка, получает маскированное ФИО, сверяет его с ФИО заявки и возвращает MATCH или MISMATCH. Параллельно мерчант повторяет запрос статуса до завершения проверки.
- МерчантСоздаёт заявку на выплатуPOST /out/sbp-transfer: client, phone, bic, amount, extid
- VEPAYРегистрирует операцию
- VEPAY → БанкЗапрашивает PAMphone, bic
- Банк → VEPAYВозвращает PAMмаскированное ФИО: Иван Иванович И
- VEPAYСверяет ФИО и PAMИван Иванович И ↔ Иван Иванович И
Параллельно с проверкой
↻ Пока идёт проверка, запрос POST /out/state повторяется.
readyToConfirm = true. При MISMATCH: readyToConfirm = false.Мерчант опрашивает статус
До готовности результата мерчант повторяет запрос POST /out/state с идентификатором операции.
{
"id": 12345
}| Результат | Ответ VEPAY | Действие мерчанта |
|---|---|---|
| CHECKING | Проверка ФИО выполняется. readyToConfirm = false. | Повторить POST /out/state. |
| MATCH | ФИО совпали. VEPAY возвращает pam и readyToConfirm = true. | Вызвать POST /out/sbp-confirm. |
| MISMATCH | ФИО не совпали. readyToConfirm = false. | Не подтверждать выплату. Создать новую заявку с корректными данными. |
Подтверждение выплаты
Мерчант подтверждает выплату только после получения результата MATCH.
- МерчантПолучил
MATCHчерез/out/state - Мерчант → VEPAYОтправляет подтверждение:
POST /out/sbp-confirm - VEPAY → Банк-эквайерПередаёт запрос подтверждения выплаты
- Банк-эквайерПодтверждает и исполняет выплату
{
"id": 12345
}Финальный статус
После подтверждения мерчант продолжает опрашивать POST /out/state.
| sbpCode | Значение | Действие мерчанта |
|---|---|---|
| RCVD | Выплата в обработке. | Продолжать опрос POST /out/state. |
| ACWP | Выплата выполнена. | Зафиксировать успешную выплату. |
| RJCT | Выплата отклонена. | Зафиксировать отказ и обработать ошибку. |
Пример ответа с итоговым статусом
Пример полного ответа VEPAY на POST /out/state.
[
'body' => '{"id":"2321645546"}',
'return' => [
'status' => 1,
'serviceName' => 'Выплата через СБП',
'message' => 'Успех',
'rc' => null,
'channel' => 'TKB',
'cardNumber' => null,
'cardType' => null,
'issuingBank' => 'Сбербанк',
'paymentDate' => '29.09.2026 16:57:32',
'uuid' => '79ad3f64-f52b-42e2-a2fd-af906f5dc758',
'sbpOperId' => 'A62721357254590Y0B10040011851301',
'sbpCode' => '',
'rrn' => null,
'memberId' => '100000000111',
'inn' => null,
'card' => null,
'sndPhone' => '79000000000',
'pam' => 'Иван Иванович И',
'additionalFields' => [
'field1' => null,
'field2' => null,
'field3' => null,
],
],
]