Closed1

Stripe Invoiceのuncollectible (回収不可)はまだ決済される可能性がある

catnosecatnose

Stripeではサブスクリプション設定において、サブスクリプション更新失敗時のオプションをいくつか提供してくれている。

Stripeのダッシュボードの設定で決済失敗時の処理を選択できる

uncollectibleなインボイスはまだ支払いされる可能性がある

ここで注意したいのは「インボイスを回収不可とマーク(marked_uncollectible)」を選択していても、まだそのインボイスに対して支払いが行われる可能性があるということ。

インボイスのステータスがuncollectible(回収不可)であっても、顧客はBillingPortalからそのインボイスに対して支払いを行うことができる。

Invoice のステータスInvoiceのライフサイクル

たとえ3年前に回収不可となったインボイスについてもユーザーは支払いができるっぽい。支払いができないようにするためには「void(無効)」というステータスへと変更する必要がある。

もし、ユーザーが再契約を行い新しくサブスクリプションを作成し、なおかつBillingPortalから過去のuncollectibleなインボイスに対して支払いを行った場合、アクティブなサブスクリプションが複数存在してしまう。

対策

自分のプロジェクトでは Webhookでinvoice.marked_uncollectibleイベントを受け取ったときにインボイスを無効化するAPIを叩くことにした。

Stripeがデフォルトで更新失敗時にインボイスを無効化してくれるオプションを用意してくれると助かるんだけどなー

このスクラップは2024/03/05にクローズされました