Работа с возвратами через СБП
Принятые по QR-кодам платежи в статусе Accepted можно возвращать покупателю через СБП. Возврат бывает полным или частичным — главное, чтобы его сумма не превышала сумму поступления на счёт.
Через API можно вернуть только платежи по динамическим QR-кодам. Платежи по статическим, кассовым и B2B QR-кодам возвращаются через интернет-банк.
Шаг 1. Получите refTransactionId или trxId
Чтобы указать, какой платёж возвращаем, нужен один из двух идентификаторов:
refTransactionId— идентификатор транзакцииtrxId— идентификатор операции в НСПК
Они работают по отдельности — для возврата достаточно любого одного.
Получить идентификатор можно так:
- Через вебхук. Если подключён вебхук с событием
incomingSbpPayment, при зачислении денег в нём придётrefTransactionId. ПолеoperationIdв этом вебхуке — это и естьtrxId. - Через статус QR-кода. Если вебхука нет, узнать
trxIdможно методом Get Qr Codes Payment Status.
Также сохраните qrcId — он понадобится на следующем шаге.
Шаг 2. Отправьте запрос на возврат
Вызовите метод Start Refund и укажите:
bankCode— БИК вашей компании, то есть плательщика, со счёта которого идёт возврат. Например, БИК Точка Банка —044525104.accountCode— идентификатор счёта, с которого идёт возврат.amount— сумма возврата в рублях, не в копейках.qrcId— идентификатор QR-кода, по которому зачислились деньги.refTransactionIdилиtrxId— идентификатор возвращаемой операции из Шага 1. Достаточно передать любой один.purpose— назначение платежа. Можно не заполнять, если покупатель — резидент РФ.
Если возвращаете деньги нерезиденту, назначение платежа должно начинаться с {VO99020} Возврат ошибочно полученной суммы <transactionId>, где <transactionId> — идентификатор оригинальной операции - refTransactionId или trxId из Шага 1.
Здесь amount указывается в рублях, тогда как при создании QR-кодов — в копейках.
Шаг 3. Отследите статус возврата
Проверьте статус возврата методом Get Refund Data. Финальный успешный статус — Accepted. Если возврат не прошёл — статус Rejected.