# API を利用して本人確認を処理する Connect プラットフォームで Webhook と API を使用して連結アカウントの本人確認を処理する方法をご紹介します。 API を使用して連結アカウントを登録している Connect プラットフォームは、[顧客確認](https://support.stripe.com/questions/know-your-customer) (KYC) のために必要な情報を Stripe に提供して、[アカウントのケイパビリティ](https://docs.stripe.com/connect/account-capabilities.md)を有効にする必要があります。各プラットフォームは、自ら情報を収集し、Accounts API と Persons API を使用してその情報を Stripe に提供します。その後、Stripe が情報を確認し、必要に応じて詳細を尋ねます。 責任あるプラットフォームは、連結アカウントの要件ステータスも監視し、[更新にタイムリーに対応](https://docs.stripe.com/connect/handle-verification-updates.md)する必要があります。 ## 確認プロセス 連結アカウントの支払いと*入金* (A payout is the transfer of funds to an external account, usually a bank account, in the form of a deposit)を有効にする前に、Stripe は以下に応じて異なる特定の情報を必要とします。 - 連結アカウントの所在国 - 連結アカウントに適用される[利用規約タイプ](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` など) プラットフォームは、KYC 要件を満たすために、ビジネスと連結アカウントに適した[オンボーディングフロー](https://docs.stripe.com/connect/identity-verification.md#onboarding-flows)を選択する必要があります。つまり、必要な情報を最初から、または段階的に提供することを意味します。いずれにせよ、Stripe からのリクエストを監視し、それに応答する実装を設定してください。 1. [Webhook 設定](https://dashboard.stripe.com/account/webhooks)で [Connect Webhook](https://docs.stripe.com/connect/webhooks.md) URL を確立し、アクティビティ、特に `account.updated` イベントを監視します。[Persons API](https://docs.stripe.com/api/persons.md) を使用するときは、`person.updated` イベントも監視します。 1. アカウント作成後、すぐに `Account` オブジェクトの [requirements.currently_due](https://docs.stripe.com/api/accounts/object.md#account_object-requirements-currently_due) 属性で追加の要件を確認します。連結アカウントから必要な情報を取得し、`Account` を更新します。`requirements.currently_due` が空でない限り、`Account` には、ケイパビリティが制限される可能性のある未対応の要件があります。 1. `account.updated` のイベント通知を引き続き注視して、`requirements`のハッシュが変わるか確認し、必要に応じて連結アカウントに追加情報を求めてください。 追加情報を入力した場合、以前に確認した情報を再度提出する必要はありません。例えば、既に `dob` が確認されていれば、変更しない限り再度提出する必要はありません。 ### Stripe のリスクレビュー要件 Stripe の連結アカウントのリスクレビューでは、API を使用して提供できない追加の要件が追加される場合があります。[ダッシュボードで対応する](https://docs.stripe.com/connect/dashboard/managing-individual-accounts.md#actions-required)か、連結アカウントが [Connect 埋め込みコンポーネント](https://docs.stripe.com/connect/supported-embedded-components.md#onboarding-and-compliance)、[Stripe ホスト型オンボーディング](https://docs.stripe.com/connect/hosted-onboarding.md)、または[改善リンク](https://docs.stripe.com/connect/dashboard/remediation-links.md)を通じて提供できます。 ## 確認が必要かどうかを判断する `Account` オブジェクトの `charges_enabled` 属性と `payouts_enabled` 属性は、支払いを作成して入金を受け付けることができるかどうかを示します。 これらの属性のいずれかが false の場合は、`Account` の `requirements` ハッシュを確認して、支払いと入金を有効にするために必要な情報を判断します。 `requirements` ハッシュには、次のプロパティが含まれます。 | プロパティ | 説明 | | ---------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `current_deadline` | アカウントを `active` に維持するために `currently_due` の要件を解決する必要がある期日です。これは、非表示のケイパビリティを含め、アカウントがリクエストしたすべてのケイパビリティとリスク要件の最も早い期限です。 | | `currently_due` | アカウントを `active` に維持するために `current_deadline` までに解決する必要がある要件を含む配列です。 | | `disabled_reason` | アカウントが有効化されていない理由、および支払いや送金を処理できない理由の説明。 | | `errors` | 解決する必要があるエラーを含む `currently_due` 要件の詳細を含む配列です。詳細については、[検証と確認エラー](https://docs.stripe.com/connect/handling-api-verification.md#validation-and-verification-errors)のセクションを参照してください。 | | `eventually_due` | 対応するしきい値に達したかどうかに応じて、解決が必要になる可能性のある要件を含む配列です。要件が必須になると、その要件は `eventually_due` 配列と `currently_due` 配列の両方に表示されます。要件が必須になり、その期日が既存の `current_deadline` より前の日付である場合、`current_deadline` は対応するしきい値の発効日に変わります。 | | `past_due` | `current_deadline` より前に解決されなかったためケイパビリティが無効になっている要件を含む配列です。`past_due` 配列は `currently_due` のサブセットです。 | | `pending_verification` | レビュー中またはレビュー結果に基づいて必須となる可能性がある要件を含む配列です。非同期の確認が保留中でない限り、この配列は空です。確認に失敗すると、要件は `eventually_due`、`currently_due`、`alternative_fields_due`、または `past_due` に移行します。確認に失敗し、確認が保留中の要件は、`pending_verification` のままになることもあります。 | 以下の例は、`currently_due` の情報、`eventually_due` の情報、確認 `errors` を引き起こしている情報が含まれるアカウントの場合に、`requirements` ハッシュがどのように表示されるかを示しています。 ```json { "id": ""{{CONNECTED_ACCOUNT_ID}}"", "object": "account", "requirements": { "alternatives": [], "current_deadline": 1529085600, "currently_due": [ "company.tax_id", "company.verification.document", "tos_acceptance.date", "tos_acceptance.ip" ], "disabled_reason": null, "errors": [ { "requirement": "company.verification.document", "reason": "The company name on the account couldn't be verified. Either update your business name or upload a document containing the business name.", "code": "failed_name_match" } ], "eventually_due": [ "company.address.city", "company.address.line1", "company.address.postal_code", "company.address.state", "company.tax_id", "company.verification.document", "external_account", "tos_acceptance.date", "tos_acceptance.ip" ], "past_due": [], "pending_verification": [] }, ... } ``` `requirements.currently_due` にエントリが含まれる場合は、Unixタイムスタンプである `requirements.current_deadline` を確認します。通常、Stripe が `current_deadline` までに情報を受信しない場合、そのアカウントでの入金は無効化されます。ただし、状況によっては、別の結果になる可能性もあります。たとえば、入金がすでに無効になっていて、アカウントが問い合わせに応答しない場合、Stripe が支払いを処理する機能も無効にすることがあります。 それとは別に、[requirements.disabled_reason](https://docs.stripe.com/api/accounts/object.md#account_object-requirements-disabled_reason) プロパティには、アカウントの特定のケイパビリティが無効化された理由を示す文字列を含めることができます。状況によっては、プラットフォームと連結アカウントがフォームを送信して、理由の解決または異議申し立てを行うことができます。 - Standard アカウントを含む、Stripe ダッシュボードの全機能にアクセスできる連結アカウントは、ダッシュボードにある追加情報 (利用可能な場合) にアクセスできます。 - プラットフォームは、[Connected accounts](https://docs.stripe.com/connect/dashboard/review-actionable-accounts.md) ページでアカウントの `disabled_reason` を参照できます。連結アカウントの代理として追加情報を提供できる場合があります。無効化の理由が異議申し立てに関連付けられている場合は、アカウントが異議申し立てを解決するためのフォームへのリンクを生成できます。 | 理由 | 意味 | | ---------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `action_required.requested_capabilities` | 連結アカウントの[ケイパビリティをリクエスト](https://docs.stripe.com/connect/account-capabilities.md#requesting-unrequesting)する必要があります。 | | `listed` | アカウントが、禁止された個人または会社のリストに記載されている可能性があります。Stripe が調査し、それに応じてアカウントを拒否または復元します。 | | `rejected.fraud` | アカウントは、不正利用または違法行為の疑いがあるため、拒否されました。 | | `rejected.incomplete_verification` | 要求されたしきい値内での不完全な確認要件により、アカウントは拒否されています。 | | `rejected.listed` | このアカウントは、サードパーティの禁止人物または企業リスト (金融サービスプロバイダーや政府など) に掲載されているため拒否されます。 | | `rejected.other` | アカウントが別の理由で拒否されました。 | | `rejected.terms_of_service` | 利用規約違反の疑いがあるため、アカウントは拒否されました。 | | `requirements.past_due` | このアカウントでケイパビリティを有効にするには、追加の確認情報が必要です。 | | `requirements.pending_verification` | Stripe は現在、連結アカウントの情報を確認しています。ご対応は不要です。[requirements.pending_verification](https://docs.stripe.com/api/accounts/object.md#account_object-requirements-pending_verification) 配列を調べて、確認対象の情報をご覧ください。 | | `under_review` | Stripe がアカウントを審査しています。 | ## 検証エラーと確認エラー `Account` オブジェクトには、検証要件または確認要件が満たされていない理由を説明する [requirements.errors](https://docs.stripe.com/api/accounts/object.md#account_object-requirements-errors) 配列が含まれます。アカウントのケイパビリティを有効にするには、これらの要件を満たす必要があります。 `errors` 配列には、次の属性があります。 | 属性 | 説明 | | ------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | | `code` | 発生したエラーのタイプを示します。考えられるすべてのエラーコードについては、[API リファレンス](https://docs.stripe.com/api/accounts/object.md#account_object-requirements-errors-code)を参照してください。 | | `reason` | エラーが発生した理由と解決方法を説明する平易なメッセージ。 | | `requirement` | `currently_due` または `alternative_fields_due` 配列のどの情報が必要かを指定します。 | 次の例は、`currently_due` の要件があるアカウントの `errors` 配列、提出された情報を使用してアカウントを有効化できない理由、およびエラーを解決する方法を示しています。 ```json { "id": ""{{CONNECTED_ACCOUNT_ID}}"", "object": "account", "requirements": { "current_deadline": 1234567800, "currently_due": [ "company.address.line1", "{{PERSON_ID}}.verification.document" ], "errors": [ { "requirement": "company.address.line1", "code": "invalid_street_address", "reason": "The provided street address cannot be found. Please verify the street name and number are correct in \"10 Downing Street\"" }, { "requirement": "{{PERSON_ID}}.verification.document", "code": "verification_document_failed_greyscale", "reason": "Greyscale documents cannot be read. Please upload a color copy of the document." } ] }, ... } ``` 確認または検証に失敗した場合、要件がエラー情報とともに `currently_due`、`alternative_fields_due`、または `eventually_due` に再表示される場合があります。これらの要件の通知を受け取るには、[Connect Webhook](https://docs.stripe.com/connect/webhooks.md) を設定して `account.updated` イベントをリッスンします。 ## 事業情報 Stripe は、ビジネスについて送信されたすべての情報を確認します。たとえば、ビジネスの URL が有効であり、アクセス可能であり、ビジネスに関する情報が含まれていることを確認します。確認ステータスをチェックするには、`Account` オブジェクトの `requirements` ハッシュを取得します。 事業情報の確認に関連するエラーは次のとおりです。 | エラー | 解決策 | | ------------------------------------------ | --------------------------------------------------- | | `invalid_business_profile_name` | 法人名はわかりやすく、認識できる単語で構成する必要があります。 | | `invalid_business_profile_name_denylisted` | 法人名はアカウントのビジネスと一致する必要があり、一般的な名前やよく知られている名前は使用できません。 | | `invalid_product_description_length` | 商品の説明は 10 文字以上にする必要があります。 | | `invalid_product_description_url_match` | 商品の説明は、ビジネス URL とは異なるものにする必要があります。 | 次の URL エラーを解決するには、[URL 確認エラーを処理する](https://docs.stripe.com/connect/handling-api-verification.md#url-verification)を参照してください。 - `invalid_url_denylisted` - `invalid_url_format` - `invalid_url_web_presence_detected` - `invalid_url_website_business_information_mismatch` - `invalid_url_website_empty` - `invalid_url_website_inaccessible` - `invalid_url_website_inaccessible_geoblocked` - `invalid_url_website_inaccessible_password_protected` - `invalid_url_website_incomplete` - `invalid_url_website_incomplete_cancellation_policy` - `invalid_url_website_incomplete_customer_service_details` - `invalid_url_website_incomplete_legal_restrictions` - `invalid_url_website_incomplete_refund_policy` - `invalid_url_website_incomplete_return_policy` - `invalid_url_website_incomplete_terms_and_conditions` - `invalid_url_website_incomplete_under_construction` - `invalid_url_website_other` ## 担当者 連結アカウントに関連付けられている人物に関する情報を収集して送信する必要があります。このプロセスは、連結アカウントが会社、個人、またはその両方であるかによって異なります。 企業の場合は、[Persons API](https://docs.stripe.com/api/persons.md) を使用して、`Account` オブジェクトに関連付けられた `Person` オブジェクトに情報を追加します。`Person` オブジェクトの [verification](https://docs.stripe.com/api/persons/object.md#person_object-verification) ハッシュにドキュメントを追加するには、まず [Files API](https://docs.stripe.com/api/files.md) を使用してドキュメントファイルを Stripe のサーバーにアップロードします。 個人の場合は、`Person` を作成するか、`Account` オブジェクトの [individual](https://docs.stripe.com/api/accounts/object.md#account_object-individual) ハッシュに情報を追加できます。 連結アカウントに会社と個人の両方が含まれる場合は、`Person` オブジェクトを作成して、すべてのアカウントに対して同じプロセスを使用できるようにします。 `Account` の確認ステータスをチェックするには、その [requirements](https://docs.stripe.com/api/persons/object.md#person_object-requirements) ハッシュを取得します。 本人確認に関連するエラーは次のとおりです。 | エラー | 解決策 | | ------------------------------------------- | ------------------------------------------------------------------ | | `invalid_address_city_state_postal_code` | Stripe は提供された住所の市区町村、都道府県、郵便番号の組み合わせを検証できませんでした。 | | `invalid_address_highway_contract_box` | 個人の住所は、アカウントが事業を行っている有効な所在地である必要があり、Highway Contract Box は指定できません。 | | `invalid_address_private_mailbox` | 個人の住所は、アカウントが事業を行っている有効な所在地である必要があり、私設私書箱は指定できません。 | | `invalid_dob_age_under_minimum` | 個人の年齢は 13 歳以上である必要があります。 | | `invalid_dob_age_over_maximum` | 個人の生年月日は過去 120 年以内である必要があります。 | | `invalid_phone_number` | Stripe はアカウントの電話番号を検証できませんでした。形式が個人の国と一致していることを確認してください。 | | `invalid_street_address` | Stripe は提供された住所の通り名または番地を検証できませんでした。 | | `invalid_tax_id` `invalid_tax_id_format` | 納税者番号は、ダッシュやその他の特殊文字を含まない 9 桁の固有の数字である必要があります。 | ## 受け付け可能な確認書類 Stripe が連結アカウントで受け付ける本人確認書類のタイプは国によって異なり、[他の Stripe アカウントと同じです](https://docs.stripe.com/acceptable-verification-documents.md)。 ## 会社情報 確認プロセスの際に、アカウントの会社に関する情報の収集が必要になる場合があります。 確認ステータスをチェックするには、`Account` オブジェクトの [company.verification](https://docs.stripe.com/api/accounts/object.md#account_object-company-verification) サブハッシュを取得します。 ```json { "id": ""{{CONNECTED_ACCOUNT_ID}}"", "object": "account", ... "company": { "verification": { "document": null }, ... }, ... } ``` `Account` オブジェクトの各検証属性の定義を確認できます。 ## 明細書表記 Stripe は、`Account` で[明細書表記と明細書表記プレフィックス](https://docs.stripe.com/connect/statement-descriptors.md)を設定する際に、これらを検証します。たとえば、カードネットワークに提供された最初の 22 文字がビジネスの説明と一致するかどうかを確認します。`Account` の `business_profile.name`、`business_profile.url`、または会社や個人の名前と一致しているかどうかが確認されます。 明細書表記の確認ステータスをチェックするには、`Account` オブジェクトの `requirements` ハッシュを取得します。 明細書表記の確認に関連するエラーは次のとおりです。 | エラー | 解決策 | | --------------------------------------------------------------------------------------------- | ----------------------------------------------------------- | | `invalid_statement_descriptor_length` | 明細書表記は 5 文字以上にする必要があります。 | | `invalid_statement_descriptor_business_mismatch` | 明細書表記は、ビジネス名、法人名、またはビジネス URL と類似している必要があります。 | | `invalid_statement_descriptor_denylisted` `invalid_statement_descriptor_prefix_denylisted` | 明細書表記は、一般的なビジネス名やよく知られている法人名と一致してはなりません。 | | `invalid_statement_descriptor_prefix_mismatch` | 明細書表記のプレフィックスは、明細書表記、ビジネス名、法人名、または URL と共通点があるものにする必要があります。 | ## 書類確認の問題を処理する アップロードされた書類ファイルに関連する一般的な要件確認エラーを解決するには、次の表を参照してください。 認証に失敗した場合は、同じファイルを再度提出しないでください。重複アップロードは自動的に失敗します。 | 確認のタイプ | コード | 解決策 | | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | 事業用 | `verification_failed_keyed_match`、`verification_failed_document_match` | アカウントの情報を確認できませんでした。アカウントユーザーは確認書類をアップロードするか、情報を更新できます。 | | 事業用 | `verification_failed_tax_id_not_issued`、`verification_failed_tax_id_match` | IRS は、アカウントユーザーが提供した情報を確認できませんでした。会社名または納税者番号に誤りがある場合は修正するか、それらを確認できる書類をアップロードするようにアカウントユーザーに依頼してください。(アメリカのみ) | | 事業用 | `verification_failed_id_number_match`、`verification_failed_name_match`、`verification_failed_address_match` | 書類の情報がアカウントユーザーから提供された情報と一致しません。情報を確認して修正するか、一致する書類をアップロードするように依頼してください。 | | 事業用 | `verification_document_address_missing`、`verification_document_id_number_missing`、`verification_document_name_missing` | アップロードされた書類に必要な情報が不足しています。アカウントユーザーに、不足している情報が記載されている別の書類をアップロードするように依頼してください。 | | 事業用 | `verification_legal_entity_structure_mismatch` | 事業形態または構造が正しくないようです。このアカウントの正しい事業形態と構造を指定してください。 | | Identity | `verification_failed_keyed_identity` | アカウントの名前を確認できませんでした。アカウントユーザーに、正式な法的氏名を提供したことを確認し、その名前に一致する政府発行の写真付き身分証明書も提供するように依頼してください。 | | Identity | `verification_document_name_mismatch`、`verification_document_dob_mismatch`、`verification_document_address_mismatch`、`verification_document_id_number_mismatch`、`verification_document_photo_mismatch` | 身分証明書上の情報が、アカウントユーザーから提供された情報と一致しません。提供された情報を確認して修正するようユーザーに依頼してください。 | | Identity | `verification_document_fraudulent`、`verification_document_manipulated` | 書類が改ざんされている可能性があります。確認に失敗した理由については、Stripe サポートにお問い合わせください。 | | 関係 | `information_missing` | 書類または入力されたデータに不足している情報については、エラーメッセージをご覧ください。重要な所有権を持つ持ち株会社に関連する場合、エラーコードでは不足している持ち株会社も特定されます。[持ち株会社の実質所有権の確認](https://support.stripe.com/questions/beneficial-ownership-verification-for-holding-companies)の詳細をご確認ください。 | | 関係 | `verification_failed_authorizer_authority` | 指定された承認者の権限を確認できませんでした。承認者を、正式な代表者として登録されている人物に変更してください。[代表者権限の確認](https://support.stripe.com/questions/representative-authority-verification)の詳細をご確認ください。 | | 関係 | `verification_failed_representative_authority` | アカウント代表者の権限を確認できませんでした。アカウントに承認者を追加し、承認者の署名入り委任状を提出してください。[代表者権限の確認](https://support.stripe.com/questions/representative-authority-verification)の詳細をご確認ください。 | | 関係 | `verification_missing_owners` | ビジネスオーナーが指定されていません。すべてのビジネスオーナーの情報を指定してください。 | | 関係 | `verification_missing_directors` | 取締役が指定されていません。アカウントを更新し、現在の取締役が記載されている登録書類をアップロードしてください。 | | 関係 | `verification_document_directors_mismatch` | 書類に記載されている取締役がアカウントに記載されていません。アカウントを更新し、現在の取締役が記載されている登録書類をアップロードしてください。 | | 関係 | `verification_rejected_ownership_exemption_reason` | 所有権の免除理由が拒否されました。別の免除理由を選択するか、最終的な実質所有権を証明する書類をアップロードしてください。 | | アップロード | `verification_document_corrupt`、`verification_document_copy`、`verification_document_greyscale`、`verification_document_incomplete`、`verification_document_not_readable`、`verification_document_not_uploaded`、`verification_document_not_signed`、`verification_document_missing_back`、`verification_document_missing_front`、`verification_document_too_large` | ファイルに問題があるため、アップロードに失敗しました。以下の要件を満たす新しいファイルを提供するようアカウントユーザーに依頼してください。 - カラー画像 (8,000 ピクセル x 8,000 ピクセル以下) - 10 MB 以下 - 本人確認書類が JPG または PNG 形式である - 住所または法人確認書類が JPG、PNG、または PDF 形式である - 法人確認書類は、すべてのページが含まれている必要があります。 - パスワードで保護することはできません | | アップロード | `verification_document_country_not_supported`、`verification_document_invalid`、`verification_document_type_not_supported` | 指定されたファイルは、[サポート対象国で受け付けられる形式の身分証明書](https://docs.stripe.com/connect/handling-api-verification.md#acceptable-verification-documents)ではないか、想定される種類の法人書類ではありません。アカウントユーザーに、その要件を満たす新しいファイルの提出を依頼してください。 | | アップロード | `verification_document_verification_failed_other`、`verification_document_failed_other` | 本人確認が失敗した理由については、Stripe サポートにお問い合わせください。 | | アップロード | `verification_document_expired`、`verification_document_issue_or_expiry_date_missing` | 書類に発行日または有効期限がないか、書類の有効期限が切れています。本人確認書類の場合、有効期限は書類の提出日より後でなければなりません。住所確認書類の場合、発行日は過去 6 か月以内でなければなりません。 | ## URL 確認エラーを処理する Stripe の利用規約では、すべての EC ビジネスが `card_payments` ケイパビリティをリクエストする際に、`Account` の [business_profile.url](https://docs.stripe.com/api/accounts/object.md#account_object-business_profile-url) プロパティに、ビジネスのウェブサイトの有効な URL を入力することが義務付けられています。連結アカウントがオンラインのウェブサイト、ソーシャルメディアプロフィール、モバイルアプリを通じて商品やサービスを宣伝または販売する場合、EC ビジネスと見なされます。詳細については、[ビジネスのウェブサイトのアカウント有効化に関するよくあるご質問](https://support.stripe.com/questions/business-website-for-account-activation-faq)をご覧ください。 連結アカウントが事業の宣伝、商品販売、決済を受け付けるためのウェブサイトを運営していない場合は、代わりに [business_profile.product_description](https://docs.stripe.com/api/accounts/object.md#account_object-business_profile-product_description) を提供する必要があります。商品説明には、販売される商品の種類や、企業が顧客にどのように料金を請求しているか (対面取引など) を詳細に記載する必要があります。 EC ビジネスの URL は、特定のカードネットワーク基準に準拠している必要があります。Stripe は、これらの基準に準拠するために、URL を審査する際に多くの確認を実施しています。EC ビジネスの URL と共通要素の[ベストプラクティス](https://docs.stripe.com/get-started/checklist/website.md)をご確認ください。 多くの場合、URL 確認エラーは、以下のいずれかを行うことで解決できます。 - プラットフォームダッシュボードから[改善リンクを生成](https://docs.stripe.com/connect/dashboard/remediation-links.md)する。 - `Account` オブジェクトの [business_profile.url](https://docs.stripe.com/api/accounts/update.md#update_account-business_profile-url) を更新する。 別の方法でエラーを解決した場合 (会社のウェブサイトを使用して問題を修正した場合など)、`Account` オブジェクトの URL を別の値に変更し、すぐに元に戻して再確認をトリガーする必要があります。 API を使用して、URL 関連の問題をすべて解決できるわけではありません。URL 確認エラーの種類によっては、連結アカウントのウェブサイトへのアクセス方法や、アカウントが URL 要件を免除されていることの証明などの情報が追加で必要です。この種の問題を解決するには、プラットフォームまたは連結アカウントが補足情報を提供する必要があります。 問題を解決できない場合は、連結アカウントに [Stripe サポートへの問い合わせ](https://support.stripe.com/contact)を案内してください。 URL 確認エラーを解決するには、次の表を参照してください。 | エラー | 解決策 | | --------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- | | `invalid_url_denylisted` | 指定された URL は、Stripe がアカウントとは関連がないとみなす一般的なビジネスサイトと一致します。ビジネス固有の URL を入力してください。 | | `invalid_url_format` | 指定された URL の形式が正しくありません。`https://example.com`. などの正しい形式の URL を指定してください。 | | `invalid_url_web_presence_detected` | このアカウントで、商品またはサービスを販売または宣伝するためのウェブサイト、ソーシャルメディアプロフィール、またはモバイルアプリが使用されていることを検出しましたが、URL が指定されていません。URL を指定してください。 | | `invalid_url_website_business_information_mismatch` | 指定された URL のウェブサイトに掲載されている情報が Stripe アカウントの情報と一致しません。 | | `invalid_url_website_empty` | ウェブサイトにコンテンツがないため、指定された URL のウェブサイトを確認できません。 | | `invalid_url_website_inaccessible` | 指定された URL のウェブサイトにアクセスできません。特定の地域をブロックしてウェブサイトを表示しないようにしている場合は、ウェブサイトの確認が完了するまで一時的にブロッカーを解除してください。 | | `invalid_url_website_inaccessible_geoblocked` | 特定の地域からのアクセスがブロックされているため、指定された URL のウェブサイトを確認できません。特定の地域をブロックしてウェブサイトを表示しないようにしている場合は、ウェブサイトの確認が完了するまで一時的にブロッカーを解除してください。 | | `invalid_url_website_inaccessible_password_protected` | ウェブサイトがパスワードで保護されているため、指定された URL のウェブサイトを確認できません。 | | `invalid_url_website_incomplete` | 指定された URL のウェブサイトにビジネス名、または提供する商品およびサービスの明確な説明のいずれかがありません。 | | `invalid_url_website_incomplete_cancellation_policy` | Web サイトにキャンセルに関するポリシーが掲載されていません。 | | `invalid_url_website_incomplete_customer_service_details` | Web サイトに顧客サービスの詳細が掲載されていません。 | | `invalid_url_website_incomplete_legal_restrictions` | Web サイトに、法務またはエクスポート制限の対象となる商品およびサービスの開示が掲載されていません。 | | `invalid_url_website_incomplete_refund_policy` | Web サイトに返金ポリシーが掲載されていません。 | | `invalid_url_website_incomplete_return_policy` | Web サイトに返品に関するポリシーおよびプロセスが掲載されていません。 | | `invalid_url_website_incomplete_terms_and_conditions` | Web サイトに利用規約が掲載されていません。 | | `invalid_url_website_incomplete_under_construction` | ウェブサイトがまだ作成中であるため、指定された URL のウェブサイトを確認できません。 | | `invalid_url_website_other` | 指定された URL のウェブサイト、ソーシャルメディアプロフィール、またはモバイルアプリではアカウントのビジネスを確認できません。 | ## ライブネス要件を処理する アカウントには、`proof_of_liveness` 要件が設定された 1 つ以上の [Person](https://docs.stripe.com/api/persons.md) オブジェクトを設定できます。`proof_of_liveness` 要件では、シンガポールの [MyInfo](https://www.singpass.gov.sg/main/individuals/) などの電子 ID 情報の収集、または Stripe Identity を使用して書類や顔写真を収集する必要がある場合があります。`proof_of_liveness` 要件のすべてのバリエーションを満たすには、Stripe ホスト型または埋め込み型オンボーディングを使用することをお勧めします。 #### オンライン [Stripe がオンラインで提供するオンボーディング](https://docs.stripe.com/connect/hosted-onboarding.md)で、`proof_of_liveness` 要件のすべてのバリエーションを完了できます。 連結アカウント ID を使用して[アカウントリンクを作成](https://docs.stripe.com/connect/hosted-onboarding.md#create-account-link)し、返された `url` にアカウントを送信します。 ```curl curl https://api.stripe.com/v1/account_links \ -u "<>:" \ -d account="{{CONNECTEDACCOUNT_ID}}" \ --data-urlencode refresh_url="https://example.com/refresh" \ --data-urlencode return_url="https://example.com/return" \ -d type=account_onboarding \ -d "collection_options[fields]"=currently_due ``` アカウントは、`proof_of_liveness` 要件と、現在期限が到来しているその他の要件を完了するように求めるプロンプトを受け取ります。Webhook エンドポイントに送信された `account.updated` イベントをリッスンして、アカウントが要件を完了しその情報を更新したときに通知されるようにします。アカウントが要件を完了すると、そのアカウントは指定の `return_url` にリダイレクトされます。 #### 埋込型 [組み込み型オンボーディング](https://docs.stripe.com/connect/embedded-onboarding.md)は、あらゆる形態の `proof_of_liveness` 要件を満たすことができます。 [アカウントセッションの作成](https://docs.stripe.com/api/account_sessions/create.md)時に、`components` パラメーターで `account_onboarding` を指定して、アカウント登録を有効にします。 銀行口座情報を収集する必要がない場合は、`external_account_collection` を無効にします。通常、これはサードパーティーの外部口座収集プロバイダーを利用する Connect プラットフォームに当てはまります。 ```curl curl https://api.stripe.com/v1/account_sessions \ -u "<>:" \ -d account="{{CONNECTEDACCOUNT_ID}}" \ -d "components[account_onboarding][enabled]"=true \ -d "components[account_onboarding][features][external_account_collection]"=false ``` アカウントセッションを作成して [ConnectJS を初期化](https://docs.stripe.com/connect/get-started-connect-embedded-components.md#account-sessions)すると、フロントエンドにアカウント登録コンポーネントを表示できます。 #### JavaScript ```js // Include this element in your HTML const accountOnboarding = stripeConnectInstance.create('account-onboarding'); accountOnboarding.setOnExit(() => { console.log('User exited the onboarding flow'); }); container.appendChild(accountOnboarding); // Optional: make sure to follow our policy instructions above // accountOnboarding.setFullTermsOfServiceUrl('{{URL}}') // accountOnboarding.setRecipientTermsOfServiceUrl('{{URL}}') // accountOnboarding.setPrivacyPolicyUrl('{{URL}}') // accountOnboarding.setCollectionOptions({ // fields: 'eventually_due', // futureRequirements: 'include', // requirements: { // exclude: ['business_profile.product_description'] // } // }) // accountOnboarding.setOnStepChange((stepChange) => { // console.log(`User entered: ${stepChange.step}`); // }); ``` アカウントは、`proof_of_liveness` 要件と、現在期限が到来しているその他の要件を完了するように求めるプロンプトを受け取ります。Webhook エンドポイントに送信された `account.updated` イベントをリッスンして、アカウントが要件を完了しその情報を更新したときに通知されるようにします。アカウントが要件を完了すると、ConnectJS によって `onExit` JavaScript ハンドラが呼び出されます。 #### 本人確認 [Stripe Identity](https://docs.stripe.com/identity.md)を使用して、書類と顔写真を収集することで、`Person` オブジェクトの `proof_of_liveness` 要件を満たすことができます。 [VerificationSession を作成](https://docs.stripe.com/api/identity/verification_sessions/create.md) してください。以下の例に示すように、`related_person` パラメーターを指定して、収集された検証データを `proof_of_liveness` を必要とする `Person` オブジェクトに関連付けます。 ```curl curl https://api.stripe.com/v1/identity/verification_sessions \ -u "<>:" \ -d type=document \ -d "options[document][require_matching_selfie]"=true \ -d "related_person[account]"="{{CONNECTEDACCOUNT_ID}}" \ -d "related_person[person]"="{{PERSON_ID}}" ``` `VerificationSession` を作成したら、返された `client_secret` を使用して、[Identity モーダルをユーザーに表示](https://docs.stripe.com/identity/verify-identity-documents.md?platform=web&type=modal#show-modal)するか、ユーザーを `url` にリダイレクトします。確認が完了すると、アカウントが自動的に更新されます。 アカウントが本人確認を完了し、情報を更新すると、Stripe から Webhook エンドポイントに `account.updated` イベントが送信されます。 ## 本人確認を処理する アカウントで本人確認のための情報によっては、1 つ以上の書類のアップロードをお願いする場合があります。必要な書類は、`Account` オブジェクトの `requirements` ハッシュに表示されます。 `requirements.currently_due` に表示される書類をアップロードする必要があります。 - `person.verification.document`: 受け入れ可能な形式の身分証明書のカラースキャンまたは写真をアップロードしてください。 - `person.verification.additional_document`: 公共料金の請求書など、ユーザーの住所が確認できる書類のカラースキャンまたは写真をアップロードします。 - `company.verification.document`: 会社の定款など、事業体 ID 番号を証明する法人書類をアップロードします。 `requirements.alternatives.alternative_fields_due` に `verification.document` 要件が含まれている場合、これを `requirements.alternatives.original_fields_due` の代わりに使用できます。 セキュリティ上の理由から、Stripe はメールでの身分証明書の提出を受け付けていません。文書のアップロードは 2 段階のプロセスです。 1. [Stripe にファイルをアップロード](https://docs.stripe.com/connect/handling-api-verification.md#upload-a-file)する。 1. [アカウントにファイルを添付する](https://docs.stripe.com/connect/handling-api-verification.md#attach-a-file)。 ### ファイルをアップロードする ファイルをアップロードするには、Files API を呼び出して[ファイルを作成](https://docs.stripe.com/api/files/create.md)します。 アップロードするファイルは以下の要件を満たしている必要があります。 - カラー画像 (8,000 ピクセル x 8,000 ピクセル以下) - 10 MB 以下 - 本人確認書類が JPG または PNG 形式である - 住所または法人確認書類が JPG、PNG、または PDF 形式である ファイルデータを `file` パラメータに渡し、ドキュメントを保持する `Account` または `Person`オブジェクトに応じて [purpose](https://docs.stripe.com/api/files/create.md#create_file-purpose) パラメータを設定してください。目的を特定するには、API リファレンスでプロパティを確認してください。 #### curl ```bash curl https://files.stripe.com/v1/files \ -u <>: \ -H "Stripe-Account: {{CONNECTED_STRIPE_ACCOUNT_ID}}" \ -F "purpose"="identity_document" \ -F "file"="@/path/to/a/file" ``` 次のリクエストはファイルをアップロードし、トークンを返します。 ```json { "id": ""{{FILE_ID}}"", "created": 1403047735, "size": 4908 } ``` トークンの `id` 値を使用して、連結アカウントにファイルを関連付けて本人確認を行います。 ### ファイルを添付する ファイルをアップロードし、代表トークンを受け取った後、`Account` オブジェクトまたは `Person` オブジェクトを更新し、適切なパラメータでファイル ID を提供してください。 次の例は、政府発行の身分証明書の場合です。 ```curl curl https://api.stripe.com/v1/accounts/{{CONNECTEDACCOUNT_ID}}/persons/{{PERSON_ID}} \ -u "<>:" \ -d "verification[document][front]"="{{FILE_ID}}" ``` 次の例は、会社の書類の場合です。 ```curl curl https://api.stripe.com/v1/accounts/{{CONNECTEDACCOUNT_ID}} \ -u "<>:" \ -d "company[verification][document][front]"="{{FILE_ID}}" ``` この更新により、`verification.status` が `pending` に変更されます。追加の個人を確認する必要がある場合は、[Persons API](https://docs.stripe.com/api/persons.md) を使用して更新します。 ### 身分証明書を確認する 個人または会社の本人確認要件がすべて満たされると、`v2.core.account_person.updated` または `v2.core.account[identity].updated` Webhook 通知がトリガーされ、確認プロセスが完了したことが通知されます。 Stripe による画像の確認には、読み取りやすさに応じて数分から数営業日かかる場合があります。 確認が失敗した場合、関連付けられた要件エントリには、原因を説明する `code` と `description` が含まれたエラーが含まれます。`description` は、アカウントユーザーに提示できる「提供された画像が読み取り不可です」などのローカライズされていない平易なメッセージです。`code` 値は、`verification_document_not_readable` などの文字列で、アカウントユーザーのエラーメッセージのローカライズに使用できます。 確認が失敗すると、`v2.core.account_person.updated` または `v2.core.account[identity].updated` Webhook 通知もトリガーされます。 ### Stripe Identity によるホスト型書類収集 [Stripe Identity](https://docs.stripe.com/identity.md) を使用してドキュメントを収集し、それをアカウントに直接関連付けることで、`person.verification.document` 要件を満たすことができます。ただし、Stripe Identity を使用して `person.verification.additional_document` 要件または `company.verification.document` 要件を満たすことはできません。 [VerificationSession を作成](https://docs.stripe.com/api/identity/verification_sessions/create.md)します。以下の例のように、`related_person` パラメーターを指定して、収集した確認データを `document` を必要とする `Person` オブジェクトに関連付けます。 ```curl curl https://api.stripe.com/v1/identity/verification_sessions \ -u "<>:" \ -d type=document \ -d "related_person[account]"="{{CONNECTEDACCOUNT_ID}}" \ -d "related_person[person]"="{{PERSON_ID}}" ``` `VerificationSession` を作成したら、返された `client_secret` を使用して、[Identity モーダルをユーザーに表示](https://docs.stripe.com/identity/verify-identity-documents.md?platform=web&type=modal#show-modal)するか、ユーザーを `url` にリダイレクトします。確認が完了すると、アカウントが自動的に更新されます。 アカウントが本人確認を完了し、情報を更新すると、Stripe から Webhook エンドポイントに `account.updated` イベントが送信されます。 ## フォームまたはサポートベースの要件に対応する Stripe は、リスクと法令遵守の要件を [requirements](https://docs.stripe.com/api/accounts/object.md#account_object-requirements) ハッシュでレポートします。これらの要件の形式は `..` です。 - `id`: Stripe または金融パートナーが必要とする情報を一意に識別します。この ID には、リスク確認要件を示す `interv_` が常にプレフィックスとして付与されます。 - `requirement_description`: `identity_verification`、`rejection_appeal` など、要件を満たすために必要な情報を具体的に説明します。 - `resolution_path`: リクエストされた情報をプラットフォームまたは連結アカウントが提供する方法を指定します。 - `challenge`: 連結アカウントは、チャレンジプロンプトに直接応答する必要があります。多くの場合、銀行口座などの機密情報や、顔写真などアカウント所有者のみが提供できる情報が必要となります。 - `form`: フォームリクエストには連結アカウントが入力するか、プラットフォームがアカウントの代理として入力できます。 - `notice`: 連結アカウントは、第三者を通じて問題を解決する必要があります (たとえば、担保権者に解除通知を Stripe 宛に送信してもらうなど)。 - `support`: 要件に直接対応できません。[Stripe サポート](https://support.stripe.com/)にお問い合わせください。 - `underwriting_case`: Stripe は、リスク評価ダッシュボードで連結アカウントに関する追加情報をリクエストしました。 ```json { "id": ""{{CONNECTED_ACCOUNT_ID}}"", "object": "account", "requirements": { "current_deadline": 1234567800, "currently_due": [ "{{REQUIREMENT_ID}}.restricted_or_prohibited_industry_diligence.form" ], "pending_verification": [], ... }, ... } ``` 解決パスの要件が満たされると、要件の解決パスの値が `support` に変わり、その要件が要件ハッシュの `pending_verification` セクションにも表示されます。Stripe は提出された情報を確認し、解決済みとして要件を終了するか、現在、期限が来ている新しい要件を掲載します。 ```json { "id": ""{{CONNECTED_ACCOUNT_ID}}"", "object": "account", "requirements": { "current_deadline": 1234567800, "currently_due": [], "pending_verification": [ "{{REQUIREMENT_ID}}.restricted_or_prohibited_industry_diligence.support" ], ... }, ... } ``` リスクと規制順守の要件は、要件のタイプに応じて、以下のいずれかの方法で改善できます。 - **Connect 埋め込みコンポーネント**: [Connect コンポーネントを埋め込み](https://docs.stripe.com/connect/get-started-connect-embedded-components.md)、ウェブサイトに埋め込んでユーザーを[アカウントオンボーディング](https://docs.stripe.com/connect/supported-embedded-components/account-onboarding.md)埋め込みコンポーネントに誘導します。埋め込みコンポーネントでは、UI で未対応の要件を完了するようにユーザーに求めます。または、[通知バナー](https://docs.stripe.com/connect/supported-embedded-components/notification-banner.md)埋め込みコンポーネントを使用して、未対応の要件をユーザーに求めます。 - **Stripe ホスト型オンボーディング**: 連結アカウントを誘導するリンクを生成して、アカウントリンクからプログラムによって、または[プラットフォームダッシュボード](https://docs.stripe.com/connect/dashboard/review-actionable-accounts.md)から手動で未対応の要件に対応できます。 - **アカウントの代理で入力**: [プラットフォームダッシュボード](https://docs.stripe.com/connect/dashboard/review-actionable-accounts.md)を使用して、連結アカウントの詳細からフォームベースのリスク要件を特定し、アカウントの代理で入力します。 次の表は、リスクおよび法令遵守関連の要件の詳細を示しています。 | 値 | 説明 | | --------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `business_model_verification` | アカウントをサポートできるかどうかを確認するために、事業の性質に関する追加情報が必要です。 | | `restricted_or_prohibited_industry_diligence` | 事業が[制限対象のカテゴリー](https://stripe.com/legal/restricted-businesses) (アルコール、保険、金融商品の販売など) で運営されている可能性があります。アカウントをサポートできるか確認するために、事業の性質やライセンス情報に関する追加情報が必要になることがあります。 | | `intellectual_property_usage` | この事業は、著作権の保護対象の商品やサービスを販売している可能性があります。これらの商品を販売する権限をアカウントが保持していることを確認するために、追加情報が必要になることがあります。 | | `supportability_rejection_appeal` | Stripe の利用規約では、事業のサポートが禁止されています。アカウントはこの決定に異議を申し立てることができます。 | | `other_supportability_inquiry` | アカウントをサポートできるか確認するために、追加情報が必要です。 | | `credit_review` | アカウントをサポートできるかどうかを確認するために、事業の性質に関する追加情報が必要です。 | | `reserve_appeal` | このアカウントに対してリザーブを適用しています。これにより、アカウントが Stripe で決済を受け付ける機能に影響が及ぶことはありません。アカウントはこの決定に異議を申し立てることができます。 | | `identity_verification` | アカウントの担当者は、政府発行の身分証明書と顔写真をアップロードして本人確認を行う必要があります。 | | `url_inquiry` | ビジネス URL は、提供する商品とサービスを反映している必要があります。アカウントをサポートする前に URL の変更が必要になる場合があります。 | | `address_verification` | 書類のアップロードによって事業者の住所を確認する必要があります。 | | `bank_account_verification` | 事業者に関連付けられた銀行口座の詳細を確認する必要があります。 | | `customer_service_contact` | 事業者に関連付けられたカスタマーサービスの連絡先情報を確認する必要があります。 | | `domain_verification` | アカウント所有者が指定した URL またはドメインを管理していることを確認する必要があります。 | | `fulfillment_policy` | 事業者のフルフィルメントポリシーを確認する必要があります。 | | `other_compliance_inquiry` | 他の説明のいずれにも当てはまらない追加の法令遵守情報が必要です。 | | `other_business_inquiry` | 他の説明のいずれにも当てはまらない、追加の事業情報が必要です。 | | `platform_concern` | プラットフォームが、自社の連結アカウントに対して介入 (実環境または API 実装テスト) を開始しました。 | | `product_description` | 事業者の Stripe アカウントには、正確な商品の説明が登録されている必要があります。 | | `rejection_appeal` | Stripe の利用規約では、リスクのレベルが高いため、事業のサポートが禁止されています。アカウントはこの決定に異議を申し立てることができます。 | | `statement_descriptor` | お客様のビジネスを正確に反映する明細書表記が必要です。 | | `sanctions_review` | その企業が制裁対象の個人または管轄区域と関わりがないことを確認する必要があります。 | | `pep_review` | その企業が要注意人物や政治的に重要な人物 (PEP) と関わりがないことを確認する必要があります。 | | `legal_hold` | Stripe は法務上の理由により売上金を保管する必要があります。要件を満たすため、サードパーティーに売上金を送金することが求められる場合があります。 | ## See also - [連結アカウントの本人確認](https://docs.stripe.com/connect/identity-verification.md) - [アカウントトークン](https://docs.stripe.com/connect/account-tokens.md) - [Connect をテストする](https://docs.stripe.com/connect/testing.md) - [アカウントの本人確認をテストする](https://docs.stripe.com/connect/testing-verification.md) - [必要な確認情報](https://docs.stripe.com/connect/required-verification-information.md)