# 埋込型金融の導入ガイド Issuing とプラットフォーム向け Treasury を使用して、プラットフォーム向けの埋込型金融サービス連携を構築できます。 [SaaS プラットフォーム向け組み込みファイナンス](https://stripe.com/guides/introduction-to-embedded-finance)の使用方法に関する入門ガイドをご覧ください。 Stripe の [Issuing](https://docs.stripe.com/issuing/how-issuing-works.md) と [プラットフォーム向け Treasury](https://docs.stripe.com/treasury/connect.md) を使用すれば、米国向けの組込み型金融サービスを構築できます。Issuing を使用してカードを発行し、プラットフォーム向け Treasury を使用して残高を保管し、カード利用に資金を充てることができます。 このガイドでは、以下の方法について説明します。 - 関連する Issuing とプラットフォーム向け Treasury の機能を備えた、ビジネス顧客を表す確認済みの連結アカウントを作成する - 企業顧客のウォレットとしての使用が可能で外部銀行口座を使用して資金を追加できる金融口座を作成する - 企業顧客向けのバーチャルカードを作成してカードを使用してウォレットから支出する方法 ## Before you begin 1. 登録して [Stripe アカウント](https://dashboard.stripe.com/register)を作成します。 1. ダッシュボードから*サンドボックス* (A sandbox is an isolated test environment that allows you to test Stripe functionality in your account without affecting your live integration. Use sandboxes to safely experiment with new features and changes)環境で、[Issuing とプラットフォーム向け Treasury を有効化](https://dashboard.stripe.com/setup/treasury/activate)できます。詳細は、[Issuing とプラットフォーム向け Treasury への API アクセス](https://docs.stripe.com/treasury/connect/access.md)を参照してください。 1. 自社の [Connect プラットフォームのブランディング設定](https://dashboard.stripe.com/settings/connect/stripe-dashboard/branding)を行い、アイコンを追加します。 ## 連結アカウントを作成する ### 連結アカウントを作成する プラットフォームのビジネス顧客を表す連結アカウントを作成します。たとえば、飲食店向けの SaaS プラットフォームの場合、各飲食店が 1 件の連結アカウントとして表されます。 > #### Connect アカウントのタイプ > > Issuing は、Stripe がホストするダッシュボードを使用せず、プラットフォームが要件徴収と損失責任を負う連結アカウント (カスタム連結アカウントとも呼ばれます) にのみ対応しています。Issuing で機能する連結アカウントの作成方法については、[こちら](https://docs.stripe.com/connect/interactive-platform-guide.md?connect-charge-type=direct&connect-loss-liability-owner=platform)をご覧ください。既存のアカウントがこの設定に当てはまらない場合は、アカウントを再作成する必要があります。 以下のリクエストによって、アメリカを拠点とする連結アカウントが適切な設定で新規作成され、必須のケイパビリティがリクエストされます。 ```curl curl https://api.stripe.com/v1/accounts \ -u "<>:" \ -d country=US \ -d "controller[stripe_dashboard][type]=none" \ -d "controller[fees][payer]=application" \ -d "controller[losses][payments]=application" \ -d "controller[requirement_collection]=application" \ -d "capabilities[transfers][requested]=true" \ -d "capabilities[card_issuing][requested]=true" \ -d "capabilities[treasury][requested]=true" \ -d "capabilities[us_bank_account_ach_payments][requested]=true" ``` ユーザーのアカウント情報がレスポンスに表示されます。 ```json { ... "id": "{{CONNECTED_ACCOUNT_ID}}", "controller": { "stripe_dashboard": { "type": "none" }, "fees": { "payer": "application" }, "losses": { "payments": "application" }, "is_controller": true, "type": "application", "requirement_collection": "application" }, ... } ``` 連結アカウントの `id` を書き留めておきます。この値を `Stripe-Account` ヘッダーでリクエストすることにより、連結アカウントとして[認証](https://docs.stripe.com/connect/authentication.md)します。 連結アカウントがすでに存在する場合は、リクエストで連結アカウントの `id` を指定することで、必要なケイパビリティを追加できます。 ```curl curl https://api.stripe.com/v1/accounts/{{CONNECTEDACCOUNT_ID}} \ -u "<>:" \ -d "controller[stripe_dashboard][type]=none" \ -d "controller[fees][payer]=application" \ -d "controller[losses][payments]=application" \ -d "controller[requirement_collection]=application" \ -d country=US \ --data-urlencode "email=jenny.rosen@example.com" \ -d "capabilities[transfers][requested]=true" \ -d "capabilities[treasury][requested]=true" \ -d "capabilities[card_issuing][requested]=true" ``` ### 連結アカウントを確認する 次のアカウント登録オプションのいずれかを選択します。 #### Stripe のホスティング登録 [Stripe のホスティング登録](https://docs.stripe.com/connect/hosted-onboarding.md)は、Stripe がオンラインで提供する、貴社のブランド名、色、アイコンを設定したウェブフォームです。Stripe のホスティング登録では、[Accounts API](https://docs.stripe.com/api/accounts.md) を使用して要件を読み取り、堅牢なデータ検証機能を備え、Stripe で対応しているすべての国に合わせて現地化されたアカウント登録フォームを生成します。 Connect アカウント登録を使用するには、事前に [Connect 設定ページ](https://dashboard.stripe.com/test/settings/connect)のブランディングセクションでご自身のブランドの名前、色、アイコンを指定しておく必要があります。 ホスティング登録を使用して、連結アカウントが `external_account` (入金のために必要) を関連付けできるようにすることができます。それには、[Connect アカウント登録の設定](https://dashboard.stripe.com/settings/connect)で外部口座を有効にします。 連結アカウントのアカウント登録リンクを作成するには、[Account Links API](https://docs.stripe.com/api/account_links/create.md) を使用します。 ```curl curl https://api.stripe.com/v1/account_links \ -u "<>:" \ -d account={{CONNECTED_ACCOUNT_ID}} \ --data-urlencode "refresh_url=https://example.com/reauth" \ --data-urlencode "return_url=https://example.com/return" \ -d type=account_onboarding ``` > セキュリティ保護のため、アカウントリンクの URL はメール、テキスト、送信の手段では連結アカウントに直接通知しないでください。アカウントリンクの URL は、プラットフォームでアカウントの認証が行われるアプリケーション内から配信することをお勧めします。 受信するレスポンスにある `url` パラメーターには、連結アカウントがプラットフォームにアカウント登録するためのリンクを設定できます。 ```json { "object": "account_link", "created": 1612927106, "expires_at": 1612927406, "url": "https://connect.stripe.com/setup/s/…" } ``` #### オンラインのアカウント登録 オンラインのアカウント登録は、Stripe のブランディングが一部に限定された、カスタマイズが可能なアカウント登録 UI です。プラットフォームは、アプリケーションに[アカウント登録コンポーネント](https://docs.stripe.com/connect/supported-embedded-components/account-onboarding.md)を埋め込み、連結アカウントはアプリケーションを離れることなく埋め込みコンポーネントを操作します。オンラインのアカウント登録は [Accounts API](https://docs.stripe.com/api/accounts.md) を使用して要件を読み取り、Stripe で対応しているすべての国に合わせて現地化され、堅牢なデータ検証を備えたアカウント登録フォームを生成します。 オンラインのアカウント登録を使用すると、カスタマイズされたアカウント登録フローを利用できます。規制要件の変更に応じた、アカウント登録システムの更新に関連する複雑な作業やメンテナンスは不要です。 #### API によるアカウント登録 連結アカウントのアカウント登録機能のカスタマイズ構築をご希望の場合は、[アカウント更新 API](https://docs.stripe.com/api/accounts/update.md) と[個人の更新 API](https://docs.stripe.com/api/persons/update.md) を使用して、関連する `Account` オブジェクトと `Person` オブジェクトの必須情報を更新します。 [Issuing に必要な契約](https://docs.stripe.com/issuing/compliance-us.md#issuing-terms)を表示し、[Issuing TOS acceptance](https://docs.stripe.com/api/accounts/object.md#account_object-settings-card_issuing-tos_acceptance) ハッシュを使用して、連結アカウントからの同意を記録する必要があります。 ```curl curl https://api.stripe.com/v1/accounts/{{CONNECTED_ACCOUNT_ID}} \ -u "<>:" \ -d business_type=company \ -d "business_profile[mcc]=5999" \ --data-urlencode "business_profile[url]=https://www.wesellsocks.com" \ -d "business_profile[estimated_worker_count]=100" \ -d "business_profile[annual_revenue][amount]=1000000" \ -d "business_profile[annual_revenue][currency]=usd" \ -d "business_profile[annual_revenue][fiscal_year_end]=2023-12-31" \ -d "company[name]=Rocket Rides" \ -d "company[tax_id]=11-3456789" \ -d "company[address][line1]=123 Main St" \ -d "company[address][city]=San Francisco" \ -d "company[address][state]=CA" \ -d "company[address][postal_code]=94111" \ -d "company[address][country]=US" \ -d "settings[card_issuing][tos_acceptance][ip]=192.168.123.132" \ -d "settings[card_issuing][tos_acceptance][date]=1696634647" ``` ```curl curl https://api.stripe.com/v1/accounts/{{CONNECTED_ACCOUNT_ID}}/persons \ -u "<>:" \ -d first_name=Jenny \ -d last_name=Rosen \ -d "dob[day]=12" \ -d "dob[month]=11" \ -d "dob[year]=1978" \ -d "address[line1]=510 Townsend Street" \ -d "address[city]=San Francisco" \ -d "address[state]=CA" \ -d "address[postal_code]=94111" \ -d "address[country]=US" \ -d id_number=123456789 \ --data-urlencode "email=jenny.rosen@example.com" \ -d "relationship[representative]=true" \ -d "relationship[owner]=true" \ -d "relationship[percent_ownership]=0.75" ``` アカウント登録要件を満たす方法について、詳細は [API を利用した確認処理](https://docs.stripe.com/connect/handling-api-verification.md)をご覧ください。 この時点で、Stripe は、Issuing およびプラットフォーム向け Treasury の利用に必要な関連ケイパビリティが `active` の連結アカウントを作成し、確認を完了しています。 詳細については、以下をご覧ください。 - [Issuing と Connect の導入の設定](https://docs.stripe.com/issuing/connect.md) - [連結アカウントの Stripe のホスティング登録](https://docs.stripe.com/connect/custom/hosted-onboarding.md) - [連結アカウントの作成と使用](https://docs.stripe.com/connect/interactive-platform-guide.md?connect-charge-type=direct&connect-loss-liability-owner=platform) - [連結アカウントの本人確認](https://docs.stripe.com/connect/identity-verification.md) ## 金融口座を作成して資金を追加する プラットフォームで金融口座を有効にしたら、[FinancialAccount](https://docs.stripe.com/api/treasury/financial_accounts.md) オブジェクトを[プラットフォームアーキテクチャ](https://docs.stripe.com/treasury/connect/account-management/accounts-structure.md)に追加し、効率的な資金の保管、送受信を可能にします。Stripe では、有効化後に金融口座をプラットフォームアカウントにアタッチし、プラットフォーム上の対象となる連結アカウントごとに個人金融口座をプロビジョニングできます。 Stripe API では、`FinancialAccount` オブジェクトが資金移動の API リクエストの送金元および送金先として機能します。プラットフォーム上の金融口座に追加機能を提供するには、API を通じて `Features` をリクエストし、`FinancialAccounts` に割り当てます。 金融口座は、リンク先のアカウントの決済残高とは別個の[資金残高](https://docs.stripe.com/treasury/connect/account-management/working-with-balances-and-transactions.md)として機能します。たとえば、プラットフォーム上の連結アカウント所有者が、100 米ドルの連結アカウント残高と 200 米ドルの金融口座残高を保有している場合があります。この場合、連結アカウント所有者は金融口座残高と連結アカウント残高にまたがって、合計 300 米ドルを保有しています。これら 2 つの残高は分かれたままですが、API では連結アカウント残高から金融口座残高へ資金を移動できます。 ### 金融口座を作成する Stripe によって `treasury` ケイパビリティがアカウントに追加され、アカウントが `active` とマークされると、連結アカウントの `FinancialAccount` オブジェクトを作成できます。これを作成するには、`FinancialAccounts` を呼び出し、提供する `Features` をリクエストします。 ```curl curl https://api.stripe.com/v1/treasury/financial_accounts \ -u "<>:" \ -H "Stripe-Account: {{CONNECTEDACCOUNT_ID}}" \ -d "supported_currencies[]=usd" \ -d "features[card_issuing][requested]=true" \ -d "features[deposit_insurance][requested]=true" \ -d "features[financial_addresses][aba][requested]=true" \ -d "features[inbound_transfers][ach][requested]=true" \ -d "features[intra_stripe_flows][requested]=true" \ -d "features[outbound_payments][ach][requested]=true" \ -d "features[outbound_payments][us_domestic_wire][requested]=true" \ -d "features[outbound_transfers][ach][requested]=true" \ -d "features[outbound_transfers][us_domestic_wire][requested]=true" ``` 金融口座作成時に機能をリクエストした場合、そのレスポンスでは、`active_features`、`pending_features`、`restricted_features` パラメーターでステータスが示されます。 ```json { "object": "treasury.financial_account", "created": 1612927106, "id": "fa_123", "country": "US", "supported_currencies": ["usd"], "active_features": ["card_issuing"], "pending_features": ["financial_addresses.aba"], "restricted_features": [], // No FinancialAddress added as the financial_addresses.aba feature is not yet active "financial_addresses": [], "livemode": true, "status": "open", ... } ``` 一部の機能 (たとえば、`card_issuing`) は即時に有効化される場合があります。一方、`financial_addresses.aba` のような他の機能は[非同期で有効化され](https://docs.stripe.com/treasury/connect/account-management/financial-account-features.md#webhooks)、Stripe が外部システムと通信している間、最大 30 分間`保留中`の状態が続くことがあります。関連するすべての機能が有効になると、`treasury.financial_account.features_status_updated` Webhook リスナーで確認を受け取れます。金融口座の機能の詳細については、[利用可能な機能](https://docs.stripe.com/treasury/connect/account-management/financial-account-features.md#available-features)を参照してください。 ### 銀行口座をリンク 顧客が外部口座との間で送金できるようにするには、必要なパラメーターを使用して `SetupIntent` を作成し、外部口座を `self` に関連付けて、顧客が外部口座を所有していることを示します。 ```curl curl https://api.stripe.com/v1/setup_intents \ -u "<>:" \ -H "Stripe-Account: {{CONNECTEDACCOUNT_ID}}" \ -d attach_to_self=true \ -d "flow_directions[]=inbound" \ -d "flow_directions[]=outbound" \ -d "payment_method_types[]=us_bank_account" \ -d "payment_method_data[type]=us_bank_account" \ -d "payment_method_data[us_bank_account][routing_number]=110000000" \ -d "payment_method_data[us_bank_account][account_number]=000123456789" \ -d "payment_method_data[us_bank_account][account_holder_type]=company" \ -d "payment_method_data[billing_details][name]=Company Corp" \ -d confirm=true \ -d "mandate_data[customer_acceptance][type]=online" \ -d "mandate_data[customer_acceptance][online][ip_address]=123.123.123.123" \ --data-urlencode "mandate_data[customer_acceptance][online][user_agent]=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36" ``` API レスポンスには、ACH 送金の実行時にこの銀行口座の参照に使用された `payment_method` の一意の ID が含まれています。 ```json { "id": "{{SETUP_INTENT_ID}}", "object": "setup_intent", "next_action": { "type": "verify_with_microdeposits", "verify_with_microdeposits": { "arrival_date": 1642579200, "hosted_verification_url": "https://payments.stripe.com/microdeposit/sacs_test_xxx", "microdeposit_type": "amounts" } }, ... "payment_method": "{{PAYMENT_METHOD_ID}}", "payment_method_types": [ "us_bank_account" ] } ``` 銀行口座を利用できるようにするには、少額入金 (ここで説明しているオプション) か、高速サービスの [Financial Connections](https://docs.stripe.com/financial-connections.md) を使用して口座を確認する必要があります。前のステップで説明された `SetupIntent` のレスポンスには、`hosted_verification_url` が含まれます。この URL を顧客に提示して、関連する少額入金の明細書表記コードを顧客が入力できるようにする必要があります。値 `SM11AA` を使用して銀行口座を確認するか、Stripe が提供する[テスト用口座番号](https://docs.stripe.com/payments/ach-direct-debit/set-up-payment.md?platform=web&payment-ui=stripe-hosted#test-account-numbers)を使用して、その他さまざまなケースをテストします。 ![少額入金の確認](https://b.stripecdn.com/docs-statics-srv/assets/microdeposit-verification.a9151fafd6f3582cb8a268bf7b1b306e.png) 少額入金の確認 ### 金融口座に資金を追加する #### 埋込型 アプリで埋め込み型の[金融口座コンポーネント](https://docs.stripe.com/connect/supported-embedded-components/financial-account.md)を使用すると、連結アカウントが金融口座に売上を送金できるようになります。 ## アカウントセッションを作成する [アカウントセッションを作成する](https://docs.stripe.com/api/account_sessions/create.md)際に、`components` パラメーターで `financial_account` を指定して、金融口座コンポーネントを有効にします。金融口座コンポーネントの個々の機能は `financial_account` で `features` パラメーターを指定することで、有効または無効を設定できます。 ```curl curl https://api.stripe.com/v1/account_sessions \ -u "<>:" \ -d "account={{CONNECTEDACCOUNT_ID}}" \ -d "components[financial_account][enabled]=true" \ -d "components[financial_account][features][send_money]=true" \ -d "components[financial_account][features][transfer_balance]=true" \ -d "components[financial_account][features][external_account_collection]=true" ``` アカウントセッションを作成して [ConnectJS を初期化](https://docs.stripe.com/connect/get-started-connect-embedded-components.md#account-sessions)すると、フロントエンドに金融口座コンポーネントを表示できます。 #### JavaScript ```js // Include this element in your HTML const financialAccount = stripeConnectInstance.create('financial-account'); financialAccount.setFinancialAccount('{{FINANCIAL_ACCOUNT_ID}}') container.appendChild(financialAccount); ``` ここから、ユーザーは**資金を移動**をクリックして送金を開始できます。 #### API 以下のリクエストは、`account-attached` の支払い方法を使用して、指定された ID の金融口座に 200 ドルを送金します。`Stripe-Account` ヘッダー値は、金融口座と支払い方法の両方を所有する Stripe アカウントを識別します。 ```curl curl https://api.stripe.com/v1/treasury/inbound_transfers \ -u "<>:" \ -H "Stripe-Account: {{CONNECTEDACCOUNT_ID}}" \ -d origin_payment_method={{PAYMENT_METHOD_ID}} \ -d financial_account={{FINANCIAL_ACCOUNT_ID}} \ -d amount=20000 \ -d currency=usd \ -d "description=Funds for repair" \ -d "statement_descriptor=Invoice 12" ``` 成功すると、レスポンスで `InboundTransfer` オブジェクトが提供されます。このオブジェクトには、`hosted_regulatory_receipt_url` が含まれ、Homebox プラットフォームのアカウント所有者が取引詳細にアクセスできるようにします。 ```json { "id": "{{INBOUND_TRANSFER_ID}}", "object": "inbound_transfer", "amount": 20000, "created": 1648071297, "currency": "usd", "description": "Funds for repair", "financial_account": "{{FINANCIAL_ACCOUNT_ID}}", "hosted_regulatory_receipt_url": "https://payments.stripe.com/regulatory-receipt/{{IBT_URL}}", "linked_flows": null, "livemode": false, "metadata": {}, "origin_payment_method": "{{PAYMENT_METHOD_ID}}", ... "statement_descriptor": "Invoice 12", "status": "processing", ... } ``` この時点で連結アカウントには `FinancialAccount` があります。この口座には、`InboundTransfer` から受け取った資金が入っています。この資金はカードまたは `OutboundPayments` (ACH や電信送金など) を使用して支出に使用できます。 詳細については、以下をご覧ください。 - [InboundTransfers の権限の取得](https://docs.stripe.com/treasury/connect/moving-money/working-with-bankaccount-objects.md#permissions) - [プラットフォーム向け Treasury の使用](https://docs.stripe.com/treasury/connect/account-management/financial-accounts.md) - [Stripe Treasury を使用した資金移動](https://docs.stripe.com/treasury/connect/examples/moving-money.md#microdeposits) - [金融口座の機能リクエスト](https://docs.stripe.com/treasury/connect/account-management/financial-account-features.md#available-features) - [SetupIntent、PaymentMethod、BankAccount を使用する](https://docs.stripe.com/treasury/connect/moving-money/working-with-bankaccount-objects.md) - [InboundTransfer オブジェクトを使用した資金移動](https://docs.stripe.com/treasury/connect/moving-money/into/inbound-transfers.md) - [ReceivedCredit オブジェクトを使用した資金移動](https://docs.stripe.com/treasury/connect/moving-money/into/received-credits.md) ## カード保有者とカードを作成する #### 埋込型 [Cardholeder (カード保有者)](https://docs.stripe.com/api/issuing/cardholder/object.md)は、関連残高からカードへの資金追加が企業顧客によって承認された個人 (従業員または請負業者) です。`Cardholder` オブジェクトには、カードに表示される [name (名前)](https://docs.stripe.com/api/issuing/cardholders/object.md#issuing_cardholder_object-name) や [billing (請求先)](https://docs.stripe.com/api/issuing/cardholders/object.md#issuing_cardholder_object-billing) 住所 (通常は連結アカウントまたはプラットフォームの企業住所) など、関連する詳細が含まれています。 埋め込み型の [Issuing カードのリストコンポーネント](https://docs.stripe.com/connect/supported-embedded-components/issuing-cards-list.md)を使用して、連結アカウントがカード保有者の [Card (カード)](https://docs.stripe.com/api/issuing/cards/object.md) を作成し、それを金融口座に関連付けられるようにすることができます。 Note: The following is a preview/demo component that behaves differently than live mode usage with real connected accounts. The actual component has more functionality than what might appear in this demo component. For example, for connected accounts without Stripe dashboard access (custom accounts), no user authentication is required in production. [アカウントセッションを作成する](https://docs.stripe.com/api/account_sessions/create.md)際に、`components` パラメーターで `issuing_cards_list` を指定して、Issuing カードリストコンポーネントを有効にします。Issuing カードリストコンポーネントの個々の機能は `issuing_cards_list` で `features` パラメーターを指定することで、有効または無効を設定できます。 ```curl curl https://api.stripe.com/v1/account_sessions \ -u "<>:" \ -d "account={{CONNECTEDACCOUNT_ID}}" \ -d "components[issuing_cards_list][enabled]=true" \ -d "components[issuing_cards_list][features][card_management]=true" \ -d "components[issuing_cards_list][features][cardholder_management]=true" \ -d "components[issuing_cards_list][features][card_spend_dispute_management]=true" \ -d "components[issuing_cards_list][features][spend_control_management]=true" ``` アカウントセッションを作成して [ConnectJS を初期化](https://docs.stripe.com/connect/get-started-connect-embedded-components.md#account-sessions)すると、フロントエンドに Issuing カードリストコンポーネントを表示できます。 #### JavaScript ```js // Include this element in your HTML const issuingCardsList = stripeConnectInstance.create('issuing-cards-list'); issuingCardsList.setShowSpendControls(true); container.appendChild(issuingCardsList); ``` ここで、ユーザーは**カードを作成**をクリックして、新しいカード保有者とカードの作成を開始できます。ユーザーはカードを作成中に有効化することも、または後から有効化することもできます。 この時点で、有効なカードがカード保有者と金融口座に関連付けられています。カードとカード保有者の情報を確認するには、連結アカウントの [Issuing ページ](https://dashboard.stripe.com/issuing/overview)をご覧ください。 詳細については、以下をご覧ください。 - [Issuing のバーチャルカード](https://docs.stripe.com/issuing/cards/virtual.md) - [物理カード](https://docs.stripe.com/issuing/cards/physical.md) - [Connect で Issuing のダッシュボードを使用する](https://docs.stripe.com/issuing/connect.md#using-dashboard-issuing) - [API でカードを作成する](https://docs.stripe.com/api/issuing/cards.md) #### API ### カード保有者を作成する [Cardholder (カード保有者)](https://docs.stripe.com/api/.md#issuing_cardholder_object) は、`FinancialAccount` からカードへの資金追加が企業顧客によって承認された個人 (従業員または請負業者) です。`Cardholder` オブジェクトには、カードに表示される [name (名前)](https://docs.stripe.com/api/issuing/cardholders/object.md#issuing_cardholder_object-name) や [billing (請求先)](https://docs.stripe.com/api/issuing/cardholders/object.md#issuing_cardholder_object-billing) 住所 (通常は連結アカウントまたはプラットフォームの企業住所) など、関連する詳細が含まれています。 以下の API コールにより、新しい `Cardholder` が作成されます。 ```curl curl https://api.stripe.com/v1/issuing/cardholders \ -u "<>:" \ -H "Stripe-Account: {{CONNECTEDACCOUNT_ID}}" \ -d "name=Jenny Rosen" \ --data-urlencode "email=jenny.rosen@example.com" \ --data-urlencode "phone_number=+18008675309" \ -d status=active \ -d type=individual \ -d "individual[first_name]=Jenny" \ -d "individual[last_name]=Rosen" \ -d "individual[dob][day]=1" \ -d "individual[dob][month]=11" \ -d "individual[dob][year]=1981" \ -d "billing[address][line1]=123 Main Street" \ -d "billing[address][city]=San Francisco" \ -d "billing[address][state]=CA" \ -d "billing[address][postal_code]=94111" \ -d "billing[address][country]=US" ``` Stripe は指定された情報が格納された `Cardholder` オブジェクトを返し、`issuing_cardholder.created` Webhook イベントを送信します。 ### カードを作成する カードを作成し、そのカードの承認済みユーザーにする `Cardholder` とカード支出への資金提供に使用される `FinancialAccount` に関連付けます。 以下の例では、[バーチャルカード](https://docs.stripe.com/issuing/cards/virtual.md)の作成方法を示しています。ただし、本番環境では、[物理カード](https://docs.stripe.com/issuing/cards/physical.md)を作成してカード保有者に配送することもできます。 ```curl curl https://api.stripe.com/v1/issuing/cards \ -u "<>:" \ -d currency=usd \ -d type=virtual \ -d "cardholder={{ISSUINGCARDHOLDER_ID}}" ``` Stripe は `Card` オブジェクトを作成時に返し、`issuing_card.created` Webhook イベントを送信します。 ```json { "id": "ic_1NvPjF2SSJdH5vn2OVbE7r0b", "object": "issuing.card", "brand": "Visa", ... "status": "inactive", "type": "virtual" } ``` ユーザーがカードを使用できるようにするには、カードを有効化する必要があります。バーチャルカードは、作成に使用した API コールを使用して有効化できますが、物理カードは別途有効化する必要があります。準備ができたら、`status` に `active` のマークを付けてカードを有効化します。 ```curl curl https://api.stripe.com/v1/issuing/cards/ic_1NvPjF2SSJdH5vn2OVbE7r0b \ -u "<>:" \ -d status=active ``` この時点で、有効なカードがカード保有者と金融口座に関連付けられています。カードとカード保有者の情報を確認するには、連結アカウントの [Issuing ページ](https://dashboard.stripe.com/issuing/overview)をご覧ください。 ```json { "id": "ic_1NvPjF2SSJdH5vn2OVbE7r0b", "object": "issuing.card", "brand": "Visa", ... "status": "active", "type": "virtual" } ``` 詳細については、以下をご覧ください。 - [バーチャルカード](https://docs.stripe.com/issuing/cards/virtual.md) - [物理カード](https://docs.stripe.com/issuing/cards/physical.md) - [Connect で Issuing のダッシュボードを使用する](https://docs.stripe.com/issuing/connect.md#using-dashboard-issuing) - [API でカードを作成する](https://docs.stripe.com/api/issuing/cards.md) ## カードを使用する ### オーソリを作成する 関連残高へのカードアクティビティの影響を確認するには、テスト用オーソリを生成します。テスト用オーソリの作成は、連結アカウントのダッシュボードの **Issuing ページ**で行うか、[Authorization API](https://docs.stripe.com/api/issuing/authorizations.md) に対する以下のコールを使用して行うことができます。 ```curl curl https://api.stripe.com/v1/test_helpers/issuing/authorizations \ -u "<>:" \ -d "card={{ISSUINGCARD_ID}}" \ -d amount=1000 \ -d authorization_method=chip \ -d "merchant_data[category]=taxicabs_limousines" \ -d "merchant_data[city]=San Francisco" \ -d "merchant_data[country]=US" \ -d "merchant_data[name]=Rocket Rides" \ -d "merchant_data[network_id]=1234567890" \ -d "merchant_data[postal_code]=94107" \ -d "merchant_data[state]=CA" ``` 承認後、Stripe は[キャプチャー](https://docs.stripe.com/issuing/purchases/transactions.md)を待っている間に `pending` 状態の `Authorization` を作成します。売上のキャプチャーに使用する オーソリの `id` に注意してください。 ```json {"id": "iauth_1NvPyY2SSJdH5vn2xZQE8C7k", "object": "issuing.authorization", "amount": 1000, ... "status": "pending", "transactions": [] } ``` 金融口座の残高詳細を取得し、オーソリの影響を確認できます。 ```curl curl https://api.stripe.com/v1/treasury/financial_accounts/{{TREASURYFINANCIALACCOUNT_ID}} \ -u "<>:" \ -H "Stripe-Account: {{CONNECTEDACCOUNT_ID}}" ``` API レスポンスは、資金とその利用可能状況の詳細を示す `balance` ハッシュが含まれた `FinancialAccount` オブジェクトです。 ```json { "object": "treasury.financial_account", "id": "{{FINANCIAL_ACCOUNT_ID}}", ... "balance": { "cash": {"usd": 19000}, "inbound_pending": {"usd": 0}, "outbound_pending": {"usd": 1000} } } ``` このレスポンスは、現在 190 USD が利用可能であり、さらに `pending` オーソリからの `outbound_pending` に 10 USD が保持されていることを示しています。これで、API でオーソリのキャプチャーをシミュレーションできます。 ### 売上をキャプチャーする 以下のコードを使用して売上をキャプチャーします。 ```curl curl -X POST https://api.stripe.com/v1/test_helpers/issuing/authorizations/{{ISSUINGAUTHORIZATION_ID}}/capture \ -u "<>:" ``` オーソリがキャプチャーされると、Stripe は Issuing の[取引](https://docs.stripe.com/issuing/purchases/transactions.md)を作成します。オーソリの `status` は `closed` に設定され、これらの詳細が含まれた `ReceivedDebit` Webhook が作成されます。金融口座の残高詳細を再取得すると、`outbound_pending` が現在 0 USD で、利用可能な現金が 190 USD であることが確認できます。 ```json { "object": "treasury.financial_account", "id": "{{FINANCIAL_ACCOUNT_ID}}", ... "balance": { "cash": {"usd": 19000}, "inbound_pending": {"usd": 0}, "outbound_pending": {"usd": 0} } } ``` ## See also - [支出管理](https://docs.stripe.com/issuing/controls/spending-controls.md) - [Issuing のオーソリ](https://docs.stripe.com/issuing/purchases/authorizations.md) - [Issuing の取引](https://docs.stripe.com/issuing/purchases/transactions.md) - [Issuing カードとプラットフォーム向け Treasury を使用する](https://docs.stripe.com/treasury/connect/account-management/issuing-cards.md) - [取引の不正利用の管理](https://docs.stripe.com/issuing/manage-fraud.md)