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

Issuing と Treasury のサンプルアプリのカード詳細ページ
このアプリは、企業顧客のアカウント登録を行うプラットフォームを対象としています。自社や自社の従業員のカードのみを必要とする場合は、この方法ではなく、ダッシュボードで Issuing を使用します。
プラットフォームでアカウントを作成する
サンプルアプリを使用するには、はじめにプラットフォームの顧客としてアカウント登録するアカウントを作成します。
メールアドレスとパスワードを入力すると、アプリのバックエンドで連結アカウントが作成され、card_
と treasury
のケイパビリティがリクエストされます。
(オプション) ホスティング登録をシミュレーションして、アカウントの詳細をすべて指定する
ホスティング登録をシミュレートする場合、エラーを防止するために、テストトークンを使用して以下のステップを実行します。このアプリのアカウントデータは事前入力されています。
Skip the rest of onboarding (残りのアカウント登録をスキップする) のチェックマークを外します。
テストデータ ダイアログで確定する をクリックします。
続行をクリックして、Stripe のホスティング登録フローに移動します。
Let’s get started (始めましょう) 画面で、以下を入力します。
- 携帯電話番号: 000-000-0000
- メールアドレス: 任意の架空のメールアドレス
携帯電話番号を確認する で、テストコードを使用 をクリックします。
本人確認を行う では、この手順をスキップする をクリックします。
フォームを送信すると、アプリのダッシュボードにリダイレクトで戻されます。
これらのステップのコードと API ログを見る
サンプルアプリのコピーで最初のアカウントを登録するステップを完了したら、対応する API ログを確認します。アカウント登録時にバックエンドで下記のコードスニペットが実行されます。
transfers
,card_
,issuing treasury
のケイパビリティを持つ連結アカウントを作成します。Issuing は、Stripe がホストするダッシュボードを使用せず、プラットフォームが要件の収集と損失に対する責任を負う連結アカウント (Custom 連結アカウントとも呼ばれる) のみをサポートします。詳しくは、Issuing と連携可能な連結アカウントの作成方法をご確認ください。Stripe アプリをコピーして 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 }, }, });
Stripe Treasury の金融口座を作成します。Stripe アプリをコピーして 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 テストヘルパーを使用して Treasury 金融口座に資金を追加できます。このテストヘルパーは、外部の銀行口座から金融口座への送金の受け取りをシミュレーションします。アプリをコピーして 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 ログを使用します。
送金インターフェイス
サンプルアプリの送金機能は、Stripe Treasury の OutboundPayment
機能を使用しています。OutboundPayments は、サードパーティーの外部口座への送金に使用できます。Stripe アプリをコピーして API ログを表示し、POST to /v1/treasury/outbound_payments を見つけます。レスポンスには、支払いのステータスが processing
であることが表示されます。
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}}'
テストヘルパーを使用して取引結果を設定する
ウェブアプリで取引結果を選択すると、アウトバウンド支払いのステータスは、テストヘルパーのエンドポイントを介して更新されます。Stripe アプリをコピーして 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 が表示されます。
金融口座を外部口座として追加をクリックして、連結アカウントのデフォルトの入金用外部口座に Treasury で作成された金融口座を指定します。詳細については、Stripe Payments からの入金およびトップアップをご覧ください。
入金を作成をクリックしてから、概要ページに移動して、取引の詳細を表示します。
これらのステップのコードと 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}}'
連結アカウントの支払い残高からの入金
Payouts では、連結アカウントの支払い残高から、その連結アカウントの Treasury の金融口座に売上を送金できます。入金を実行するには、以下のステップを実行します。
連結アカウント用に外部口座が設定されているかどうかを確認します。そのためには、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}}'既存の外部口座がない場合、ユーザーは Treasury の金融口座を連結アカウントの外部口座として設定できます。
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}}'連結アカウントの外部口座への入金を開始します。この例では、外部口座は Treasury の金融口座です。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 を確認できます。