When verifying users on your platform, the verification checks performed by Adyen can return a range of error messages. In your test environment, all verification checks are passed by default when the required fields and documents are provided.
To test your error handling flow, you can force a scenario where one or more verification checks fail. This allows you to reproduce an unsuccessful verification flow, including the result and corresponding verification codes.
Before you begin
Make sure that you have API credentials for the Legal Entity Management API and Configuration API.
Step 1: Make an API request
Using the Legal Entity Management API, you can include a x-requested-verification-code
in the header of your API request.
You can use requested verification codes for the following endpoints:
Use a suberror code as your requested verification code. You can include one code at a time in your request header. Requested verification codes can only be used in your test environment.
In this example, you want to test the 1_3004
suberror code The name and residence country couldn't be verified
for an individual legal entity. This triggers the following verification checks:
- Name and date of birth check
- Residency country check
In the header of your POST /legalEntities request, include x-requested-verification-code: 1_3004
.
curl https://kyc-test.adyen.com/lem/v3/legalEntities \
-u "ws123456@Scope.BalancePlatform_YourBalancePlatform":"YourWsPassword" \
-H "content-type: application/json" \
-H "x-requested-verification-code: 1_3004"
-X POST \
-d '{
"type": "individual",
"individual": {
"phone": {
"number": "+31612345678",
"type": "mobile"
},
"birthData": {
"dateOfBirth": "1977-01-01"
},
"name": {
"firstName": "KYC",
"lastName": "My Test scenario"
},
"nationality": "NL",
"residentialAddress": {
"city": "Amsterdam",
"country": "NL",
"postalCode": "1111AB",
"street": "Main street"
},
"identificationData": {
"type": "nationalIdNumber",
"number": "12345678",
"issuerState": "NL"
}
}
}
Step 2: Create account holder
For error tests for legal entities, you need to create an account holder for the legal entity of the organization, individual, or sole proprietorship. For error tests for documents or transfer instruments, you need to create an account holder for the legal entity who owns the resource.
Step 3: Get verification results
To get updates about the verification status and results, you can:
- Listen to the balancePlatform.accountHolder.updated webhook or
- Make a GET API request for the particular legal entity, document, or transfer instrument.
Make a GET /legalEntities/{id} request, specifying the id in the path.
{
"verificationErrors":[
{
"code":"1_30",
"message":"Individual details couldn't be verified",
"remediatingActions":[
{
"code":"1_300",
"message":"Update individual details"
}
],
"subErrors":[
{
"code":"1_3004",
"message":"The name and residence country couldn't be verified",
"remediatingActions":[
{
"code":"1_305",
"message":"Upload a different proof of residency"
},
{
"code":"1_300",
"message":"Update individual details"
}
],
"type":"invalidInput"
}
],
"type":"invalidInput"
}
]
}
{
"data":{
"accountHolder":{
"capabilities":{
"sendToTransferInstrument":{
"allowed":"false",
"enabled":"true",
"problems":[
{
"entity":{
"id":"LE00000000000000000000001",
"type":"LegalEntity"
},
"verificationErrors":[
{
"code":"1_30",
"message":"Individual details couldn't be verified.",
"remediatingActions":[
{
"code":"1_300",
"message":"Update individual details"
}
],
"subErrors":[
{
"code":"1_3004",
"message":"The name and residence country couldn't be verified",
"remediatingActions":[
{
"code":"1_305",
"message":"Upload a different proof of residency"
},
{
"code":"1_300",
"message":"Update individual details"
}
],
"type":"invalidInput"
}
]
}
],
"requested":"true",
"verificationStatus":"invalid"
}
]
},
"description":"YOUR_DESCRIPTION",
"reference":"YOUR_REFERENCE",
"id":"AH00000000000000000000001",
"legalEntityId":"LE00000000000000000000001",
"status":"Active"
},
"balancePlatform":"YOUR_BALANCE_PLATFORM"
},
"environment":"test",
"type":"balancePlatform.accountHolder.updated"
}
}
The response returns the specified requested verification code and associated error codes.