# Custom アカウントの登録ソリューション ビジネスに適した Custom アカウントの登録方法を選択します。 > #### 新しい Connect の連携機能 > > このページの情報は、レガシーの連結アカウントタイプをすでにご利用になっているプラットフォームにのみ該当します。連結アカウントのユーザー登録については、[ユーザー登録設定の選択](https://docs.stripe.com/connect/onboarding.md)をご覧ください。 Stripe は、Custom 連結アカウントのアカウント登録の方法をいくつか提供しています。ビジネスに最適なアカウント登録の方法を選択できます。 Stripe がホストするアカウント登録コンポーネントまたは埋め込み型アカウント登録コンポーネントを使用することをお勧めします。どちらも、連結アカウントに適用される要件の変更に合わせ、自動的に更新されます。埋め込みコンポーネントを使用することで、[ブランドイメージに合わせたアカウント登録テーマの作成](https://docs.stripe.com/connect/customize-connect-embedded-components.md)、および[表示するポリシーと条件の設定](https://docs.stripe.com/connect/embedded-onboarding.md#customize-policies-shown-to-your-users)が可能になります。 | 方法 | 長所 | 短所 | | ------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- | | [Stripe のホスティング登録](https://docs.stripe.com/connect/custom/onboarding.md#stripe-hosted-onboarding) | - 導入の負担が最も小さい | - Stripe のブランド名を使用して、プラットフォームのブランディングを制限 - フローロジックに対する制御に制限がある - 連結アカウントは、貴社のサイトを離れずにプロセスを完了するのではなく、Stripe にリダイレクトされる | | [埋め込みアカウント登録](https://docs.stripe.com/connect/custom/onboarding.md#embedded-onboarding) | - [カスタマイズの自由度が高い](https://docs.stripe.com/connect/customize-connect-embedded-components.md) - Stripe 以外のブランディングに限定 - 連結アカウントは自社サイトのフローに残る - 導入の負担が小さい | - フローロジックに対する制御に制限がある | | [API ベースのアカウント登録](https://docs.stripe.com/connect/custom/onboarding.md#api-based-onboarding) | - 自社の UI を完全にコントロールする | - 構築するのに高額の費用と時間がかかる - 維持管理の負担が増大し続ける (特に、絶えず変化するグローバル要件への対応の負担が大きい) - Stripe のリスク審査を解決することはできません | ## Stripe のホスティング登録 Stripe のホスティング登録では、ユーザーを Stripe にリダイレクトして、ブランド定型のインターフェイスでアカウント登録プロセスを完了できます。[Account Link](https://docs.stripe.com/api/account_links.md) を作成して、ユーザーをホスティング登録フローに誘導します。[return_url](https://docs.stripe.com/api/account_links/create.md#create_account_link-return_url) を使用すると、Stripe はユーザーをお客様のアプリケーションに戻せるようになるため、それに応じてお客様は連結アカウントの手順を先に進められるようになります。 Stripe のホスティング登録を実装するには、[Stripe のホスティング登録に関するガイド](https://docs.stripe.com/connect/custom/hosted-onboarding.md)に従ってください。 (See full diagram at https://docs.stripe.com/connect/custom/onboarding) ## 埋め込みアカウント登録 埋め込みベースのアカウント登録は、Stripe のブランディングが制限された、柔軟にテーマ設定可能なアカウント登録用 UI です。連結アカウントのユーザーは、アプリケーションを離れることなく埋め込みコンポーネントを操作できます。埋め込みベースのアカウント登録では、[Accounts API](https://docs.stripe.com/api/accounts.md) で要件が読み取られた後、Stripe がサポートされているすべての国に適応し、堅牢なデータ検証機能を備えたアカウント登録フォームが生成されます。さらに、埋め込みベースのアカウント登録では、次のすべてが処理されます。 - ビジネスのタイプ - 会社代表者の設定 - 確認書類のアップロード - 本人確認とステータス - 海外の銀行口座 - エラーの状態 埋め込みベースのアカウント登録は数行のコードで実装できますが、API ベースのアカウント登録ではカスタムロジックを構築する必要があります。埋め込みベースのアカウント登録を実装するには、[埋め込みコンポーネントガイド](https://docs.stripe.com/connect/get-started-connect-embedded-components.md)に従い、[アカウント登録](https://docs.stripe.com/connect/supported-embedded-components/account-onboarding.md)用の埋め込みコンポーネントを実装します。 (See full diagram at https://docs.stripe.com/connect/custom/onboarding) 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. ## API ベースのアカウント登録 API ベースのアカウント登録には、対応する Stripe API を呼び出すための、お客様のサイトのアカウント登録ユーザーインターフェイスの各側面の構築が含まれます。実装は Stripe のアカウント登録要件のすべてを満たしている必要があります。 (See full diagram at https://docs.stripe.com/connect/custom/onboarding) ### 要件を定める 以下の要因は、連結アカウントの[登録要件](https://docs.stripe.com/connect/required-verification-information.md)に影響します。 - 連結アカウントの所在国 - 連結アカウントに適用される[利用規約タイプ](https://docs.stripe.com/connect/service-agreement-types.md) - 連結アカウントでリクエストされる[ケイパビリティ](https://docs.stripe.com/connect/account-capabilities.md) - [business_type](https://docs.stripe.com/api/accounts/object.md#account_object-business_type) (個人または会社など) および [company.structure](https://docs.stripe.com/api/accounts/object.md#account_object-company-structure) (`public_corporation` または `private_partnership` など) [必須情報確認](https://docs.stripe.com/connect/required-verification-information.md)ツールを使用して、これらの要素の変更が連結アカウントのアカウント登録要件にどのように影響するかを確認します。 ### 情報を収集するフォームを作成する ベストプラクティスとして、必須パラメーターをアカウント登録フローの論理グループまたはフォームに分類します。Stripe のパラメーターと論理グループのマッピングをエンコードすることもできます。パラメーターに推奨される論理グループは、サンプルの要件表の 1 列目に表示されています。 必須パラメーターをアプリケーションにエンコードした後で、これらの要件に対応するパラメーターの UI を生成します。パラメーターごとに、以下を含む UI フォームを設計します。 - それぞれ対応する国と言語に合わせたパラメーターのラベル - それぞれ対応する国と言語に合わせたパラメーターの説明 - 必要に応じてデータ検証ロジックと書類のアップロード機能を備えた、パラメーターの入力フィールド 今後パラメーターが追加される可能性を考慮して、アプリケーションロジックを構築することが重要です。たとえば、Stripe が新しいパラメーター、新しい確認、新しいしきい値を導入し、それらを徐々にアカウント登録フローに組み込む必要がある場合が考えられます。 連結アカウントの要件を決定する要因のいずれかを変更すると、回収フォームの調整も必要になります。 [国](https://docs.stripe.com/api/accounts/object.md#account_object-country) と[利用規約の種類](https://docs.stripe.com/api/accounts/object.md#account_object-tos_acceptance-service_agreement) は不変ですが、[capabilities](https://docs.stripe.com/api/accounts/object.md#account_object-capabilities) と[ビジネスタイプ](https://docs.stripe.com/api/accounts/object.md#account_object-business_type) は変更できません。 - 国や利用規約の種類などの変更不可のフィールドを変更するには、新しい値で連結アカウントを新規作成します。こうすることで、収集フローに組み込む新しい要件が作成されます。 - ケイパビリティやビジネスタイプなどの変更可能なフィールドを変更するには、連結アカウントを更新します。こうすることで、収集フローに組み込む新しい要件が作成されます。 ### Stripe 利用規約への同意を含める 連結アカウントは、有効化する前に Stripe 利用規約に同意する必要があります。[Stripe 利用規約を自社の利用規約に含める](https://docs.stripe.com/connect/updating-service-agreements.md#adding-stripes-service-agreement-to-your-terms-of-service)ことができます。 ### 連結アカウントを作成する [Create Account](https://docs.stripe.com/api/accounts/create.md) API を使用して、国、利用規約への同意 、希望するケイパビリティ、ビジネスタイプ、[要件](https://docs.stripe.com/connect/custom/onboarding.md#establish-requirements)に合ったその他の情報を指定して連結アカウントを作成します。少なくとも `capabilities` と `type` は指定する必要があります。その他のパラメーターを指定しない場合は、以下のデフォルト値が割り当てられます。 - 利用規約への同意 (`tos_acceptance.service_agreement`) は、デフォルトで `full` に設定されます。 - `country` は、デフォルトでプラットフォームと同じ国に設定されます。 次のコード例は、個人用の利用規約の全文に基づき、`card_payments` と `transfers` ケイパビリティを指定して、Custom の連結アカウントを作成します。 > この例には、アカウント作成時に設定できるフィールドの一部のみが含まれています。 `address` や `website_url` など、設定可能なフィールドの一覧については、[Create Account API リファレンス](https://docs.stripe.com/api/accounts/create.md) をご覧ください。 ```curl curl https://api.stripe.com/v1/accounts \ -u "<>:" \ -d country=US \ -d type=custom \ -d "capabilities[card_payments][requested]=true" \ -d "capabilities[transfers][requested]=true" ``` ### アカウントにアカウント登録フローをガイドする 連結アカウントを有効にするには次の 2 種類の方法を使用できます。 - インクリメンタルアカウント登録方式: 最小限の[必要な情報](https://docs.stripe.com/connect/custom/onboarding.md#establish-requirements)を事前に収集して、残りの情報を後で収集する - アップフロントアカウント登録方式: すべての情報を事前に収集する インクリメンタルアカウント登録方式は、アカウントの初期登録のスピードを上げますが、後から追加の情報収集が必要になります。アップフロントアカウント登録方式は、申請プロセスが長くはなりますが、それと引き換えに連結アカウントのライフサイクル全体で利用の中断を最小限に抑えます。実際のユースケースに合った方式を選択してください。 アカウント登録方式を実装するには、作成した連結アカウントの要件ハッシュを調査します。要件ハッシュは、連結アカウントを有効化するために収集する必要があるパラメーターの一覧を提供します。 - インクリメンタルアカウント登録方式を選択する場合、要件ハッシュの `currently_due` フィールドを確認して、リストに表示されたパラメーターのみを収集するアカウント登録フローを構築します。 - アップフロントアカウント登録方式を選択する場合、要件ハッシュの `eventually_due` フィールドを確認して、リストに表示されたすべてのパラメーターを収集するアカウント登録フローを構築します。 ```json { ... "requirements": { "alternatives": [], "current_deadline": null, "currently_due": [ "business_profile.product_description", "business_profile.support_phone", "business_profile.url", "external_account", "tos_acceptance.date", "tos_acceptance.ip" ], "disabled_reason": "requirements.past_due", "errors": [],"eventually_due": [ "business_profile.product_description", "business_profile.support_phone", "business_profile.url", "external_account", "tos_acceptance.date", "tos_acceptance.ip" ], "past_due": [], "pending_verification": [] }, ... } ``` ### 連結アカウントを更新する アカウント登録フローを進む中で、連結アカウントオブジェクトを新しい情報で更新します。[Update Account](https://docs.stripe.com/api/accounts/update.md) コールを実行し、以前保存した `id` 値で連結アカウントを識別します。 ```curl curl https://api.stripe.com/v1/accounts/{{CONNECTEDACCOUNT_ID}} \ -u "<>:" \ --data-urlencode "business_profile[url]=https://furever.dev" \ -d "tos_acceptance[date]=1609798905" \ -d "tos_acceptance[ip]=8.8.8.8" ``` Stripe は連結アカウントに対するすべての更新を検証します。アカウント登録のステップごとにアカウントを更新することで、ユーザーがアカウント登録フローを継続している間に、Stripe は情報が追加され次第、検証することができます。Stripe が利用規約への同意を確認した後で、連結アカウントに対する変更が発生すると、再確認が実行されます。たとえば、連結アカウントの名前と ID 番号を変更した場合、Stripe は本人確認を再実行します。 連結アカウントを更新する際、Accounts API によって返されるすべての[確認エラー](https://docs.stripe.com/connect/custom/onboarding.md#verification-handling)や [HTTP エラーコード](https://docs.stripe.com/error-handling.md)を処理する必要があります。 ## 確認の処理 連結アカウントのデータが送信されると、Stripe はそれを確認します。このプロセスには、確認の性質に応じて数分または数時間かかる場合があります。このプロセスの進行中、リクエストしたケイパビリティの `status` は `pending` になります。 ### ステータスを確認する 連結アカウントのケイパビリティのステータスは、以下によって取得できます。 - Account オブジェクトの [capabilities](https://docs.stripe.com/api/accounts/object.md#account_object-capabilities) ハッシュで、関連するケイパビリティを確認します。 - [Capabilities API](https://docs.stripe.com/api/capabilities/retrieve.md) から直接ケイパビリティをリクエストし、関連するケイパビリティのステータスを確認します。 - [Webhook](https://docs.stripe.com/connect/webhooks.md) エンドポイントで `account.updated` [イベント](https://docs.stripe.com/api/events/types.md#event_types-account.updated)をリッスンし、関連するケイパビリティの `capabilities` ハッシュを確認します。 確認が完了すると、ケイパビリティが `active` になり、連結アカウントで利用できるようになります。アカウントの確認は継続的に実行され、それ以降に確認が失敗すると、ケイパビリティは `active` から移行します。`account.updated` イベントをリッスンして、ケイパビリティの状態の変化を検出します。 構築済みの Connect の実装内容が法令を遵守し、稼働中であることを確認するには、アカウントの `charges_enabled` と `payouts_enabled` が両方とも true であることを確認します。API を使用するか、`account.updated` イベントをリッスンすることができます。その他の関連フィールドについて、詳細はアカウントの [requirements (要件)](https://docs.stripe.com/api/accounts/object.md#account_object-requirements) ハッシュを確認してください。アプリケーションおよび関連ポリシーに応じてステータスが変化する可能性があるため、単一の値に基づいて実装を確認することはできません。 - [charges_enabled](https://docs.stripe.com/api/accounts/object.md#account_object-charges_enabled) は、支払いと送金を含む全体的な支払いパスが正しく機能することを確認し、`card_payments` と `transfers` ケイパビリティのどちらがアクティブになっているかを評価します。 - [payouts_enabled](https://docs.stripe.com/api/accounts/object.md#account_object-payouts_enabled) は連結アカウントが外部口座に入金できるかを評価します。リスクポリシーによっては、連結アカウントが入金を有効にせずに取引を開始することを許可できます。連結アカウントに支払うには、[最終的には入金を有効にする必要](https://docs.stripe.com/connect/manage-payout-schedule.md)があります。 以下のロジックは、連結アカウントに表示するサマリーのステータスを定義するための開始ポイントとして使用できます。 #### Ruby ```ruby # Don't put any keys in code. See https://docs.stripe.com/keys-best-practices. # Find your keys at https://dashboard.stripe.com/apikeys. client = Stripe::StripeClient.new('<>') def account_state(account) reqs = account.requirements if reqs.disabled_reason && reqs.disabled_reason.include?("rejected") "rejected" elsif account.payouts_enabled && account.charges_enabled if reqs.pending_verification "pending enablement" elsif !reqs.disabled_reason && !reqs.currently_due if !reqs.eventually_due "complete" else "enabled" end else "restricted" end elsif !account.payouts_enabled && account.charges_enabled "restricted (payouts disabled)" elsif !account.charges_enabled && account.payouts_enabled "restricted (charges disabled)" elsif reqs.past_due "restricted (past due)" elsif reqs.pending_verification "pending (disabled)" else "restricted" end end accounts = client.v1.accounts.list({limit: 10}) accounts.each do |account| puts "#{account.id} has state: #{account_state(account)}" end ``` ### 確認エラーを処理する アカウント登録フローに応じて、確認失敗に対する対処方法を変えます。 > API を使用して Stripe のリスク審査に対応することはできません。埋め込みコンポーネント、Stripe のホスティング登録、または修復リンクを使用して、連結アカウントが対応できるように設定できます。ダッシュボードを使用して、連結アカウントの代わりにリスク審査に対応することもできます。 #### API [account.updated](https://docs.stripe.com/api/events/types.md#event_types-account.updated) イベントをリッスンします。`current_deadline` が着信したときにアカウントに `currently_due` フィールドが含まれている場合は、対応する機能が無効になり、そのフィールドが `past_due` に追加されます。 アカウントが情報の修正に使用できる明確な指示が記載された[フォームを作成](https://docs.stripe.com/connect/custom/onboarding.md#create-forms-to-collect-information)します。アカウントに通知し、次に Accounts API を使用して、[修正された情報を送信](https://docs.stripe.com/connect/custom/onboarding.md#update-the-connected-account)します。 (See full diagram at https://docs.stripe.com/connect/custom/onboarding) すべての確認エラーに対処するカスタムフローの作成を計画している場合: - 可能性のあるすべての[確認エラーとその対処法](https://docs.stripe.com/connect/handling-api-verification.md)に関する詳細を確認します。 - [確認状態をテストします](https://docs.stripe.com/connect/testing-verification.md)。 #### 埋め込み [account.updated](https://docs.stripe.com/api/events/types.md#event_types-account.updated) イベントをリッスンします。`current_deadline` が着信したときにアカウントに `currently_due` フィールドが含まれている場合は、対応する機能が無効になり、そのフィールドが `past_due` に追加されます。 [アカウント登録コンポーネント](https://docs.stripe.com/connect/supported-embedded-components/account-onboarding.md)にアカウントを誘導して、確認要件を修正できるようにします。 (See full diagram at https://docs.stripe.com/connect/custom/onboarding) ### Stripe ユーザー認証を無効にする 埋め込みアカウント登録を使用する場合、[Stripe ユーザー認証](https://docs.stripe.com/connect/get-started-connect-embedded-components.md#user-authentication-in-connect-embedded-components)がデフォルトで有効になります。[`disable_stripe_user_authentication`](https://docs.stripe.com/api/account_sessions/create.md#create_account_session-components-account_onboarding-features-disable_stripe_user_authentication) を使用して、この動作を削除できます。 [ベストプラクティス](https://docs.stripe.com/connect/risk-management/best-practices.md#prevent-account-take-overs)として、2 要素認証または同等のセキュリティ対策を導入することをお勧めします。Custom など、この機能をサポートするアカウント設定では、連結アカウントが[マイナス残高](https://docs.stripe.com/connect/risk-management/best-practices.md#decide-your-approach-to-negative-balance-liability)を返済できない場合、貴社がそのアカウントに対する責任を負うことになります。 #### オンライン [account.updated](https://docs.stripe.com/api/events/types.md#event_types-account.updated) イベントをリッスンします。`current_deadline` が着信したときにアカウントに `currently_due` フィールドが含まれている場合は、対応する機能が無効になり、そのフィールドが `past_due` に追加されます。 Stripe ホスティング登録フォームにアカウントを誘導して、確認要件を修正できるようにします。 (See full diagram at https://docs.stripe.com/connect/custom/onboarding) ## See also Custom アカウントの処理についてお読みください。 - [確認要件の更新に対応する](https://docs.stripe.com/connect/handle-verification-updates.md) - [アカウントを更新する](https://docs.stripe.com/connect/updating-service-agreements.md) - [本人確認](https://docs.stripe.com/connect/identity-verification.md)