Payment Links の完了ページに領収書リンクを付ける({CHECKOUT_SESSION_ID} の使い方)
Stripe の Payment Links(支払いリンク)は、決済が終わったあとに購入者を任意のURLへ移動させられます。このURLに {CHECKOUT_SESSION_ID} と書いておくと、Stripe がその部分を実際の Checkout セッションID(cs_live_…)に置き換えてくれます。これを使うと、決済直後に「この決済の領収書ページ」へ購入者を案内できます。
Payment Links の設定手順
- Stripe ダッシュボードで対象の支払いリンクを開き、「編集」を押す
- 「支払い後」タブで「顧客をウェブサイトにリダイレクトする」を選ぶ
- URL に
https://…/r/あなたのID/session/{CHECKOUT_SESSION_ID}のように、プレースホルダ込みで入力して保存
{CHECKOUT_SESSION_ID} は波かっこ込みでそのまま書きます。Stripe 側で置換されるので、URL エンコードは不要です。
Checkout(API 連携)の場合
自分のサーバーで Checkout Session を作っている場合は、success_url に同じプレースホルダを入れます。
const session = await stripe.checkout.sessions.create({
mode: "payment",
line_items: [...],
success_url: "https://…/r/あなたのID/session/{CHECKOUT_SESSION_ID}",
cancel_url: "https://example.com/cancel",
});
自分の完了ページを残したい場合は、完了ページ側でセッションIDを受け取り、そのページに「領収書を発行する」リンクを置く形でも同じことができます。
Webhook を使う場合の注意
checkout.session.completed イベントを受け取る Webhook を登録していると、Stripe はリダイレクトの前にその Webhook の応答を最大10秒待ちます。領収書を作るサービス側は、この間に受け取ったイベントで領収書を準備しておけるので、購入者がページに着いたときには表示が終わっています。
完了ページを別に持ちたいとき
「サンクスページで次の案内をしたい」という場合は、領収書ページに「販売者のページに戻る」リンクを置けば、購入者は領収書を取ったあとに元の導線へ戻れます。逆に、まず自分の完了ページを見せて、そこに領収書リンクを置く方法でも構いません。
よくあるつまずき
- URLの置換がされない —
{CHECKOUT_SESSION_ID}のつづりと波かっこを確認。全角になっていないか - テストと本番の混在 — テストモードの支払いリンクは
cs_test_…を渡します。読み取り側もテスト用のキーでないと決済が見つかりません - サブスクリプションの2回目以降 — 更新時の決済には Checkout セッションがないため、
invoice.paidの Webhook で拾う必要があります
スグ領収書は、Stripe の決済完了後に購入者が宛名を入れて領収書PDFを取れるページを用意します。登録番号・税率別内訳つき、月10件まで無料。
無料ではじめるこの記事は一般的な情報の提供を目的としたもので、個別の税務判断は税理士にご相談ください。Stripe の画面や仕様は変わることがあります(2026年09月時点)。