Partner Conducted KYC

In the Partner conducted KYC mode, the partner collects and verifies the KYC information from cardholders, which is then supplied to Immersive via API (name, date of birth, ID details, etc).

Although Immersive still performs KYC checks on these details, we rely on the partner for verification of document scans and the cardholder's identity.

Below, we've outlined the steps for completion of this verification process, assuming all necessary details, such as document scans and biometrics, have been collected and verified.

Set up environment variables

Terminal window
card_issuer_api_key="<your_card_issuer_api_key>"
card_issuer_api_secret="<your_card_issuer_api_secret>"
partner_account_id="<your_partner_account_id>"
card_program_id="<your_card_program_id>"
cardholder_account_id="<cardholder_account_id>"
funding_source_id="<funding_source_id>"

Supply Contact Details

Immersve requires users contact details (phone number and email) for the following reasons, this should be explained to customers:

  • Adding cards to Apple/Google Pay wallets (X-Pay)
  • Performing 3DS validation for online transactions

If a user doesn't provide contact details, they risk online transactions being rejected and might not be able to add cards to X-Pay wallets.

Before you share contact details with Immersve you must collect user consent via a checkbox. This can be done at the same time as KYC information sharing.

Terminal window
curl -X PATCH "https://${imsv_api_host}/api/accounts/${cardholder_account_id}/contact-details" \
-H "Content-Type: application/json" \
-H "X-Api-Key: ${card_issuer_api_key}" \
-H "X-Api-Secret: ${card_issuer_api_secret}" \
-H "X-Account-Id: ${cardholder_account_id}" \
--data '{
"email": {
"emailAddress": "joe@cardholder.email",
},
"phone": {
"phoneNumber": "+64123456789",
}
}'

Supply Expected Spend Amount

Regulations require that Immersve obtain information on the “nature and purpose” of the proposed business relationship between ourselves and the cardholder.

Collection of the anticipated monthly spending level when onboarding a new cardholder is one measure that assists in our understanding of the nature and purpose of the cardholder account.

Terminal window
curl -X POST "https://${imsv_api_host}/api/accounts/${cardholder_account_id}/expected-spend-amount \
-H "Content-Type: application/json" \
-H "X-Api-Key: ${card_issuer_api_key}" \
-H "X-Api-Secret: ${card_issuer_api_secret}" \
-H "X-Account-Id: ${cardholder_account_id}" \
--data '{
"expectedSpendAmount": "200000",
}'

Submit cardholder KYC statement

Terminal window
your_given_name=""
your_family_name=""
date_of_birth="" # YYYY-MM-DD
curl -X PUT "https://test.immersve.com/api/accounts/${cardholder_account_id}/partner-kyc-statement" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "x-api-key: ${card_issuer_api_key}" \
-H "x-api-secret: ${card_issuer_api_secret}" \
--data '{
"idempotencyKey": "some_random_key_thats_unique_for_each_request",
"region": "NZ",
"claims": [
{
"claimType": "DOB",
"attributes": {
"dateOfBirth": "'${date_of_birth}'",
}
},
{
"claimType": "FULL_NAME",
"attributes": {
"honorific": "Mr",
"givenName": "'${your_given_name}'",
"middleName": "PASSALL",
"familyName": "'${your_family_name}'"
}
},
{
"claimType": "ADDRESS",
"attributes": {
"addressType": "RESIDENTIAL",
"streetNumber": "73",
"streetName": "Great Southern",
"streetType": "ROAD",
"suburb": "Auckland CBD",
"town": "Auckland",
"region": "Auckland",
"state": "AKL",
"postalCode": "6140"
"country": "NZ",
}
}
],
"evidence": [
{
"evidenceType": "DRIVERS_LICENSE",
"documentId": "80513",
"country": "AU",
"region": "VIC",
"version": "P0001975"
}
]
}'

Poll spending prerequisites

Poll the Get Spending Prerequisites endpoint to wait for KYC checks to complete. The initial call to the endpoint when there is a new KYC statement for the cardholder will create a new KYC check and the endpoint will return "check_in_progress" for the KYC prerequisite status.

The endpoint will keep returning "check_in_progress" until the check is completed. Once the check is completed successfully, the response should contain "ok" status for the KYC prerequisite. However, if the check failed, the response will return "kyc_check_failed", along with an array listing the reasons for the failure. Check the KYC statement and submit it again or contact Immersve support.

Example request

Terminal window
curl -X "https://test.immersve.com/api/spending-prerequisites" \
-H "Content-Type: application/json" \
-H "X-Api-Key: ${card_issuer_api_key}" \
-H "X-Api-Secret: ${card_issuer_api_secret}" \
-H "X-Account-Id: ${cardholder_account_id}" \
--data '{
"cardProgramId": "'${card_program_id}'",
"fundingSourceId": "'${funding_source_id}'",
"spendableAmount": 100,
"spendableCurrency": "USD",
"kycType": "partner-conducted",
}'

Example response

{
"prerequisites": [
{
"stage": "kyc",
"status": "action-required",
"type": "kyc",
"actionType": "submit_kyc_statement",
"params": {
"status": "check_in_progress"
}
}
]
}