Наши сервисы Выплаты по СБП

Выплаты по СБП

Создание выплаты, проверка получателя по PAM, подтверждение операции и получение финального статуса.

Мерчант создаёт заявку через POST /out/sbp-transfer. VEPAY запрашивает PAM в банке и сверяет ФИО. До завершения проверки мерчант опрашивает POST /out/state. Подтверждение выполняется только при результате MATCH.

На этой странице
  1. Создание заявки
  2. Проверка получателя
  3. Подтверждение выплаты
  4. Финальный статус
  5. Пример ответа с итоговым статусом
01

Создание заявки

Мерчант создаёт операцию выплаты через СБП.

POST /out/sbp-transfer
{
  "client": {
    "firstName": "Иван",
    "middleName": "Иванович",
    "lastName": "И"
  },
  "phone": "79000000000",
  "bic": "044525225",
  "amount": 100000,
  "extid": "string"
}
02

Проверка получателя

VEPAY запрашивает PAM в банке и сверяет маскированное ФИО с данными заявки.

  1. МерчантСоздаёт заявкуPOST /out/sbp-transfer
  2. VEPAYЗапрашивает PAMphone + bic → банк
  3. БанкВозвращает PAMмаскированное ФИО
  4. VEPAYСверяет ФИОФИО заявки ↔ PAM
Блок-схема сверки ФИОПоказать схему

Сверка PAM и ФИО

VEPAY получает маскированное ФИО от банка, сопоставляет его с данными заявки и передаёт результат мерчанту через POST /out/state.

Блок-схема: мерчант создаёт заявку, VEPAY регистрирует операцию, запрашивает PAM у банка, получает маскированное ФИО, сверяет его с ФИО заявки и возвращает MATCH или MISMATCH. Параллельно мерчант повторяет запрос статуса до завершения проверки.

  1. МерчантСоздаёт заявку на выплатуPOST /out/sbp-transfer: client, phone, bic, amount, extid
  2. VEPAYРегистрирует операцию
  3. VEPAY → БанкЗапрашивает PAMphone, bic
  4. Банк → VEPAYВозвращает PAMмаскированное ФИО: Иван Иванович И
  5. VEPAYСверяет ФИО и PAMИван Иванович И ↔ Иван Иванович И

Параллельно с проверкой

Мерчант → VEPAYПовторяет POST /out/state

↻ Пока идёт проверка, запрос POST /out/state повторяется.

VEPAY → МерчантОтвет POST /out/state: MATCH или MISMATCHПри MATCH: readyToConfirm = true. При MISMATCH: readyToConfirm = false.
Параллельно с проверкой

Мерчант опрашивает статус

До готовности результата мерчант повторяет запрос POST /out/state с идентификатором операции.

{
  "id": 12345
}
Результат проверки в ответе POST /out/state
РезультатОтвет VEPAYДействие мерчанта
CHECKINGПроверка ФИО выполняется. readyToConfirm = false.Повторить POST /out/state.
MATCHФИО совпали. VEPAY возвращает pam и readyToConfirm = true.Вызвать POST /out/sbp-confirm.
MISMATCHФИО не совпали. readyToConfirm = false.Не подтверждать выплату. Создать новую заявку с корректными данными.
03

Подтверждение выплаты

Мерчант подтверждает выплату только после получения результата MATCH.

POST /out/sbp-confirm
  1. МерчантПолучил MATCH через /out/state
  2. Мерчант → VEPAYОтправляет подтверждение: POST /out/sbp-confirm
  3. VEPAY → Банк-эквайерПередаёт запрос подтверждения выплаты
  4. Банк-эквайерПодтверждает и исполняет выплату
{
  "id": 12345
}
04

Финальный статус

После подтверждения мерчант продолжает опрашивать POST /out/state.

POST /out/state
Статусы исполнения выплаты
sbpCodeЗначениеДействие мерчанта
RCVDВыплата в обработке.Продолжать опрос POST /out/state.
ACWPВыплата выполнена.Зафиксировать успешную выплату.
RJCTВыплата отклонена.Зафиксировать отказ и обработать ошибку.
05

Пример ответа с итоговым статусом

Пример полного ответа 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,
        ],
    ],
]