Summary

  • Stripe рассчитывает пропорциональную корректировку при изменении подписки, предполагая, что предыдущие счета в итоге будут оплачены. Если счёт за текущий период не оплачен, переход на дешёвый тариф может дать кредит за неиспользованное время дорогого тарифа, деньги за который продавец ещё не получил.
  • Отрицательная корректировка не означает автоматический возврат наличных. При неоплаченном последнем счёте Stripe предлагает proration_behavior=none, а новые начисления и старый долг разбирать отдельно. Поздняя оплата старого счёта может привести к двойному платежу.

Деньги ещё в пути, скидка уже в бухгалтерии

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

В документации Stripe указана сама предпосылка. Пропорциональная сумма рассчитывается в момент обновления подписки так, будто прошлые счета когда-нибудь оплатят. Поэтому неоплаченный счёт за текущий период может соседствовать с кредитом за оставшееся время на дорогом тарифе. Назвать эту запись возвратом денег — значит потерять механизм. По словам Stripe, отрицательные корректировки не возвращаются автоматически наличными. Старый долг, кредит на будущий счёт и фактический возврат — разные операции.

Обычный параметр обновления, create_prorations, создаёт позиции корректировки, но не всегда выставляет их к оплате сразу. always_invoice меняет время выставления счёта; none запрещает создавать корректировки в этом обновлении. Ни одно значение не отвечает на вопрос, оплачен ли предыдущий счёт. Перед изменением цены оператор должен проверить его статус.

Если последний счёт не оплачен, Stripe предлагает proration_behavior=none. Сохранение прежнего расчётного периода требует отдельного разового счёта для новых начислений. Перезапуск периода с текущего момента позволяет сразу начислить стоимость нового тарифа. Но если прежний счёт потом тоже оплатят, возможен двойной платёж. Stripe советует аннулировать старый неоплаченный счёт, чтобы этого избежать. Выбор того, какое требование оставить, лежит на продавце.

Для сверки нужны четыре записи: статус старого счёта, параметры обновления, появившаяся кредитовая позиция и её применение в следующем окончательном счёте. Клиент видит один переход. У продавца остаются две цепочки расчётов. Надпись «тариф изменён» не закрывает дебиторскую задолженность.

Источники