API, webhooks и backend Опубликовано 22 мая 2026 г. 9 мин чтения

Возвраты и частичные возвраты после онлайн-оплаты: как спроектировать

Refund flow нужно проектировать заранее: кто инициирует возврат, как проверяется сумма, как обновляется CRM и что происходит с чеком.

Возвраты и частичные возвраты после онлайн-оплаты: как спроектировать

Возврат не должен быть ручной заметкой в заказе

Refund - это отдельная платежная операция со статусом, суммой, правами доступа и журналом.

Payment -> Refund request -> Provider -> CRM status
Each refund must be tied to the original payment and order.

После запуска онлайн-оплаты бизнес почти сразу сталкивается с возвратами: отмена заказа, недоступный товар, частичная отгрузка, ошибка клиента или спор. Если возврат оформляется вручную без связи с исходным платежом, поддержка и бухгалтерия быстро теряют контроль.

Правильный refund flow начинается с проверки исходной оплаты: существует ли payment id, был ли платеж successful, какая сумма уже возвращена и разрешен ли возврат пользователю, который его инициирует. AEB в требованиях к vPOS отдельно указывает хранение информации о транзакциях и товарах/услугах минимум один год; для refund flow это практический минимум аудита, даже если выбран другой провайдер.

  • возврат связан с исходным order id и payment id;
  • инициатор и причина фиксируются в audit log;
  • сумма не превышает доступный остаток;
  • CRM/ERP получает отдельный refund status.

Частичный возврат требует отдельной модели

Partial refund нельзя проектировать как простой переход заказа из paid в refunded.

Partial refund balance
Paid amount, refunded amount and remaining amount should be calculated safely.

При частичном возврате заказ может оставаться частично оплаченным, частично выполненным или закрытым с корректировкой. Поэтому статус заказа и статус платежа нельзя смешивать в одно поле.

Backend должен хранить исходную сумму, сумму всех успешных возвратов и доступный остаток. Повторная попытка возврата должна быть idempotent, чтобы один запрос не вернул деньги дважды. Это особенно важно для CRM/ERP: order может остаться fulfilled, а payment перейти в partial_refunded.

  • original_amount;
  • refunded_amount;
  • available_to_refund;
  • refund_attempt_id;
  • refund status: pending, succeeded, failed.

Фискализация и учет после возврата

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

Refund + fiscal correction + accounting
Payment refund, fiscal correction and ERP status should be consistent.

Если бизнес фискализирует онлайн-оплаты, возврат может требовать отдельного фискального действия или корректировки. В Армении электронная фискализация регулируется через электронные кассовые аппараты/HDM, поэтому payment refund и fiscal correction нельзя смешивать в одну кнопку без статусов и журнала.

Лучше делать фискальную обработку асинхронной: платежный возврат может завершиться быстрее, чем фискальная корректировка. При этом менеджер должен видеть оба статуса и понимать, где требуется retry или ручной разбор.

  • payment refund status отдельно от fiscal correction status;
  • очередь и retries для фискальных событий;
  • аудит ручных корректировок;
  • сверка с банковским отчетом и ERP.

FAQ

Можно ли сделать возврат прямо из CRM?

Да, если CRM вызывает backend endpoint с проверкой прав, суммы и исходного платежа, а не меняет статус заказа вручную без платежной операции.

Почему partial refund сложнее полного возврата?

Потому что нужно считать уже возвращенную сумму, остаток, статус заказа, фискальную корректировку и возможные повторные попытки.

Нужен ли audit log для возвратов?

Да. Возврат влияет на деньги, учет и поддержку, поэтому нужно знать кто, когда, почему и на какую сумму инициировал операцию.

Источники

  • Armeconombank - VPOS conditionsОфициальные условия vPOS, включая требования к хранению транзакционной информации.
  • Stripe Docs - RefundsОфициальная документация с базовой моделью full/partial refunds и статусами возврата.
  • State Revenue Committee of ArmeniaОфициальный сайт налоговой службы Армении для проверки актуальных требований по HDM/фискализации.