Skip to main content

Customer Pre-Validation (KYC)

Overview

The Customer Pre-Validation endpoint performs comprehensive regulatory identity checks and risk profiling before wallet creation.

This critical compliance step ensures that:

  • Customer identity is verified via BVN
  • Sanctions screening is conducted
  • PEP (Politically Exposed Person) status is determined
  • Regulatory consent is obtained
  • Biometric verification is initiated
Prerequisites
  • Valid Bearer token (see Authentication)
  • Customer's Bank Verification Number (BVN)
  • Completed PEP and risk assessment questionnaire

Why Pre-Validation?

Pre-validation is a mandatory regulatory requirement that:

  1. Prevents fraud - Verifies customer identity before account opening
  2. Ensures compliance - Meets CBN KYC/AML regulations
  3. Manages risk - Identifies high-risk customers early
  4. Blocks sanctioned individuals - Screens against watchlists
  5. Streamlines onboarding - Catches issues before wallet creation

Endpoint

POST /waas/Onboarding/validate

Request Parameters

Required Headers

HeaderValue
AuthorizationBearer <access_token>
Ocp-Apim-Subscription-KeyYour access subscription key
Content-Typeapplication/json

Request Body Fields

FieldTypeRequiredDescription
merchantIdstringYesYour unique merchant identifier
requestIdstringYesUnique client-side reference for tracking
bvnstringYesCustomer's 11-digit Bank Verification Number
dataConsentbooleanYesCustomer consent for data processing
engagedInBettingbooleanYesWhether customer engages in betting/gambling
engagedInCryptobooleanYesWhether customer trades cryptocurrency
issuedCeaseandDesistbooleanYesWhether customer has cease-and-desist order

PEP Assessment Fields

All PEP-related fields are required. If a field is true, the corresponding *Txt field becomes mandatory.

FieldTypeRequiredDescription
govtOfficialbooleanYesCurrent or former government official
govtOfficialTxtstringConditional*Details about government position
polPartyOfficialbooleanYesPolitical party official
polPartyOfficialTxtstringConditional*Details about party role
govtEntExecbooleanYesGovernment enterprise executive
govtEntExecTxtstringConditional*Details about enterprise position
militaryOfficialbooleanYesCurrent or former military official
militaryOfficialTxtstringConditional*Details about military rank/unit
royalFamilybooleanYesMember of royal family
royalFamilyTxtstringConditional*Details about royal title/lineage
intlOrgFunctionbooleanYesSenior role in international organization
intlOrgFunctionTxtstringConditional*Details about role/organization
immediateFamilyPepbooleanYesImmediate family member of PEP
immediateFamilyPepTxtstringConditional*Details about PEP relationship
closeAssociatePepbooleanYesClose associate of PEP
associatePepTxtstringConditional*Details about PEP association

* Conditional = Required if corresponding boolean field is true


Request Example

curl -X POST https://api-sandbox.accessbankplc.com/waas/Onboarding/validate \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." \
-H "Content-Type: application/json" \
-d '{
"merchantId": "MRC123456",
"requestId": "REQ-2025-001-12345",
"bvn": "22222222222",
"dataConsent": true,
"engagedInBetting": false,
"engagedInCrypto": false,
"issuedCeaseandDesist": false,
"govtOfficial": false,
"govtOfficialTxt": "",
"polPartyOfficial": false,
"polPartyOfficialTxt": "",
"govtEntExec": false,
"govtEntExecTxt": "",
"militaryOfficial": false,
"militaryOfficialTxt": "",
"royalFamily": false,
"royalFamilyTxt": "",
"intlOrgFunction": false,
"intlOrgFunctionTxt": "",
"immediateFamilyPep": false,
"immediateFamilyPepTxt": "",
"closeAssociatePep": false,
"associatePepTxt": ""
}'

Response

Success Response

{
"succeeded": true,
"code": "200",
"message": "Validation data.",
"data": {
"requestId": "REQ-2025-001-12345",
"processId": "PROC-987654321",
"widgetUrl": "https://verification.accessbankplc.com/widget?token=abc123..."
},
"pageMeta": {},
"errors": {}
}

Response Fields

FieldTypeDescription
requestIdstringProvided client-side identification number for tracking the request
processIdstringAn Id to recognize the process upon account opening
widgetUrlstringWidget URL for face verification redirection
Important

Request Id & Process Id will be needed for wallet creation not just Process Id.


Biometric Verification Flow

After successful pre-validation:

  1. Redirect customer to the widgetUrl
  2. Customer completes face verification
  3. Verification result is linked to the processId
  4. Proceed to wallet creation using the same processId

Before calling this endpoint, you must:

  1. ✅ Display a clear privacy notice
  2. ✅ Explain how data will be used
  3. ✅ Obtain explicit customer consent
  4. ✅ Set dataConsent: true in the request

"I consent to Access Bank and [Your Company] collecting and processing my personal data including my BVN, biometric information, and identity documents for the purpose of creating and managing my digital wallet, conducting identity verification, and complying with regulatory requirements."


Next Steps

After successful validation:

  1. Redirect customer to widgetUrl for biometric verification
  2. Wait for verification completion
  3. Proceed to Wallet Creation using the processId