「請求日を月初に変更してほしい」
SaaS やサブスクリプション事業を運営していると、企業顧客から必ずといっていいほど寄せられる要望です。経理処理の都合で請求日の統一は避けて通れない課題となります。
デジタルキューブでも Amimoto をはじめとする自社プロダクトで同様の要望を数多く受けてきました。Stripe のサブスクリプションスケジュール機能を活用すれば、年払いサブスクリプションの請求日変更を実現できます。ダッシュボードでの操作から API での自動化まで、実装レベルで使える実践的な内容をお伝えします。
企業顧客が請求日変更を求める理由
実際にお客様から寄せられる要望の背景を整理しておきましょう。企業顧客からは「経理締め日に合わせて請求書をまとめたい」「予算管理のため月初請求に統一したい」「複数のツール利用で請求日がバラバラになっている」といった声が届きます。
よくある間違ったアプローチとして、サブスクリプション再作成による履歴の断絶、手動での複雑な比例配分計算、顧客への説明コストの増大が挙げられます。推奨するソリューションは、Subscription Schedule を活用した非破壊的な変更、自動化された比例配分処理、段階的な実装による開発リスクの最小化です。
Stripe Subscription Schedule による請求サイクルの調整
Stripe のサブスクリプションスケジュール機能は、サブスクリプションのライフサイクルを複数のフェーズに分けて管理できる機能です。複数フェーズでの段階的なプラン変更、請求サイクルの細かな制御や、比例配分処理が主な特徴となります。
年払いサブスクリプションの請求日を月初に変更する場合、サブスクリプションスケジュール機能を利用して2つのフェーズを作ります。第1フェーズで現在の契約を希望月の1日まで短縮し、第2フェーズで月初から新しい年次サイクルを開始するというイメージです。なお、請求サイクルが変わるため、比例配分による差額調整は必ず考慮する必要があります。

当初の予定よりも早く契約更新を実施する場合は、重複請求になる分の金額を比例配分によって次回の請求額から相殺しましょう。
ダッシュボードで設定する方法
Stripe ダッシュボードから更新したいサブスクリプションのページを開きましょう。サブスクリプションを更新するボタンやリンクをクリックし、更新フォームを開きます。ここでまず現在のサブスクリプションの期間を「無期限」から「リセットしたい年月日」に変更します。

続いて新しい契約サイクルとなる第2フェーズを追加します。「フェーズを追加」ボタンをクリックして新しいフェーズを追加しましょう。開始日は自動的に第1フェーズの終了日が設定されています。こちらのフェーズは契約期間が無期限になるように設定しましょう。、請求サイクルのリセットを有効にしてください。

フェーズを追加すると、現在の契約内容がそのまま新フェーズにも設定されます。契約内容自体は変更しませんので、あとは請求サイクルをリセットする設定を ON、比例配分による調整を ON にしましょう。

あとはサマリーパネルで意図した契約サイクルや内容に変わっているかをプレビューします。

API での実装方法
もちろんこの作業は API からも行えます。まず既存サブスクリプションからスケジュールを作成し、フェーズ設定による請求日変更を行うというステップです。
ステップ1: 既存のサブスクリプションからスケジュールを作成
まず、既存のサブスクリプションを基にしてサブスクリプションスケジュールを作成します。
curl https://api.stripe.com/v1/subscription_schedules \
-u "sk_test_xxxxxx:" \
-d from_subscription="sub_1xxxx9"
このコマンドを実行すると、スケジュール ID が返されます。次のステップで使用するため、この ID を保存しておいてください。
ステップ2: 作成されたスケジュールを更新
次に、作成されたスケジュールを更新して請求日を月初に変更します。以下のコマンドの {{SCHEDULE_ID}} の部分は、ステップ1で取得した実際のスケジュール ID に置き換えてください。
curl https://api.stripe.com/v1/subscription_schedules/{{SCHEDULE_ID}} \
-u "sk_test_GZxxxC:" \
-d end_behavior=release \
-d proration_behavior=none \
-d "default_settings[collection_method]"=charge_automatically \
-d "default_settings[default_payment_method]"=pm_xxxxx \
-d "phases[0][start_date]"=1747635443 \
-d "phases[0][end_date]"=1748703600 \
-d "phases[0][automatic_tax][enabled]"=false \
-d "phases[0][currency]"=usd \
-d "phases[0][items][0][price]"=price_xxxxx \
-d "phases[0][items][0][quantity]"=1 \
-d "phases[1][start_date]"=1748703600 \
-d "phases[1][billing_cycle_anchor]"=phase_start \
-d "phases[1][automatic_tax][enabled]"=false \
-d "phases[1][currency]"=usd \
-d "phases[1][items][0][price]"=price_yyyyyy \
-d "phases[1][items][0][quantity]"=1
proration_behavior=none
は比例配分を無効にするための値です。phases[1][billing_cycle_anchor]=phase_start
により、新しいフェーズ開始時に請求サイクルがリセットされ、月初請求が実現されるでしょう。
日付は Unix タイムスタンプ形式で指定する必要があります。価格 ID や Payment Method ID は、実際の環境に合わせて適切な値に変更してください。
第1フェーズは現在から新請求日までの期間で、既存の price
と quantity
を指定します。第2フェーズは新しい年次サイクルで、billing_cycle_anchor
を phase_start
に設定してサイクルリセットを実現します。
実装時の注意点
テスト環境での検証項目として、各種エッジケースでの動作確認、税率や割引の適用確認、Webhook イベントの受信確認を実施する必要があります。本番環境での監視項目には、スケジュール作成の成功率、請求エラーの発生状況、顧客からの問い合わせ傾向が含まれます。
顧客コミュニケーションでは、変更前に「お客様の請求日を○月1日に変更いたします。今回の契約期間は□□日短縮され、その分の料金調整を行います。次回以降は毎年○月1日の請求となります」という説明を行います。変更後のフォローアップとして、請求スケジュールの確認メール送信、カスタマーサポートチームへの情報共有、FAQ やヘルプページの更新を実施してください。
まとめ
Stripe のサブスクリプションスケジュール機能を活用することで、年払いサブスクリプションの請求日変更を実現できます。
2つのフェーズに分割することによるスケジュールの移行がダッシュボードでも可能ですし、billing_cycle_anchor
を phase_start
に設定した請求サイクルリセット、proration_behavior
を none
に設定した比例配分のコントロールによって API からも実現できます。このやり方を知ることで、カスタマーサクセスの向上、経理業務の効率化などが期待できるでしょう。
Stripe を活用したオンライン決済システム導入をサポートします
株式会社デジタルキューブは Stripe 公式パートナーとして、自社サービス開発で培った経験を活かし、Stripe を用いた決済システムの導入を支援します。多言語対応の決済フォーム実装、モバイル支払い対応、柔軟な従量課金システム構築など、ユースケースに合わせた活用方法の提案から、専用ダッシュボードの開発まで幅広くサポートします。
SaaS ダッシュボード開発や EC サイトへの Stripe 決済導入など、様々な導入実績があります。 API の呼び出しだけで決済機能を実装できる Stripe の利点を最大限に活かしたシステム構築をお手伝いします。