Возвраты

Верните покупателю всю сумму или её часть — из кода или из кабинета. Возврат обрабатывается асинхронно: запрос принимается сразу, результат приходит вебхуком.

API v1 · обновлено 2026-09-12

Как это работает

  • Возврат возможен только по счёту в статусе paid или partially_refunded, в пределах невозвращённого остатка.
  • Сумма возврата списывается с вашего баланса. Комиссия за исходный платёж не возвращается. Если на балансе не хватает средств — insufficient_balance.
  • Запрос принимается с кодом 202 и статусом pending; деньги уходят покупателю тем же способом, которым он платил, обычно в течение нескольких минут, у некоторых банков — до 3 рабочих дней.
  • Итог — вебхук refund.succeeded или refund.failed; статус счёта становится refunded (вся сумма) или partially_refunded.

POST /invoices/{id}/refund

ПолеТипОписание
amountstringСумма возврата. Не передана — возвращается весь невозвращённый остаток по счёту.
ПолеОписание
idИдентификатор возврата (rf_…).
invoiceIdСчёт, по которому сделан возврат.
amount, currencyСумма возврата строкой и валюта (RUB).
statuspendingsucceeded | failed.
createdAt, completedAtВремя создания и завершения (ISO 8601, UTC); completedAtnull, пока возврат в обработке.

Повторный запрос возврата на тот же счёт создаёт новый возврат — на остаток. Чтобы не задвоить возврат при таймауте, перед повтором проверьте счёт: в 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.