Skip to content

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.

See the KYC API endpoint references.

Set up environment variables

  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>"

Submit cardholder KYC statement

Submit KYC statement about the cardholder account. Provide "passall" as the middle name, the check should be successful regardless of the validity of the rest of the details.

  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",
        "timestamp": "2023-08-08T04:15:48.013Z",
        "claims": [
            {
                "claimType": "FULL_NAME",
                "attributes": {
                    "givenName": "RONALD",
                    "honorific": "Mr",
                    "familyName": "Lopez"
                }
            },
            {
                "claimType": "ADDRESS",
                "attributes": {
                    "addressType": "RESIDENTIAL",
                    "country": "NZL",
                    "streetNumber": "73",
                    "streetName": "Great Southern",
                    "streetType": "ROAD",
                    "suburb": "Auckland CBD",
                    "town": "Auckland",
                    "region": "Auckland",
                    "state": "AKL",
                    "postalCode": "6140"
                }
            },
            {
                "claimType": "DOB",
                "attributes": {
                    "country": "NZL",
                    "dateOfBirth": "1980-05-09",
                    "locality": "Brisbane",
                    "yearOfBirth": "1978"
                }
            }
        ],
        "evidence": [
            {
                "evidenceType": "PASSPORT",
                "documentId": "LZ651555",
                "country": "NZL",
                "expiry": "2024-10-12"
            }
        ]
    }'

Poll spending prerequisites

Poll spending prerequisites until KYC Check is not returned in the response.

Calling the "get spending prerequisites" endpoints queues a KYC check. When the KYC check is queued, a KYC profile for that account is created with a "created" status.

The status changes to "pending" when the check is started and the KYC statements are submitted for verification. Once the check is complete we will update the user's KYC profile with the appropriate status: "passed" or "failed". If a KYC profile status is "passed" and the region of the profile matches card program region, the response should no longer include KYC prerequisite. However, if the status is "failed", the response will state "kyc_check_failed".

Example request

  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",
      "kycRegion":"NZL"
    }'

Example response

  {
    "prerequisites": [
      {
        "type": "kyc",
        "params": {
          "status": "check_in_progress"
        }
      }
    ]
  }