埋込型金融の導入ガイド
Issuing と Treasury を使用して埋込型金融サービスシステムを構築します。
Stripe の Issuing と Treasury を使用して、アメリカの埋込型金融サービスオファリングを構築します。Issuing を使用してカードを作成し、Treasury を使用して残高を保管し、カード支出の資金に充当します。
このガイドでは、以下の方法について説明します。
- 関連する Issuing と Treasury のケイパビリティが付与された企業顧客を表す確認済みの連結アカウントを作成する
- 企業顧客のウォレットとしての使用が可能で外部銀行口座を使用して資金を追加できる金融口座を作成する
- 企業顧客向けのバーチャルカードを作成してカードを使用してウォレットから支出する方法
はじめに
- 登録して Stripe アカウントを作成します。
- ダッシュボードで Issuing と Treasury のテスト環境での使用を有効化します。詳しくは、Issuing と Treasury への API アクセスをご覧ください。
- 自社の Connect プラットフォームのブランディング設定を行い、アイコンを追加します。
連結アカウントを作成する
連結アカウントを作成する
プラットフォームのビジネス顧客を表す連結アカウントを作成します。たとえば、飲食店向けの SaaS プラットフォームの場合、各飲食店が 1 件の連結アカウントとして表されます。
Connect アカウントのタイプ
Issuing は、Stripe がホストするダッシュボードを使用せず、プラットフォームが要件の収集と損失に対する責任を負う連結アカウント (Custom 連結アカウントとも呼ばれる) のみをサポートします。詳しくは、Issuing と連携可能な連結アカウントの作成方法をご確認ください。既存のアカウントがこの設定に当てはまらない場合は、アカウントを再作成する必要があります。
以下のリクエストによって、アメリカを拠点とする連結アカウントが適切な設定で新規作成され、必須のケイパビリティがリクエストされます。
ユーザーのアカウント情報がレスポンスに表示されます。
{ ... "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
ヘッダーでリクエストすることにより、連結アカウントとして認証します。
連結アカウントがすでに存在する場合は、リクエストで連結アカウントの id
を指定することで、必要なケイパビリティを追加できます。
連結アカウントを確認する
次のアカウント登録オプションのいずれかを選択します。
この時点で、Stripe は Issuing と Treasury の使用に関連するケイパビリティが active
に設定された連結アカウントを作成し、確認しています。
詳細については、以下をご覧ください。
金融口座を作成して資金を追加する
プラットフォームで Treasury を有効にした後に、FinancialAccount オブジェクトをプラットフォームアーキテクチャーに追加して、資金の保管、送金、受け取りを効率化します。有効化の後に Stripe は金融口座をプラットフォームのアカウントに関連付けます。これにより、プラットフォームの対象連結アカウントにそれぞれ金融口座をプロビジョニングできるようになります。
Stripe API では、FinancialAccount
オブジェクトが資金移動の API リクエストの送金元および送金先として機能します。プラットフォーム上の金融口座に追加機能を提供するには、API を通じて Features
をリクエストし、FinancialAccounts
に割り当てます。
金融口座は、関連付けられているアカウントの連結アカウントの支払い残高とは異なる資金の残高を運用します。たとえば、プラットフォーム上の連結アカウントの所有者が 100 USDの連結アカウント残高と 200 USDの金融口座残高を保有しているとします。この場合、連結アカウントの所有者は金融口座と連結アカウントの残高全体で、合計 300 USDを所有していることになります。この 2 つの残高は別々に維持されますが、API により、連結アカウントの残高から金融口座の残高に資金が移動できるようになります。
複数の金融口座
Multiple Financial Account のベータ機能を使用すると、1 件の連結アカウントに対して複数の金融口座を開設できます。この機能のテスト環境にアクセスし、待機リストに登録するには、treasury-support-jp@stripe.com にご連絡ください。
金融口座を作成する
Stripe によって treasury
ケイパビリティがアカウントに追加され、アカウントが active
とマークされると、連結アカウントの FinancialAccount
オブジェクトを作成できます。これを作成するには、FinancialAccounts
を呼び出し、提供する Features
をリクエストします。
金融口座作成時に機能をリクエストした場合、そのレスポンスでは、active_
、pending_
、restricted_
パラメーターでステータスが示されます。
{ "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_
など) によっては、有効化が即時実行されますが、中には financial_
のように、非同期で有効化される機能もあります。こうした機能の場合、Stripe が外部システムと通信している間に最大で 30 分 pending
の状態になることがあります。関連機能がすべて有効になると、treasury.
Webhook リスナーに確認メッセージが表示されます。金融口座の各機能についての詳細は、利用可能な機能をご確認ください。
銀行口座を関連付ける
顧客が外部口座に送受金できるようにするには、必須のパラメーターを指定して SetupIntent
を作成し、self
に関連付けて外部口座が顧客所有のものであることを示します。
API レスポンスには、ACH 送金の実行時にこの銀行口座の参照に使用された payment_
の一意の ID が含まれています。
{ "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 を使用して口座を確認する必要があります。前のステップで説明された SetupIntent
のレスポンスには、hosted_
が含まれます。この URL を顧客に提示して、関連する少額入金の明細書表記コードを顧客が入力できるようにする必要があります。値 SM11AA
を使用して銀行口座を確認するか、Stripe が提供するテスト用口座番号を使用して、その他さまざまなケースをテストします。
少額入金の確認
金融口座に資金を追加する
この時点で連結アカウントには FinancialAccount
があります。この口座には、InboundTransfer
から受け取った資金が入っています。この資金はカードまたは OutboundPayments
(ACH や電信送金など) を使用して支出に使用できます。
詳細については、以下をご覧ください。
カードを使用する
オーソリを作成する
関連残高へのカードアクティビティの影響を確認するには、テスト用オーソリを生成します。テスト用オーソリの作成は、連結アカウントのダッシュボードの Issuing ページで行うか、Authorization API に対する以下のコールを使用して行うことができます。
承認後、Stripe はキャプチャーを待っている間に pending
状態の Authorization
を作成します。売上のキャプチャーに使用する オーソリの id
に注意してください。
{ "id": "iauth_1NvPyY2SSJdH5vn2xZQE8C7k", "object": "issuing.authorization", "amount": 1000, ... "status": "pending", "transactions": [], }
金融口座の残高詳細を取得し、オーソリの影響を確認できます。
API レスポンスは、資金とその利用可能状況の詳細を示す balance
ハッシュが含まれた FinancialAccount
オブジェクトです。
{ "object": "treasury.financial_account", "id": "{{FINANCIAL_ACCOUNT_ID}}", ... "balance": { "cash": {"usd": 19000}, "inbound_pending": {"usd": 0}, "outbound_pending": {"usd": 1000} } }
このレスポンスは、現在 190 USD が利用可能であり、さらに pending
オーソリからの outbound_
に 10 USD が保持されていることを示しています。これで、API でオーソリのキャプチャーをシミュレーションできます。
売上をキャプチャーする
以下のコードを使用して売上をキャプチャーします。
オーソリがキャプチャーされると、Stripe は Issuing の取引を作成します。オーソリの status
は closed
に設定され、これらの詳細が含まれた ReceivedDebit
Webhook が作成されます。金融口座の残高詳細を再取得すると、outbound_
が現在 0 USD で、利用可能な現金が 190 USD であることが確認できます。
{ "object": "treasury.financial_account", "id": "{{FINANCIAL_ACCOUNT_ID}}", ... "balance": { "cash": {"usd": 19000}, "inbound_pending": {"usd": 0}, "outbound_pending": {"usd": 0} } }