# 組み込みコンポーネント・オンランプ向けに KYC 各段階のシステムを導入する KYC 確認の各段階、それぞれで必要な情報、ユーザーの購入金額が確認レベルによって制限されている場合の検出方法をご紹介します。 オンランプで暗号資産を購入するには、すべてのユーザーが KYC 確認に合格する必要があります。ユーザーは購入限度額を引き上げるために追加情報を提供できます。このガイドでは、KYC の各段階、各段階で必要な情報、提供された KYC 情報の量によってユーザーの購入金額が制限されている場合の検出方法について説明します。 ## Before you begin 始める前に、[組み込みコンポーネント・オンランプを連携](https://docs.stripe.com/crypto/onramp/embedded-components-integration-guide.md)しておいてください。 ## KYC 段階の比較 次の表は、KYC の各段階で必要な項目をまとめたものです。 | KYC 段階 | ユーザーの入力情報 | | ------ | ------------------ | | L0 | 氏名、電話番号、メールアドレス、住所 | | L1 | 生年月日、SSN | | L2 | 写真付き身分証明書、顔写真 | ## KYC API ### L0 および L1 KYC には attachKYCInfo を使用します。 ユーザーの L0 および L1 KYC 確認プロセスを開始するには、`attachKYCInfo` を呼び出します。 `attachKYCInfo` で収集されるフィールドは、段階によって異なります。 - **L0**: `firstName`、`lastName`、`address` - **L1**: すべての L0 フィールドに加えて、`dateOfBirth`、`idNumber`、`idType` L0 と L1 の確認は非同期で行われます。そのため、オンランプセッションを作成する前に、この API を呼び出して確認ステータスを確認してください。ユーザーに保留中の確認がある場合、`Create a CryptoOnrampSession` API は `400` エラーを返します。保留中の確認がなくなるまで確認結果の取得を続行します。 次の表は、API レスポンス内の `verifications` フィールドを使用してユーザーが確認済みかどうかを判断する方法をまとめたものです。 | ユーザー | Verified | | ---- | -------------------------------------------------- | | L0 | `kyc_verified: true`, `phone_verified: true` | | L1 | `kyc_verified: true` | | L2 | `kyc_verified: true`, `id_document_verified: true` | ### L2 KYC には verifyIdentity を使用します。 `verifyIdentity` を呼び出すと、ユーザーが身分証明書と顔写真をアップロードする Stripe ホストのフローが表示されます。 L2 確認は非同期です。バックエンドは、[CryptoCustomer を取得する](https://docs.stripe.com/api/crypto/customers/retrieve.md) API を、`customerId` を指定して呼び出す必要があります。この API は、L2 確認のステータスを `id_document_verified` で返します。 ### createCryptoPaymentToken の KYC エラーの処理 決済手段を回収する前に、ユーザーは L0 KYC 情報を提出する必要があります。ユーザーが L0 確認を完了していない場合、`createCryptoPaymentToken` は `crypto_onramp_missing_minimum_identity_verification` エラーを返します。このエラーを処理するには、ユーザーに L0 KYC 情報を提出するよう促してください。 ### CryptoOnrampSession からの制限エラーを解釈する バックエンドは、[Create a CryptoOnrampSession](https://docs.stripe.com/api/crypto/onramp_sessions/create.md) API を呼び出して [CryptoOnrampSession](https://docs.stripe.com/api/crypto/onramp_sessions/object.md) を作成する必要があります。ユーザーが購入限度額に達すると、`Create a CryptoOnrampSession` API は、エラーの内容を示す JSON オブジェクトを含む HTTP `400` エラーを返します。アプリケーションでは、これらのエラーを使用して、ユーザーが取引を完了できるよう追加情報の入力を求めることができます。 `CryptoOnrampSession を作成する` API が以下のいずれかのエラーコードとともに HTTP `400` エラーを返した場合は、次のステップを判断するために、[Retrieve a CryptoCustomer](https://docs.stripe.com/api/crypto/customers/retrieve.md) API を、`customerId` を指定して呼び出します。 - `crypto_onramp_missing_minimum_identity_verification` - `crypto_onramp_missing_identity_verification` - `crypto_onramp_missing_document_verification` 次の表は、API レスポンス内の `provided_fields` フィールドを使用してユーザーの段階を判定する方法をまとめたものです。 | ユーザー | Provided fields | | ---- | ------------------------------------------------------------------------------------------------------------------------------------------ | | L0 | `first_name`, `last_name`, `address_line_1`, (`address_line_2`), `address_city`, `address_state`, `address_postal_code`, `address_country` | | L1 | すべての L0 フィールドと `id_number`、`id_type`、`dob` | | L2 | すべての L1 フィールドと `id_document`、`selfie` | 次の表は、[CryptoOnrampSession を作成する](https://docs.stripe.com/api/crypto/onramp_sessions/create.md) API のエラーコードと、[Retrieve a CryptoCustomer](https://docs.stripe.com/api/crypto/customers/retrieve.md) API の `provided_fields` フィールドの両方を使用して、次のステップを判断する方法をまとめたものです。 | エラーコード | 意味 | 次のステップ | | ----------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `crypto_onramp_missing_minimum_identity_verification` | L0 の確認に失敗しました。顧客は取引を完了するために完全な L0 データを提供する必要があります。 - ユーザーは L0 ユーザーであり、セッションの作成に必要な最低限の本人確認に合格していません。 | 名前、電話番号、メールアドレス、住所など、有効な L0 KYC 情報を入力するようユーザーに求めます。 | | `crypto_onramp_missing_identity_verification` | L1 の確認が必要です。顧客は、取引を完了するために L1 データの全体または一部を提供する必要があります。 - ユーザーは L1 ユーザーであり、セッションの作成に必要な L1 本人確認に合格していません。 - ユーザーは L0 の確認は完了していますが、この取引には L1 の確認が必要です。 | [Retrieve a CryptoCustomer](https://docs.stripe.com/api/crypto/customers/retrieve.md) API レスポンスの `provided_fields` を調べて、次のステップを判断します。 - `provided_fields` に `dob` と `id_number` の両方が含まれている場合、ユーザーに氏名、住所、生年月日、社会保障番号を含む、L1 KYC の全情報を入力するように求めます。 - `provided_fields` に `dob` と `id_number` の両方が含まれていない場合、ユーザーに `dob`、`id_number`、`id_type` のみを指定してから、`attachKYCInfo` を使用して部分的にアップロードするように求めます (これら 3 つのフィールドのみを含める)。 | | `crypto_onramp_missing_document_verification` | L2 確認が必要です。顧客は、取引を完了するために写真付き身分証明書と顔写真を提供する必要があります。 - ユーザーは L2 ユーザーであり、セッションの作成に必要な書類による L2 本人確認に合格していません。 - ユーザーは L0 の確認は完了していますが、この取引には L2 の確認が必要です。 - ユーザーは L1 の確認は完了していますが、この取引には L2 の確認が必要です。 | [Retrieve a CryptoCustomer](https://docs.stripe.com/api/crypto/customers/retrieve.md) API レスポンスの `provided_fields` を調べて、次のステップを判断します。 - ユーザーが L2 ユーザー (`provided_fields` に `dob`、`id_number`、`id_document`、`selfie`が含まれている) の場合、ユーザーに `verifyIdentity` を使用して L2 KYC の確認を完了するように求めます。 - ユーザーが L0 ユーザー (`provided_fields` に `dob`、`id_number`、`id_document`、`selfie`が含まれていない) の場合、ユーザーに `dob`、`id_number`、`id_type` のみを収集し、部分的に `attachKYCInfo` を使用してアップロードして、`verifyIdentity` を使用してL2 KYC の確認を完了するように求めます。 - ユーザーが L1 ユーザー (`provided_fields` に `dob` と `id_number` の両方が含まれているが、`id_document` と `selfie` が含まれていない) の場合、ユーザーに `verifyIdentity` を使用して L2 KYC の確認を完了するように求めます。 |