開発

Stripeの決済方法を有効化する手順:カード・コンビニ決済・銀行振込の実装とWebhook

ECシステムにおける主な機能一覧

日本のStripeアカウントで受け付けられる決済方法は、カード6ブランド、Apple Pay・Google Pay・Linkなどのウォレット、コンビニ決済、銀行振込、PayPayです。このうちコンビニ決済と銀行振込は購入時点では支払いが終わらず、完了は数時間から数日後にWebhookで届きます。本記事では、有効化の手順、Checkout SessionとPaymentIntentのコード、支払い期限と振込額の過不足、返金、テストまでを2026年10月時点の公式ドキュメントで確認し、どの決済方法を足すかの判断基準も示します。

まとめ|Stripeで国内の決済方法を受け付ける手順と遅延型決済の注意点

決済方法の追加は、ダッシュボードの決済手段設定で有効にするところから始まります。Checkoutや動的な決済手段を使う構成なら、表示の判断はStripeが金額と通貨から行うため、コードの変更はコンビニ決済の支払い期限と銀行振込の振込種別を渡す程度で済みます。

実装で詰まる箇所は1つです。コンビニ決済と銀行振込は遅延型で、checkout.session.completedの時点ではまだ入金されていません。このイベントだけで注文を確定すると、未入金の注文を出荷することになります。payment_statusで分岐し、checkout.session.async_payment_succeededを受けてから確定する作りにします。

組み合わせの目安は次のとおりです。BtoCの物販はカードにコンビニ決済を足し、30万円を超える高額取引や法人の請求は銀行振込で受けます。自動で引き落とすサブスクリプションはカードが中心で、コンビニ決済と銀行振込は請求書送付型でしか使えません。

日本のStripeで使える決済方法の一覧と即時型・遅延型の違い

上限額と完了通知のタイミングは決済方法ごとに違います。ここを取り違えると後の設計がずれます。

カード・コンビニ決済・銀行振込・PayPayの上限額と手数料の一覧表

Stripeの対応決済手段の一覧と日本向けの料金ページを2026年10月18日に確認した内容をまとめました。APIの値は、PaymentIntentやCheckout Sessionで決済方法を指定するときに使う種別名です。

決済方法 APIの値 金額の範囲 完了の通知 手数料
カード card 50円から 即時 3.6%
コンビニ決済 konbini 120円〜30万円 遅延 3.6%(最低120円)
銀行振込 customer_balance 手段固有の上限なし 遅延 1.5%
PayPay paypay 50円〜100万円 即時(承認待ちあり) 3.98%

金額の下限50円は、通貨別の最小請求額でJPYに設定された値です。JPYは小数点以下のない通貨なので、amount=19800はそのまま19,800円を意味します。日本のアカウントでJCB・Diners Club・Discoverを処理する場合は、上限が8桁(99,999,999円)に抑えられる仕様です。プロダクト単位の守備範囲と料率の比較はStripeの機能一覧と日本での提供可否に、PayPay固有の制約はStripe PayPay決済の実装手順にまとめています。

支払い完了が後から届く遅延型の決済方法がWebhook設計を変える理由

カードは決済の確定と同時に結果が返ります。コンビニ決済は、購入者が支払いコードを持って店舗のレジで現金を払うまで完了しません。銀行振込も、購入者が自分の銀行から仮想口座へ送金するまで同じ状態が続きます。

コンビニ決済の支払い期限は既定で3日、最長60日で、その間PaymentIntentはrequires_actionのまま残ります。遅延型を1つでも有効にしたら、注文データに「支払い待ち」の状態を持たせ、Webhookで「支払い済み」へ進める設計が必要です。完了ページで注文を確定する作りは、カードだけを扱う前提でしか成立しません。

ダッシュボードで決済方法を有効化しCheckoutに表示させる手順

決済方法の追加は、設定画面での有効化とコード側の指定の2段に分かれます。Stripe Checkoutを使う場合から説明します。

決済手段の設定画面で有効化し動的な決済手段に表示を任せる流れ

ダッシュボードの「設定」から決済手段の画面を開き、コンビニ決済と銀行振込をそれぞれ有効にします。コンビニ決済は有効化の際に提携金融機関とコンビニチェーンの審査が必要です。コンビニ決済のドキュメントには、特定商取引法に基づく表記がない、追加料金が明記されていない、など10項目の却下理由が列挙されています。創業3年未満の個人事業主、占い、ローンなどは、Stripe全体の制限業種とは別にコンビニ決済の対象外です。

有効化した後は、Stripeの動的な決済手段が、取引金額・通貨・決済フローから表示する決済方法を選びます。たとえば35万円の注文ではコンビニ決済が候補から外れます。金額による出し分けをアプリ側で書く必要はありません。

Checkout Sessionでコンビニの期限と銀行振込を指定するNode.jsコード

Checkoutで銀行振込を表示するには、セッションに既存の顧客(Customer)を渡す必要があります。仮想口座が顧客ごとに発行されるためです。コンビニ決済の支払い期限と、銀行振込の振込種別はpayment_method_optionsで指定します。

const Stripe = require('stripe');
const stripe = new Stripe(process.env.STRIPE_SECRET_KEY);

async function createCheckout(customerId) {
  return stripe.checkout.sessions.create({
    mode: 'payment', // コンビニ決済と銀行振込は支払いモードのみ
    customer: customerId, // 銀行振込を表示するには Customer が必須
    line_items: [{
      price_data: {
        currency: 'jpy',
        product_data: { name: '年間保守プラン' },
        unit_amount: 19800, // JPYは小数点なし=19,800円
      },
      quantity: 1,
    }],
    payment_method_options: {
      konbini: { expires_after_days: 3 }, // 1〜60日・既定3日
      customer_balance: {
        funding_type: 'bank_transfer',
        bank_transfer: { type: 'jp_bank_transfer' },
      },
    },
    success_url: 'https://example.com/thanks?session_id={CHECKOUT_SESSION_ID}',
  });
}

決済方法の一覧はコードに書いていません。有効な決済方法のうち、金額と通貨の条件を満たすものが画面に並びます。success_urlのページは表示されない場合があるため、注文の確定は後述のWebhookで行います。

allowed_payment_method_typesの手動指定で起きる表示漏れ

決済方法をコードで固定したい場合はallowed_payment_method_typesを使います。ただしCheckout SessionのAPIリファレンスの説明では、この値は動的に算出された候補を絞り込むフィルタとして働きます。リストにkonbiniを入れても、ダッシュボードで無効なら表示されません。

よくある失敗は、カードだけの頃に['card']と書いたコードを残したまま、ダッシュボードでコンビニ決済を有効にするケースです。設定画面では有効なのに、決済画面には出ません。手動指定は「特定の商品だけ銀行振込を出さない」といった理由がある場合に限ります。指定を外して動的な決済手段に任せれば、決済方法を増やすたびのデプロイも不要です。

コンビニ決済をPaymentIntentで実装する手順と支払い期限の設定

Checkoutを使わず、自社の画面にフォームを組み込む場合はPaymentIntentを直接扱います。手順はコンビニ決済の受け付けガイドのダイレクトAPI版に沿っています。

PaymentIntentをjpyで作り支払い期限と商品表記を渡すcurl

サーバー側でPaymentIntentを作成します。コンビニ決済はJPY以外の通貨に対応していません。

curl https://api.stripe.com/v1/payment_intents \
  -u "sk_test_xxx:" \
  -d amount=19800 \
  -d currency=jpy \
  -d "allowed_payment_method_types[]=konbini" \
  -d "payment_method_options[konbini][expires_after_days]=3" \
  -d "payment_method_options[konbini][product_description]=年間保守プラン"

product_descriptionは店頭の端末や払込票に出る商品表記で、上限は22文字、シフトJIS(JIS X 0208:1997)にない文字を含むとエラーになります。未指定でも通りますが、「お買い上げ商品・サービス」のような汎用の表記に置き換わります。支払い期限はexpires_after_daysかexpires_at(Unixタイムスタンプ)のどちらか一方を指定し、両方を渡すとエラーです。expires_after_days=2で月曜に確定した場合、期限は水曜の23:59:59になります。APIキーの扱いと冪等キーの付け方はStripe APIの使い方とPaymentIntentの作成で解説しています。

confirmKonbiniPaymentで支払いコードと確認番号を表示する処理

ブラウザ側では、購入者の氏名とメールアドレスを集めてPaymentIntentを確定します。確認番号には電話番号を使うのが公式の推奨です。

const result = await stripe.confirmKonbiniPayment(clientSecret, {
  payment_method: {
    billing_details: {
      name: document.getElementById('name').value,   // 店頭表示は20文字で切り詰め
      email: document.getElementById('email').value, // 返金時の連絡先にもなる
    },
  },
  payment_method_options: {
    konbini: {
      // 10〜11桁の数字。ハイフンを除いた電話番号を渡す
      confirmation_number: document.getElementById('phone').value.replace(/\D/g, ''),
    },
  },
});
if (result.error) {
  document.getElementById('error-message').innerText = result.error.message;
}

確定に成功すると、Stripe.jsがモーダルを開いてファミリーマート・ローソン・ミニストップ・セイコーマートの支払いコードを表示します。自社の画面で出したい場合はhandleActions: falseを渡し、next_action.konbini_display_detailsのstoresとhosted_voucher_urlを使う方式です。他の取引と重なりやすい番号は確定時にpayment_intent_konbini_rejected_confirmation_numberで拒否されるので、別の番号の入力を促します。

期限切れ後のpayment_failedと返金時に口座情報を集める流れ

期限までに支払われなかった場合、Stripeは期限の約1時間後にpayment_intent.payment_failedを送ります。期限ちょうどではなく1時間ほど後になるのは、期限前に発行された払込票ならレジで支払いを完了できるためです。在庫の引き当てを解除するバッチは、この猶予を前提に組みます。

返金はダッシュボードかAPIから行えますが、現金で受け取った代金なので、Stripeが購入者のメールアドレスへ返金先口座の入力依頼を送ります。返金の開始時点におけるステータスはrequires_actionです。45日以内に口座情報が届かなければfailedに移り、refund.failedイベントが届きます。この場合はStripeの外で返金するしかありません。料金ページでは、コンビニ決済と銀行振込の返金時の項目に「10%+¥250」と表記されています(2026年10月18日時点)。

銀行振込を顧客ごとの仮想口座で受け付けて過不足を消し込む実装手順

Stripeの銀行振込は、顧客ごとに発行する仮想口座に振り込んでもらい、その入金を顧客の残高として管理する仕組みです。APIの値がcustomer_balanceになっているのはこのためです。

jp_bank_transferと顧客IDを渡すPaymentIntentのcurl

銀行振込の受け付けガイドの日本向けの例です。顧客を関連付けないPaymentIntentでは銀行振込は使えません。

curl https://api.stripe.com/v1/payment_intents \
  -u "sk_test_xxx:" \
  -d amount=19000 \
  -d currency=jpy \
  -d "customer=cus_xxxx" \
  -d "allowed_payment_method_types[]=customer_balance" \
  -d "payment_method_data[type]=customer_balance" \
  -d "payment_method_options[customer_balance][funding_type]=bank_transfer" \
  -d "payment_method_options[customer_balance][bank_transfer][type]=jp_bank_transfer" \
  -d confirm=true

顧客の残高が不足していれば、PaymentIntentはrequires_actionになり、next_action.display_bank_transfer_instructionsに振込先が入ります。日本ではfinancial_addressesの種別がzenginで、金融機関コード4桁・支店コード3桁・口座番号7桁・口座名義が返ります。振込参照番号referenceは日本では使われません。営業時間内の送金は同日、時間外は翌営業日に着金します。

振込額の過不足とpartially_fundedで残額を案内する分岐

銀行振込では、購入者が金額を自分で入力します。振込手数料を差し引いて送る、桁を間違える、といった過不足は避けられません。不足した場合、Stripeは入金分をPaymentIntentへ部分的に充当し、payment_intent.partially_fundedを送ります。このイベントでは更新後のamount_remainingを読み、残額の追加振込を案内します。

多く振り込まれた場合、余った分は顧客の残高に残り、同じ顧客の未払いの支払いへ自動で充当されます。消し込みのドキュメントによれば、顧客ごとにreconciliation_modeをmanualにすることで、自動充当を停止する設定が可能です。複数の請求を同時に抱える法人顧客で、どの請求への入金かを経理が判断したい場合は手動に切り替えます。

消し込みされない残高が75日で自動返金される仕様と週次の確認作業

照合されないまま顧客の残高に75日を超えて残った資金は、Stripeが顧客の口座への返金を自動で試みます。90日の時点で口座情報が特定できなければ、Stripeアカウントの残高へ移されます(銀行振込による支払いの顧客残高の節)。過払いを放置すると、本来の請求に充当する前に購入者へ戻ってしまう可能性があるということです。

運用では、ダッシュボードの支払い一覧を「資金供給待ち」で絞り込み、過払いと不足が残っていないかを週次で確認します。

遅延型の決済方法をWebhookで受けて注文を一度だけ確定する実装

コンビニ決済と銀行振込を入れたら、注文確定の処理をWebhook起点に寄せます。署名検証や再送の考え方の基礎は決済Webhookの仕組みと冪等な注文確定で扱っているので、ここでは遅延型で増える分岐に絞ります。

async_payment_succeededを待つNode.jsのWebhook

Checkoutの場合、遅延型の決済ではcheckout.session.completedがpayment_status: 'unpaid'で届き、入金後にcheckout.session.async_payment_succeededが届きます(注文のフルフィルメント)。両方を同じ確定関数につなぎ、関数の中で支払い状態を見ます。

const express = require('express');
const stripe = require('stripe')(process.env.STRIPE_SECRET_KEY);
const app = express();

app.post('/webhook', express.raw({ type: 'application/json' }), async (req, res) => {
  let event;
  try {
    event = stripe.webhooks.constructEvent(
      req.body, req.headers['stripe-signature'], process.env.STRIPE_WEBHOOK_SECRET);
  } catch (err) {
    return res.status(400).send('invalid signature');
  }

  const session = event.data.object;
  switch (event.type) {
    case 'checkout.session.completed':
      // カードは paid、コンビニ決済・銀行振込は unpaid で届く
      if (session.payment_status !== 'unpaid') await fulfillOrder(session.id);
      else await markAwaitingPayment(session.id); // 支払い待ちとして記録
      break;
    case 'checkout.session.async_payment_succeeded':
      await fulfillOrder(session.id); // 入金を確認したので出荷へ
      break;
    case 'checkout.session.async_payment_failed':
      await releaseOrder(session.id); // 期限切れ。在庫を戻し別の決済方法を案内
      break;
  }
  res.json({ received: true });
});

fulfillOrderは同じセッションIDで何度呼ばれても1回だけ処理する作りにします。Stripeは失敗したイベントを再送し、公式は完了ページからも同じ関数を呼ぶ構成を推奨しているためです。セッションIDに一意制約を付けたテーブルへ先に書き込み、書き込めたときだけ出荷へ進みます。PaymentIntentを直接使う構成ではpayment_intent.succeededとpayment_intent.payment_failedが同じ役割を担います。

テスト用の確認番号と残高入金APIで支払い完了を再現する手順

遅延型はサンドボックスでも実際の入金が起きないため、Stripeが用意した仕掛けで完了を再現します。コンビニ決済は確認番号で挙動が決まり、11111111110は3分後に成功、22222222220は即時に成功、33333333330は即時に期限切れ、44444444440は3分後に期限切れ、55555555550は支払われないまま設定した期限で失効します。銀行振込での再現方法は、テストヘルパーを使った顧客の残高への入金です。

# ローカルのサーバーへWebhookを転送する
stripe listen --forward-to localhost:4242/webhook

# 別のターミナルで、銀行振込の入金をシミュレーションする
curl https://api.stripe.com/v1/test_helpers/customers/cus_xxxx/fund_cash_balance \
  -u "sk_test_xxx:" \
  -d amount=10000 \
  -d currency=jpy

19,000円の請求に10,000円を入金すればpartially_fundedを、残り9,000円の入金でsucceededまでを確かめられます。コンビニ決済の返金は、テスト用の金融機関コード1100000と口座0001234で成功、1111113などで失敗を再現できます。カード側の拒否や3Dセキュアの再現方法はStripeテストカード一覧と使い方を参照してください。

決済方法の組み合わせを決める判断基準と遅延型の採用を見送る場面

遅延型を1つ足すごとに、支払い待ちの注文、期限切れ、返金時の口座収集という運用が増えます。商材と顧客から必要なものだけを選びます。

BtoC物販でカードにコンビニ決済を足す条件と30万円上限の扱い

カード番号をネットに入れたくない購入者が一定数いるBtoCの物販では、コンビニ決済を足す価値があります。採用の条件は、出荷を入金後まで待てること、1回の注文が30万円以下に収まること、の2点です。予約商品や受注生産のように出荷まで日数がある商材なら、支払い期限を出荷予定日の前に置けます。

見送るのは、デジタルコンテンツの即時ダウンロードのように「購入直後に渡す」ことが商品価値の中心にある場合です。入金を待つ間に購入者が離れ、期限切れの注文だけが積み上がります。また、Stripe Connectで出店者の代わりに決済を作る構成では、コンビニ決済の利用に招待の申請が要ります。マーケットプレイスで使う前提なら、Stripe Connectのアカウント種別と支払い方式と合わせて先に申請の可否を確認してください。

BtoBの請求で銀行振込を採用しサブスクの自動請求では見送る場面

法人顧客への高額な請求では銀行振込を採用します。手数料は1.5%でカードの3.6%より低く、決済方法固有の上限もありません。顧客ごとの仮想口座なので、振込名義から入金元を探す消し込み作業がなくなります。銀行振込の取り消しに対応するのはUSDとCADの取引だけで、日本円の振込は購入者から取り消せません。売上が後から覆るリスクはカードより小さくなります。

一方、毎月自動で引き落とすサブスクリプションでは銀行振込もコンビニ決済も見送ります。どちらもBillingでは請求書を送るsend_invoice方式にしか対応せず、購入者が毎回自分で支払う操作をする必要があります。将来の支払いに備えて決済方法を保存するsetup_future_usageも使えません。継続課金はカードを主にし、請求書払いを望む法人だけ別の契約形態にするのが現実的です。継続課金の失敗対策はサブスクリプション課金の仕組みと更新失敗対策で解説しています。

Stripeで足りない国内決済方法とKOMOJU・PAY.JPとの選び分け

Stripeで国内の購入者向けに揃う決済方法は、カードとウォレット、コンビニ決済、銀行振込、PayPayです。ペイジーや携帯キャリア決済が必須なら、国内の非同期決済を広く揃えるKOMOJUの対応範囲と実装方式を比較対象にします。国内カード中心で料金プランを選ぶならPAY.JPの手数料とStripeとの選び分け、決済代行の接続方式から見直すなら決済システムの仕組みと自社構築の判断軸、Stripe自体の位置づけはStripeとは何かと実装パターンが入口です。

遅延型を加えると、注文の状態遷移・在庫の引き当て・返金の運用まで設計が広がります。既存のECや業務システムで改修範囲が読めない場合は、決済・サブスクリプションシステム開発として、現在の注文フローを前提に必要な改修を見積もれます。

Stripeの決済方法とコンビニ決済・銀行振込に関するよくある質問

Stripeの決済方法を追加するときによく確認される点を、公式ドキュメントの記載をもとにまとめました。

Stripeのコンビニ決済の手数料はいくらですか?

2026年10月18日時点の料金ページでは決済額の3.6%で、最低手数料は120円です。少額の注文ほど比率が上がり、1,000円の注文でも手数料は120円、実質12%になります。単価の低い商材でコンビニ決済を出すなら、最低注文金額を設けるかを先に決めておきます。料率は改定されることがあるため、導入時に料金ページで最新の値を確認してください。

Stripeの銀行振込は個人の購入者にも使えますか?

使えます。顧客(Customer)を作成すれば、法人か個人かに関係なく仮想口座の発行が可能です。ただし、個人向けの少額決済では振込手数料を差し引いた送金による不足が起きやすく、追加振込の案内が増えます。Payment Linksでは銀行振込を出せないため、Checkoutか自社画面で顧客を関連付けて提供します。

Stripeのコンビニ決済ではどのコンビニで支払えますか?

ファミリーマート、ローソン、ミニストップ、セイコーマートの4チェーンです。セブン-イレブンは公式ドキュメントの対応チェーンに含まれていません(2026年10月18日時点)。購入者はチェーン別の支払いコードと確認番号を店舗に持参し、現金で支払います。主な顧客層の生活圏で使えるかを確認してから採用してください。

Stripeで支払い方法を後から追加するとコードの変更は必要ですか?

Checkoutや動的な決済手段を使い、決済方法をコードで固定していなければ、ダッシュボードで有効にするだけで表示されます。ただし、コンビニ決済や銀行振込のような遅延型を追加する場合は、Webhookで支払い待ちと入金完了を分けて処理する改修が別途必要です。allowed_payment_method_typesや旧来のpayment_method_typesで決済方法を列挙している場合は、そのリストにも追加します。

Stripeのクレジットカード決済で使えるブランドは何ですか?

日本のStripeアカウントでは、Visa、Mastercard、American Express、JCB、Diners Club、Discoverの6ブランドとデビットカードを受け付けられます。手数料は3.6%です。3Dセキュア認証は、カードのドキュメントで6ブランドすべてが日本のアカウントで対応と記載されています。

関連記事

お気に入りに入れた記事の一覧

この記事は以下の記事からリンクされています

資料請求

今日のトレンド記事 直近 24 時間で、いつもより多く読まれている記事

  1. 2026.10.15 テックブログ リゾートトラスト不正アクセス:会員2.6万件・カハラ横浜3.6万件の対象確認と窓口
  2. 2025.09.03 コラム ストループ効果とは?原典1935年の実測値と年齢別の平均・テストのやり方
  3. 2026.10.16 テックブログ バーガーキング不正アクセスで約1,118万件の情報漏洩|対象確認・案内メールの真偽と運営側のログ点検
  4. 2025.09.03 コラム Google AIモードの履歴の消し方と残る理由|いつまで残るか・使い方・オフにする方法【2026年10月】
  5. 2026.01.20 テックブログ PineDramaとは?TikTokのショートドラマアプリの日本配信・料金・安全性を解説

RELATED POSTS 関連記事

目次