プラットフォーム向け Issuing および金融口座サンプルアプリ
顧客のアカウント登録、カードの発行、アウトバウンド支払いを行う方法をご紹介します。
導入でプラットフォーム用の Issuing と金融口座 API をどのように使用できるかを確認するには、サンプルアプリをお試しください。顧客登録、カード作成、オーソリのテスト、金融口座からの決済などができます。
コードを書かずに、サンプルアプリをコピーしてプラットフォームで使用することもできます。アクションによって生成される API ログに従ってください。

プラットフォーム向け Issuing および金融口座サンプルアプリのカード詳細ページ
このアプリは、企業顧客のアカウント登録を行うプラットフォームを対象としています。自社や自社の従業員のカードのみを必要とする場合は、この方法ではなく、ダッシュボードで Issuing を使用します。
プラットフォームでアカウントを作成する
サンプルアプリを使用するには、はじめにプラットフォームの顧客としてアカウント登録するアカウントを作成します。
メールアドレスとパスワードを入力すると、アプリのバックエンドで連結アカウントが作成され、card_ と treasury のケイパビリティがリクエストされます。
(オプション) ホスティング登録をシミュレーションして、アカウントの詳細をすべて指定する
ホスティング登録をシミュレートする場合、エラーを防止するために、テストトークンを使用して以下のステップを実行します。このアプリのアカウントデータは事前入力されています。
Skip the rest of onboarding (残りのアカウント登録をスキップする) のチェックマークを外します。
テストデータ ダイアログで確定する をクリックします。
続行をクリックして、Stripe のホスティング登録フローに移動します。
Let’s get started (始めましょう) 画面で、以下を入力します。
- 携帯電話番号: 000-000-0000
- メールアドレス: 任意の架空のメールアドレス
携帯電話番号を確認する で、テストコードを使用 をクリックします。
本人確認を行う では、この手順をスキップする をクリックします。
フォームを送信すると、アプリのダッシュボードにリダイレクトで戻されます。
これらのステップのコードと API ログを見る
サンプルアプリのコピーで最初のアカウントを登録するステップを完了したら、対応する API ログを確認します。アカウント登録時にバックエンドで下記のコードスニペットが実行されます。
送金、card_、issuing treasuryの機能を持つ 連結アカウント を作成します。Issuing は、Stripe がホストするダッシュボードを使用せず、プラットフォームが要件徴収と損失責任を負う連結アカウント (Custom 連結アカウントとも呼ばれます) のみに対応します。Issuing で動作する連結アカウント の作成方法をご覧ください。アプリをコピーして API ログを表示し、POST to /v1/accounts を見つけます。register.tsconst account = await stripe.accounts.create({ controller: { stripe_dashboard: { type: "none" }, fees: { payer: "application" }, losses: { payments: "application" }, requirement_collection: "application", }, country: "US", email: email, capabilities: { transfers: { requested: true }, treasury: { requested: true }, card_issuing: { requested: true }, }, });金融口座 を作成します。API ログを表示するためにアプリをコピーし、POST to /v1/treasury/financial_accounts 見つけます。
register.tsconst financialAccount = await stripe.treasury.financialAccounts.create( { supported_currencies: ["usd"], features: { card_issuing: { requested: true }, deposit_insurance: { requested: true }, financial_addresses: { aba: { requested: true } }, inbound_transfers: { ach: { requested: true } }, intra_stripe_flows: { requested: true }, outbound_payments: { ach: { requested: true }, us_domestic_wire: { requested: true }, }, outbound_transfers: { ach: { requested: true }, us_domestic_wire: { requested: true }, }, }, }, { stripeAccount: account.id } );Connect アカウント登録リンクを作成し、そのリンクを使用して新規ユーザーをリダイレクトして、リクエストされたケイパビリティに必要なプロフィール情報を収集します。Stripe アプリをコピーして API ログを表示し、POST to /v1/account_links を見つけます。Account Links リクエストのレスポンスには、アカウント登録フローへのリダイレクトに使用される
urlの値が含まれています。onboarding-helpers.tsconst { url } = await stripe.accountLinks.create({ type: "account_onboarding", account:, refresh_url: connectOnboardingRedirectUrl + "/onboard", return_url: connectOnboardingRedirectUrl + "/onboard", });"{{CONNECTED_ACCOUNT_ID}}"アカウント登録が完了すると、アカウントのケイパビリティの status (ステータス) は
inactiveからactiveに変わります。「https://dashboard.stripe.com//test/events?type=account.updated」で連結アカウントの'{{CONNECTED_ACCOUNT_ID}}'account.イベントを表示します。ステップ 1 のレスポンスで連結アカウントの ID を確認できます。updated
金融口座に資金を追加する
概要 ページで、Generate test data (テストデータを生成) をクリックしてから、ドロワーの Simulate received credit (受領したクレジットをシミュレーションする) をクリックします。
金融口座 のページにアクセスし、口座番号 をご確認ください。
これらのステップのコードと API ログを見る
これらのステップの詳細を確認するには、以下のコードサンプルと API ログを使用します。
ReceivedCredit テストヘルパー
テスト環境では、ReceivedCredit テストヘルパー を使って金融口座に資金を追加できます。このテストヘルパーは、外部の銀行口座から金融口座への送金をシミュレートします。アプリをコピーして API ログを表示し、POST to /v1/test_helpers/treasury/received_credits 見つけます。
const receivedCredit = await stripe.testHelpers.treasury.receivedCredits.create( { amount: 50000, currency: "usd", financial_account:, network: "ach", }, { stripeAccount:"{{FINANCIAL_ACCOUNT_ID}}"} );"{{CONNECTED_ACCOUNT_ID}}"
アウトバウンド ACH 支払いを行う
- 金融口座 ページで、資金を送る をクリックします。
- ACH を選択してから、受取人の情報と送金額を入力します。
- 取引結果として
POSTEDを選択し、完了した支払いをシミュレーションします。 - 取引は アウトバウンド決済 として表示されます。
これらのステップのコードと API ログを見る
これらのステップの詳細を確認するには、以下のコードサンプルと API ログを使用します。
送金インターフェイス
サンプルアプリの送金機能は、プラットフォーム向け金融口座の OutboundPayment 機能を使用しています。OutboundPayments を使って、第三者の外部口座に送金することができます。アプリをコピーして API ログを表示し、POST to /v1/treasury/outbound_payments 見つけます。レスポンスは決済のステータスが 処理中 であることを示すはずです。
const outboundPayment = await stripe.treasury.outboundPayments.create( { financial_account:, amount: 100, currency: "usd", statement_descriptor: req.descriptor, destination_payment_method_data: { type: "us_bank_account", us_bank_account: { account_holder_type: "company", routing_number: "110000000", account_number: "000000000009", }, }, }, { stripeAccount:"{{FINANCIAL_ACCOUNT_ID}}", } );"{{CONNECTED_ACCOUNT_ID}}"
テストヘルパーを使用して取引結果を設定する
ウェブアプリで取引結果を選択した後、テストヘルパーエンドポイント を通して、アウトバウンドの決済ステータスが更新されます。API ログを見るためにアプリをコピーして、POST to /v1/test_helpers/treasury/outbound_payments/{{OUTBOUND_PAYMENT_ID}}/post を見つけます。レスポンスは決済のステータスが posted であることを示すはずです。
const outboundPayment = await stripe.testHelpers.treasury.outboundPayments.post(, );'{{OUTBOUND_PAYMENT_ID}}'
カード保有者とカードを作成して、テスト購入を行う
- カード保有者ページで、Create a new cardholder (カード保有者を新規作成する) をクリックします。
- カード保有者の情報を入力し、カードを発行 をクリックして、バーチャルカードを作成します。
- カード ページにリダイレクトされます。カード行の詳細 をクリックして、新しいバーチャルカードを表示します。
- Generate test data (テストデータを生成) をクリックしてから、Simulate test purchase (テスト購入をシミュレーションする) をクリックします。
これらのステップのコードと API ログを見る
これらのステップの詳細を確認するには、以下のコードサンプルと API ログを使用します。
カード保有者を作成する
Stripe Issuing の Create Cardholder (カード保有者の作成) API を使用して Cardholder を作成します。
const cardholder = await stripe.issuing.cardholders.create( { type: "individual", name: firstName + " " + lastName, email: email, individual: { first_name: firstName, last_name: lastName, card_issuing: { user_terms_acceptance: { date: Date.now(), ip: ip, }, }, }, billing: { address: { city: city, line1: address1, state: state, postal_code: postalCode, country: country, }, }, }, { stripeAccount:, } );"{{CONNECTED_ACCOUNT_ID}}"
カードを作成する
Cardholder を作成した後、Create Card (カードの作成) API を使用して Cardholder にカードを発行します。カードの financial_ は、ステップ 2 で作成した金融口座の ID に設定します。
const card = await stripe.issuing.cards.create( { cardholder: cardholderId, financial_account:, currency: 'usd', type: 'virtual', status: 'active', }, { stripeAccount:'{{FINANCIAL_ACCOUNT_ID}}'}, );"{{CONNECTED_ACCOUNT_ID}}"
テスト購入を作成する
ダッシュボードでオーソリを作成した後に、API ログ POST to /v1/test_helpers/issuing/authorizations を探します。ダッシュボードでオーソリをキャプチャーした後は、API ログ POST to /v1/test_helpers/issuing/authorizations/{{AUTHORIZATION_ID}} を探します。
オプションカードでの支出を一時的に停止する
- カード ページで、カードの詳細 をクリックします。
- カードを無効にするをクリックします。このボタンの下にある status (ステータス) が
inactiveに変わります。 - Generate test data (テストデータを生成) をクリックして、リンクをたどり、ダッシュボードでカードを表示します。
- ダッシュボードで、Create a test purchase (テスト購入を作成) をクリックします。次のページでオーソリが拒否されます。
- ウェブアプリに戻り、拒否されたオーソリの詳細を表示します。
- Activate Card (カードを有効化する) をクリックして、カードのステータスを
inactiveからactiveに戻します。
サンプルアプリをコピーして、ステップ 3 ~ 6 を実行する
サンプルアプリをコピーして、お客様の Stripe API キーで使用する場合は、ダッシュボードでテスト購入を作成できます。
これらのステップのコードと API ログを見る
これらのステップの詳細を確認するには、以下のコードサンプルと API ログを使用します。
カードのステータスを inactive に切り替える
無効化 をクリックすると、カードの status は inactive に切り替わります。アプリをコピーして、API ログを表示し、POST to /v1/issuing/cards/{{CARD_ID}} を探します。
const card = await stripe.issuing.cards.update(, { status: 'inactive', } );'{{CARD_ID}}'
カードが有効でないことが原因で拒否されるオーソリをテストする
ダッシュボードでオーソリを作成した後に、API ログ (POST to /v1/issuing/cards/{{CARD_ID}}/test/authorizations) を見つけます。オーソリの承認は false です。
次に、「https://dashboard.stripe.com/
issuing_ authorization. created イベントを表示します。オーソリの request_history には、'approved: false, 'reason': 'card_ inactive' が表示されます。オプションアカウントの支払い残高から金融口座への入金
テストデータ ページで、Create PaymentLink (PaymentLink を作成する) をクリックしてから、Go to PaymentLink (PaymentLink に移動する) をクリックします。
任意のメールアドレス、名前、郵便番号を入力し、カード番号として
4000 0000 0000 0077を使用します。- このテストカードでは、資金がアカウントの利用可能な残高に即座に追加されます。
支払いを完了してから、ウェブアプリのテストデータ ページに戻り、ページを更新します。
Create Payout (入金を作成する) に連結アカウントの利用可能残高 9.41 USD が表示されます。
Add Financial Account as External Account をクリックして、連結アカウントのデフォルトの外部入金口座を、プラットフォーム向け金融口座で作成した金融口座に設定します。詳細は Stripe 決済からの入金とトップアップ をご覧ください。
入金を作成をクリックしてから、概要ページに移動して、取引の詳細を表示します。
これらのステップのコードと API ログを見る
これらのステップの詳細を確認するには、以下のコードサンプルと API ログを使用します。
支払いを受け取る
決済用のリンクを使用してテスト支払いを受け取り、金融口座に関連付けられた連結アカウントに支払い残高を送金することができます。
支払いの完了後に連結アカウントに支払われる金額を決定する
Priceを作成します。create_paymentlinks.tsconst prices = await stripe.prices.list( { limit: 1, active: true, type: "one_time", }, { stripeAccount:, }, ); const price = prices.data.length < 1 ? await stripe.prices.create( { unit_amount: 1000, currency: "usd", product_data: { name: "Some Product", }, }, { stripeAccount:"{{CONNECTED_ACCOUNT_ID}}", }, ) : prices.data[0];"{{CONNECTED_ACCOUNT_ID}}"価格を取得した後、サンプルアプリは
PaymentLinkを作成し、ユーザーをリダイレクトして支払いを完了できるようにします。前のステップの価格idを使用してpriceパラメーターの値を設定します。デフォルト値を使用する場合は、このパラメーターを除外できます。create_paymentlinks.tsconst paymentLink = await stripe.paymentLinks.create( { line_items: [ { price: price.id, quantity: 1, adjustable_quantity: { enabled: true }, }, ], }, { stripeAccount:, }, );"{{CONNECTED_ACCOUNT_ID}}"
連結アカウントの支払い残高からの入金
入金 は、連結アカウントの決済残高から金融口座に資金を送金することができます。入金を実行するには、以下の手順に従ってください。
連結アカウント用に外部口座が設定されているかどうかを確認します。そのためには、accounts.retrieve API を使用して、Account オブジェクト を取得し、
external_プロパティが設定されているかどうかを確認します。account create_paymentlinks.tsconst responseAccount = await stripe.accounts.retrieve(); const hasExternalAccount = responseAccount.external_accounts?.data[0] != undefined;"{{CONNECTED_ACCOUNT_ID}}"既存の外部口座がない場合、ユーザーは金融口座を連結アカウントの外部口座として設定することができます。
test-data.tsxconst financialAccounts = await stripe.treasury.financialAccounts.list( { expand: ["data.financial_addresses.aba.account_number"] }, { stripeAccount:, }, ); const financialAccount = financialAccounts.data[0]; const aba = financialAccount.financial_addresses[0]?.aba; // ... const token = await stripe.tokens.create( { bank_account: { account_number: aba.account_number, country: "US", currency: "usd", routing_number: aba.routing_number, }, }, undefined, ); await stripe.accounts.createExternalAccount("{{CONNECTED_ACCOUNT_ID}}", { external_account: token.id, });"{{CONNECTED_ACCOUNT_ID}}"連結アカウントの外部口座への入金を開始します。この場合、外部口座は金融口座です。API ログで POST to /v1/payoutsを検索します。
create_payout.tsconst balance = await stripe.balance.retrieve( { stripeAccount:, } ); const payout = await stripe.payouts.create( { amount: balance.available[0].amount, currency: 'usd', }, { stripeAccount:"{{CONNECTED_ACCOUNT_ID}}", } );"{{CONNECTED_ACCOUNT_ID}}"
https://dashboard.stripe.com/{{CONNECT_ACCOUNT_ID}}/test/events?type=treasury.received_credit.created で連結アカウントの treasury. イベントを表示します。ステップ 1 のレスポンスで連結アカウントの ID を確認できます。