Skip to main content

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

  1. PENDING - Under review - this status is provided when the KYC review is incomplete
  2. APPROVED - Customer is fully compliant and ready to transact
  3. 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

HeaderValueRequiredDescription
Acceptapplication/jsonYesContent type for the response
AuthorizationBearer {access_token}YesBearer token for authentication
Content-Typeapplication/jsonYesRequest 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

FieldTypeRequiredDescription
client_idstringYesUnique customer ID
merchant_typestringYesType of merchant: enterprise or individual
locationstringYesCountry code (ISO 2-letter)
merchant_ackstringYesMerchant acknowledgment: YES or NO
companyobjectYesCompany 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

FieldTypeDescription
client_idstringCustomer identifier
kyc_statusstringCurrent KYC status
submitted_atstring (date-time)Submission timestamp
messagestringStatus 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

Interactive API Explorer