Возвраты
Верните покупателю всю сумму или её часть — из кода или из кабинета. Возврат обрабатывается асинхронно: запрос принимается сразу, результат приходит вебхуком.
API v1 · обновлено 2026-09-12
Как это работает
- Возврат возможен только по счёту в статусе
paidилиpartially_refunded, в пределах невозвращённого остатка. - Сумма возврата списывается с вашего баланса. Комиссия за исходный платёж не возвращается. Если на балансе не хватает средств —
insufficient_balance. - Запрос принимается с кодом
202и статусомpending; деньги уходят покупателю тем же способом, которым он платил, обычно в течение нескольких минут, у некоторых банков — до 3 рабочих дней. - Итог — вебхук
refund.succeededилиrefund.failed; статус счёта становитсяrefunded(вся сумма) илиpartially_refunded.
POST /invoices/{id}/refund
| Поле | Тип | Описание |
|---|---|---|
amount | string | Сумма возврата. Не передана — возвращается весь невозвращённый остаток по счёту. |
| Поле | Описание |
|---|---|
id | Идентификатор возврата (rf_…). |
invoiceId | Счёт, по которому сделан возврат. |
amount, currency | Сумма возврата строкой и валюта (RUB). |
status | pending → succeeded | failed. |
createdAt, completedAt | Время создания и завершения (ISO 8601, UTC); completedAt — null, пока возврат в обработке. |
Повторный запрос возврата на тот же счёт создаёт новый возврат — на остаток. Чтобы не задвоить возврат при таймауте, перед повтором проверьте счёт: в GET /invoices/{id} статус уже будет partially_refunded / refunded.
GET /refunds/{id}
Вебхуки
События refund.succeeded и refund.failed приходят в общем конверте; в data — объект возврата и счёт в актуальном статусе.
При refund.failed сумма возвращается на ваш баланс, статус счёта не меняется. Причина указана в кабинете; чаще всего это закрытый счёт покупателя — свяжитесь с ним и оформите возврат другим способом.
Возврат из кабинета
В карточке платежа — кнопка «Вернуть»: укажите сумму (по умолчанию — весь остаток) и причину для внутренней истории. Результат такой же: списание с баланса, вебхук, новый статус счёта.
Ошибки
404 invoice_not_found— счёт не найден в этом проекте.422 refund_exceeds_amount— сумма больше невозвращённого остатка.422 insufficient_balance— на балансе меньше, чем сумма возврата. Пополнить баланс нельзя — дождитесь новых оплат или сделайте частичный возврат.409 conflict— счёт не в статусеpaid/partially_refunded.