Submit KYC
Overview
This endpoint allows you to submit information to verify customers or update their existing KYC information. You will need to quote the unique client_id that is returned when you create a customer account.
Resource Access
- HTTP Method:
POST - Endpoint:
/banking/iban/api/account/v2/certification/submit - Authentication: Bearer token required
KYC Status
Onboarding is only complete once you submit your customer's KYC details and documentation and receive an APPROVED kyc_status via the KYC status webhook.
If the customer details change or additional information is required, KYC can be resubmitted so long as the status is not already PENDING.
Status Values
- PENDING - Under review - this status is provided when the KYC review is incomplete
- APPROVED - Customer is fully compliant and ready to transact
- DECLINED - Review has either been rejected or further information has been requested by the Compliance team (RFI). Reason details will be provided, including any further information requested
Note: Requests for information (RFI) are currently included in the "DECLINED" KYC status and may not always indicate a rejection.
Request Headers
| Header | Value | Required | Description |
|---|---|---|---|
Accept | application/json | Yes | Content type for the response |
Authorization | Bearer {access_token} | Yes | Bearer token for authentication |
Content-Type | application/json | Yes | Request body content type |
Request Body
The request body structure varies by jurisdiction. Below is a sample for enterprise KYC:
{
"client_id": "M2024121314005491902",
"merchant_type": "enterprise",
"location": "DE",
"merchant_ack": "YES",
"company": {
"enterprise": {
"business_type": "COMPANY",
"name": "Example Corp",
"establishment_date": "2019-02-13",
"tax_id_type": "VAT",
"tax_id_number": "DE123456789",
"street_address": "Schillerstraße 23",
"city": "Berlin",
"postcode": "10625",
"products_and_services_category": "KC02001008"
},
"business_person_list": [
{
"role_type": "DIRECTOR_CONTROL_PERSON_OR_LEGAL_REP",
"id_type": "PASSPORT",
"first_name": "John",
"last_name": "Doe",
"date_of_birth": "1980-01-01",
"nationality": "US"
}
]
}
}
Request Fields
| Field | Type | Required | Description |
|---|---|---|---|
client_id | string | Yes | Unique customer ID |
merchant_type | string | Yes | Type of merchant: enterprise or individual |
location | string | Yes | Country code (ISO 2-letter) |
merchant_ack | string | Yes | Merchant acknowledgment: YES or NO |
company | object | Yes | Company information object |
Response
Success Response (200 OK)
{
"client_id": "M2024121314005491902",
"kyc_status": "PENDING",
"submitted_at": "2026-01-14T10:00:00.000Z",
"message": "KYC information submitted successfully"
}
Response Fields
| Field | Type | Description |
|---|---|---|
client_id | string | Customer identifier |
kyc_status | string | Current KYC status |
submitted_at | string (date-time) | Submission timestamp |
message | string | Status message |
Error Responses
- 400 Bad Request: Invalid input data or missing required fields
- 401 Unauthorized: Invalid or missing authentication token
- 409 Conflict: KYC already PENDING review
- 422 Unprocessable Entity: Validation errors in KYC data
Code Examples
cURL
curl -X POST \
'https://gateway.ahrvo.network/banking/iban/api/account/v2/certification/submit' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer YOUR_ACCESS_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"client_id": "M2024121314005491902",
"merchant_type": "enterprise",
"location": "DE",
"merchant_ack": "YES",
"company": {}
}'
Python
import requests
url = "https://gateway.ahrvo.network/banking/iban/api/account/v2/certification/submit"
headers = {
"Accept": "application/json",
"Authorization": "Bearer YOUR_ACCESS_TOKEN",
"Content-Type": "application/json"
}
data = {
"client_id": "M2024121314005491902",
"merchant_type": "enterprise",
"location": "DE",
"merchant_ack": "YES",
"company": {}
}
response = requests.post(url, headers=headers, json=data)
print(response.json())
JavaScript (Node.js)
const axios = require('axios');
const url = 'https://gateway.ahrvo.network/banking/iban/api/account/v2/certification/submit';
const headers = {
'Accept': 'application/json',
'Authorization': 'Bearer YOUR_ACCESS_TOKEN',
'Content-Type': 'application/json'
};
const data = {
client_id: 'M2024121314005491902',
merchant_type: 'enterprise',
location: 'DE',
merchant_ack: 'YES',
company: {}
};
axios.post(url, data, { headers })
.then(response => {
console.log(response.data);
})
.catch(error => {
console.error(error.response.data);
});
Usage Notes
- Check jurisdiction-specific KYC requirements before submission
- All documents must be uploaded before KYC submission
- KYC can be resubmitted if status is not PENDING
- Monitor status via webhooks for real-time updates
- Review times typically range from 1-5 business days
- Keep customer information up-to-date
Required Documents by Jurisdiction
Requirements vary by location. Common documents include:
- Business registration certificate
- Articles of association
- Proof of address
- Director/UBO identification
- Tax registration documents