1. Support Center
  2. Getting Ready for Trading

How do I create a bank account identity verification?

Understand how to verify an external bank account against a customer's KYC information

What is a bank account identity verification?

In order to process EFT or ACH transfers on the Cybrid Platform, it is required that the customer connecting the external bank account owns the external bank account, and that customer has successfully KYC'd. The bank account identity verification will verify that the name on the connected external bank account matches the name provided during KYC.

Bank account identity verifications are currently optional on the Cybrid Platform; however, bank account identity verifications will soon be required on the Cybrid Platform.

See the following sections below for important information regarding required bank account identity verifications:

Understanding what will change when bank account identity verifications are required

Understanding how to prepare for when bank account identity verifications are required

Creating a bank account identity verification

After a customer has KYC'd and their customer state is "verified", and the customer has initiated connecting their external bank account via Plaid, you can then create a customer bank identity verification via the POST /api/identity_verifications endpoint.

Currently, bank account identity verifications may also be executed for external bank accounts where the state is already "completed".

If you are using Cybrid's KYC and Plaid services, you will create an identity_verification of type="bank_account" and method="plaid_identity_match".

An example POST bank account identity verification request body is below:

{
"type": "bank_account",
"method": "plaid_identity_match",
"customer_guid": "<customer_guid>",
"external_bank_account_guid": "<external_bank_account_guid>"
}

If you are using attested KYC and Cybrid's Plaid services, or using your own Plaid services, you will create an identity verification of type="bank_account" and method="attested".

When attested, you will provide the customer details when creating the bank account identity verification. 

Depending how you're storing your customer details, one option is to use the Plaid Identity API to retrieve the customer details in order to pass to the POST request.

An example POST bank account identity verification request body is below:

{
"type": "bank_account",
 "method": "attested",
"customer_guid": "<insert customer_guid>",
"external_bank_account_guid": "<insert external_bank_account_guid>",
"name": {
  "full": "<insert first middle last>"
  },
  "address": {
  "street": "<insert street>",
  "city": "<insert city>",
  "country_code": "<insert country_code>"
}
"phone_number": "<insert phone_number>",
"email_address": "<insert email_address>"
}

Understanding when the bank account identity verification is complete

After creating a bank account identity verification, you can check on the state and outcome of the identity verification using the GET /api/identity_verifications endpoint.

Completed State

When a bank account identity verification is auto-approved, the bank account identity verification will progress immediately from state="storing" to state="completed".

Waiting State

When a bank account identity verification is not immediately auto-approved, the bank account identity verification will progress immediately from state="storing" to state="waiting".

The Cybrid team will be notified when the bank account identity verification state is "waiting", and will begin review and may request additional identity documents from the customer.

The bank account identity verification state will remain in "waiting" for up to one week and, if it hasn't already progressed to state="completed",  will automatically progress to state="completed", with outcome="failed", and with failure_codes indicating "decision_timeout".

Passed Outcome

When the bank account identity verification is either immediately auto-approved, or approved by the Cybrid team while the state is "waiting", the bank account identity verification will progress to state="completed" and outcome="passed".

When outcome is "passed", the bank account identity verification is complete and successful.

Failed Outcome

When the bank account identity verification is rejected by the Cybrid team while the state is "waiting", the bank account identity verification will progress to state="completed" and outcome="failed", and the failure_codes array will return one of the following errors:

  • name_check_failure: The name used during KYC does not match the name registered on the bank account
  • address_check_failure: The address used during KYC does not match the name registered on the bank account
  • phone_number_check_failure: The phone number used during KYC does not match the name registered on the bank account. Note:  This will not prevent passing
  • email_address_check_failure: The email address used during KYC does not match the name registered on the bank account. Note:  This will not prevent passing
  • decision_timeout:  The bank account verification has timed out

When outcome is "failed", the bank account identity verification is complete but not successful, and must be resubmitted in order to complete a successful bank account identity verification.

Understanding what will change when bank account identity verifications are required

The behaviour of the bank account identity verifications described above does not change when when bank account identity verifications are required; however, there will be a new "unverified" external bank account state that will be used to indicate whether a bank account identity verification has been completed.

New external bank accounts

On a pre-determined date announced in advance by the Cybrid team, when creating new external bank accounts using the POST /api/external_bank_accounts endpoint, the external bank account state will progress from "storing" to "unverified".

The external bank account state will remain "unverified" until the bank account identity verification has been successful (i.e. outcome="passed").

Once the bank account identity verification has been successful (i.e. outcome="passed"), the external bank account state will progress from "unverified" to "completed".

Important:  New external bank accounts created on, and after, the pre-determined date cannot be used for trades or transfers until the external bank account state is "completed".

Existing external bank accounts

On a pre-determined date announced in advance by the Cybrid team, all external bank accounts that have not already had a successful bank account identity verification (i.e. outcome="passed") will be updated to set the external bank account state to "unverified".

The GET /api/external_bank_accounts list endpoint can be used to retrieve all external bank accounts where the state is "unverified".

For external bank accounts where the state is "unverified", a bank account identity verification must be completed.

Once the bank account identity verification has been successful (i.e. outcome="passed"), the external bank account state will progress from "unverified" to "completed".

Important:  Existing external bank accounts cannot be used for trades or transfers on, and after, the pre-determined date until the external bank account state is "completed".

Understanding how to prepare for when bank account identity verifications are required


Key recommendation:  We recommend executing bank account identity verifications for all external bank accounts where the state is "completed" prior to the pre-determined date.

The GET /api/external_bank_accounts list endpoint can be used to retrieve all external bank accounts where the state is "completed".

Those external bank accounts with successful bank account identity verifications (i.e. bank account identity verification state has progressed to "completed" and outcome is "passed"):

  • Will be completed in advance and the customer's ability to execute trades and transfers will be unaffected on, and after, the pre-determined date.

Those external bank accounts with unsuccessful bank account identity verifications (i.e. either bank account identity verification state is "waiting", or bank account identity verification state="completed" and outcome="failed"):

  • Can continue to execute trades and transfers only until the day prior to the pre-determined date
  • For these bank account identity verifications where the state is "waiting":
    • The Cybrid team will require additional identity documents from the customer in order to approve the bank account identity verification
    • To provide these additional identity documents:
      • Using the POST /api/identity_verifications endpoint, create an identity verification of type="KYC" and method="document_submission". 
      • Using the GET /api/identity_verifications endpoint, retrieve the persona_inquiry_id from the newly created document submission identity verification
      • Use the persona_inquiry_id to initiate the either the Cybrid KYC web SDK, or the Persona web SDK if you're driving the Persona KYC manually, to allow the customer to upload the identity document (i.e. bank statement within the last 90 days with customer full name and current address)
      • Once the customer has uploaded the additional identity documents directly to the Cybrid Platform using the above document submission identity verification, the Cybrid team will be notified and will proceed with the review process
  • When the Cybrid team approves these bank account identity verifications:
    • The bank account identity verification outcome will progress to "passed" and the state will progress to "completed"
    • The external bank account state will progress to "completed"
    • The customer can continue executing trades and transfers with this external bank account on, and after, the pre-determined date
  • When the Cybrid team rejects these bank account identity verifications:
    •  The bank account identity verification outcome will progress to "failed" and the state will progress to "completed"
    • The external bank account state will remain "unverified"
    • While the external bank account state remains "unverified", this external bank account is no longer usable; however, additional bank account identity verifications may be executed in order to attempt another approval
    • The customer can continue executing trades and transfers with this external bank account while the state remains "unverified" only until the day prior to the pre-determined date
    • The customer cannot execute trades and transfers with this external bank account while the state remains "unverified" on, or after, the pre-determined date 

Key take-away:  For those customers who are currently connected to external bank accounts that do not have a matching name to what they provided during their KYC, this external bank account can no longer be used for trades and transfers after the pre-determined date.

The customer must connect to a different external bank account with a matching name in order to continue executing trades and transfers on the Cybrid Platform.