Step 1: Get product KYC requirements ā GET /api/v1/Products/{productId}
Step 2: Upload required documents ā POST /api/v1/uploadfile
Step 3: Submit KYC with file URLs ā POST /api/v1/customers/{customerId}/products/{productId}/applicantGET /api/v1/Products/{productId}kyc_requirements array listing which requirement types are needed for that product. Use this to determine which fields and documents you need to collect.POST /api/v1/uploadfile{
"data": [
{
"file_name": "passport_front.jpg",
"file_url": "https://storage.blob.core.windows.net/docs/abc123.jpg"
}
]
}ā ļø Important: Save the returned file_urlvalues ā you will pass these URLs as field values (e.g.,frontDoc,backDoc,selfie,photo) in Step 3.
POST /api/v1/customers/{customerId}/products/{productId}/applicant| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
customerId | path | uuid | ā | The customer identifier |
productId | path | uuid | ā | The product identifier |
| body | body | JSON | ā | KYC fields based on product requirements |
ā ļø Only send the fields that match the KYC requirements returned by the Product Details API. Requirements vary by product.
| Requirement | Required Fields |
|---|---|
| PassportOnly | docType, docId, frontDoc š, backDoc š |
| Passport | docType, docId, frontDoc š, backDoc š, docExpireDate, docNeverExpire |
| FullNameOnly | firstName, lastName |
| FullName | firstName, lastName, gender, dob |
| Comms | email, mobileCode, mobile |
| EmergencyContact | emergencyContact |
| Address | address |
| FullAddress | address, town, city, state, zipCode, countryId, countryIsoThree |
| HandedPassport | handHoldIdPhoto š |
| Face | photo š |
| Sign | signImage š |
| Biomatric | biomatric š |
| IssueDate | docIssueDate |
| IpAddress | ipAddress |
| FinancialProfile | occupation, accountPurpose, annualSalary, expectedMonthlyVolume |
| IdTypes | docType, docId, frontDoc š, backDoc š, docExpireDate, docNeverExpire |
š = File field. Upload the file first via POST /api/v1/uploadfile, then pass the returnedfile_urlas the value.
| Requirement | Required Fields |
|---|---|
| CompanyInformation | companyName, type, description, industry, registrationNumber, taxId, website |
| CompanyDocuments | certificateOfIncorporation š, shareholderRegistry š |
| CompanyAddress | line1, city, postalCode, country |
| Requirement | Required Fields |
|---|---|
| PersonalInformation | firstName, lastName, dateOfBirth, email, phoneNumber, phoneCode |
| PersonalInformationAddress | line1, city, postalCode, country |
| PersonalIdentification | idType, idNumber, country, docExpireDate, frontDocument š, backDocument š |
| Requirement | Required Fields |
|---|---|
| UBO | firstName, lastName, dateOfBirth, country, email, phoneCode, phoneNumber, shareHolderPercentage |
| UBOAddress | line1, city, postalCode, country |
| UBOIdentification | idType, idNumber, frontDocument š, backDocument š |
| UBOSelfie | selfie š |
| Requirement | Required Fields |
|---|---|
| Representatives | firstName, lastName, dateOfBirth, country, email, phoneCode, phoneNumber, shareHolderPercentage |
| RepresentativeAddress | line1, city, postalCode, country |
| RepresentativeIdentification | idType, idNumber, frontDocument š, backDocument š |
| RepresentativeSelfie | selfie š |
| Requirement | Required Fields |
|---|---|
| Directors | firstName, lastName, dateOfBirth, country, email, phoneCode, phoneNumber, shareHolderPercentage |
| DirectorAddress | line1, city, postalCode, country |
| DirectorIdentification | idType, idNumber, frontDocument š, backDocument š |
| DirectorSelfie | selfie š |
FullName, Comms, FullAddress, Passport, Face, Sign, FinancialProfilePOST /api/v1/uploadfile
ā passport_front.jpg ā "https://storage.blob.../passport_front.jpg"
ā passport_back.jpg ā "https://storage.blob.../passport_back.jpg"
ā selfie.jpg ā "https://storage.blob.../selfie.jpg"
ā signature.png ā "https://storage.blob.../signature.png"POST /api/v1/customers/{customerId}/products/{productId}/applicant
{
"kycDetails": {
"customerId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"firstName": "Jane",
"lastName": "Doe",
"gender": "female",
"dob": "1990-06-15",
"email": "jane@example.com",
"mobileCode": "+44",
"mobile": "7700900000",
"addressLine1": "10 Downing Street",
"city": "London",
"state": "England",
"postalCode": "SW1A 2AA",
"country": "GB",
"town": "Westminster",
"idType": "passport",
"idNumber": "AB1234567",
"profilePicFront": "https://storage.blob.../passport_front.jpg",
"profilePicBack": "https://storage.blob.../passport_back.jpg",
"docExpiryDate": "2030-01-01",
"docIssueDate": "2020-01-01",
"faceImage": "https://storage.blob.../selfie.jpg",
"signature": "https://storage.blob.../signature.png",
"occupation": "software_engineer",
"accountPurpose": "personal_spending",
"annualSalary": 75000,
"expectedMonthlyVolume": 5000,
"ipAddress": "192.168.1.1"
}
}CompanyInformation, CompanyDocuments, CompanyAddress, PersonalInformation, PersonalIdentification, PersonalInformationAddress, UBO, UBOAddress, UBOIdentification, UBOSelfie, Representatives, RepresentativeAddress, RepresentativeIdentification, RepresentativeSelfie, Directors, DirectorAddress, DirectorIdentification, DirectorSelfiePOST /api/v1/uploadfile
ā certificate_of_inc.pdf ā "https://storage.blob.../certificate.pdf"
ā shareholder_registry.pdf ā "https://storage.blob.../shareholders.pdf"
ā personal_id_front.jpg ā "https://storage.blob.../personal_front.jpg"
ā personal_id_back.jpg ā "https://storage.blob.../personal_back.jpg"
ā ubo_id_front.jpg ā "https://storage.blob.../ubo_front.jpg"
ā ubo_id_back.jpg ā "https://storage.blob.../ubo_back.jpg"
ā ubo_selfie.jpg ā "https://storage.blob.../ubo_selfie.jpg"
ā rep_id_front.jpg ā "https://storage.blob.../rep_front.jpg"
ā rep_id_back.jpg ā "https://storage.blob.../rep_back.jpg"
ā rep_selfie.jpg ā "https://storage.blob.../rep_selfie.jpg"
ā dir_id_front.jpg ā "https://storage.blob.../dir_front.jpg"
ā dir_id_back.jpg ā "https://storage.blob.../dir_back.jpg"
ā dir_selfie.jpg ā "https://storage.blob.../dir_selfie.jpg"POST /api/v1/customers/{customerId}/products/{productId}/applicant
{
"kybDetails": {
"company": {
"companyName": "Acme Corp Ltd",
"type": "limited_company",
"description": "Fintech payment solutions provider",
"industry": "financial_services",
"registrationNumber": "12345678",
"taxId": "GB123456789",
"website": "https://acmecorp.com",
"certificateofincorporation": "https://storage.blob.../certificate.pdf",
"shareholderregistry": "https://storage.blob.../shareholders.pdf",
"companyAddress": {
"addressType": "registered",
"line1": "456 Business Avenue",
"line2": "Floor 3",
"city": "London",
"postalCode": "EC1A 1BB",
"country": "GB",
"town": "City of London"
}
},
"personaldetails": {
"firstName": "Jane",
"lastName": "Smith",
"dateOfBirth": "1985-03-20",
"country": "GB",
"email": "jane.smith@acmecorp.com",
"phoneCode": "+44",
"phoneNumber": "7700900000",
"identification": {
"idType": "passport",
"idNumber": "CD7654321",
"countryOfIssue": "GB",
"docExpireDate": "2029-06-15",
"docIssueDate": "2019-06-15",
"frontDocument": "https://storage.blob.../personal_front.jpg",
"backDocument": "https://storage.blob.../personal_back.jpg"
},
"personalInfoAddress": {
"line1": "789 Home Lane",
"city": "London",
"state": "England",
"postalCode": "SW1A 1AA",
"country": "GB"
}
},
"ubos": [
{
"personDetails": {
"firstName": "John",
"lastName": "Doe",
"dateOfBirth": "1980-01-10",
"country": "GB",
"email": "john.doe@acmecorp.com",
"phoneCode": "+44",
"phoneNumber": "7700800000",
"shareHolderPercentage": "60",
"gender": "male"
},
"identification": {
"idType": "national_id",
"idNumber": "NI12345678",
"countryOfIssue": "GB",
"docExpireDate": "2028-12-01",
"frontDocument": "https://storage.blob.../ubo_front.jpg",
"backDocument": "https://storage.blob.../ubo_back.jpg"
},
"selfie": "https://storage.blob.../ubo_selfie.jpg",
"ubosAddress": {
"line1": "100 Owner Street",
"city": "Manchester",
"postalCode": "M1 1AA",
"country": "GB"
}
}
],
"representatives": [
{
"personDetails": {
"firstName": "Sarah",
"lastName": "Connor",
"dateOfBirth": "1988-07-25",
"country": "GB",
"email": "sarah@acmecorp.com",
"phoneCode": "+44",
"phoneNumber": "7700700000",
"shareHolderPercentage": "0"
},
"identification": {
"idType": "passport",
"idNumber": "EF9876543",
"countryOfIssue": "GB",
"docExpireDate": "2031-03-10",
"frontDocument": "https://storage.blob.../rep_front.jpg",
"backDocument": "https://storage.blob.../rep_back.jpg"
},
"selfie": "https://storage.blob.../rep_selfie.jpg",
"representativesAddress": {
"line1": "50 Rep Road",
"city": "Birmingham",
"postalCode": "B1 1AA",
"country": "GB"
}
}
],
"directors": [
{
"personDetails": {
"firstName": "Mike",
"lastName": "Johnson",
"dateOfBirth": "1975-11-30",
"country": "GB",
"email": "mike@acmecorp.com",
"phoneCode": "+44",
"phoneNumber": "7700600000",
"shareHolderPercentage": "40"
},
"identification": {
"idType": "driving_license",
"idNumber": "DL98765432",
"countryOfIssue": "GB",
"docExpireDate": "2027-08-20",
"frontDocument": "https://storage.blob.../dir_front.jpg",
"backDocument": "https://storage.blob.../dir_back.jpg"
},
"selfie": "https://storage.blob.../dir_selfie.jpg",
"directorAddress": {
"line1": "25 Director Lane",
"city": "Leeds",
"postalCode": "LS1 1AA",
"country": "GB"
}
}
]
}
}| Status | Meaning |
|---|---|
200 | KYC/KYB submitted successfully |
404 | Customer not found |
422 | Validation error ā missing or invalid fields |