Verifying a Customer
How do I create a customer identity verification?
Understand how to verify a newly created customer with an identity verification
After creating a new customer the customer state will progress from storing to unverified. The unverified state simply indicates that an identity verification needs to be created for the customer before any account activity can take place, such as fiat transfers or crypto trading.
Method of KYC / KYB Identity Verification (id_and_selfie)
The Cybrid Platform supports verifying users via government ID and Selfie check. Additionally, verification flows may request documentation if portions of the identity cannot be validated.
Approaches to using Cybrid KYC / KYB
If you're choosing the Cybrid (id_and_selfie) method of KYC, you have two different approaches for how you implement the process:
Approach | Description |
---|---|
Cybrid UI SDK | In this approach, Cybrid's SDK drives the entire identity verification process on your behalf. |
Partner Driven | In this approach, you manually drive the identity verification process via our APIs. |
Cybrid UI SDK: Identity Verification for 'id_and_selfie' Method
This is the easiest way to perform KYC verification of your users. In this method, you leverage the Cybrid UI SDK components from our Web, iOS or Android SDK libraries, and you do not need to interact directly with the identity verification APIs.
Cybrid's UI SDKs are designed to do all the heavy lifting by driving the identity verification process after you create the customer record (see How do I create a customer). Simply choose your preferred UI SDK component library and instantiate the identity-verification component to proceed through identity verification
Tip: If you're testing with the Web Demo App, you can create your customer record, and authenticate in the Web Demo App with your customer GUID.To allow the Web Demo App to automatically create the identity verification for you, select the identity-verification in the component dropdown list and proceed through the identity verification steps.
Even if you plan to use this method, it's a good idea to review the Partner Driven method below, as it may still be beneficial to understand how to query the identity verification status of a customer on the Cybrid Platform.
Partner Driven: Identity Verification for 'id_and_selfie' Method
In this method, you will be creating an identity verification (IDV) that will drive a KYC workflow on the Cybrid Platform, but you will drive the verification process yourself. Cybrid partners with Persona for KYC identity verification, so you will need to implement one of Persona's methods in your application to complete an Identity Verification Inquiry.
The process will generally follow these steps (more details below):
- Create an identity verification record on the Cybrid Platform
- Get the Persona Inquiry ID from the newly created identity verification record from above
- Supply the Inquiry ID to the Persona implementation you chose to go with
- Wait for the identity verification to become completed on Cybrid's Platform
- Confirm that the customer record has become verified on Cybrid's Platform
Even though you will integrate one of Persona's SDKs yourself, the Inquiry ID you supply Persona's SDKs will report the verification status back to Cybrid's Platform.
Use the POST /api/identity_verifications endpoint, and fill in the below information in the request body:
{
"type": "kyc",
"method": "id_and_selfie",
"customer_guid": "your-customer-guid",
"expected_behaviours": ["string"]
}
Note: The expected_behaviours is available in the sandbox to specify how you want the verification to be returned. This is helpful in testing success/failure scenarios. The expected_behaviour key can be removed completely for normal operation, or the array can include passed_immediately or failed_immediately for testing purposes.
You will see something similar to:
{
"guid": "your-identity-verification-guid",
"customer_guid": "your-customer-guid",
"type": "kyc",
"method": "id_and_selfie",
"created_at": "2023-03-23T16:01:58.074Z",
"state": "storing"
}
This starts a workflow on the Cybrid Platform to create an identity verification with our KYC provider. To proceed through a verification you'll need to take the GUID from the newly created record and poll via the GET /api/identity_verifications/{identity_verification_guid} endpoint, until you see the persona_inquiry_id field change from null to the Inquiry ID number. The response will look similar to:
{
"guid": "your-identity-verification-guid",
"customer_guid": "your-customer-guid",
"type": "kyc",
"method": "id_and_selfie",
"created_at": "2023-03-23T16:05:40.757Z",
"state": "waiting",
"outcome": "passed",
"persona_inquiry_id": "your-inquiry-id",
"persona_state": "waiting"
}
There's two ways to test this:
- Add the returned Inquiry ID to the following URL and navigate to it in your browser: https://withpersona.com/verify?inquiry-id=<your-inquiry-id>
- Provide the Inquiry ID to the Persona component you have implemented
Using one of the methods above, proceed through the verification process.
Understanding when an identity verification is complete
After you have proceeded through the verification process we suggest you take the the following actions to validate verification was successful.
First, poll on the GET /api/identity_verifications/{identity_verification_guid} endpoint until the state is completed, and the outcome is passed, as shown below:
{
"guid": "your-identity-verification-guid",
"customer_guid": "your-customer-guid",
"type": "kyc",
"method": "id_and_selfie",
"created_at": "2023-03-23T16:05:40.757Z",
"state": "completed",
"outcome": "passed",
"persona_inquiry_id": "your-inquiry=id",
"persona_state": "completed"
}
You'll also note above that the persona_state will be in completed. If for some reason the verification failed, you can look at the failure_codes key, which will return the specific issue encountered during verification.
Once the identity verification has completed and has passed, we suggest you confirm that the customer record has also entered the verified state. You can call the GET /api/customers/{customer_guid} endpoint and confirm the state is verified, as indicated below:
{
"guid": "your-customer-guid",
"type": "individual",
"created_at": "2023-03-23T17:07:08.118Z",
"state": "verified"
}
Now that the customer is verified you can proceed with account funding and trading.
Updated 5 months ago