Stripe サブスクリプションに消費税が含まれていたので解決した話

はじめに

社内の何気ない発言で不意に判明した、
税込価格で価格提示しているものに税もプラスして請求してね?
その通り、¥5,500/月 の定期購読があったとしよう、
それを¥5,940/月 請求していたのである。
スクリーンショット 2019-09-05 22.07.42.png

下手こいたああああああ。
とうことで対応をした。

(実装はrubyです)

原因

  • StripeのCustomerにデフォルトTaxレート8%という設定をしていた。
  • Planには税の設定はない。
  • Subscriptionが作成される時にCustomerのデフォルトTaxレートが適用される。
  • ずれる

対応

Customerの税率は登録しない

8%をデフォルトで入れるようにしていたが、何も更新しないように変更。

email: 'test@test.com',
plan: 'business',
# tax_percent: 8.0 <- 8%よ貴様はいらない子なのだ

既存のCustomerおよびそれらに紐づいているPlanのSubscriptionの税率をクリア

すでに作成されたCustomerの税率およびSubscriptionの税率をクリアしないといけない。
Stripeに確認したところダッシュボードでの一括変更は不可能。
というか個別変更すら不可能っぽい。
なので、パッチで対応。

User.all.each do |user|
  begin
    stripe_customer = Stripe::Customers.retrieve(user.stripe_subscription_id)
    stripe_customer.tax_percent = nil
    stripe_customer.save
    stripe_subscription = Stripe::Subscription.retrieve(user.stripe_subscription_id)
    stripe_subscription.default_tax_rates = nil
    stripe_subscription.save
  rescue => e
    Rails.logger.error(e.message)
  end
end

エラー処理しているのは、テストユーザーとかでStripeのカスタマーデータ消しているやつを握りつぶしでスキップするため。

次回予定インボイスから正常に処理されていることを確認ずみ。

カスタマーに返金っぽいことをする

お金を多くもらいすぎているので、返さないといけない。
今回は返金処理ではなく、次回の更新時に割引されるようにする。
方法は残高の追加 or クーポンの紐付けの二種類あるらしい。
ただ、ユーザーによって返金金額がバラバラなためクーポンは発行と紐付けがクソめんどくさい。
ということで、残高の追加をした。
クレジットで金額を入力する。
スクリーンショット 2019-09-05 22.08.12.png

すると次回の請求はこんな感じになる。
(クーポンあるから紛らわしいけど)

スクリーンショット 2019-09-05 22.09.07.png
お詫びメッセージの送信

とりあえず悪いことをしてしまったので全力で謝罪文を送る。

最後に

Stripeが結構的を射た返信をすぐに返してくれるのでもっと好きになった。

 

Qiitaで見たい方はこちら