1. Support Center
  2. Getting Ready for Trading

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, whether using the Cybrid Platform KYC method or the Partner Attestation KYC method, 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.

Methods of Identity Verification

The Cybrid Platform supports two different identity verification methods:

Method Description
Cybrid (id_and_selfie) Choose this method if the Cybrid Platform will be handling KYC. You will typically implement the Cybrid KYC UI SDK in your Web, iOS or Android application for this method.
Partner (attested) Choose this method if you have been approved by Cybrid to handle KYC verification using your own solution, and subsequently provide an attestation of your successful KYC verifications.

Approaches to the Cybrid Method (id_and_selfie)

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):

  1. Create an identity verification record on the Cybrid Platform
  2. Get the Persona Inquiry ID from the newly created identity verification record from above
  3. Supply the Inquiry ID to the Persona implementation you chose to go with
  4. Wait for the identity verification to become completed on Cybrid's Platform
  5. 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.

To try it out, head over to our Swagger documentation and navigate down to the POST /api/identity_verifications endpoint and expand it. Click the Try it out button, 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.

Next, click execute, and note the GUID in the response. 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:

  1. 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>
  2. 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.

Creating an Identity Verification for the 'attested' Method

In this method, you will simply be attesting to the same KYC PII information you supplied during the creation of the customer record (see How do I create a customer).

Important: In order to use the attested method, you will need a KYC / AML program in place, and will be required to share your KYC Policies and Procedures with Cybrid, share the vendor which handles your KYC, and be prepared to demonstrate the user experience.

To try it out, head over to our Swagger documentation and navigate down to the POST /api/identity_verifications endpoint and expand it. Click the Try it out button, and fill in the below information in the request body, making sure to use the same information you supplied during the creation of the customer:

{
  "type": "kyc",
"method": "attested",
"customer_guid": "your-customer-guid",
"name": {
    "first": "string",
    "middle": "string",
    "last": "string"
  },
  "address": {
    "street": "string",
    "street2": "string",
    "city": "string",
    "subdivision": "string",
    "postal_code": "string",
},
  "date_of_birth": "2023-03-23",
  "identification_numbers": [
    {
      "type": "drivers_license",
      "issuing_country_code": "string",
      "identification_number": "string"
    }
],
}

Now that the customer is verified you can proceed on with account funding and trading.

What's Next?

Head back over to the our Getting Ready for Trading guide, or jump right to How do I generate a quote?