埋込型金融の導入ガイド
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_features
、pending_features
、restricted_features
パラメーターでステータスが示されます。
{ "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
のように非同期で有効化される機能もあります。こうした機能の場合、Stripe が外部システムと通信している間に最大で 30 分 pending
の状態になる可能性があります。関連機能がすべて有効になると、treasury.financial_account.features_status_updated
Webhook リスナーに確認メッセージが表示されます。金融口座機能について、詳細は使用できる機能を参照してください。
銀行口座を関連付ける
顧客が外部口座に送受金できるようにするには、必須のパラメーターを指定して SetupIntent
を作成し、self
に関連付けて外部口座が顧客所有のものであることを示します。
API レスポンスには、ACH 送金の実行時にこの銀行口座の参照に使用された payment_method
の一意の 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_verification_url
が含まれます。この URL を顧客に提示して、関連する少額入金の明細書表記コードを顧客が入力できるようにする必要があります。値 SM11AA
を使用して銀行口座を確認するか、Stripe が提供するテスト用口座番号を使用して、その他の多様なケースをテストします。
少額入金の確認
金融口座に資金を追加する
この時点で連結アカウントには FinancialAccount
があります。この口座には、InboundTransfer
から受け取った資金が入っています。この資金はカードまたは OutboundPayments
(ACH や電信送金など) を使用して支出に使用できます。
詳細については、以下をご覧ください。
カードを使用する
オーソリを作成する
関連残高へのカードアクティビティの影響を観察するには、テスト用オーソリを作成します。テスト用オーソリを作成するには、連結アカウントのダッシュボードの発行ページを使用するか、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_pending
に 10 USD が保持されていることを示しています。これで、API でオーソリのキャプチャーをシミュレーションできます。
売上をキャプチャーする
以下のコードを使用して売上をキャプチャーします。
オーソリがキャプチャーされると、Stripe は Issuing 取引を作成し、オーソリの status
が closed
に設定され、これらの詳細が指定された ReceivedDebit
Webhook が作成されます。金融口座の残高詳細を再度取得すると、outbound_pending
が現在 0 USD で、利用可能な現金が 190 USD であることが分かります。
{ "object": "treasury.financial_account", "id": "{{FINANCIAL_ACCOUNT_ID}}", ... "balance": { "cash": {"usd": 19000}, "inbound_pending": {"usd": 0}, "outbound_pending": {"usd": 0} } }