Skip to main content

Add Onboarding Data (New)

Overview

Submit comprehensive onboarding data for a company or sub-account, track review and RFI states, and submit compliance data before enabling operational activity.

This endpoint accepts the company's selected banking products, corporate profile, registered and operating addresses, beneficial owners/shareholders, uploaded document references, and regulatory risk assessment answers.

Resource Access

  • HTTP Method: POST
  • Endpoint: /banking/ibans/v2/companies/{companyId}/onboarding-data
  • Authentication: Bearer token required

Request Headers

HeaderValueRequiredDescription
AuthorizationBearer {access_token}YesJWT Bearer access token
Content-Typeapplication/jsonYesRequest payload format
Acceptapplication/jsonYesResponse payload format
x-api-keystringNoOptional API key

Path Parameters

ParameterTypeRequiredDescription
companyIdstringYesThe unique identifier for the company (e.g. 2).

Request Body

Request Fields (ClientOnboardingRq)

FieldTypeRequiredDescription
selectedProductsarray of stringsYesBanking products selected (Collect, Convert, Pay, Hold, API).
companyobjectYesCorporate profile details (legal form, company type).
company.typestringYesLegal entity type (e.g. Private Limited Company, Sole Proprietorship).
companyAddressesarrayYesRegistered and operational addresses for the business.
companyAddresses[].typestringYesAddress type (REGISTERED or OPERATING).
companyAddresses[].line1stringYesStreet address line 1.
companyAddresses[].citystringYesCity or locality.
companyAddresses[].postalCodestringYesPostal or ZIP code.
companyAddresses[].countrystringYesISO country code (e.g. GB, US).
shareholdersarrayYesArray of corporate or individual shareholders and UBOs.
shareholders[].typestringYesShareholder type (INDIVIDUAL or CORPORATE).
shareholders[].firstNamestringYesFirst name (for individuals).
shareholders[].lastNamestringYesLast name (for individuals).
shareholders[].percentagenumberYesPercentage of shares or voting rights held.
companyDocumentsarrayNoUploaded company document references (documentKey, documentTypeId).
shareholderDocumentsarrayNoUploaded identification documents for shareholders.
riskAssessmentarrayNoArray of compliance and risk assessment questionnaire responses.

Request Example

{
"selectedProducts": ["Collect", "Convert", "Pay"],
"company": {
"type": "Private Limited Company"
},
"companyAddresses": [
{
"type": "REGISTERED",
"line1": "100 Bishopsgate",
"city": "London",
"postalCode": "EC2N 4AG",
"country": "GB"
}
],
"shareholders": [
{
"type": "INDIVIDUAL",
"firstName": "Alexander",
"lastName": "Wright",
"email": "alex.wright@example.com",
"percentage": 60.0,
"isUltimateBeneficialOwner": true,
"isDirector": true
}
],
"companyDocuments": [
{
"documentTypeId": "doc_type_incorp_01",
"documentKey": "docs/company/2/incorporation-cert.pdf"
}
]
}

Response

Success Response (200 OK)

{
"companyId": "2",
"parentCompanyId": "1",
"status": "UNDER_REVIEW",
"kycLevel": "0",
"selectedProducts": ["Collect", "Convert", "Pay"],
"company": {
"type": "Private Limited Company"
},
"progress": [
{
"step": "COMPANY_DETAILS",
"status": "COMPLETED"
},
{
"step": "DOCUMENTS",
"status": "IN_REVIEW"
}
],
"createdAt": "2026-09-15T03:00:00.000Z",
"updatedAt": "2026-09-15T03:00:00.000Z"
}

Response Fields (ClientOnboardingRs)

FieldTypeDescription
companyIdstringUnique identifier for the company.
parentCompanyIdstringID of the parent company if this is a sub-account.
statusstringOverall onboarding status (CREATED, PENDING, UNDER_REVIEW, APPROVED, REJECTED, RFI).
kycLevelstringApproved KYC tier (0 = basic, 3 = verified tier).
selectedProductsarrayList of products activated for this account.
progressarrayGranular review step progression across compliance checks.
createdAtstringTimestamp when onboarding dossier was created.
updatedAtstringTimestamp of last modification.

Error Responses

  • 400 Bad Request: Invalid payload, missing mandatory fields, or malformed schema.
  • 401 Unauthorized: Missing or expired Bearer token.
  • 403 Forbidden: Caller does not have permissions to modify this company.
  • 404 Not Found: companyId not found.
  • 500 Internal Server Error: An internal server error occurred.

Code Examples

Base URL

Production: https://api.ahrvo.network
Staging: https://gateway.ahrvo.network

cURL

curl -X POST \
'https://gateway.ahrvo.network/banking/ibans/v2/companies/2/onboarding-data' \
-H 'Authorization: Bearer YOUR_ACCESS_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"selectedProducts": ["Collect", "Convert", "Pay"],
"company": {
"type": "Private Limited Company"
},
"companyAddresses": [
{
"type": "REGISTERED",
"line1": "100 Bishopsgate",
"city": "London",
"postalCode": "EC2N 4AG",
"country": "GB"
}
],
"shareholders": [
{
"type": "INDIVIDUAL",
"firstName": "Alexander",
"lastName": "Wright",
"email": "alex.wright@example.com",
"percentage": 60.0
}
]
}'

Python

import requests

url = "https://gateway.ahrvo.network/banking/ibans/v2/companies/2/onboarding-data"
headers = {
"Authorization": "Bearer YOUR_ACCESS_TOKEN",
"Content-Type": "application/json"
}
payload = {
"selectedProducts": ["Collect", "Convert", "Pay"],
"company": {
"type": "Private Limited Company"
},
"companyAddresses": [
{
"type": "REGISTERED",
"line1": "100 Bishopsgate",
"city": "London",
"postalCode": "EC2N 4AG",
"country": "GB"
}
],
"shareholders": [
{
"type": "INDIVIDUAL",
"firstName": "Alexander",
"lastName": "Wright",
"email": "alex.wright@example.com",
"percentage": 60.0
}
]
}

response = requests.post(url, json=payload, headers=headers)
print(response.status_code, response.json())

JavaScript (Node.js)

const axios = require('axios');

const companyId = '2';
const url = `https://gateway.ahrvo.network/banking/ibans/v2/companies/${companyId}/onboarding-data`;
const headers = {
'Authorization': 'Bearer YOUR_ACCESS_TOKEN',
'Content-Type': 'application/json'
};

const payload = {
selectedProducts: ['Collect', 'Convert', 'Pay'],
company: {
type: 'Private Limited Company'
},
companyAddresses: [
{
type: 'REGISTERED',
line1: '100 Bishopsgate',
city: 'London',
postalCode: 'EC2N 4AG',
country: 'GB'
}
],
shareholders: [
{
type: 'INDIVIDUAL',
firstName: 'Alexander',
lastName: 'Wright',
email: 'alex.wright@example.com',
percentage: 60.0
}
]
};

axios.post(url, payload, { headers })
.then(res => console.log(res.data))
.catch(err => console.error(err.response ? err.response.data : err.message));

Interactive API Explorer