Guides
API integration
2. The applicant is filling the form and submits data to the customer server.
3. The customer server is sending applicant’s data to the KYCAID server using Create applicant API.
4. The customer server is receiving a response of Create applicant request.
5. The customer Create verification.
6. The customer server is receiving a response of Create verification request.
7. Within 2 minutes to 6 hours, the KYCAID server sends the verification callback to the customer's server.
8. The customer server is sending a success response (http status 200) as a sign of getting a successful verification result.
Notes
- Verification takes from 2 minutes to 6 hours
- To update applicant data can be used Update applicant API.
- To update applicant document data can be used Update document API.
- The customer can check the verification status after receiving a response to the Create verification request.
- The verification fee is withdrawn after Create verification request or when applicant has submitted a form.
Forms integration
2. The customer server sends a request for Get form URL.
3. The customer server receives a response of Get form URL request.
4. The applicant opens KYCAID form by URL that was received in response.
5. The applicant fills the form and submits data to the KYCAID server.
6. The KYCAID form receives response and shows a success message to the applicant. Also there is a possibility to redirect the applicant to the customer page.
7. Within 2 minutes to 6 hours, KYCAID server sends the verification callback to the customer's server.
8. The customer server sends success response (http status 200) as a sign of getting a successful verification result.
Notes
- Verification takes from 2 minutes to 6 hours
- There is no need to Create form each time if a form already exists with the appropriate verification types.
- Also, the form can be created manually in the customer's personal account on the kycaid.com.
Single link integration
head
of the page where you would like to place a link to KYC:<script src="https://api.kycaid.com/websdk/js?key=WEB_SDK_KEY"></script>
2. The next link should be placed in whatever you want on the page:
<a href="https://api.kycaid.com/websdk/forms/FORM_ID?key=WEB_SDK_KEY" target="_blank">KYC verification</a>
Notes
- Please contact to customer support for whitelist your domain and get personal
WEB_SDK_KEY
. - The URL parameter
external_applicant_id
can be added for linking the customer's internal user id and KYCAID applicant id.external_applicant_id
will come in callbackVERIFICATION_COMPLETED
.
URL format<a href="https://api.kycaid.com/websdk/forms/FORM_ID?key=WEB_SDK_KEY&applicant=APPLICANT_ID" target="_blank">KYC verification</a>
- The URL parameter
applicant_id
should be added to recheck exist applicant:
URL format<a href="https://api.kycaid.com/websdk/forms/FORM_ID?key=WEB_SDK_KEY&applicant_id=APPLICANT_ID" target="_blank">KYC verification</a>
General
Introduction
- All API requests must be made over HTTPS. Calls made over plain HTTP will fail.
- Authentication to the API is performed via token-based auth.
- JSON is returned on all our API responses, including errors, with a consistent structure for all messages.
- Response codes are used to indicate the status of the message and any error codes.
- All requests must use TLS 1.2 or above.
- Text fields support UTF-8, but do not allow certain special characters that could be used maliciously.
Authentication
# Example just show how to pass the correct header with each request
curl https://api.kycaid.com/applicants \
-H 'Authorization: Token {API_TOKEN}'
Test mode
Limits
Auto verify
Type | Status | Values |
---|---|---|
KYC | Approve | first_name : John last_name : Snow |
KYC | Decline | first_name : John last_name : Doe |
KYB | Approve | company_name : SpaceX |
KYB | Decline | company_name : Roscosmos |
Errors
Error codes
Code | Type | Description |
---|---|---|
400 | bad_request | Your request could not be processed, there should be more details in the response. |
infected_file | The antivirus has identified the file as not trustworthy. | |
limit_file_size | The file is too large. | |
401 | unauthorized | Invalid authorization token. |
inactive_account | Account was blocked. | |
402 | insufficient_funds | Funds are not enough to do some action. |
403 | forbidden_duplicates_retries | Block retries for duplicates. |
forbidden_age_restricted_retries | Block retries for restricted by age. | |
forbidden_country_restricted_retries | Block retries for restricted by country. | |
forbidden_compromised_person_retries | Block retries for compromised person. | |
forbidden_fake_document_retries | Block retries for for cases where applicant provided fake or edited documents. | |
404 | not_found | URL or some entry not found |
408 | request_timeout | The server timed out waiting for the request. |
409 | duplicate_data | For instance when verification request has been submitted already. |
flow | Some action that contradicts the functional flow. | |
edit_denied | The entry can not be edited. | |
delete_denied | The entry can not be deleted. | |
422 | validation | Response status code indicates that the server understands the content type of the request entity, and the syntax of the request entity is correct, but it was unable to process the contained instructions or parameters. |
applicant_exists | Application already exists. | |
incompatible_file_for_recognition | File can not be recognized. | |
verification_exists | Verification already exists. | |
insufficient_data | Insufficient applicant data for current verification. | |
broken_file | The file is damaged. | |
incompatible_file_format | The file format does not match the following formats: BMP , BMP2 , BMP3 , GIF , HEIC , JPEG , JPG , PNG , PNG8 , PNG00 , PNG24 , PNG32 , PNG48 , PNG64 , WEBP , PDF , MP4 , WEBM . | |
image_small_resolution | The image resolution is too small. Minimal resolution is 480 px. | |
image_huge_resolution | The image resolution is too huge. The maximum resolution is 7000 px. | |
429 | limit_exceeded | Exceeding of some limits. (Example: The limit for creating documents has been exceeded) |
500 | internal_server | An unexpected error occurred on the server without a specific message. |
503 | service_unavailable | The current service is temporarily unavailable. |
{
"type": "validation",
"errors": [
{
"parameter": "residence_country",
"message": "Country of residence has incorrect format"
}
]
}
Applicants
Applicant types
Type | Description |
---|---|
PERSON | Applicant type using for KYC verification. |
COMPANY | Applicant type using for KYB verification. |
Applicant object
Parameter | Description |
---|---|
applicant_id PERSON COMPANY | string (36) Required The applicant’s unique identificator. |
type PERSON COMPANY | string (7) Required The applicant type. Valid values are PERSON or COMPANY. |
first_name PERSON | string (50) The applicant’s first name. |
middle_name PERSON | string (50) The applicant’s middle name. |
last_name PERSON | string (50) The applicant’s last name. |
dob PERSON | string (10) The applicant’s date of birth date. (ISO 8601, YYYY-MM-DD) |
residence_country PERSON | string (2) The applicant’s current residence country. Example: GB (ISO 3166-2) |
nationality PERSON | string (2) The applicant’s current nationality country. Example: GB (ISO 3166-2) |
gender PERSON | string (1) The applicant’s gender. International regulations require either "M" or "F". |
wallet_address PERSON | string (50) The applicant’s cryptocurrency wallet address. |
telegram_username PERSON | string (32) The applicant’s Telegram username. |
pep PERSON | boolean Define if applicant is politically exposed person. |
custom_field_1 PERSON | string (2048) Custom field can be used for storing any customer data. |
custom_field_2 PERSON | string (2048) Custom field can be used for storing any customer data. |
custom_field_3 PERSON | string (2048) Custom field can be used for storing any customer data. |
custom_field_4 PERSON | string (2048) Custom field can be used for storing any customer data. |
custom_field_5 PERSON | string (2048) Custom field can be used for storing any customer data. |
company_name COMPANY | string (255) Required for COMPANY The applicant’s company name. |
business_activity_id COMPANY | string (36) Required for COMPANY The business activity of applicant’s company. API for getting business activities. |
registration_country COMPANY | string (2) Required for COMPANY The registration country of applicant’s company. Example: GB (ISO 3166-2) |
email PERSON COMPANY | string (254) The applicant’s email address. |
phone PERSON COMPANY | string (15) The phone number of applicant. |
external_applicant_id PERSON COMPANY | string (50) Custom identifier of the applicant, which is intended for binding the applicant in the customer and KYCAID systems. |
addresses PERSON COMPANY | list Address object Required The addresses associated with the matched applicant. |
documents PERSON COMPANY | list Document object Required The documents associated with the matched applicant. |
profile_status PERSON COMPANY | enum (pending, valid, invalid) Required The status of profile verification. |
decline_reasons PERSON COMPANY | list Decline reason Required List of decline reasons receiving only for profile has invalid status. |
verification_status PERSON COMPANY | enum (pending, valid, invalid) Required The status of applicant's last verification. |
created_at PERSON COMPANY | string Required Date and time when applicant was created. Format "YYYY-MM-DD hh:mm:ss". Example "2005-08-09 18:31:42". |
{
"applicant_id": "{applicant_id}",
"external_applicant_id": "{external_applicant_id}",
"type": "PERSON",
"first_name": "John",
"middle_name": null,
"last_name": "Doe",
"dob": "1970-10-25",
"residence_country": "GB",
"nationality": "GB",
"gender": "M",
"email": "[email protected]",
"phone": "+44 1632 960615",
"wallet_address": "1F1tAaz5x1HUXrCNLbtMDqcw6o5GNn4xqX",
"telegram_username": "johndoe",
"pep": false,
"profile_status": false,
"decline_reasons": [
"WRONG_NAME",
"WRONG_DOB"
],
"addresses": [
{
"address_id": "{address_id}",
"type": "REGISTERED",
"status": "valid",
"full_address": null,
"country": "GB",
"state_or_province": "Westminster",
"city": "London",
"postal_code": "SW1A 2AB",
"street_name": "Downing St",
"building_number": "10",
"unit_number": null,
"created_at": "2020-11-22 14:15:15",
"decline_reasons": []
}
],
"documents": [
{
"document_id": "{document_id}",
"type": "PASSPORT",
"status": "invalid",
"document_number": "00000000001",
"issue_date": "2000-01-01",
"expiry_date": "2020-01-01",
"income_sources": [],
"annual_income": null,
"transaction_amount": null,
"transaction_purpose": null,
"origin_funds": null,
"card_number": null,
"account_number": null,
"front_side_id": "{front_side_id}",
"front_side": "{front_side_url}",
"back_side_id": null,
"back_side": null,
"created_at": "2020-11-22 14:14:56",
"decline_reasons": [
"EXPIRED_DOCUMENT"
]
}
],
"verification_status": "invalid",
"created_at": "2020-01-31 13:52:36"
}
Create applicant
Request
URL: https://api.kycaid.com/applicants
Method: POST
Content-Type: application/json
Parameter | Description |
---|---|
type PERSON COMPANY | string (7) Required The applicant type. Valid values are PERSON or COMPANY. |
first_name PERSON | string (50) The applicant’s first name. |
middle_name PERSON | string (50) The applicant’s middle name. |
last_name PERSON | string (50) The applicant’s last name. |
dob PERSON | string (10) The applicant’s date of birth. (ISO 8601, YYYY-MM-DD) |
residence_country PERSON | string (2) The applicant’s current residence country. Example: GB (ISO 3166-2) |
nationality PERSON | string (2) The applicant’s current nationality country. Example: GB (ISO 3166-2) |
gender PERSON | string (1) The applicant’s gender. International regulations require either "M" or "F". |
wallet_address PERSON | string (50) The applicant’s cryptocurrency wallet address. |
telegram_username PERSON | string (32) The applicant’s Telegram username. |
pep PERSON | boolean Define if applicant is politically exposed person. |
custom_field_1 PERSON | string (2048) Custom field can be used for storing any customer data. |
custom_field_2 PERSON | string (2048) Custom field can be used for storing any customer data. |
custom_field_3 PERSON | string (2048) Custom field can be used for storing any customer data. |
custom_field_4 PERSON | string (2048) Custom field can be used for storing any customer data. |
custom_field_5 PERSON | string (2048) Custom field can be used for storing any customer data. |
company_name COMPANY | string (255) Required for COMPANY The applicant’s company name. |
business_activity_id COMPANY | string (36) Required for COMPANY The business activity of applicant’s company. API for getting business activities. |
registration_country COMPANY | string (2) Required for COMPANY The registration country of applicant’s company. Example: GB (ISO 3166-2) |
email PERSON COMPANY | string (254) The applicant’s email address. |
phone PERSON COMPANY | string (15) The phone number of applicant. |
external_applicant_id PERSON COMPANY | string (50) Custom identifier of the applicant, which is intended for binding the applicant in the customer and KYCAID systems. |
With a new version of the verification, a new profile will be created using the data from the new identity document if profile was not updated for current verification version.
curl https://api.kycaid.com/applicants \
-H 'Authorization: Token {API_TOKEN}' \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"type": "PERSON",
"first_name": "John",
"last_name": "Doe",
"dob": "1970-10-25",
"residence_country": "GB",
"nationality": "GB",
"email": "[email protected]"
}'
Response
Parameter | Description |
---|---|
applicant_id | string (36) Required The unique identifier of the applicant, which must be saved in the client's database and used to bind the client's user to the KYCAID applicant. |
{
"applicant_id": "{applicant_id}"
}
Update applicant
Request
URL: https://api.kycaid.com/applicants/{applicant_id}
Method: PATCH
Content-Type: application/json
Parameter | Description |
---|---|
external_applicant_id PERSON COMPANY | string (50) Custom identifier of the applicant, which is intended for binding the applicant in the customer and KYCAID systems. |
first_name PERSON | string (50) The applicant’s first name. |
middle_name PERSON | string (50) The applicant’s middle name. |
last_name PERSON | string (50) The applicant’s last name. |
dob PERSON | string (10) The applicant’s date of birth. (ISO 8601, YYYY-MM-DD) |
residence_country PERSON | string (2) The applicant’s current residence country. Example: GB (ISO 3166-2) |
nationality PERSON | string (2) The applicant’s current nationality country. Example: GB (ISO 3166-2) |
gender PERSON | string (1) The applicant’s gender. International regulations require either "M" or "F". |
wallet_address PERSON | string (50) The applicant’s cryptocurrency wallet address. |
telegram_username PERSON | string (32) The applicant’s Telegram username. |
pep PERSON | boolean Define if applicant is politically exposed person. |
custom_field_1 PERSON | string (2048) Custom field can be used for storing any customer data. |
custom_field_2 PERSON | string (2048) Custom field can be used for storing any customer data. |
custom_field_3 PERSON | string (2048) Custom field can be used for storing any customer data. |
custom_field_4 PERSON | string (2048) Custom field can be used for storing any customer data. |
custom_field_5 PERSON | string (2048) Custom field can be used for storing any customer data. |
company_name COMPANY | string (255) The applicant’s company name. |
business_activity_id COMPANY | string (36) The business activity of applicant’s company. API for getting business activities. |
registration_country COMPANY | string (2) The registration country of applicant’s company. Example: GB (ISO 3166-2) |
email PERSON COMPANY | string (254) The applicant’s email address. |
phone PERSON COMPANY | string (15) The phone number of applicant. |
curl https://api.kycaid.com/applicants/{applicant_id} \
-H 'Authorization: Token {API_TOKEN}'
-H 'Content-Type: application/json' \
-X PATCH \
-d '{
"first_name": "John",
"last_name": "Doe",
"dob": "1970-10-25",
"residence_country": "GB"
"nationality": "GB"
}'
Response
Parameter | Description |
---|---|
applicant_id | string (36) Required The applicant’s unique identificator. |
{
"applicant_id": "{applicant_id}"
}
Get applicant
Request
URL: https://api.kycaid.com/applicants/{applicant_id}
Method: GET
Parameter | Description |
---|---|
applicant_id | string (36) Required The unique identifier of the applicant, which must be saved in the client's database and used to bind the client's user to the KYCAID applicant. |
verification_id | string (36) The verification’s unique identificator. It can be used for fetch specific version of applicant data which is correspond was created verification. |
curl https://api.kycaid.com/applicants/{applicant_id} \
-H 'Authorization: Token {API_TOKEN}'
-X GET
Response
Parameter | Description |
---|---|
applicant_id PERSON COMPANY | string (36) Required The applicant’s unique identificator. |
type PERSON COMPANY | string (7) Required The applicant type. Valid values are PERSON or COMPANY. |
first_name PERSON | string (50) The applicant’s first name. |
middle_name PERSON | string (50) The applicant’s middle name. |
last_name PERSON | string (50) The applicant’s last name. |
dob PERSON | string (10) The applicant’s day of birth date. (ISO 8601, YYYY-MM-DD) |
residence_country PERSON | string (2) The applicant’s current residence country. Example: GB (ISO 3166-2) |
nationality PERSON | string (2) The applicant’s current nationality country. Example: GB (ISO 3166-2) |
gender PERSON | string (1) The applicant’s gender. International regulations require either "M" or "F". |
pep PERSON | boolean Define if applicant is politically exposed person. |
company_name COMPANY | string (255) Required for COMPANY The applicant’s company name. |
business_activity_id COMPANY | string (36) Required for COMPANY The business activity of applicant’s company. API for getting business activities. |
registration_country COMPANY | string (2) Required for COMPANY The registration country of applicant’s company. Example: GB (ISO 3166-2) |
email PERSON COMPANY | string (254) The applicant’s email address. |
phone PERSON COMPANY | string (15) The phone number of applicant. |
addresses PERSON COMPANY | list Address object Required The addresses associated with the matched applicant. |
documents PERSON COMPANY | list Document object Required The documents associated with the matched applicant. |
profile_status PERSON COMPANY | enum (pending, valid, invalid) Required The status of profile verification. |
decline_reasons PERSON COMPANY | list Decline reason Required List of decline reasons receiving only for profile has invalid status. |
created_at PERSON COMPANY | string Required Date and time when applicant was created. Format "YYYY-MM-DD hh:mm:ss". Example "2005-08-09 18:31:42". |
{
"applicant_id": "{applicant_id}",
"type": "PERSON",
"first_name": "John",
"middle_name": null,
"last_name": "Doe",
"dob": "1970-10-25",
"residence_country": "GB",
"nationality": "GB",
"gender": null,
"email": "[email protected]",
"phone": null,
"pep": null,
"profile_status: false,
"decline_reasons": [
"WRONG_NAME",
"WRONG_DOB"
],
"addresses": [],
"documents": [],
"verification_status": "invalid",
"created_at": "2020-01-31 13:52:36"
}
Documents
Document types
Type | Description |
---|---|
GOVERNMENT_ID | A formal document issued by a country's government to prove a person's identity, which is usually issued in a form of a small card and includes your photo, full name, date of birth, gender and other identity information. |
PASSPORT | A document issued by a country's government to its citizens, that certifies the identity and nationality of its holder primarily for the purpose of international travel. |
DOMESTIC_PASSPORT | An internal identity document used by a country to control and monitor the internal movement and residence of its citizens. |
DRIVERS_LICENSE | An official document permitting a specific individual to operate one or more types of vehicle and may be accepted as proof of identity. |
PERMANENT_RESIDENCE_PERMIT | A document which confirms a person's resident status in a country of which they are not citizen but where they have the right to reside on a permanent basis( usually for a permanent period). |
REFUGEE_CARD | Identity certificate that refugees use as proof of identity. Issued by UNHCR or by the State of asylum. |
FOREIGN_CITIZEN_PASSPORT | A document which identifies the person as a citizen of a foreign country. |
SELFIE_IMAGE | A self-portrait photo which you made by yourself. |
SELFIE_WITH_DOCUMENT | A self-made portrait photo of yourself holding your identity document in a hand. |
SELFIE_WITH_CREDIT_CARD | A self-made portrait photo of yourself holding your credit card in a hand required to confirm the cardholder. |
ADDRESS_DOCUMENT | A legal document that confirms a person's living address, like a bank statement or utility bill with the date of issue and the person's full name, and any identity documents that have an address stated in them. |
FINANCIAL_DOCUMENT | The formal records of the financial activities and position of a business, person, or other entity which include a balance sheet, an income statement, and a cash flow statement. |
TAX_ID_NUMBER | A unique combination of characters assigned by a country’s tax authority to a person and used to identify that person for the purposes of administering the country’s tax laws. |
CREDIT_CARD | A plastic payment card issued by financial institutions, way to you access to the funds at your bank account. |
BANK_STATEMENT | A list of all transactions for a bank account over a set period, which includes deposits, charges, withdrawals, as well as the beginning and ending balance for the period. |
REGISTRATION_COMPANY | A legal registration statement which confirms that a company was formed and registered with the appropriate statutory authority of the country in accordance with the corporate and securities law of that country. |
COMPANY_LEGAL_ADDRESS | A legal document which contains the official registered address of the company. |
AUTHORISED_PERSON | A legal written notice which states that a person has been designated from Customer or its designated agent to act on behalf of Customer hereunder. |
COMPANY_OWNERSHIP | An official document with the legit information about the ownership of a specific company or organization, like the articles of organization, business certificate, stock certificates and share ledgers. |
VIDEO | A video on which the applicant should verify his identity. |
Document object
Parameter | Description |
---|---|
document_id | string (36) The unique identificator of applicant document. |
type | string (7) The document type. Valid values are: |
document_number GOVERNMENT_ID PASSPORT DRIVERS_LICENSE DOMESTIC_PASSPORT PERMANENT_RESIDENCE_PERMIT REFUGEE_CARD FOREIGN_CITIZEN_PASSPORT TAX_ID_NUMBER | string (50) The unique number associated with document (e.g. passport number). |
additional_number GOVERNMENT_ID PASSPORT DRIVERS_LICENSE DOMESTIC_PASSPORT PERMANENT_RESIDENCE_PERMIT REFUGEE_CARD FOREIGN_CITIZEN_PASSPORT TAX_ID_NUMBER | string (50) Some additional unique number (e.g. tax id on government id). |
issue_date GOVERNMENT_ID PASSPORT DRIVERS_LICENSE DOMESTIC_PASSPORT PERMANENT_RESIDENCE_PERMIT REFUGEE_CARD FOREIGN_CITIZEN_PASSPORT | string (10) The issue date of the document. (ISO 8601, YYYY-MM-DD) |
expiry_date GOVERNMENT_ID PASSPORT DRIVERS_LICENSE DOMESTIC_PASSPORT PERMANENT_RESIDENCE_PERMIT REFUGEE_CARD FOREIGN_CITIZEN_PASSPORT | string (10) The expiry date of the document. (ISO 8601, YYYY-MM-DD) |
issuing_authority GOVERNMENT_ID PASSPORT DRIVERS_LICENSE DOMESTIC_PASSPORT PERMANENT_RESIDENCE_PERMIT REFUGEE_CARD FOREIGN_CITIZEN_PASSPORT | string (255) The authority that issued a document. |
card_number CREDIT_CARD | string (19) Payment credit card number with a minimum length of 12 and a maximum length of 19. Also can be used for determinate mask of credit card number. Example 4540********1265. |
account_number CREDIT_CARD | string (50) Any payment account number like IBAN, etc. |
income_sources FINANCIAL_DOCUMENT BANK_STATEMENT | array One or many income sources. Possible values: SALARY , DIVIDENDS , SALE_PROPERTY , SAVINGS , DIVORCE_SETTLEMENTS , INHERITANCE , LOAN , INVESTMENTS , OTHER . |
annual_income FINANCIAL_DOCUMENT BANK_STATEMENT | string (21) One of annual income group.ANNUAL_INCOME_GROUP_1 - below 50000 EURANNUAL_INCOME_GROUP_2 - 50000 - 100000 EURANNUAL_INCOME_GROUP_3 - 100000 - 300000 EURANNUAL_INCOME_GROUP_4 - above 300000 EUR. |
transaction_amount FINANCIAL_DOCUMENT BANK_STATEMENT | float Amount of transaction. |
transaction_currency FINANCIAL_DOCUMENT BANK_STATEMENT | string (3) Currency code of transaction. Example USD, BTC, etc. (ISO 4217). |
transaction_datetime FINANCIAL_DOCUMENT BANK_STATEMENT | string(19) Date and time of transaction. Format "YYYY-MM-DD hh:mm:ss". Example "2005-08-09 18:31:42". |
transaction_purpose FINANCIAL_DOCUMENT BANK_STATEMENT | string (255) Description of transaction purpose. |
origin_funds FINANCIAL_DOCUMENT BANK_STATEMENT | string (255) Description of origin funds. |
front_side_id | string (36) The file unique identificator that received in response of Create file. |
front_side | string (2048) It generated a one-time URL to the front-side file. URL is available only 24 hours. |
back_side_id | string (36) The file unique identificator that received in response of Create file. |
back_side | string (2048) It generated a one-time URL to the back-side file. URL is available only 24 hours. |
other_side_1_id | string (36) The file unique identificator that received in response of Create file. |
other_side_1 | string (2048) It generated a one-time URL to the other side file. URL is available only 24 hours. |
other_side_2_id | string (36) The file unique identificator that received in response of Create file. |
other_side_2 | string (2048) It generated a one-time URL to the other side file. URL is available only 24 hours. |
other_side_3_id | string (36) The file unique identificator that received in response of Create file. |
other_side_3 | string (2048) It generated a one-time URL to the other side file. URL is available only 24 hours. |
created_at | string Date and time when applicant was created. Format "YYYY-MM-DD hh:mm:ss". Example "2005-08-09 18:31:42". |
status | string (7) Status of document verification. Possible values:null - status of verification is not availablevalid - the document is validinvalid - the document is not valid |
comment | string (1000) The comment is about reasons of decline. It can be used as error message. |
decline_reasons | list Decline reason List of decline reasons receiving only for document has invalid status. |
URL in parameters
front_side
, back_side
, other_side_1
, other_side_2
, other_side_3
is available about 24 hours.
{
"document_id": "{document_id}",
"applicant_id": "{applicant_id}",
"type": "PASSPORT",
"document_number": "00000000001",
"additional_number": "00000000002",
"issue_date": "2000-01-01",
"expiry_date": "2020-01-01",
"income_sources": [],
"annual_income": null,
"transaction_amount": null,
"transaction_purpose": null,
"transaction_currency": null,
"transaction_datetime": null,
"origin_funds": null,
"card_number": null,
"account_number": null,
"front_side_id": "{front_side_id}",
"front_side": "{front_side_url}",
"back_side_id": null,
"back_side": null,
"other_side_1_id": null,
"other_side_1": null,
"other_side_2_id": null,
"other_side_2": null,
"other_side_3_id": null,
"other_side_3": null,
"created_at": "2020-11-22 14:14:56",
"status": "invalid",
"comment": "some comment about reason of decline",
"decline_reasons": [
"EXPIRED_DOCUMENT"
]
}
Create document
Request
URL: https://api.kycaid.com/documents
Method: POST
Content-Type: application/json
Parameter | Description |
---|---|
applicant_id APPLICANT | string (36) Required for applicant The applicant’s unique identificator that received in response of Create applicant. |
affiliated_person_id AFFILIATED PERSON | string (36) Required for affiliated person The affiliated person’s unique identificator that received in response of Create affiliated person. |
type | string (7) Required The document type. Valid values are: |
document_number GOVERNMENT_ID PASSPORT DRIVERS_LICENSE DOMESTIC_PASSPORT PERMANENT_RESIDENCE_PERMIT REFUGEE_CARD FOREIGN_CITIZEN_PASSPORT TAX_ID_NUMBER | string (50) The unique number associated with document (e.g. passport number). |
additional_number GOVERNMENT_ID PASSPORT DRIVERS_LICENSE DOMESTIC_PASSPORT PERMANENT_RESIDENCE_PERMIT REFUGEE_CARD FOREIGN_CITIZEN_PASSPORT TAX_ID_NUMBER | string (50) Some additional unique number (e.g. tax id on government id). |
issue_date GOVERNMENT_ID PASSPORT DRIVERS_LICENSE DOMESTIC_PASSPORT PERMANENT_RESIDENCE_PERMIT REFUGEE_CARD FOREIGN_CITIZEN_PASSPORT | string (10) The issue date of the document. (ISO 8601, YYYY-MM-DD) |
expiry_date GOVERNMENT_ID PASSPORT DRIVERS_LICENSE DOMESTIC_PASSPORT PERMANENT_RESIDENCE_PERMIT REFUGEE_CARD FOREIGN_CITIZEN_PASSPORT | string (10) The expiry date of the document. (ISO 8601, YYYY-MM-DD) |
issuing_authority GOVERNMENT_ID PASSPORT DRIVERS_LICENSE DOMESTIC_PASSPORT PERMANENT_RESIDENCE_PERMIT REFUGEE_CARD FOREIGN_CITIZEN_PASSPORT | string (255) The authority that issued a document. |
card_number CREDIT_CARD | string (19) Payment credit card number with a minimum length of 12 and a maximum length of 19. Also can be used for determinate mask of credit card number. Example 4540********1265. |
account_number CREDIT_CARD | string (50) Any payment account number like IBAN, etc. |
income_sources FINANCIAL_DOCUMENT BANK_STATEMENT | array One or many income sources. Possible values: SALARY , DIVIDENDS , SALE_PROPERTY , SAVINGS , DIVORCE_SETTLEMENTS , INHERITANCE , LOAN , INVESTMENTS , OTHER . |
annual_income FINANCIAL_DOCUMENT BANK_STATEMENT | string (21) One of annual income group.ANNUAL_INCOME_GROUP_1 - below 50000 EURANNUAL_INCOME_GROUP_2 - 50000 - 100000 EURANNUAL_INCOME_GROUP_3 - 100000 - 300000 EURANNUAL_INCOME_GROUP_4 - above 300000 EUR. |
transaction_amount FINANCIAL_DOCUMENT BANK_STATEMENT | float Amount of transaction. |
transaction_currency FINANCIAL_DOCUMENT BANK_STATEMENT | string (3) Currency code of transaction. Example USD, BTC, etc. (ISO 4217). |
transaction_datetime FINANCIAL_DOCUMENT BANK_STATEMENT | string(19) Date and time of transaction. Format "YYYY-MM-DD hh:mm:ss". Example "2005-08-09 18:31:42". |
transaction_purpose FINANCIAL_DOCUMENT BANK_STATEMENT | string (255) Description of transaction purpose. |
origin_funds FINANCIAL_DOCUMENT BANK_STATEMENT | string (255) Description of origin funds. |
front_side_id | string (36) The file unique identificator that received in response of Create file. |
back_side_id | string (36) The file unique identificator that received in response of Create file. |
other_side_1_id | string (36) The file unique identificator that received in response of Create file. |
other_side_2_id | string (36) The file unique identificator that received in response of Create file. |
other_side_3_id | string (36) The file unique identificator that received in response of Create file. |
curl https://api.kycaid.com/documents \
-H 'Authorization: Token {API_TOKEN}' \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"applicant_id": "{applicant_id}",
"type": "PASSPORT",
"document_number": "2367823468",
"issue_date": "2010-10-25",
"expiry_date": "2020-07-10",
"front_side_id": "{file_id}",
"back_side_id": "{file_id}"
}'
Response
Parameter | Description |
---|---|
document_id | string (36) Required The document unique identificator. |
{
"document_id": "{document_id}"
}
Document count limits
Document type | Limit per verification |
---|---|
GOVERNMENT_ID / PASSPORT / DRIVERS_LICENSE / DOMESTIC_PASSPORT / PERMANENT_RESIDENCE_PERMIT / REFUGEE_CARD / FOREIGN_CITIZEN_PASSPORT | 1 |
SELFIE_IMAGE / SELFIE_WITH_DOCUMENT / SELFIE_WITH_CREDIT_CARD | 1 |
ADDRESS_DOCUMENT | 1 |
TAX_ID_NUMBER | 1 |
CREDIT_CARD | 1 |
REGISTRATION_COMPANY | 1 |
COMPANY_LEGAL_ADDRESS | 1 |
AUTHORISED_PERSON | 1 |
COMPANY_OWNERSHIP | 1 |
VIDEO | 1 |
FINANCIAL_DOCUMENT / BANK_STATEMENT | 5 |
Parameter
duplicate_document_ids
can be used for updating existing document instead on creation.Update document
Request
URL: https://api.kycaid.com/documents/{document_id}
Method: PATCH
Content-Type: application/json
Parameter | Description |
---|---|
type | string (7) The document type. Valid values are: |
document_number GOVERNMENT_ID PASSPORT DRIVERS_LICENSE DOMESTIC_PASSPORT PERMANENT_RESIDENCE_PERMIT REFUGEE_CARD FOREIGN_CITIZEN_PASSPORT TAX_ID_NUMBER | string (50) The unique number associated with document (e.g. passport number). |
additional_number GOVERNMENT_ID PASSPORT DRIVERS_LICENSE DOMESTIC_PASSPORT PERMANENT_RESIDENCE_PERMIT REFUGEE_CARD FOREIGN_CITIZEN_PASSPORT TAX_ID_NUMBER | string (50) Some additional unique number (e.g. tax id on government id). |
issue_date GOVERNMENT_ID PASSPORT DRIVERS_LICENSE DOMESTIC_PASSPORT PERMANENT_RESIDENCE_PERMIT REFUGEE_CARD FOREIGN_CITIZEN_PASSPORT | string (10) The issue date of the document. (ISO 8601, YYYY-MM-DD) |
expiry_date GOVERNMENT_ID PASSPORT DRIVERS_LICENSE DOMESTIC_PASSPORT PERMANENT_RESIDENCE_PERMIT REFUGEE_CARD FOREIGN_CITIZEN_PASSPORT | string (10) The expiry date of the document. (ISO 8601, YYYY-MM-DD) |
issuing_authority GOVERNMENT_ID PASSPORT DRIVERS_LICENSE DOMESTIC_PASSPORT PERMANENT_RESIDENCE_PERMIT REFUGEE_CARD FOREIGN_CITIZEN_PASSPORT | string (255) The authority that issued a document. |
card_number CREDIT_CARD | string (19) Payment credit card number with a minimum length of 12 and a maximum length of 19. Also can be used for determinate mask of credit card number. Example 4540********1265. |
account_number CREDIT_CARD | string (50) Any payment account number like IBAN, etc. |
income_sources FINANCIAL_DOCUMENT BANK_STATEMENT | array One or many income sources. Possible values: SALARY , DIVIDENDS , SALE_PROPERTY , SAVINGS , DIVORCE_SETTLEMENTS , INHERITANCE , LOAN , INVESTMENTS , OTHER . |
annual_income FINANCIAL_DOCUMENT BANK_STATEMENT | string (21) One of annual income group.ANNUAL_INCOME_GROUP_1 - below 50000 EURANNUAL_INCOME_GROUP_2 - 50000 - 100000 EURANNUAL_INCOME_GROUP_3 - 100000 - 300000 EURANNUAL_INCOME_GROUP_4 - above 300000 EUR. |
transaction_amount FINANCIAL_DOCUMENT BANK_STATEMENT | float Amount of transaction. |
transaction_currency FINANCIAL_DOCUMENT BANK_STATEMENT | string (3) Currency code of transaction. Example USD, BTC, etc. (ISO 4217). |
transaction_datetime FINANCIAL_DOCUMENT BANK_STATEMENT | string(19) Date and time of transaction. Format "YYYY-MM-DD hh:mm:ss". Example "2005-08-09 18:31:42". |
transaction_purpose FINANCIAL_DOCUMENT BANK_STATEMENT | string (255) Description of transaction purpose. |
origin_funds FINANCIAL_DOCUMENT BANK_STATEMENT | string (255) Description of origin funds. |
front_side_id | string (36) | null The file unique identificator that received in response of Create file. Also, the file id can be set to null for remove a file from a document. |
back_side_id | string (36) | null The file unique identificator that received in response of Create file. Also, the file id can be set to null for remove a file from a document. |
other_side_1_id | string (36) | null The file unique identificator that received in response of Create file. Also, the file id can be set to null for remove a file from a document. |
other_side_2_id | string (36) | null The file unique identificator that received in response of Create file. Also, the file id can be set to null for remove a file from a document. |
other_side_3_id | string (36) | null The file unique identificator that received in response of Create file. Also, the file id can be set to null for remove a file from a document. |
curl https://api.kycaid.com/documents/{document_id} \
-H 'Authorization: Token {API_TOKEN}' \
-H 'Content-Type: application/json' \
-X PATCH \
-d '{
"type": "PASSPORT",
"document_number": "2367823468",
"issue_date": "2010-10-25",
"expiry_date": "2020-07-10",
"front_side_id": "{file_id}",
"back_side_id": "{file_id}"
}'
Response
Parameter | Description |
---|---|
document_id | string (36) Required The document unique identificator. Received document_id parameter may differ from the initial value if the document is already under verification. In this case copy of document is created automatically. |
{
"document_id": "{document_id}"
}
Get document
Request
URL: https://api.kycaid.com/documents/{document_id}
Method: GET
Parameter | Description |
---|---|
document_id | string (36) The document’s unique identificator. |
curl https://api.kycaid.com/documents/{document_id} \
-H 'Authorization: Token {API_TOKEN}'
-X GET
Response
Parameter | Description |
---|---|
applicant_id PERSON COMPANY | string (36) Required The applicant’s unique identificator. |
document_id | string (36) Required The unique identificator of applicant document. |
type | string (7) Required The document type. Valid values are: |
provider | string Required The document provider. Valid values are:MANUAL - a document provided by applicantRECOGNITION - a document created during recognition of some imageADMIN - a document created by managerUA_BANK_ID - a document provided by Ukraine Bank ID serviceUA_DIIA - a document provided by Ukraine Diia serviceIN_AADHAAR - a document provided by India serviceKZ_ADATA - a document provided by Kazakh service |
document_number GOVERNMENT_ID PASSPORT DRIVERS_LICENSE DOMESTIC_PASSPORT PERMANENT_RESIDENCE_PERMIT REFUGEE_CARD FOREIGN_CITIZEN_PASSPORT TAX_ID_NUMBER | string (50) Required The unique number associated with document (e.g. passport number). |
additional_number GOVERNMENT_ID PASSPORT DRIVERS_LICENSE DOMESTIC_PASSPORT PERMANENT_RESIDENCE_PERMIT REFUGEE_CARD FOREIGN_CITIZEN_PASSPORT TAX_ID_NUMBER | string (50) Required Some additional unique number (e.g. tax id on government id). |
issue_date GOVERNMENT_ID PASSPORT DRIVERS_LICENSE DOMESTIC_PASSPORT PERMANENT_RESIDENCE_PERMIT REFUGEE_CARD FOREIGN_CITIZEN_PASSPORT | string (10) Required The issue date of the document. (ISO 8601, YYYY-MM-DD) |
expiry_date GOVERNMENT_ID PASSPORT DRIVERS_LICENSE DOMESTIC_PASSPORT PERMANENT_RESIDENCE_PERMIT REFUGEE_CARD FOREIGN_CITIZEN_PASSPORT | string (10) Required The expiry date of the document. (ISO 8601, YYYY-MM-DD) |
card_number CREDIT_CARD | string (19) Required Payment credit card number with a minimum length of 12 and a maximum length of 19. Also can be used for determinate mask of credit card number. Example 4540********1265. |
account_number CREDIT_CARD | string (50) Required Any payment account number like IBAN, etc. |
income_sources FINANCIAL_DOCUMENT BANK_STATEMENT | array Required One or many income sources. Possible values: SALARY , DIVIDENDS , SALE_PROPERTY , SAVINGS , DIVORCE_SETTLEMENTS , INHERITANCE , LOAN , INVESTMENTS , OTHER . |
annual_income FINANCIAL_DOCUMENT BANK_STATEMENT | string (21) Required One of annual income group.ANNUAL_INCOME_GROUP_1 - below 50000 EURANNUAL_INCOME_GROUP_2 - 50000 - 100000 EURANNUAL_INCOME_GROUP_3 - 100000 - 300000 EURANNUAL_INCOME_GROUP_4 - above 300000 EUR. |
transaction_amount FINANCIAL_DOCUMENT BANK_STATEMENT | float Required Amount of transaction. |
transaction_currency FINANCIAL_DOCUMENT BANK_STATEMENT | string (3) Required Currency code of transaction. Example USD, BTC, etc. (ISO 4217). |
transaction_datetime FINANCIAL_DOCUMENT BANK_STATEMENT | string(19) Required Date and time of transaction. Format "YYYY-MM-DD hh:mm:ss". Example "2005-08-09 18:31:42". |
transaction_purpose FINANCIAL_DOCUMENT BANK_STATEMENT | string (255) Required Description of transaction purpose. |
origin_funds FINANCIAL_DOCUMENT BANK_STATEMENT | string (255) Required Description of origin funds. |
front_side_id | string (36) Required The file unique identificator that received in response of Create file. |
back_side_id | string (36) Required The file unique identificator that received in response of Create file. |
other_side_1_id | string (36) Required The file unique identificator that received in response of Create file. |
other_side_2_id | string (36) Required The file unique identificator that received in response of Create file. |
other_side_3_id | string (36) Required The file unique identificator that received in response of Create file. |
decline_reasons | list Decline reason Required List of decline reasons receiving only for document has invalid status. |
created_at | string Required Date and time when applicant was created. Format "YYYY-MM-DD hh:mm:ss". Example "2005-08-09 18:31:42". |
{
"document_id": "{document_id}",
"applicant_id": "{applicant_id}",
"type": "PASSPORT",
"provider": "MANUAL",
"status": "invalid",
"document_number": "00000000001",
"additional_number": "00000000002",
"issue_date": "2000-01-01",
"expiry_date": "2020-01-01",
"income_sources": [],
"annual_income": null,
"transaction_amount": null,
"transaction_purpose": null,
"transaction_currency": null,
"transaction_datetime": null,
"origin_funds": null,
"card_number": null,
"account_number": null,
"front_side_id": "{front_side_id}",
"front_side": "{front_side_url}",
"back_side_id": null,
"back_side": null,
"other_side_1_id": null,
"other_side_1": null,
"other_side_2_id": null,
"other_side_2": null,
"other_side_3_id": null,
"other_side_3": null,
"created_at": "2020-11-22 14:14:56",
"decline_reasons": [
"EXPIRED_DOCUMENT"
]
}
Remove document
Request
URL: https://api.kycaid.com/documents/{document_id}
Method: DELETE
Documents can be deleted only if they are not under verification.
curl https://api.kycaid.com/documents/{document_id} \
-H 'Authorization: Token {API_TOKEN}' \
-X DELETE
Response
Parameter | Description |
---|---|
document_id | string (36) Required The document unique identificator. |
{
"document_id": "{document_id}"
}
Files
Create file
Request
URL: https://api.kycaid.com/files
Method: POST
Content-Type: multipart/form-data
Parameter | Description |
---|---|
file | binary Required File for upload. |
File requirements
- Supported file formats:
BMP
,GIF
,HEIC
,JPEG
,PNG
,WEBP
andPDF
. - Minimum resolution for image is 480 px.
- Maximum resolution for image is 7000 px.
- Maximum file size is 50 Mb.
curl https://api.kycaid.com/files \
-H 'Authorization: Token {API_TOKEN}' \
-H 'Content-Type: multipart/form-data' \
-X POST \
-F 'file=@./my_file.jpg'
Response
Parameter | Description |
---|---|
file_id | string (36) Required The file unique identificator. |
{
"file_id": "{file_id}"
}
Update file
Request
URL: https://api.kycaid.com/files/{file_id}
Method: PUT
Content-Type: multipart/form-data
Parameter | Description |
---|---|
file | binary Required File for upload. Supported file formats: BMP , GIF , HEIC , JPEG , PNG , WEBP and PDF . Maximum file size is 50 Mb. |
curl https://api.kycaid.com/files/{file_id} \
-H 'Authorization: Token {API_TOKEN}' \
-H 'Content-Type: multipart/form-data' \
-X PUT \
-F 'file=@./my_file.jpg'
Response
Parameter | Description |
---|---|
file_id | string (36) Required The file unique identificator. |
{
"file_id": "{file_id}"
}
Remove file
Please do not worry about deleting files, this will happen automatically after 1 month if the file is not used in any of your documents.
Addresses
Address object
Parameter | Description |
---|---|
address_id | string (36) Required The unique identificator of applicant address. |
type | string (7) Required The address type. Valid values are:REGISTERED PLACE_OF_BIRTH BUSINESS ADDITIONAL |
full_address | string (255) The applicant’s full address. |
country | string (2) The country of the applicants’s address. Example: GB (ISO 3166-2) |
state | string (50) The state of the applicant’s address. |
region | string (50) The region of the applicant’s address. |
province | string (50) The province of the applicant’s address. |
city | string (50) The city or town of the applicant’s address. |
district | string (50) The district of the applicant’s address. |
address | string (255) The address field of the applicant’s address. |
postal_code | string (20) The post or zip code of the applicant’s address. |
street_name | string (50) The street name for applicant’s address. |
building_number | string (20) The building number for applicant’s address. |
unit_number | string (20) The unit number for applicant’s address. |
{
"address_id": "{address_id}",
"type": "REGISTERED",
"status": "valid",
"full_address": null,
"country": "GB",
"state_or_province": "Westminster",
"city": "London",
"postal_code": "SW1A 2AB",
"street_name": "Downing St",
"building_number": "10",
"unit_number": null,
"created_at": "2020-11-22 14:15:15",
"decline_reasons": []
}
Create address
Request
URL: https://api.kycaid.com/addresses
Method: POST
Content-Type: application/json
Parameter | Description |
---|---|
applicant_id APPLICANT | string (36) Required The applicant’s unique identificator that received in response of Create applicant. |
affiliated_person_id AFFILIATED PERSON | string (36) Required The affiliated person’s unique identificator that received in response of Create affiliated person. |
type | string (10) Required The address type. Valid values are:REGISTERED PLACE_OF_BIRTH BUSINESS ADDITIONAL |
full_address | string (255) The applicant’s full address. |
country | string (2) The country of the applicants’s address. Example: GB (ISO 3166-2) |
state | string (50) The state of the applicant’s address. |
region | string (50) The region of the applicant’s address. |
province | string (50) The province of the applicant’s address. |
city | string (50) The city or town of the applicant’s address. |
district | string (50) The district of the applicant’s address. |
address | string (255) The address field of the applicant’s address. |
postal_code | string (20) The post or zip code of the applicant’s address. |
street_name | string (50) The street name for applicant’s address. |
building_number | string (20) The building number for applicant’s address. |
unit_number | string (20) The unit number for applicant’s address. |
curl https://api.kycaid.com/addresses \
-H 'Authorization: Token {API_TOKEN}' \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"applicant_id": "{applicant_id}",
"type": "REGISTERED",
"country": "GB",
"state_or_province": "Westminster",
"city": "London",
"postal_code": "SW1A 2AB",
"street_name": "Downing St",
"building_number": "10"
}'
Response
Parameter | Description |
---|---|
address_id | string (36) Required The unique identificator of applicant's address. |
{
"address_id": "{address_id}"
}
Update address
Request
URL: https://api.kycaid.com/addresses/{address_id}
Method: PATCH
Content-Type: application/json
Parameter | Description |
---|---|
type | string (10) The address type. Valid values are:REGISTERED PLACE_OF_BIRTH BUSINESS ADDITIONAL |
full_address | string (255) The applicant’s full address. |
country | string (2) The country of the applicants’s address. Example: GB (ISO 3166-2) |
state_or_province | string (50) The county, state or province of the applicant’s address. |
city | string (50) The city or town of the applicant’s address. |
postal_code | string (20) The post or zip code of the applicant’s address. |
street_name | string (50) The street name for applicant’s address. |
building_number | string (20) The building number for applicant’s address. |
unit_number | string (20) The unit number for applicant’s address. |
curl https://api.kycaid.com/addresses/{address_id} \
-H 'Authorization: Token {API_TOKEN}' \
-H 'Content-Type: application/json' \
-X PATCH \
-d '{
"country": "GB",
"state_or_province": "Westminster",
"city": "London",
"postal_code": "SW1A 2AB",
"street_name": "Downing St",
"building_number": "10"
}'
Response
Parameter | Description |
---|---|
address_id | string (36) Required The unique identificator of applicant's address. Received address_id parameter may differ from the initial value if the address is already under verification. In this case copy of address is created automatically. |
{
"address_id": "{address_id}"
}
Remove address
Request
URL: https://api.kycaid.com/addresses/{address_id}
Method: DELETE
Address can be deleted only if they are not under verification.
curl https://api.kycaid.com/addresses/{address_id} \
-H 'Authorization: Token {API_TOKEN}' \
-X DELETE
Response
Parameter | Description |
---|---|
address_id | string (36) Required The address unique identificator. |
{
"address_id": "{address_id}"
}
Affiliated persons
Create affiliated person
Request
URL: https://api.kycaid.com/affiliated-persons
Method: POST
Content-Type: application/json
Parameter | Description |
---|---|
type | string Required The type of affiliated person. Valid values are:AUTHORISED BENEFICIAL |
applicant_id | string (36) Required The applicant unique identificator that received in response of Create applicant request. |
first_name | string (50) Required The first name of affiliated person. |
last_name | string (50) Required The last name of affiliated person. |
title AUTHORISED | string (36) Required The title of affiliated person. |
share BENEFICIAL | float Required Affiliated persons shares. Available values between 0 and 100. |
dob | string (10) Required The affiliated person’s date of birth. (ISO 8601, YYYY-MM-DD) |
residence_country | string (2) Required The affiliated person current residence country. Example: GB (ISO 3166-2) |
nationality | string (2) Required The affiliated person current nationality country. Example: GB (ISO 3166-2) |
email | string (254) Required The affiliated person email address. |
curl https://api.kycaid.com/affiliated-persons \
-H 'Authorization: Token {API_TOKEN}' \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"type": "AUTHORISED",
"applicant_id": "{applicant_id}",
"first_name": "John",
"last_name": "Doe",
"title": "CEO",
"dob": "1970-10-25",
"residence_country": "GB",
"nationality": "GB",
"email": "[email protected]"
}'
Response
Parameter | Description |
---|---|
affiliated_person_id | string (36) Required The unique identificator of affiliated person. |
{
"affiliated_person_id": "{affiliated_person_id}"
}
Update affiliated person
Request
URL: https://api.kycaid.com/affiliated-persons/{affiliated_person_id}
Method: PATCH
Content-Type: application/json
Parameter | Description |
---|---|
first_name | string (50) The first name of affiliated person. |
last_name | string (50) The last name of affiliated person. |
title AUTHORISED | string (36) The title of affiliated person. |
share BENEFICIAL | float Affiliated persons shares. Available values between 0 and 100. |
dob | string (10) The affiliated person’s date of birth. (ISO 8601, YYYY-MM-DD) |
residence_country | string (2) The affiliated person current residence country. Example: GB (ISO 3166-2) |
nationality | string (2) The affiliated person current nationality country. Example: GB (ISO 3166-2) |
email | string (254) The affiliated person email address. |
curl https://api.kycaid.com/affiliated-persons/{affiliated_person_id} \
-H 'Authorization: Token {API_TOKEN}' \
-H 'Content-Type: application/json' \
-X PATCH \
-d '{
"type": "AUTHORISED",
"first_name": "John",
"last_name": "Doe",
"title": "CEO",
"dob": "1970-10-25",
"residence_country": "GB",
"nationality": "GB",
"email": "[email protected]"
}'
Response
Parameter | Description |
---|---|
affiliated_person_id | string (36) Required The unique identificator of affiliated person. |
{
"affiliated_person_id": "{affiliated_person_id}"
}
Remove affiliated person
Request
URL: https://api.kycaid.com/affiliated-persons/{affiliated_person_id}
Method: DELETE
Affiliated person can be deleted only if they are not under verification.
curl https://api.kycaid.com/affiliated-persons/{affiliated_person_id} \
-H 'Authorization: Token {API_TOKEN}' \
-X DELETE
Response
Parameter | Description |
---|---|
affiliated_person_id | string (36) Required The affiliated person unique identificator. |
{
"affiliated_person_id": "{affiliated_person_id}"
}
Verifications
Create verification
Request
URL: https://api.kycaid.com/verifications
Method: POST
Content-Type: application/json
Parameter | Description |
---|---|
applicant_id | string (36) Required The applicant unique identificator that received in response of Create applicant request. |
form_id | string (36) Required The form unique identificator (can be taken in customer dashboard). Used for inheritance of form configuration like ACR and email templates. |
language_code | string (2) Defined applicant language. Helps to determine the locale of the applicant when contacting him. Also, the language can be automatically determined based on the values in the "Accept-Language" headers if this parameter is absent. Default value is "EN" (ISO 639-1). |
Verification types
Name | Required data |
---|---|
Document verification DOCUMENT |
|
Facial verification FACIAL |
|
Address verification ADDRESS |
|
Tax ID verification TAX_ID |
|
AML check AML |
|
Payment method check PAYMENT_METHOD |
|
Video check VIDEO |
|
Database screening DATABASE_SCREENING | One of the next verification types are required:
|
curl https://api.kycaid.com/verifications \
-H 'Authorization: Token {API_TOKEN}' \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"applicant_id": "{applicant_id}",
"form_id": "{form_id}"
}'
Response
Parameter | Description |
---|---|
verification_id | string (36) Required The verification’s unique identificator which assist to identify verification during receiving callback after verification will be completed. |
Maximum 20 verifications for one applicant.
{
"verification_id": "{verification_id}"
}
Get verification
Request
URL: https://api.kycaid.com/verifications/{verification_id}
Method: GET
curl https://api.kycaid.com/verifications/{verification_id} \
-H 'Authorization: Token {API_TOKEN}'
Response
Parameter | Description |
---|---|
applicant_id | string (36) Required The applicant unique identificator that received in response of Create applicant request. |
verification_id | string (36) Required The verification’s unique identificator. |
status | string (9) Required Status of verification. Possible values:unused - the applicant has not yet filled out a formpending - verification of the applicant in progresscompleted - verification is completed |
verified | boolean Required Result of verification. Possible values:null - the applicant under verificationtrue - the applicant passed verificationfalse - the applicant failed verification |
verifications | VerificationsList Required VerificationsList object |
VerificationsList
Parameter | Description |
---|---|
profile | document | facial | address | aml | financial | payment_method | tax_id | database_screening | company | VerificationResult Required VerificationResult object |
VerificationResult
Parameter | Description |
---|---|
verified | boolean Required Result of particular verification. Possible values:true - the verification passedfalse - the verification failed |
comment | string (255) Accompanying verification comment. May not always be provided. |
{
applicant_id: <applicant_id>,
verification_id: <verification_uid>,
status: unused|pending|completed,
verified: true|false,
verifications: {
<verification_type>: {
verified: true|false,
comment: <some comment text>
}
}
}
{
"verification_id": "{verification_id}",
"status": "pending"
}
{
"verification_id": "{verification_id}",
"status": "completed",
"verified": true,
"verifications": {
"document": {
"verified": true,
"comment": ""
},
"address": {
"verified": true,
"comment": ""
}
}
}
Decline reasons
Verifications decline reasons
Code | Type | Description |
---|---|---|
OTHER | PROFILE DOCUMENT FACIAL ADDRESS AML PAYMENT_METHOD TAX_ID VIDEO COMPANY | Some other reason. |
WRONG_NAME | PROFILE DOCUMENT | Name/Last name is different from the one specified in the document provided. |
WRONG_DOB | PROFILE DOCUMENT | Date of Birth is different from the one specified in the document provided. |
AGE_RESTRICTION | PROFILE DOCUMENT FACIAL TAX_ID | The applicant is under allowed age. |
EXPIRED_DOCUMENT | DOCUMENT | The document has expired. |
EXPIRES_LESS_3_MONTHS | DOCUMENT ADDRESS AML | The document expires in less than 3 months. |
BAD_QUALITY | PROFILE DOCUMENT FACIAL ADDRESS AML PAYMENT_METHOD TAX_ID | The document is not visible or the quality of the document image is low. |
FAKE_DOCUMENT | DOCUMENT FACIAL ADDRESS AML PAYMENT_METHOD TAX_ID COMPANY | The document contains signs of forgery. |
WRONG_INFO | DOCUMENT | The information differs from the one stated in the document. |
PROHIBITED_JURISDICTION | PROFILE DOCUMENT ADDRESS AML PAYMENT_METHOD TAX_ID COMPANY | The document is issued in the prohibited jurisdiction. |
NO_SELFIE | FACIAL | The selfie image was not provided. |
DIFFERENT_FACES | FACIAL | The faces on selfie and in the document are different. |
WRONG_DOCUMENT | DOCUMENT FACIAL ADDRESS PAYMENT_METHOD TAX_ID COMPANY | The document does not match the applicant. |
DUPLICATE | PROFILE DOCUMENT FACIAL | This applicant was already created for this client, duplicates are not allowed. |
DOCUMENT_DAMAGED | DOCUMENT ADDRESS TAX_ID | Document is damaged. |
DOCUMENT_INCOMPLETE | DOCUMENT ADDRESS PAYMENT_METHOD TAX_ID | Document is incomplete. |
COMPROMISED_PERSON | DATABASE_SCREENING | The applicant was found in the database. |
EDITED_DOCUMENT | DOCUMENT FACIAL ADDRESS AML PAYMENT_METHOD TAX_ID COMPANY | The document was edited. |
MULTIPLE_PERSON | PROFILE DOCUMENT FACIAL ADDRESS AML PAYMENT_METHOD TAX_ID VIDEO COMPANY | Multiple person is not allowed. |
COMPULSION | DOCUMENT FACIAL | Compulsion. |
Documents decline reasons
Code | Type | Description |
---|---|---|
OTHER | Some other reason. | |
WRONG_NAME | Name/Last name is different from the one specified in the document provided. | |
WRONG_DOB | Date of Birth is different from the one specified in the document provided. | |
AGE_RESTRICTION | The applicant is under allowed age. | |
EXPIRED_DOCUMENT | The document has expired. | |
EXPIRES_LESS_3_MONTHS | The document expires in less than 3 months. | |
BAD_QUALITY | The document is not visible or the quality of the document image is low. | |
FAKE_DOCUMENT | The document contains signs of forgery. | |
WRONG_INFO | The information differs from the one stated in the document. | |
PROHIBITED_JURISDICTION | The document is issued in the prohibited jurisdiction. | |
NO_SELFIE | The selfie image was not provided. | |
DIFFERENT_FACES | The faces on selfie and in the document are different. | |
WRONG_DOCUMENT | The document does not match the applicant. | |
DUPLICATE | This applicant was already created for this client, duplicates are not allowed. | |
DOCUMENT_DAMAGED | Document is damaged. | |
DOCUMENT_INCOMPLETE | Document is incomplete. | |
FRAUDULENT | Fraudulent behavior. | |
TAX_ID_REQUIRED | Tax ID is required. | |
COMPROMISED_PERSON | The applicant was found in the database. | |
EDITED_DOCUMENT | The document was edited. | |
MULTIPLE_PERSON | Multiple person is not allowed. | |
COMPULSION | Compulsion. |
Get verifications report
Request
URL: https://api.kycaid.com/verifications/report
Method: GET
Parameter | Description |
---|---|
date | string (10) Required The date on which you need to receive the report. |
offset | integer Pagination offset for items in list. Default value is 0 . It can be used for pagination. |
count | integer Count for items in list. Default value is 1000 . Maximum value is 1000 . It can be used for pagination. |
curl https://api.kycaid.com/verifications/report?date=2023-01-31 \
-H 'Authorization: Token {API_TOKEN}'
Response
VerificationsReportObject
Parameter | Description |
---|---|
created_at KYC KYB SERVICE | string (19) Required Date and time when verification was created. |
verification_id KYC KYB SERVICE | string (36) Required The verification’s unique identificator. |
applicant_id KYC KYB | string (36) The applicant’s unique identificator. |
external_applicant_id KYC KYB | string (50) Custom identifier of the applicant, which is intended for binding the applicant in the customer and KYCAID systems. |
form_id KYC KYB | string (36) The form’s unique identificator. |
status KYC KYB SERVICE | string (10) Required Verification status. |
service KYC KYB SERVICE | string (10) Required Type of service. Possible values:KYC - KYC verificationKYB - KYB verificationSERVICE - Service (e.g. BR_CPF service) |
method KYC KYB SERVICE | string (10) Required Method of service. Possible values:UA_BANK_ID - Ukraine BankId (PrivatBank)UA_BANK_ID_2 - Ukraine BankId (id.gov.ua)UA_DIIA - Ukraine DiiaAUTOMATION_CHECK - Verification was processed automated.MANUAL_CHECK - Verification was processed manualy.UNKNOWN - Uknown method of verification.BR_CPF - Brazilian CPF service. |
name KYC KYB SERVICE | string (255) Required The name of applicant or service. |
dob KYC KYB | string (10) The applicant’s date of birth date. (ISO 8601, YYYY-MM-DD) |
country_code KYC KYB | string (2) The residence/registration country of applicant. Example: GB (ISO 3166-2) |
tax_id_number KYC KYB | string (2) The residence/registration country of applicant. Example: GB (ISO 3166-2) |
email KYC KYB | string (254) The applicant's email address. |
phone KYC KYB | string (15) The phone number of applicant. |
wallet_address KYC KYB | string (50) The applicant’s cryptocurrency wallet address. |
telegram_username KYC KYB | string (32) The applicant’s Telegram username. |
verification_types KYC KYB SERVICE | array Required The list of verification types. |
decline_reasons KYC KYB | array The list of decline reasons. |
processing_time KYC KYB SERVICE | integer Required Time (in seconds) was spent on verification processing. |
price KYC KYB SERVICE | string (10) Required Price (in euro cents) of verification. |
mode KYC KYB SERVICE | string (10) Required Mode of verification. Possible two values:TEST - testing modeLIVE - production mode |
[
{
"created_at": <created_at>,
"verification_id": <verification_id>,
"applicant_id": <applicant_id>,
"external_applicant_id": <external_applicant_id>,
"form_id": <form_id>,
"name": <name>,
"dob": <dob>,
"country_code": <country_code>,
"tax_id_number": <tax_id_number>,
"email": <email>,
"phone": <phone>,
"wallet_address": <wallet_address>,
"telegram_username": <telegram_username>,
"status": <status>,
"service": <service>,
"method": <method>,
"verification_types": [],
"decline_reasons": [],
"processing_time": <processing_time>,
"price": <price>,
"mode": <mode>
},
...
]
External verifications
Ukrainian BankId
2. The customer`s server sends create external verification request to KYCAID API server.
3. The customer`s client opens the received url in create external verification response.
4. The user returns to the specified URL (
redirect_url
) after passing verification in a third-party service.5. KYCAID server sends the verification callback to the customer's server.
6. The customer server is sending success response (http status 200) as a sign of getting a successful verification result.
Notes
- It is not always possible to return to the native application after passing the verification through BankId. In this case, you can use get external verification request to determine when the user has fully completed BankId flow.
- Recommended delay between get external verification requests is 2 seconds.
Create external verification
Request
URL: https://api.kycaid.com/external-verifications
Method: POST
Content-Type: application/json
Parameter | Description |
---|---|
type | string Required The external verification types. Valid values are:UA_BANK_ID UA_DIIA |
form_id | string (36) Required The form’s unique identificator. |
applicant_id | string (36) The applicant unique identificator that received in response of Create applicant request. |
external_applicant_id | string (50) Custom identifier of the applicant, which is intended for binding the applicant in the customer and KYCAID systems. |
language_code | string (2) Defined applicant language. Helps to determine the locale of the applicant when contacting him. Example: EN (ISO 639-1) |
curl https://api.kycaid.com/external-verifications \
-H 'Authorization: Token {API_TOKEN}' \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"type": "UA_BANK_ID",
"applicant_id": "{applicant_id}",
"form_id": "{form_id}",
}'
Response
Parameter | Description |
---|---|
external_verification_id | string (36) Required The external verification’s unique identificator which assists to identify status of external verification during processing of it. |
verification_id | string (36) Required The verification’s unique identificator which assists to identify verification during receiving callback after verification will be completed. |
applicant_id | string (36) Required The unique identifier of the applicant, which must be saved in the client's database and used to bind the client's user to the KYCAID applicant. |
request | RequestObject Required The verification’s unique identificator which assists to identify verification during receiving callback after verification will be completed. |
additional_requests | List of additional requests. For instance, separate requests for each verification provider. |
RequestObject
Parameter | Description |
---|---|
method | string Required HTTP Request Method. Supported values: GET , POST . |
url | string Required The URL to use for the request. |
AdditionalRequestObject
Parameter | Description |
---|---|
type | string Required Type of verification provider. Supported values: PRIVATBANK , MONOBANK . |
method | string Required HTTP Request Method. Supported values: GET , POST . |
url | string Required The URL to use for the request. |
Maximum 20 verifications for one applicant.
UA_BANK_ID
- The link lifetime is 3 minutes. After the expiration of the period, you need to send request one more time to create an external verification.
UA_DIIA
- The link lifetime is 3 minutes. After the expiration of the period, you need to send request one more time to create an external verification.
{
"external_verification_id": "{external_verification_id}",
"verification_id": "{verification_id}",
"applicant_id": "{applicant_id}",
"request": {
"method": "GET",
"url": "{url}"
},
"additional_requests": [
{
"type": "PRIVATBANK",
"method": "GET",
"url": "{url}"
},
{
"type": "MONOBANK",
"method": "GET",
"url": "{url}"
}
]
}
Get external verification
Request
URL: https://api.kycaid.com/external-verifications/{external_verification_id}
Method: GET
curl https://api.kycaid.com/external-verifications/{external-verifications} \
-H 'Authorization: Token {API_TOKEN}'
Response
Parameter | Description |
---|---|
external_verification_id | string (36) Required The external verification’s unique identificator which assist to identify status of external verification during processing of it. |
status | string Required Status of external verification. Possible values:pending - verification is in progresscompleted - verification was completed |
{
external_verification_id: <external_verification_id>,
status: pending|completed
}
Callbacks
Callback types
Type | Description |
---|---|
VERIFICATION_STATUS_CHANGED | Occurs whenever a verification status is changed. Mostly, it using to identify when verification is created. |
VERIFICATION_COMPLETED | Occurs whenever a verification is completed. |
DOCUMENT_EXPIRED | Occurs whenever a monitoring found expiration documents. |
DATABASE_SCREENING | Occurs whenever a monitoring found persons or documents in database screening. |
VERIFICATION_STATUS_CHANGED
URL: <callback_url>
Method: POST
Content-Type: application/json
Parameter | Description |
---|---|
request_id | string (36) Required The unique identificator of callback request. |
type | string Required VERIFICATION_STATUS_CHANGED - type of callback |
form_id | string (36) Required Form id. |
form_token | string (36) Required Form token. It can be used for additional customer purposes. |
verification_id | string (36) Required The verification’s unique identificator. |
applicant_id | string (36) Required The applicant unique identificator. |
external_applicant_id | string (50) Custom identifier of the applicant, which is intended for binding the applicant in the customer and KYCAID systems. |
verification_status | string (9) Required Status of verification. Possible values:unused - the applicant has not yet filled out a formpending - verification of the applicant in progresscompleted - verification is completed |
verification_attempts_left | number Remaining verification attempts. Possible values:number - count of remaining verificationsnull - unlimited |
{
"request_id": "{request_id}",
"type":"VERIFICATION_STATUS_CHANGED",
"applicant_id":"{applicant_id}",
"external_applicant_id":"{external_applicant_id}",
"verification_id":"{verification_id}",
"form_id":"{form_id}",
"verification_status":"pending",
"verification_attempts_left": {verification_attempts_left}
}
VERIFICATION_COMPLETED
URL: <callback_url>
Method: POST
Content-Type: application/json
callback_url
parameter that was set in Create verification request, once verification will be completed. Verify callback will be in the JSON format and they will contain the following format:Parameter | Description |
---|---|
request_id | string (36) Required The unique identificator of callback request. |
type | string Required Type of callback. Possible types:VERIFICATION_COMPLETED - the type of callback that notifies about the end of verification. |
form_id | string (36) Required Form id. |
form_token | string (36) Required Form token. It can be used for additional customer purposes. |
verification_id | string (36) Required The verification’s unique identificator. |
applicant_id | string (36) Required The applicant unique identificator. |
status | string (9) Required Status of verification. Possible values:unused - the applicant has not yet filled out a formpending - verification of the applicant in progresscompleted - verification is completed |
verified | boolean Required Result of verification. Possible values:true - the applicant passed verificationfalse - the applicant failed verification |
verifications | VerificationsList Required VerificationsList object |
applicant | Applicant object is returned only if parameter return_applicant was setup with value true for Create verification request. |
verification_statuses.duplicates | List of List of found duplicates during applicant verification.applicant_id Required |
verification_statuses.ludoman | boolean or null A parameter that determines whether the applicant is a ludoman or not. |
verification_attempts_left | number Remaining verification attempts. Possible values:number - count of remaining verificationsnull - unlimited |
{
"request_id": "{request_id}",
"type": "VERIFICATION_COMPLETED",
"verification_id": "{verification_id}",
"applicant_id": "{applicant_id}",
"status": "completed",
"verified": false,
"verifications": {
"profile": {
"verified": true,
"comment": "",
"decline_reasons": []
},
"document": {
"verified": false,
"comment": "Your document has expired. Please, resubmit the form and upload the valid ID.",
"decline_reasons": []
}
},
"verification_statuses": {
"duplicates": ["duplicate_applicant_id_1", "duplicate_applicant_id_2"],
"ludoman": false
},
"verification_attempts_left": {verification_attempts_left}
}
{
"request_id": "{request_id}",
"type": "VERIFICATION_COMPLETED",
"verification_id": "{verification_id}",
"applicant_id": "{applicant_id}",
"status": "completed",
"verified": false,
"verifications": {
"profile": {
"verified": true,
"comment": "",
"decline_reasons": []
},
"document": {
"verified": false,
"comment": "Your document has expired. Please, resubmit the form and upload the valid ID.",
"decline_reasons": []
}
},
"applicant": {
"applicant_id": "{applicant_id}",
"external_applicant_id": "{external_applicant_id}",
"type": "PERSON",
"first_name": "John",
"middle_name": null,
"last_name": "Doe",
"dob": "1970-10-25",
"residence_country": "GB",
"nationality": "GB",
"gender": "M",
"email": "[email protected]",
"phone": "+44 1632 960615",
"wallet_address": "1F1tAaz5x1HUXrCNLbtMDqcw6o5GNn4xqX",
"telegram_username": "johndoe",
"pep": false,
"profile_status": false,
"decline_reasons": [
"WRONG_NAME",
"WRONG_DOB"
],
"addresses": [
{
"address_id": "{address_id}",
"type": "REGISTERED",
"status": "valid",
"full_address": null,
"country": "GB",
"state_or_province": "Westminster",
"city": "London",
"postal_code": "SW1A 2AB",
"street_name": "Downing St",
"building_number": "10",
"unit_number": null,
"created_at": "2020-11-22 14:15:15",
"decline_reasons": []
}
],
"documents": [
{
"document_id": "{document_id}",
"type": "PASSPORT",
"status": "invalid",
"document_number": "00000000001",
"issue_date": "2000-01-01",
"expiry_date": "2020-01-01",
"income_sources": [],
"annual_income": null,
"transaction_amount": null,
"transaction_purpose": null,
"origin_funds": null,
"card_number": null,
"account_number": null,
"front_side_id": "{front_side_id}",
"front_side": "{front_side_url}",
"back_side_id": null,
"back_side": null,
"created_at": "2020-11-22 14:14:56",
"decline_reasons": [
"EXPIRED_DOCUMENT"
]
}
],
"verification_status": "invalid",
"created_at": "2020-01-31 13:52:36"
},
"verification_statuses": {
"duplicates": ["duplicate_applicant_id_1", "duplicate_applicant_id_2"],
"ludoman": false
},
"verification_attempts_left": {verification_attempts_left}
}
DOCUMENT_EXPIRED
URL: <callback_url>
Method: POST
Content-Type: application/json
Parameter | Description |
---|---|
type | string Required Type of callback. Possible types:DOCUMENT_EXPIRED - type of callback. |
document_id | string (36) Required The documents’s unique identificator. |
applicant_id | string (36) Required The applicant unique identificator. |
external_applicant_id | string (50) The applicant external unique identificator. |
verification_id | string (36) Required The verification’s unique identificator. |
{
"type": "DOCUMENT_EXPIRED",
"document_id": "{document_id}",
"applicant_id": "{applicant_id}",
"external_applicant_id": "{external_applicant_id}",
"verification_id": "{verification_id}"
}
DATABASE_SCREENING
URL: <callback_url>
Method: POST
Content-Type: application/json
Parameter | Description |
---|---|
type | string Required Type of callback. Possible types:DATABASE_SCREENING - type of callback. |
document_id | string (36) The documents’s unique identificator. |
applicant_id | string (36) Required The applicant unique identificator. |
external_applicant_id | string (50) The applicant external unique identificator. |
verification_id | string (36) Required The verification’s unique identificator. |
databases | array Required The list of databases. |
list_types | array Required The list of databases. |
Databases
Type | Databases | Description |
---|---|---|
INTERNAL | Kycaid’s internal blacklists | |
SANCTIONS | EU_ESMA CA_CCASL UK_CLOFST CH_SESAM FR_FA KG_FIU OPEN_SANC_SANCTIONS OPEN_SANC_DEFAULT UA_DOVIDKA UA_FIU UA_NAZK UA_NSDCU UN_UNSCSL US_OFAC | Individuals and legal entities included to the global and local sanctions lists |
PEP | PEP OCCRP OPEN_SANC_PEPS OPEN_SANC_DEFAULT UA_DOVIDKA | Individuals included to list of politically exposed persons |
WANTED | EU_EUROPOL INTERPOL KZ_AFMRK KZ_TERRORISTS OPEN_SANC_CRIME PL_POSZUKIWANI UA_MVS_2 UA_SSU UK_NCA US_DEA US_FBI OPEN_SANC_DEFAULT | Individuals included to global or local wanted lists |
EXPIRED | UA_DMSU_WANTED_PASSPORT UA_MVS_WANTED_PASSPORT | Documents included to lists of stolen or lost documents |
{
"type": "DATABASE_SCREENING",
"document_id": "{document_id}",
"applicant_id": "{applicant_id}",
"external_applicant_id": "{external_applicant_id}",
"verification_id": "{verification_id}"
}
SERVICE_RESULT
URL: <callback_url>
Method: POST
Content-Type: application/json
Parameter | Description |
---|---|
type | string Required Type of callback. Possible types:SERVICE_RESULT - type of callback. |
service_request_id | string (36) Required The service unique identificator. |
service_request_type | CRYPTO_ADDRESS_CHECK|CRYPTO_TRANSACTION_CHECK Required The service verification type. |
service_request_status | success|invalid Required The service verification status. |
result | The address verification result. |
CryptoAddressVerificationResult
Parameter | Description |
---|---|
result.riskscore | number Required Risk assessment 60%. No riskscore in the response:
|
result.signals | object Required All interactions of the checked address within the specified blockchain that consider both incoming and outgoing connections (for example "miner": 0.245 - 24.5% belongs to the Miner category). |
result.updated_at | number Required |
result.address | string (256) Required |
result.fiat_code_effective | string (256) Required |
result.counterparty | Object Required Response will contain the name of the cluster and its category if the address being checked is in a named cluster: "counterparty": {"name": "Binance.com", "type": "exchange"}The response will contain an internal id if the address being checked is in an unnamed cluster: "counterparty": {"id": 1075118303}The address to be checked will be specified as the counterparty if it is not in the cluster: "counterparty": {"address": "3HQBsRNJcnzk4kcGxMabFMqD6Ud23T5eUd"} |
result.reported_address_balance | boolean Required |
result.address_details_data | object Required Additional details of the verified address. |
result.black_lists_connections | boolean Required If black list checking is enabled. |
result.has_black_list_flag | boolean Required Connection with blacklists: false - connections to blacklist not detected, true - connections to blacklist detected. |
result.pdf_report | string Required Link to download PDF report. |
result.memo Required | string |
result.uid | string Required Unique verification identifier of the verified address. |
result.asset | string Required Currency of the verification check. |
result.network | string Required The network where the address verification occurred |
result.timestamp | string Required Date and time of check implementation. |
CryptoTransactionVerificationResult
Parameter | Description |
---|---|
result.riskscore | number Required Counterparty Risk Score. In this example answer, the Counterparty Risk Score is 28%. The riskscore value refers to the counterparty:
No riskscore in the response:
|
result.signals | object Required Sources of funds origin that are related to the transferred assets in the transaction (for example "exchange_mlrisk_high": 1 - 100% belongs to the exchange whith mlrisk high category) |
result.updated_at | number Required |
result.address | string (256) Required The address. |
result.created_at | number Required |
result.amount | Number Required |
result.risky_volume | Number Required |
result.direction | deposit|withdrawal Required |
result.tx | string Required |
result.risky_volume_fiat | string Required Volume of risky assets in cents USD. |
result.fiat | string Required Transaction amount in cents USD. |
result.fiat_code_effective | string (256) Required |
result.counterparty | Object Required Counteragent with whom the interaction took place. For the type=deposit transaction it's the sender. For the type=withdrawal transaction it"s the recipient. |
result.black_lists_connections | boolean Required If black list checking is enabled. |
result.has_black_list_flag | boolean Required Connection with blacklists: false - connections to blacklist not detected, true - connections to blacklist detected. |
result.pdf_report | string Required Link to download PDF report. |
result.memo | string Required |
result.uid | string Required Unique verification identifier of the verified address. |
result.asset | string Required Currency of the verification check. |
result.network | string Required The network where the address verification occurred |
result.timestamp | string Required Date and time of check implementation. |
{
"type": "SERVICE_RESULT",
"service_request_id": "{service_request_id}",
"service_request_type": "CRYPTO_ADDRESS_CHECK",
"result": {
"risk_score": 0.75,
"signals": {
"atm": 0,
"child_exploitation": 0,
"dark_market": 0,
"dark_service": 0,
"enforcement_action": 0,
"exchange_fraudulent": 0,
"gambling": 1,
"illegal_service": 0,
"liquidity_pools": 0,
"marketplace": 0,
"miner": 0,
"mixer": 0,
"other": 0,
"payment": 0,
"ransom": 0,
"sanctions": 0,
"scam": 0,
"seized_assets": 0,
"stolen_coins": 0,
"terrorism_financing": 0,
"wallet": 0,
"exchange": 0,
"risky_exchange": 0,
"p2p_exchange": 0,
"p2p_exchange_mlrisk_high": 0,
"exchange_mlrisk_high": 0,
"exchange_mlrisk_low": 0,
"exchange_mlrisk_moderate": 0,
"exchange_mlrisk_very_high": 0,
"p2p_exchange_mlrisk_low": 0,
"fraud_shop": 0,
"illicit_actor_org": 0,
"high_risk_jurisdiction": 0,
"infrastructure_as_a_service": 0,
"lending_contract": 0,
"decentralized_exchange_contract": 0,
"smart_contract": 0,
"token_smart_contract": 0,
"protocol_privacy": 0,
"merchant_services": 0,
"ico": 0,
"unnamed_service": 0,
"special_measures": 0,
"online_pharmacy": 0,
"bridge": 0,
"malware": 0,
"nft_platform_collection": 0
},
"updated_at": 1725168579,
"address": "12mxdS6cmFmQgRDhboAqD5q9umtjVq6pE7",
"fiat_code_effective": "usd",
"counterparty": {
"address": "12mxdS6cmFmQgRDhboAqD5q9umtjVq6pE7",
"received_fiat_amount": 60608.7613726,
"signals": {
"bwd": {
"atm": 0,
"child_exploitation": 0,
"dark_market": 0,
"dark_service": 0,
"enforcement_action": 0,
"exchange_fraudulent": 0,
"exchange_licensed": 0,
"exchange_unlicensed": 0,
"gambling": 1,
"illegal_service": 0,
"liquidity_pools": 0,
"marketplace": 0,
"miner": 0,
"mixer": 0,
"other": 0,
"p2p_exchange_licensed": 0,
"p2p_exchange_unlicensed": 0,
"payment": 0,
"ransom": 0,
"sanctions": 0,
"scam": 0,
"seized_assets": 0,
"stolen_coins": 0,
"terrorism_financing": 0,
"wallet": 0
},
"fwd": {
"atm": 0,
"child_exploitation": 0,
"dark_market": 0,
"dark_service": 0,
"enforcement_action": 0,
"exchange_fraudulent": 0,
"exchange_licensed": 0,
"exchange_unlicensed": 0,
"gambling": 0,
"illegal_service": 0,
"liquidity_pools": 0,
"marketplace": 0,
"miner": 0,
"mixer": 0,
"other": 0,
"p2p_exchange_licensed": 0,
"p2p_exchange_unlicensed": 0,
"payment": 0,
"ransom": 0,
"sanctions": 0,
"scam": 0,
"seized_assets": 0,
"stolen_coins": 0,
"terrorism_financing": 0,
"wallet": 0
}
}
},
"reported_address_balance": null,
"address_details_data": {
"type": "pubkeyhash",
"balance": "1042034",
"final_balance": "1042034",
"balance_usd": 604.12963184,
"n_txs": 1,
"first_tx": "2024-08-31 08:50:16",
"last_tx": "2024-08-31 08:50:16",
"received": "1042034",
"received_usd": 615.9463,
"sent": "0",
"sent_usd": 0,
"reported_balance_precision": 8,
"balance_approximate": 0.01042034
},
"black_lists_connections": false,
"has_black_list_flag": false,
"pdf_report": "https://extrnlapiendpoint.silencatech.com/response/userdata/6A98C7D482B9F85/renderer/pdf/responsedata/66D3FBC303614791626230:EE5DFCC3EDE131B",
"memo": "",
"uid": "66d3fbc303614791626230",
"asset": "BTC",
"network": "BTC",
"status": "success",
"timestamp": "2024-09-01 05:29:39"
}
}
{
"type": "SERVICE_RESULT",
"service_request_id": "{service_request_id}",
"service_request_type": "CRYPTO_TRANSACTION_CHECK",
"result": {
"risk_score": 0.734,
"signals": {
"atm": 0,
"child_exploitation": 0,
"dark_market": 0,
"dark_service": 0,
"enforcement_action": 0,
"exchange_fraudulent": 0,
"gambling": 0,
"illegal_service": 0,
"liquidity_pools": 0,
"marketplace": 0,
"miner": 0,
"mixer": 0,
"other": 0,
"payment": 0,
"ransom": 0,
"sanctions": 0,
"scam": 0,
"seized_assets": 0,
"stolen_coins": 0,
"terrorism_financing": 0,
"wallet": 0,
"exchange": 0,
"risky_exchange": 0,
"p2p_exchange": 0,
"p2p_exchange_mlrisk_high": 0,
"exchange_mlrisk_high": 0,
"exchange_mlrisk_low": 0,
"exchange_mlrisk_moderate": 0,
"exchange_mlrisk_very_high": 0,
"p2p_exchange_mlrisk_low": 0,
"fraud_shop": 0,
"illicit_actor_org": 0,
"high_risk_jurisdiction": 0,
"infrastructure_as_a_service": 0,
"lending_contract": 0,
"decentralized_exchange_contract": 0,
"smart_contract": 0,
"token_smart_contract": 0,
"protocol_privacy": 0,
"merchant_services": 0,
"ico": 0,
"unnamed_service": 0,
"special_measures": 0,
"online_pharmacy": 0,
"bridge": 0,
"malware": 0,
"nft_platform_collection": 0
},
"updated_at": 1725094721,
"address": "12mxdS6cmFmQgRDhboAqD5q9umtjVq6pE7",
"created_at": 1725094721,
"amount": 1042034,
"risky_volume": 0,
"direction": "withdrawal",
"tx": "41a57df436157b92d5d61cdd36dd43d5f4734cbeee7f4f4809b91cc2a7b2a520",
"risky_volume_fiat": 0,
"fiat": 60609,
"fiat_code_effective": "usd",
"counterparty": {
"address": "12mxdS6cmFmQgRDhboAqD5q9umtjVq6pE7",
"signals": {
"bwd": {
"atm": 0,
"child_exploitation": 0,
"dark_market": 0,
"dark_service": 0,
"enforcement_action": 0,
"exchange_fraudulent": 0,
"exchange_licensed": 0.072,
"exchange_unlicensed": 0.088,
"gambling": 0.812,
"illegal_service": 0,
"liquidity_pools": 0,
"marketplace": 0,
"miner": 0,
"mixer": 0,
"other": 0.007,
"p2p_exchange_licensed": 0.001,
"p2p_exchange_unlicensed": 0,
"payment": 0.001,
"ransom": 0,
"sanctions": 0,
"scam": 0,
"seized_assets": 0,
"stolen_coins": 0,
"terrorism_financing": 0,
"wallet": 0.018
},
"fwd": {
"atm": 0,
"child_exploitation": 0,
"dark_market": 0,
"dark_service": 0,
"enforcement_action": 0,
"exchange_fraudulent": 0,
"exchange_licensed": 0,
"exchange_unlicensed": 0,
"gambling": 0,
"illegal_service": 0,
"liquidity_pools": 0,
"marketplace": 0,
"miner": 0,
"mixer": 0,
"other": 0,
"p2p_exchange_licensed": 0,
"p2p_exchange_unlicensed": 0,
"payment": 0,
"ransom": 0,
"sanctions": 0,
"scam": 0,
"seized_assets": 0,
"stolen_coins": 0,
"terrorism_financing": 0,
"wallet": 0
}
}
},
"black_lists_connections": false,
"has_black_list_flag": false,
"pdf_report": "https://extrnlapiendpoint.silencatech.com/response/userdata/6A98C7D482B9F85/renderer/pdf/responsedata/66D2DB413E06E086000469:01A3561E99267B2",
"memo": "",
"uid": "66d2db413e06e086000469",
"asset": "BTC",
"network": "BTC",
"timestamp": "2024-08-31 08:58:41"
}
}
SIGNED_DOCUMENTS
URL: <callback_url>
Method: POST
Content-Type: application/json
Parameter | Description |
---|---|
type | string Required Type of callback. Possible types:SIGNED_DOCUMENTS - type of callback. |
request_id | string (36) Required The unique identificator of callback request. |
signed_by | string Required Possible types:APPLICANT CUSTOMER |
applicant_signature_type | string Required Type of applicant signature. Possible types:SMARTID - SmartIDDIIA_SIGNATURE - Diia.Signature |
applicant_id | string (36) Required The applicant unique identificator. |
external_applicant_id | string (50) The applicant external unique identificator. |
verification_id | string (36) Required The verification’s unique identificator. |
applicant | Applicant object is returned only if parameter return_applicant was setup with value true for Create verification request. |
{
"type": "SIGNED_DOCUMENTS",
"request_id": "{request_id}",
"signed_by": "{signed_by}",
"applicant_signature_type": "{applicant_signature_type}",
"applicant_id": "{applicant_id}",
"external_applicant_id": "{external_applicant_id}",
"verification_id": "{verification_id}",
"applicant": "{applicant}"
}
Callback response
2xx
is treating as a success sending callback to customer server during 10 seconds
. Otherwise KYCAID server will repeat callback attempts with such time intervals: 1 minute
, 5 minutes
, 10 minutes
, 30 minutes
, 1 hour
, 3 hours
, 6 hours
, 12 hours
, 24 hours
.Verify callback
How to verify:
Example
{"request_id":"61a7dbcc012d9042e909cf006e7b412d6ba5","type":"VERIFICATION_STATUS_CHANGED","applicant_id":"4141cc1b18dba048470b2961cb4592f480fe","verification_id":"2cf795e713be1040e50b202164ee17bfdfbe","form_id":"58bed87600dd9944f02ba0c9cd8b32d6bd4c","verification_status":"pending"}
eyJyZXF1ZXN0X2lkIjoiNjFhN2RiY2MwMTJkOTA0MmU5MDljZjAwNmU3YjQxMmQ2YmE1IiwidHlwZSI6IlZFUklGSUNBVElPTl9TVEFUVVNfQ0hBTkdFRCIsImFwcGxpY2FudF9pZCI6IjQxNDFjYzFiMThkYmEwNDg0NzBiMjk2MWNiNDU5MmY0ODBmZSIsInZlcmlmaWNhdGlvbl9pZCI6IjJjZjc5NWU3MTNiZTEwNDBlNTBiMjAyMTY0ZWUxN2JmZGZiZSIsImZvcm1faWQiOiI1OGJlZDg3NjAwZGQ5OTQ0ZjAyYmEwYzljZDhiMzJkNmJkNGMiLCJ2ZXJpZmljYXRpb25fc3RhdHVzIjoicGVuZGluZyJ9
f7681b097b77928fc031d614709976796057c306cf77fdd449bb414937bd87678d908d7efaa65e9b1dd65b9eeea2121ea75bd9007f44fe8fcd7c9ac6cdeeef0e
Forms
Get forms
Request
URL: https://api.kycaid.com/forms
Method: GET
curl https://api.kycaid.com/forms \
-H 'Authorization: Token {API_TOKEN}' \
-X GET
Response
FormObject
Parameter | Description |
---|---|
form_id | string Required Form id. |
name | string Required Form name. |
created_at | string Required Date and time of form creation. |
[
{
"form_id": "<form_id>",
"name": "<name>",
"created_at": "<created_at>"
},
...
]
Get form URL
Request
URL: https://api.kycaid.com/forms/{form_id}/urls
Method: POST
Content-Type: application/json
Parameter | Description |
---|---|
applicant_id | string (36) The applicant unique identificator that received in response of Create applicant request. It's supposed to use when need to create verification for exists applicant. |
external_applicant_id | string (50) Custom identifier of the applicant, which is intended for binding the applicant in the customer and KYCAID systems. |
redirect_url | string (2048) The customer site URL, where applicant will be redirected after completing filling the form. |
curl https://api.kycaid.com/forms/{form_id}/urls \
-H 'Authorization: Token {API_TOKEN}' \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"applicant_id": "{applicant_id}",
"external_applicant_id": "{external_applicant_id}",
"redirect_url": "https://site.com/success-kyc"
}'
Response
Parameter | Description |
---|---|
form_id | string (36) Required The form’s unique identificator. |
form_url | string (2048) Required One-time URL to the verification form. This URL will be available until applicant will not complete the form. |
verification_id | string (36) Required The verification’s unique identificator. |
form_token | string (36) Required Form token. It can be used for additional customer purposes. |
verification_attempts_left | number Remaining verification attempts. Possible values:number - count of remaining verificationsnull - unlimited |
For the setup initial language of form UI, you need to add URL parameter
lang
.Possible values:
az
(Azerbaijani)bn
(Bengali)de
(German)en
(English)es
(Spanish)es-mx
(Spanish(Mexico))fr
(French)he
(Hebrew)hi
(Hindi)kk
(Kazakh)nl
(Dutch)pl
(Polish)pt
(Portuguese)ro
(Romanian)ru
(Russian)tr
(Turkish)uk
(Ukrainian)uz
(Uzbek)yi
(Yiddish)zh
(Chinese)Example:
https://forms.kycaid.com/65e5b4121d92424b9e3af5e443cca0d3b024/?lang=uk
For the correct operation of the camera in the iframe, you need to add the attribute
allow="microphone *;camera *;midi *;encrypted-media *;clipboard-read;clipboard-write;"
to iframe.The iframe size should not exceed screen size on mobile devices.
postMessage
communication for iframe solutionA form triggers a cross-origin message when the applicant completed the form, only when a form was opened in an iframe.
Message format:
{
"event": "FORM_COMPLETED",
"applicant_id": "{applicant_id}",
"verification_id": "{verification_id}"
}
For the correct operation of the camera in the WKWebView, you need to setup
allowsInlineMediaPlayback = true
.WKWebViewConfiguration is only used when a web view is first initialized. You cannot use this class to change the web view's configuration after it has been created.
{
"form_id": "{form_id}",
"form_url": "https://forms.kycaid.com/65e5b4121d92424b9e3af5e443cca0d3b024",
"verification_id": "{verification_id}",
"form_token": "{form_token}",
"verification_attempts_left": {verification_attempts_left}
}
Additional
Get business activities
URL: https://api.kycaid.com/business-activities
Method: GET
curl https://api.kycaid.com/business-activities \
-H 'Authorization: Token {API_TOKEN}' \
-X GET
Response
BusinessCategoryObject
Parameter | Description |
---|---|
business_category_id | string (36) Required The unique identifier for the business category. |
labels | array Required List of BusinessCategoryLabelObjects. |
activities | array Required List of BusinessActivityObjects. |
BusinessCategoryLabelObject
Parameter | Description |
---|---|
language_code | string (2) Required Language code. Example: EN (ISO 639-1) |
label | string (50) Required Business category name on specific language. |
BusinessActivityObject
Parameter | Description |
---|---|
business_activity_id | string (36) Required The unique identifier for the business activity which should be used for business_activity parameter during creation of applicant and other calls. |
labels | array Required List of BusinessActivityLabelObjects. |
BusinessActivityLabelObject
Parameter | Description |
---|---|
language_code | string (2) Required Language code. Example: EN (ISO 639-1) |
label | string (50) Required Business activity name on specific language. |
[
{
business_category_id: <business_category_id>,
labels: [
{
language_code: <language_code>,
label: <business_category_name>
},
...
],
activities: [
{
business_activity_id: <business_activity_id>,
labels: [
{
language_code: <language_code>,
label: <business_activity_name>
},
...
],
}
]
},
...
]
[
{
"business_category_id": "3589f557065bc649ff2acc1407991fbbbfa0",
"labels": [
{
"label": "Arts, entertainment and recreation",
"language_code": "EN"
},
{
"label": "Искусство, развлечения и отдых",
"language_code": "RU"
},
{
"label": "Мистецтво, розваги та відпочинок",
"language_code": "UK"
}
],
"activities": [
{
"business_activity_id": "bfceccf606c7d645b5299804467c82c078b4",
"labels": [
{
"label": "Performing arts",
"language_code": "EN"
},
{
"label": "Исполнительское искусство",
"language_code": "RU"
},
{
"label": "Виконавче мистецтво",
"language_code": "UK"
}
]
}
]
}
]
Get countries
URL: https://api.kycaid.com/countries
Method: GET
curl https://api.kycaid.com/countries \
-H 'Authorization: Token {API_TOKEN}' \
-X GET
Response
CountryObject
Parameter | Description |
---|---|
country_code | string (2) Required The country code which should be used for residence_country and registration_country parameters during creation of applicant and other calls. Example: GB (ISO 3166-2) |
labels | array Required List of CountryLabelObjects. |
CountryLabelObject
Parameter | Description |
---|---|
language_code | string (2) Required Language code. Example: EN (ISO 639-1) |
label | string (50) Required Country name on specific language. |
[
{
country_code: <country_code>,
labels: [
{
language_code: <language_code>,
label: <country_name>
},
...
]
},
...
]
[
{
"country_code": "AD",
"labels": [
{
"language_code": "EN",
"label": "Andorra"
},
{
"language_code": "RU",
"label": "Андорра"
},
{
"language_code": "UK",
"label": "Андорра"
}
]
}
]
Get languages
URL: https://api.kycaid.com/languages
Method: GET
curl https://api.kycaid.com/languages \
-H 'Authorization: Token {API_TOKEN}' \
-X GET
Response
LanguageObject
Parameter | Description |
---|---|
language_code | string (2) Required Language code. Example: en (ISO 639-1) |
labels | array Required List of LanguageLabelObjects. |
LanguageLabelObject
Parameter | Description |
---|---|
language_code | string (2) Required Language code. Example: en (ISO 639-1) |
label | string (50) Required Locale name on specific language. |
[
{
language_code: <language_code>,
labels: [
{
language_code: <language_code>,
label: <language_name>
},
...
]
},
...
]
[
{
"language_code": "en",
"labels": [
{
"language_code": "en",
"label": "English"
},
{
"language_code": "ru",
"label": "Английский"
},
{
"language_code": "uk",
"label": "Англійська"
}
]
}
]
Services
Brazilian CPF
URL: https://api.kycaid.com/services/br/cpf/{cpf_number}
Method: GET
curl https://api.kycaid.com/services/br/cpf/{cpf_number} \
-H 'Authorization: Token {API_TOKEN}' \
-X GET
Request
Parameter | Description |
---|---|
cpf_number | string (11) Required CPF number. Example format: 123456778901, but not 123.456.789-01. |
Response
Parameter | Description |
---|---|
validation.valid | boolean Required Result of CPF number validation. |
data.number | string Required CPF number. |
data.name | string (50) Name |
data.first_name | string (50) First name |
data.last_name | string (50) Last name |
data.dob | string (10) Date of birth |
data.gender | string (1) Gender |
{
"validation": {
"valid": {status}
},
"data": {
"number": "{number}",
"name": "{name}",
"first_name": "{first_name}",
"last_name": "{last_name}",
"dob": "{dob}",
"gender": "{gender}"
}
}
Mexican CURP
URL: https://api.kycaid.com/services/mx/curp/{curp_number}
Method: GET
curl https://api.kycaid.com/services/mx/curp/{curp_number} \
-H 'Authorization: Token {API_TOKEN}' \
-X GET
Request
Parameter | Description |
---|---|
curp_number | string (18) Required CURP number. Example format: HEGA820506HBCRRL09. |
Response
Parameter | Description |
---|---|
validation.valid | boolean Required Result of CURP number validation. |
data.number | string Required CURP number. |
data.first_name | string (50) First name |
data.last_name | string (50) Last name |
data.dob | string (10) Date of birth |
data.gender | string (1) Gender |
{
"validation": {
"valid": {status}
},
"data": {
"number": "{number}",
"name": "{name}",
"first_name": "{first_name}",
"last_name": "{last_name}",
"dob": "{dob}",
"gender": "{gender}"
}
}
Peru DNI
URL: https://api.kycaid.com/services/pe/dni/{dni_number}
Method: GET
curl https://api.kycaid.com/services/pe/dni/{dni_number} \
-H 'Authorization: Token {API_TOKEN}' \
-X GET
Request
Parameter | Description |
---|---|
dni_number | string (8) Required DNI number. Example format: 12345678. |
Response
Parameter | Description |
---|---|
validation.valid | boolean Required Result of DNI number validation. |
data.number | string Required DNI number. |
data.first_name | string First name |
data.last_name | string Last name |
data.second_last_name | string Second last name |
data.residence_country | string (2) Residence country |
{
"validation": {
"valid": {status}
},
"data": {
"number": "{number}",
"first_name": "{first_name}",
"last_name": "{last_name}",
"second_last_name": "{last_name}",
"residence_country": "{residence_country}"
}
}
Peru DNI Extra
URL: https://api.kycaid.com/services/pe/dni-extra/{dni_number}
Method: GET
curl https://api.kycaid.com/services/pe/dni-extra/{dni_number} \
-H 'Authorization: Token {API_TOKEN}' \
-X GET
Request
Parameter | Description |
---|---|
dni_number | string (8) Required DNI number. Example format: 12345678. |
Response
Parameter | Description |
---|---|
validation.valid | boolean Required Result of DNI number validation. |
data.number | string Required Applicant's DNI number. |
data.first_name | string Applicant's first name |
data.last_name | string Applicant's last name |
data.full_name | string Applicant's full name |
data.names | array Applicant's full name as an array |
data.issue_date | string Applicant's document issue date |
data.expiry_date | string Applicant's document expiration date |
data.dob | string Applicant's date of birth |
data.age | number Applicant's age |
data.dod | string Applicant's date of death |
data.gender | string Applicant's gender |
data.civil_status | string Applicant's civil status |
data.donor | boolean Applicant was applied to be an organ donor |
data.verification_digit | number A digit to validate data |
data.address.postal_code | string Applicant's residence postal code |
data.address.ubigeo | number Applicant's residence code in UBIGEO coding system |
data.address.region | string Applicant's residence region |
data.address.province | string Applicant's residence province |
data.address.district | string Applicant's residence district |
Error types
Type | Message |
---|---|
not_found | Information not found |
missing_parameter | Parameter is missing |
{
"validation": {
"valid": {status}
},
"errors": [
{
"type": "{type}",
"message": "{message}"
}
],
"data": {
"number": "{number}",
"first_name": "{first_name}",
"last_name": "{last_name}",
"full_name": "{full_name}",
"names": "{names}",
"issue_date": "{issue_date}",
"expiry_date": "{expiry_date}",
"dob": "{dob}",
"age": "{age}",
"dod": "{dod}",
"civil_status": "{civil_status}",
"donor": "{donor}",
"verification_digit": "{verification_digit}",
"address": {
"postal_code": "{postal_code}",
"ubigeo": "{ubigeo}",
"region": "{region}",
"province": "{province}",
"district": "{district}"
}
}
}
Nigerian NIN
URL: https://api.kycaid.com/services/ng/nin
Method: POST
curl https://api.kycaid.com/services/ng/nin \
-H 'Authorization: Token {API_TOKEN}' \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"nin_number": {nin_number},
"first_name": {first_name},
"last_name": {last_name}
}'
Request
Parameter | Description |
---|---|
nin_number | string (11) Required NIN number. Example format: 12345678901. |
first_name | string Required First name. Example: 'Bunch'. |
last_name | string Required Last name. Example: 'Dillon'. |
Response
Parameter | Description |
---|---|
validation.valid | boolean Required Result of NIN number validation. |
data.first_name | string First name |
data.last_name | string Last name |
data.dob | string Date of birth |
data.phone | string Phone number |
data.email | string Email |
data.gender | string Gender |
{
"validation": {
"valid": {status}
},
"data": {
"first_name": "{first_name}",
"last_name": "{last_name}",
"dob": "{dob}",
"phone": "{phone}",
"email": "{email}",
"gender": "{gender}",
}
}
Nigerian Driver License Number
URL: https://api.kycaid.com/services/ng/driver-license-number
Method: POST
curl https://api.kycaid.com/services/ng/driver-license-number \
-H 'Authorization: Token {API_TOKEN}' \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"driver_license_number": {driver_license_number},
"first_name": {first_name},
"last_name": {last_name}
}'
Request
Parameter | Description |
---|---|
driver_license_number | string (10-12) Required Driver license number. Example format: AKW06968AA2. |
first_name | string Required First name. Example: 'Bunch'. |
last_name | string Required Last name. Example: 'Dillon'. |
Response
Parameter | Description |
---|---|
validation.valid | boolean Required Result of Driver license number validation. |
data.first_name | string First name |
data.last_name | string Last name |
data.dob | string Date of birth |
data.phone | string Phone number |
data.email | string Email |
data.gender | string Gender |
{
"validation": {
"valid": {status}
},
"data": {
"first_name": "{first_name}",
"last_name": "{last_name}",
"dob": "{dob}",
"phone": "{phone}",
"email": "{email}",
"gender": "{gender}",
}
}
Turkey Identity Number
URL: https://api.kycaid.com/services/tr/identity-number
Method: POST
curl https://api.kycaid.com/services/tr/identity-number \
-H 'Authorization: Token {API_TOKEN}' \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"identity_number": {identity_number},
"first_name": "{first_name}",
"last_name": "{last_name}",
"birth_year": {birth_year}
}'
Request
Parameter | Description |
---|---|
identity_number | number (11) Required Turkey Identity Number. Example format: 12345678901. |
first_name | string (50) Required First name of applicant. |
last_name | string (50) Required last name of applicant. |
birth_year | number (4) Required Year of applicant birth. |
Response
Parameter | Description |
---|---|
validation.valid | boolean Required Result of Turkey Identity Number validation. |
data.identity_number | number (11) Required Turkey Identity Number. |
data.first_name | string (50) First name. |
data.last_name | string (50) Last name. |
data.birth_year | number (4) Birth year. |
data.residence_country | string (2) Required Residence country. |
{
"validation": {
"valid": {status}
},
"data": {
"identity_number": {identity_number},
"first_name": "{first_name}",
"last_name": "{last_name}",
"birth_year": {birth_year},
"residence_country": "{residence_country}"
}
}
Kazakhstan Personal Data
Request data
URL: https://api.kycaid.com/services/kz/personal-data/request
Method: POST
curl https://api.kycaid.com/services/kz/personal-data/request \
-H 'Authorization: Token {API_TOKEN}' \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"iin": "{iin}"
}'
Request
Parameter | Description |
---|---|
iin | string (12) Required Kazakhstan IIN. Example format: 123456789012. |
Response
Parameter | Description |
---|---|
validation.valid | boolean Required Result of Kazakhstan IIN validation. |
data.iin | string (12) Required Kazakhstan IIN. Example format: 123456789012. |
data.service_request_id | string (36) Unique service request id. |
{
"validation": {
"valid": {status}
},
"data": {
"iin": "{iin}",
"service_request_id": "{service_request_id}"
}
}
Check data
URL: https://api.kycaid.com/services/kz/personal-data/check
Method: POST
curl https://api.kycaid.com/services/kz/personal-data/check \
-H 'Authorization: Token {API_TOKEN}' \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"service_request_id": "{service_request_id}"
}'
Request
Parameter | Description |
---|---|
service_request_id | string (36) Required Unique service request id. |
Response
Parameter | Description |
---|---|
data | object It can be null if the request has not been completed yet. Maximum waiting time 3 min. |
data.service_request_id | string (36) Required Unique service request id. |
data.iin | string (12) Required Kazakhstan IIN. Example format: 123456789012. |
data.first_name | string Required Applicant first name. |
data.last_name | string Required Applicant last name. |
data.middle_name | string Required Applicant middle name. |
data.dob | string (12) Required Applicant date of birth. |
data.gender | string (1) Required Applicant gender. |
data.document_number | string Required Applicant document number. |
data.full_address | string Required Applicant registration address. |
{
"data": {
"service_request_id": "{service_request_id}",
"iin": "{iin}",
"first_name": "{first_name}",
"last_name": "{last_name}",
"middle_name": "{middle_name}",
"dob": "{dob}",
"gender": "{gender}",
"document_number": "{document_number}",
"full_address": "{full_address}"
}
}
India aadhaar card
Generate OTP
URL: https://api.kycaid.com/services/in/aadhaar/generate-otp
Method: POST
curl https://api.kycaid.com/services/in/aadhaar/generate-otp \
-H 'Authorization: Token {API_TOKEN}' \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"aadhaar_number": "{aadhaar_number}"
}'
Request
Parameter | Description |
---|---|
aadhaar_number | string (12) Required Aadhaar Card Number. Example format: 123456789012. |
Response
Parameter | Description |
---|---|
validation.valid | boolean Required Result of Aadhaar Number validation. |
data.aadhaar_number | number (12) Required Aadhaar Card Number. Example format: 123456789012. |
data.otp_sent | boolean Required Status of OTP sent. |
data.service_request_id | string (36) Unique service request id. |
Error types
Type | Message |
---|---|
unlinked_number | Mobile number not linked with aadhaar number |
invalid_number | Please provide a valid Aadhaar number |
lock_account | Please unlock Aadhar from the UIDAI portal |
{
"validation": {
"valid": {status}
},
"errors": [
{
"type": "{type}",
"message": "{message}"
}
],
"data": {
"aadhaar_number": "{aadhaar_number}",
"otp_sent": {otp_sent},
"service_request_id": "{service_request_id}"
}
}
Submit OTP
URL: https://api.kycaid.com/services/in/aadhaar/submit-otp
Method: POST
curl https://api.kycaid.com/services/in/aadhaar/submit-otp \
-H 'Authorization: Token {API_TOKEN}' \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"service_request_id": "{service_request_id}",
"otp": "{otp}"
}'
Request
Parameter | Description |
---|---|
service_request_id | string (36) Required Unique service request id. |
otp | string (6) Required The 6 digit OTP received to the registered mobile number. |
Response
Parameter | Description |
---|---|
data.service_request_id | string (36) Required Unique service request id. |
data.aadhaar_number | number (12) Required Aadhaar Card Number. Example format: 123456789012. |
data.full_name | string (255) Required Full Name as per Aadhaar Records. |
data.first_name | string (255) Required Applicant first name. |
data.last_name | string (255) Required Applicant last name. |
data.dob | string (12) Required Applicant date of birth. |
data.gender | string (1) Required Applicant gender. |
data.full_address | string (255) Required Applicant full address. |
data.profile_image | string Applicant profile photo. |
{
"data": {
"service_request_id": "{service_request_id}",
"aadhaar_number": "{aadhaar_number}",
"full_name": "{full_name}",
"first_name": "{first_name}",
"last_name": "{last_name}",
"dob": "{dob}",
"gender": "{gender}",
"full_address": "{aadhaar_number}",
"profile_image": "{profile_image}"
}
}
Phone number check
Send SMS
URL: https://api.kycaid.com/services/phone-number/check/request
Method: POST
curl https://api.kycaid.com/services/phone-number/check/request \
-H 'Authorization: Token {API_TOKEN}' \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"phone_number": "{phone_number}"
}'
Request
Parameter | Description |
---|---|
phone_number | string (15) Required Phone number for check. Phone number must be in international format. Example format: 3805012345678. |
Response
Parameter | Description |
---|---|
validation.format | boolean Required Result of phone number validation. |
validation.sending | boolean Required Status of sending SMS. |
data.phone_number | number (15) Required Applicants phone number. |
data.service_request_id | string (36) Unique service request id. |
{
"validation": {
"format": {format},
"sending": {sending}
},
"data": {
"phone_number": "{phone_number}",
"service_request_id": "{service_request_id}"
}
}
Submit Pin Code
URL: https://api.kycaid.com/services/phone-number/check/submit-pin-code
Method: POST
curl https://api.kycaid.com/services/phone-number/check/submit-pin-code \
-H 'Authorization: Token {API_TOKEN}' \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"service_request_id": "{service_request_id}",
"pin_code": "{pin_code}"
}'
Request
Parameter | Description |
---|---|
service_request_id | string (36) Required Unique service request id. |
pin_code | string (6) Required The 6 digit from SMS message. |
Response
Parameter | Description |
---|---|
validation.format | boolean Required Result of phone number validation. |
validation.valid | boolean Required Result of phone number check. |
validation.expired | boolean Required Status of request expiration. |
data.service_request_id | string (36) Required Unique service request id. |
data.pin_code | string (6) Required The 6 digit from SMS message. |
{
"validation": {
"format": {format},
"valid": {valid},
"expired": {expired}
},
"data": {
"pin_code": "{expired}",
"service_request_id": "{service_request_id}"
}
}
Identity document recognition
URL: https://api.kycaid.com/recognizer/id
Method: POST
curl https://api.kycaid.com/recognizer/id \
-H 'Authorization: Token {API_TOKEN} \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"images": [
"/9j/4AAQSkZJRgABAQEAkAC...",
"/9j/4AAQSkZJRgABAQEAxwD..."
]
}'
Request
Parameter | Description |
---|---|
images | array <string> Required Array of images in Base64. |
Response
Parameter | Description |
---|---|
identity_document.documents | array <string> Required List of recognized documents. |
identity_document.statuses | object Required List of document statuses. |
identity_document.fields | array <object> Required List of document fields. |
identity_document.images | array <object> Required Last name |
identity_document.more_pages_available | number Required Indicates if a document has more pages to be processed, for example, ID card's front and back side. Default value is 0. |
identity_document.processing_time | number Required Time spent on document recognition (milliseconds). |
Document types
ID | Name |
---|---|
11 | Passport |
12 | Identity card |
13 | Diplomatic passport |
14 | Service passport |
15 | Seamans identity document |
16 | Identity card for residence |
17 | Travel document |
20 | National identity card |
21 | Social identity card |
22 | Alien's identity card |
23 | Privileged identity card |
24 | Residence permit identity card |
25 | Origin card |
26 | Emergency passport |
27 | Alien's passport |
28 | Alternative identity card |
29 | Visa ID2 |
30 | Visa ID3 |
32 | Authorization card |
33 | Beginner permit |
34 | Border crossing card |
35 | Chauffeur license |
36 | Chauffeur license under 18 |
37 | Chauffeur license under 21 |
38 | Commercial driving license |
39 | Commercial driving license instructional permit |
40 | Commercial driving license under 18 |
41 | Commercial driving license under 21 |
42 | Commercial instruction permit |
43 | Commercial new permit |
44 | Concealed carry license |
45 | Concealed firearm permit |
46 | Conditional driving license |
47 | Department of veterans affairs identity card |
48 | Diplomatic driving license |
49 | Driving license |
50 | Driving license instructional permit |
51 | Driving license instructional permit under 18 |
52 | Driving license instructional permit under 21 |
53 | Driving license learners permit |
54 | Driving license learners permit under 18 |
55 | Driving license learners permit under 21 |
56 | Driving license novice |
57 | Driving license novice under 18 |
58 | Driving license novice under 21 |
59 | Driving license registered offender |
60 | Driving license restricted under 18 |
61 | Driving license restricted under 21 |
62 | Driving license temporary visitor |
63 | Driving license temporary visitor under 18 |
64 | Driving license temporary visitor under 21 |
65 | Driving license under 18 |
66 | Driving license under 21 |
67 | Employment driving permit |
68 | Enhanced chauffeur license |
69 | Enhanced chauffeur license under 18 |
70 | Enhanced chauffeur license under 21 |
71 | Enhanced commercial driving license |
72 | Enhanced driving license |
73 | Enhanced driving license under 18 |
74 | Enhanced driving license under 21 |
75 | Enhanced identity card |
76 | Enhanced identity card under 18 |
77 | Enhanced identity card under 21 |
78 | Enhanced operators license |
79 | Firearms permit |
80 | Full provisional license |
81 | Full provisional license under 18 |
82 | Full provisional license under 21 |
83 | Geneva conventions identity card |
84 | Graduated driving license under 18 |
85 | Graduated driving license under 21 |
86 | Graduated instruction permit under 18 |
87 | Graduated instruction permit under 21 |
88 | Graduated license under 18 |
89 | Graduated license under 21 |
90 | Handgun carry permit |
91 | Identity and privilege card |
92 | Identity card mobility impaired |
93 | Identity card registered offender |
94 | Identity card temporary visitor |
95 | Identity card temporary visitor under 18 |
96 | Identity card temporary visitor under 21 |
97 | Identity card under 18 |
98 | Identity card under 21 |
99 | Other |
100 | Ignition interlock permit |
101 | Immigrant visa |
102 | Instruction permit |
103 | Instruction permit under 18 |
104 | Instruction permit under 21 |
105 | Interim driving license |
106 | Interim identity card |
107 | Intermediate driving license |
108 | Intermediate driving license under 18 |
109 | Intermediate driving license under 21 |
110 | Junior driving license |
111 | Learner instructional permit |
112 | Learner license |
113 | Learner license under 18 |
114 | Learner license under 21 |
115 | Learner permit |
116 | Learner permit under 18 |
117 | Learner permit under 21 |
118 | Limited license |
119 | Limited permit |
120 | Limited term driving license |
121 | Limited term identity card |
122 | Liquor identity card |
123 | New permit |
124 | New permit under 18 |
125 | New permit under 21 |
126 | Non-US citizen driving license |
127 | Occupational driving license |
128 | Oneida tribe of indians identity card |
129 | Operator license |
130 | Operator license under 18 |
131 | Operator license under 21 |
132 | Permanent driving license |
133 | Permit to re-enter |
134 | Probationary auto license |
135 | Probationary driving license under 18 |
136 | Probationary driving license under 21 |
137 | Probationary vehicle sales person license |
138 | Provisional driving license |
139 | Provisional driving license under 18 |
140 | Provisional driving license under 21 |
141 | Provisional license |
142 | Provisional license under 18 |
143 | Provisional license under 21 |
144 | Public passenger chauffeur license |
145 | Racing and gaming comission card |
146 | Refugee travel document |
147 | Renewal permit |
148 | Restricted commercial driver license |
149 | Restricted driver license |
150 | Restricted permit |
151 | Seasonal permit |
152 | Seasonal resident identity card |
153 | Seasonal citizen identity card |
154 | Sex offender |
155 | Social security card |
156 | Temporary driving license |
157 | Temporary driving license under 18 |
158 | Temporary driving license under 21 |
159 | Temporary identity card |
160 | Temporary instruction permit identity card |
161 | Temporary instruction permit identity card under 18 |
162 | Temporary instruction permit identity card under 21 |
163 | Temporary visitor driving license |
164 | Temporary visitor driving license under 18 |
165 | Temporary visitor driving license under 21 |
166 | Uniformed services identity card |
167 | Vehicle sales person license |
168 | Worker identification credential |
169 | Commercial driving license novice |
170 | Commercial driving license novice under 18 |
171 | Commercial driving license novice under 21 |
172 | Passport card |
173 | Passport resident card |
174 | Personal identification verification |
175 | Temporary operator license |
176 | Driving license under 19 |
177 | Identity card under 19 |
178 | Visa |
179 | Temporary passport |
180 | Voting card |
181 | Health card |
182 | Certificate of citizenship |
183 | Address card |
184 | Airport immigration card |
185 | Alien registration card |
186 | APEH card |
187 | Coupon to driving license |
188 | Crew member certificate |
189 | Document for return |
190 | E-card |
191 | Employment card |
192 | HKSAR immigration form |
193 | Immigrant card |
194 | Labour card |
195 | Laissez passer |
196 | Lawyer identity certificate |
197 | License card |
198 | Passport stateless |
199 | Passport child |
200 | Passport consular |
201 | Passport diplomatic service |
202 | Passport official |
203 | Passport provisional |
204 | Passport special |
205 | Permission to the local border traffic |
206 | Registration certificate |
207 | Sedesol card |
208 | Social card |
209 | TB card |
210 | Vehicle passport |
211 | W document |
212 | Diplomatic identity card |
213 | Consular identity card |
214 | Income tax card |
215 | Residence permit |
216 | Document of identity |
217 | Border crossing permit |
218 | Passport limited validity |
219 | Sim card |
220 | Tax card |
221 | Company card |
222 | Domestic passport |
223 | Identity certificate |
224 | Resident id card |
225 | Armed forces identity card |
226 | Professional card |
227 | Registration stamp |
228 | Driver card |
229 | Driver training certificate |
230 | Qualification driving license |
231 | Membership card |
232 | Public vehicle driver authority card |
233 | Marine license |
234 | Temporary learner license |
235 | Temporary commercial driving license |
236 | Interim instructional permit |
237 | Certificate of competency |
238 | Certificate of proficiency |
239 | Trade license |
240 | Passport page |
241 | Invoice |
242 | Passenger locator form |
Fields types
ID | Name |
---|---|
0 | Document class code |
1 | Issuing state code |
2 | Document number |
3 | Date of expiry |
4 | Date of issue |
5 | Date of birth |
6 | Place of birth |
7 | Personal number |
8 | Surname |
9 | Given name(s) |
10 | Mother's name |
11 | Nationality |
12 | Sex |
13 | Height |
14 | Weight |
15 | Eyes color |
16 | Hair color |
17 | Address |
18 | Donor |
19 | Social security number |
20 | DL class |
21 | DL endorsement code |
22 | DL restriction code |
23 | Date of 21st birthday |
24 | Issuing authority |
25 | Surname and given names |
26 | Nationality code |
27 | Passport number |
28 | Invitation number |
29 | Visa ID |
30 | Visa class |
31 | Visa subclass |
35 | MRZ type |
36 | Optional data |
37 | Document class name |
38 | Issuing state name |
39 | Place of issue |
40 | Document number checksum |
41 | Date of birth checksum |
42 | Date of expiry checksum |
43 | Personal number checksum |
44 | Final checksum |
45 | Passport number checksum |
46 | Invitation number checksum |
47 | Visa ID checksum |
48 | Surname and given names checksum |
49 | Visa valid until checksum |
50 | Other |
51 | MRZ strings |
52 | Name suffix |
53 | Name prefix |
54 | Date of issue checksum |
55 | Date of issue check digit |
56 | Document series |
57 | Registration number |
58 | Vehicle model |
59 | Vehicle color |
60 | Vehicle body number |
61 | Vehicle type |
62 | Max permissible weight |
63 | Unladen mass |
64 | Address: area |
65 | Address: state |
66 | Address: building |
67 | Address: house |
68 | Address: flat |
69 | Place of registration |
70 | Date of registration |
71 | Resident from |
72 | Resident until |
73 | Issuing authority code |
74 | Place of birth: area |
75 | Place of birth: state code |
76 | Address: street |
77 | Address: city |
78 | Address: jurisdiction code |
79 | Address: postal code |
80 | Document number check digit |
81 | Date of birth check digit |
82 | Date of expiry check digit |
83 | Personal number check digit |
84 | Final check digit |
85 | Passport number check digit |
86 | Invitation number check digit |
87 | Visa ID check digit |
88 | Surname and given names check digit |
89 | Visa valid until check digit |
90 | Permit class |
91 | Permit expiry date |
92 | Permit identifier |
93 | Permit issue date |
94 | Permit restriction code |
95 | Permit endorsement code |
96 | Issue timestamp |
97 | Number of duplicates |
98 | Medical indicator codes |
99 | Non-resident indicator |
100 | Visa type |
101 | Visa valid from |
102 | Visa valid until |
103 | Duration of stay |
104 | Number of entries |
105 | Day |
106 | Month |
107 | Year |
108 | Unique customer identifier |
109 | Commercial vehicle code |
110 | AKA: date of birth |
111 | AKA: social insurance number |
112 | AKA: surname |
113 | AKA: given name(s) |
114 | AKA: name suffix |
115 | AKA: name prefix |
116 | Mailing address: street |
117 | Mailing address: city |
118 | Mailing address: jurisdiction code |
119 | Mailing address: postal code |
120 | Number for validation |
121 | Inventory number |
122 | Race ethnicity |
123 | Jurisdiction vehicle class |
124 | Jurisdiction endorsement code |
125 | Jurisdiction restriction code |
126 | Family name |
127 | Given name(s) (national) |
128 | Visa ID (national) |
129 | Father's name |
130 | Father's name (national) |
131 | Surname and given names (national) |
132 | Place of birth (national) |
133 | Issuing authority (national) |
134 | Issuing state code (numeric) |
135 | Nationality code (numeric) |
136 | Engine power |
137 | Engine volume |
138 | Chassis number |
139 | Engine number |
140 | Engine model |
141 | Vehicle category |
142 | Identity card number |
143 | Control number |
144 | Parents' given names |
145 | Second surname |
146 | Middle name |
147 | Vehicle identification number |
148 | VIN check digit |
149 | VIN checksum |
150 | Line 1 check digit |
151 | Line 2 check digit |
152 | Line 3 check digit |
153 | Line 1 checksum |
154 | Line 2 checksum |
155 | Line 3 checksum |
156 | Registration number check digit |
157 | Registration number checksum |
158 | Vehicle ITS code |
159 | Card access number |
160 | Marital status |
161 | Company name |
162 | Special notes |
163 | Spouse's surname |
164 | Tracking number |
165 | Booklet number |
166 | Children |
167 | Copy |
168 | Serial number |
169 | Dossier number |
170 | AKA: surname and given names |
171 | Territorial validity |
172 | MRZ strings with correct checksums |
173 | CDL restriction code |
174 | Date of 18th birthday |
175 | DL record created |
176 | DL date of duplicate issue |
177 | Card type |
178 | Military ID number |
179 | Destination |
180 | Blood group |
181 | Sequence number |
182 | Body type |
183 | Vehicle make |
184 | Transaction number |
185 | Age |
186 | Folio number |
187 | Voter key |
188 | Address: municipality |
189 | Address: location |
190 | Section |
191 | OCR number |
192 | Federal elections |
193 | Reference number |
194 | Optional data checksum |
195 | Optional data check digit |
196 | Visa number |
197 | Visa number checksum |
198 | Visa number check digit |
199 | Voter |
200 | Type of the previous document |
220 | Field from MRZ |
221 | Current date |
251 | Status date of expiry |
252 | Banknote number |
253 | CSC code |
254 | Pseudonym |
255 | Academic title |
256 | Address country |
257 | Address ZIP code |
258 | eID residence permit 1 |
259 | eID residence permit 2 |
260 | eID place of birth: street |
261 | eID place of birth: city |
262 | eID place of birth: state |
263 | eID place of birth: country |
264 | eID place of birth: postal code |
265 | CDL class |
266 | Date of 19th birthday |
267 | Weight (pound) |
268 | Indicator of document limited duration |
269 | Endorsement expiration date |
270 | Revision date |
271 | Compliance type |
272 | Family name truncation |
273 | First name truncation |
274 | Middle name truncation |
275 | Exam date |
276 | Organization |
277 | Department |
278 | Pay grade |
279 | Rank |
280 | Benefits number |
281 | Sponsor service |
282 | Sponsor status |
283 | Sponsor |
284 | Relationship |
285 | USCIS |
286 | Category |
287 | Conditions |
288 | Identifier |
289 | Configuration |
290 | Discretionary data |
291 | Line 1 optional data |
292 | Line 2 optional data |
293 | Line 3 optional data |
294 | EQV code |
295 | ALT code |
296 | Binary code |
297 | Pseudo code |
298 | Fee |
299 | Stamp number |
300 | SBH security options |
301 | SBH integrity options |
302 | Date of creation |
303 | Validity period |
304 | Patron header version |
305 | BDB type |
306 | Biometric type |
307 | Biometric subtype |
308 | Biometric product ID |
309 | Biometric format owner |
310 | Biometric format type |
311 | Phone |
312 | Profession |
313 | Position |
314 | Personal data summary |
315 | Other valid ID |
316 | Custody info |
317 | Other name |
318 | Observations |
319 | Tax |
320 | Personalization date |
321 | Personalization SN |
322 | Other person name |
323 | Notify person: date of record |
324 | Notify person: name |
325 | Notify person: phone |
326 | Notify person: address |
327 | DS certificate issuer |
328 | DS certificate subject |
329 | DS certificate valid from |
330 | DS certificate valid to |
331 | Vehicle data from the DG1 data group |
332 | Type of approval number |
333 | Administrative number |
334 | Document discriminator |
335 | Data discriminator |
336 | ID number of ISO issuer |
340 | GNIB number |
341 | Department number |
342 | Telegraph code |
343 | Allergies |
344 | Special code |
345 | Court code |
346 | County |
347 | Sponsor SSN |
348 | DoD number |
349 | Expiry date of Motorcycle Novice status |
350 | DUF number |
351 | AGY |
352 | PNR code |
353 | Code of the airport of departure |
354 | Code of the airport of arrival |
355 | Flight number |
356 | Date of flight |
357 | Seat number |
358 | Date of boarding pass issue |
359 | CCW until |
360 | Reference number checksum |
361 | Reference number check digit |
362 | Room number |
363 | Religion |
364 | Months to expire |
365 | Electronic ticket indicator |
366 | Compartment code |
367 | Check-in sequence number |
368 | Airline designator of boarding pass issuer |
369 | Airline numeric code |
370 | Ticket number |
371 | Frequent flyer airline designator |
372 | Frequent flyer number |
373 | Free baggage allowance |
374 | PDF417 codec |
375 | Identity card number checksum |
376 | Identity card number check digit |
377 | Veteran |
378 | DL category A1 valid from |
379 | DL category A1 valid to |
380 | DL category A1 codes |
381 | DL category A valid from |
382 | DL category A valid to |
383 | DL category A codes |
384 | DL category B valid from |
385 | DL category B valid to |
386 | DL category B codes |
387 | DL category C1 valid from |
388 | DL category C1 valid to |
389 | DL category C1 codes |
390 | DL category C valid from |
391 | DL category C valid to |
392 | DL category C codes |
393 | DL category D1 valid from |
394 | DL category D1 valid to |
395 | DL category D1 codes |
396 | DL category D valid from |
397 | DL category D valid to |
398 | DL category D codes |
399 | DL category BE valid from |
400 | DL category BE valid to |
401 | DL category BE codes |
402 | DL category C1E valid from |
403 | DL category C1E valid to |
404 | DL category C1E codes |
405 | DL category CE valid from |
406 | DL category CE valid to |
407 | DL category CE codes |
408 | DL category D1E valid from |
409 | DL category D1E valid to |
410 | DL category D1E codes |
411 | DL category DE valid from |
412 | DL category DE valid to |
413 | DL category DE codes |
414 | DL category M valid from |
415 | DL category M valid to |
416 | DL category M codes |
417 | DL category L valid from |
418 | DL category L valid to |
419 | DL category L codes |
420 | DL category T valid from |
421 | DL category T valid to |
422 | DL category T codes |
423 | DL category AM valid from |
424 | DL category AM valid to |
425 | DL category AM codes |
426 | DL category A2 valid from |
427 | DL category A2 valid to |
428 | DL category A2 codes |
429 | DL category B1 valid from |
430 | DL category B1 valid to |
431 | DL category B1 codes |
432 | Surname at birth |
433 | Civil status |
434 | Number of seats |
435 | Number of standing places |
436 | Max speed |
437 | Fuel type |
438 | Vehicle environmental type |
439 | Power-to-weight ratio |
440 | Max mass of trailer (braked) |
441 | Max mass of trailer (unbraked) |
442 | Transmission type |
443 | Trailer hitch |
444 | Accompanied by |
445 | Police district |
446 | First issue date |
447 | Payload capacity |
448 | Number of axles |
449 | Permissible axle load |
450 | Precinct |
451 | Invited by |
452 | Purpose of entry |
453 | Skin color |
454 | Complexion |
455 | Airport of departure |
456 | Airport of arrival |
457 | Airline name |
458 | Airline loyalty program for frequent flyers |
459 | License number |
460 | In tanks |
461 | Other than tanks |
462 | Fast Track service |
463 | Owner |
464 | MRZ strings from ICAO RFID |
465 | Number of card issuances |
466 | Number of card issuances checksum |
467 | Number of card issuances check digit |
468 | Century of birth |
469 | DL category A3 valid from |
470 | DL category A3 valid to |
471 | DL category A3 codes |
472 | DL category C2 valid from |
473 | DL category C2 valid to |
474 | DL category C2 codes |
475 | DL category B2 valid from |
476 | DL category B2 valid to |
477 | DL category B2 codes |
478 | DL category D2 valid from |
479 | DL category D2 valid to |
480 | DL category D2 codes |
481 | DL category B2E valid from |
482 | DL category B2E valid to |
483 | DL category B2E codes |
484 | DL category G valid from |
485 | DL category G valid to |
486 | DL category G codes |
487 | DL category J valid from |
488 | DL category J valid to |
489 | DL category J codes |
490 | DL category LC valid from |
491 | DL category LC valid to |
492 | DL category LC codes |
493 | Bank card number |
494 | Bank card validity |
495 | Tax number |
496 | Health insurance number |
497 | Grandfather's name |
498 | Selectee indicator |
499 | Mother's surname |
500 | Mother's name |
501 | Father's surname |
502 | Father's name |
503 | Mother's date of birth |
504 | Father's date of birth |
505 | Mother's personal number |
506 | Father's personal number |
507 | Mother's place of birth |
508 | Father's place of birth |
509 | Mother's country of birth |
510 | Father's country of birth |
511 | Date of first renewal |
512 | Date of second renewal |
513 | Place of examination |
514 | Application number |
515 | Voucher number |
516 | Authorization number |
517 | Faculty |
518 | Form of education |
519 | DNI number |
520 | Retirement number |
521 | Professional id number |
522 | Age at issue |
523 | Years since issue |
524 | DL category BTP valid from |
525 | DL category BTP codes |
526 | DL category BTP valid to |
527 | DL category C3 valid from |
528 | DL category C3 codes |
529 | DL category C3 valid to |
530 | DL category E valid from |
531 | DL category E codes |
532 | DL category E valid to |
533 | DL category F valid from |
534 | DL category F codes |
535 | DL category F valid to |
536 | DL category FA valid from |
537 | DL category FA codes |
538 | DL category FA valid to |
539 | DL category FA1 valid from |
540 | DL category FA1 codes |
541 | DL category FA1 valid to |
542 | DL category FB valid from |
543 | DL category FB codes |
544 | DL category FB valid to |
545 | DL category G1 valid from |
546 | DL category G1 codes |
547 | DL category G1 valid to |
548 | DL category H valid from |
549 | DL category H codes |
550 | DL category H valid to |
551 | DL category I valid from |
552 | DL category I codes |
553 | DL category I valid to |
554 | DL category K valid from |
555 | DL category K codes |
556 | DL category K valid to |
557 | DL category LK valid from |
558 | DL category LK codes |
559 | DL category LK valid to |
560 | DL category N valid from |
561 | DL category N codes |
562 | DL category N valid to |
563 | DL category S valid from |
564 | DL category S codes |
565 | DL category S valid to |
566 | DL category TB valid from |
567 | DL category TB codes |
568 | DL category TB valid to |
569 | DL category TM valid from |
570 | DL category TM codes |
571 | DL category TM valid to |
572 | DL category TR valid from |
573 | DL category TR codes |
574 | DL category TR valid to |
575 | DL category TV valid from |
576 | DL category TV codes |
577 | DL category TV valid to |
578 | DL category V valid from |
579 | DL category V codes |
580 | DL category V valid to |
581 | DL category W valid from |
582 | DL category W codes |
583 | DL category W valid to |
584 | URL |
585 | Caliber |
586 | Model |
587 | Make |
588 | Number of cylinders |
589 | Surname of husband after registration |
590 | Surname of wife after registration |
591 | Date of birth of wife |
592 | Date of birth of husband |
593 | Citizenship of first person |
594 | Citizenship of second person |
595 | CVV code |
596 | Date of insurance expiry |
597 | Mortgage by |
598 | Old document number |
599 | Old date of issue |
600 | Old place of issue |
601 | DL category LR valid from |
602 | DL category LR valid to |
603 | DL category LR codes |
604 | DL category MR valid from |
605 | DL category MR valid to |
606 | DL category MR codes |
607 | DL category HR valid from |
608 | DL category HR valid to |
609 | DL category HR codes |
610 | DL category HC valid from |
611 | DL category HC valid to |
612 | DL category HC codes |
613 | DL category MC valid from |
614 | DL category MC valid to |
615 | DL category MC codes |
616 | DL category RE valid from |
617 | DL category RE valid to |
618 | DL category RE codes |
619 | DL category R valid from |
620 | DL category R valid to |
621 | DL category R codes |
622 | DL category CA valid from |
623 | DL category CA valid to |
624 | DL category CA codes |
625 | Citizenship status |
626 | Military service from |
627 | Military service to |
628 | DL category NT valid from |
629 | DL category NT valid to |
630 | DL category NT codes |
631 | DL category TN valid from |
632 | DL category TN valid to |
633 | DL category TN codes |
634 | DL category D3 valid from |
635 | DL category D3 valid to |
636 | DL category D3 codes |
637 | Alternative date of expiry |
638 | DL category CD valid from |
639 | DL category CD valid to |
640 | DL category CD codes |
641 | Issuer identification number |
642 | Payment period from |
643 | Payment period to |
644 | Vaccination certificate identifier |
645 | First name |
646 | Date of arrival |
647 | Second name |
648 | Third name |
649 | Fourth name |
650 | Last name |
651 | DL category RM valid from |
652 | DL category RM codes |
653 | DL category RM valid to |
654 | DL category PW valid from |
655 | DL category PW codes |
656 | DL category PW valid to |
657 | DL category EB valid from |
658 | DL category EB codes |
659 | DL category EB valid to |
660 | DL category EC valid from |
661 | DL category EC codes |
662 | DL category EC valid to |
663 | DL category EC1 valid from |
664 | DL category EC1 codes |
665 | DL category EC1 valid to |
666 | Place of birth city |
667 | Year of birth |
668 | Year of expiry |
669 | Grandfather's name (maternal) |
670 | First surname |
671 | Month of birth |
672 | Floor number |
673 | Entrance number |
674 | Block number |
675 | Street number |
676 | Street type |
677 | City sector |
678 | County type |
679 | City type |
680 | Building type |
Image types
ID | Name |
---|---|
201 | Document holder photo |
202 | Fingerprint of document holder |
203 | Image of the iris of document holder |
204 | Signature of document holder |
205 | Barcode image |
206 | Image of document confirming owner citizenship |
207 | Cropped and rotated with perspective compensation (front side) of a document. Single input image can contain multiple document side/pages, which will be returned as separated results. Most coordinates in other types defined on that image. |
208 | Image of the rear side of the document |
209 | Area with dynamic color change |
210 | Additional Portrait |
211 | Stamp |
250 | Undefined image type |
300 | Fingerprint (thumb, left hand) |
301 | Fingerprint (index, left hand) |
302 | Fingerprint (middle, left hand) |
303 | Fingerprint (ring, left hand) |
304 | Fingerprint (little, left hand) |
305 | Fingerprint (thumb, right hand) |
306 | Fingerprint (index, right hand) |
307 | Fingerprint (middle, right hand) |
308 | Fingerprint (ring, right hand) |
309 | Fingerprint (little, right hand) |
313 | Fingerprint (four without thumb on right hand) |
314 | Fingerprint (four without thumb on left hand |
315 | Fingerprint (two thumbs) |
Language codes
Code | Locale |
---|---|
la | Latin |
af | Afrikaans |
sq | Albanian |
ar-DZ | Arabic (Algeria) |
ar-BH | Arabic (Bahrain) |
ar-EG | Arabic (Egypt) |
ar-IQ | Arabic (Iraq) |
ar-JO | Arabic (Jordan) |
ar-KW | Arabic (Kuwait) |
ar-LB | Arabic (Lebanon) |
ar-LY | Arabic (Libya) |
ar-MA | Arabic (Morocco) |
ar-OM | Arabic (Oman) |
ar-QA | Arabic (Qatar) |
ar-SA | Arabic (Saudi Arabia) |
ar-SY | Arabic (Syria) |
ar-TN | Arabic (Tunisia) |
ar-AE | Arabic (U.A.E.) |
ar-YE | Arabic (Yemen) |
hy | Armenian |
az-AZ | Azeri (Cyrillic) |
az | Azeri (Latin) |
eu | Basque |
be | Belarusian |
bg | Bulgarian |
ca | Catalan |
zh-HK | Chinese (HongKong S.A.R.) |
zh-MO | Chinese (Macao S.A.R.) |
zh | Chinese |
zh-SG | Chinese (Singapore) |
zh-TW | Chinese (Taiwan) |
hr | Croatian |
cs | Czech |
da | Danish |
dv | Divehi |
nl-BE | Dutch (Belgium) |
nl-NL | Dutch (Netherlands) |
en-AU | English (Australia) |
en-BZ | English (Belize) |
en-CA | English (Canada) |
en-CB | English (Caribbean) |
en-IE | English (Ireland) |
en-JM | English (Jamaica) |
en-NZ | English (New Zealand) |
en-PH | English (Philippines) |
en-ZA | English (South Africa) |
en-TT | English (Trinidad) |
en-GB | English (United Kingdom) |
en-US | English (United States) |
en-ZW | English (Zimbabwe) |
et | Estonian |
fo_FO | Faeroese |
fa | Farsi |
fi | Finnish |
fr-BE | French (Belgium) |
fr-CA | French (Canada) |
fr-FR | French (France) |
fr-LU | French (Luxembourg) |
fr-MC | French (Monaco) |
fr-CH | French (Switzerland) |
mk-MK | FYRO Macedonian |
gl | Galician |
ka | Georgian |
de-AT | German (Austria) |
de-DE | German (Germany) |
de-LI | German (Liechtenstein) |
de-LU | German (Luxembourg) |
de-CH | German (Switzerland) |
el | Greek |
gu | Gujarati |
he | Hebrew |
hi-IN | Hindi (India) |
hu | Hungarian |
is | Icelandic |
id | Indonesian |
it-IT | Italian (Italy) |
it-CH | Italian (Switzerland) |
ja | Japanese |
kn | Kannada |
kk | Kazakh |
kok | Konkani |
ko | Korean |
ky-Cyrl | Kyrgyz (Cyrillic) |
lv | Latvian |
lt | Lithuanian |
ms-MY | Malay (Malaysia) |
ms-BN | Malay (Brunei Darussalam) |
mr | Marathi |
mn-Cyrl | Mongolian (Cyrillic) |
nb | Norwegian (Bokmal) |
nn-NO | Norwegian (Nynorsk) |
pl | Polish |
pt-BR | Portuguese (Brazil) |
pt-PT | Portuguese (Portugal) |
pa | Punjabi |
rm | Rhaeto-Romanic |
ro | Romanian |
ru | Russian |
sa | Sanskrit |
sr-Cyrl | Serbian (Cyrillic) |
sr-Latn | Serbian (Latin) |
sk | Slovak |
sl | Slovenian |
es-AR | Spanish (Argentina) |
es-BO | Spanish (Bolivia) |
es-CL | Spanish (Chile) |
es-CO | Spanish (Colombia) |
es-CR | Spanish (Costa Rica) |
es-DO | Spanish (Dominican Republic) |
es-EC | Spanish (Ecuador) |
es-SV | Spanish (El Salvador) |
es-GT | Spanish (Guatemala) |
es-HN | Spanish (Honduras) |
es-MX | Spanish (Mexico) |
es-NI | Spanish (Nicaragua) |
es-PA | Spanish (Panama) |
es-PY | Spanish (Paraguay) |
es-PE | Spanish (Peru) |
es-PR | Spanish (Puerto Rico) |
es | Spanish (Traditional Sort) |
es | Spanish (International Sort) |
es-UY | Spanish (Uruguay) |
es-VE | Spanish (Venezuela) |
sw | Swahili |
sv | Swedish |
sv-FI | Swedish (Finland) |
syr | Syriac |
ta | Tamil |
tt | Tatar |
te | Telugu |
th-TH | Thai (Thailand) |
tr | Turkish |
tg-TJ | Tajik (Cyrillic) |
tk | Turkmen |
uk | Ukrainian |
ur | Urdu |
uz-Cyrl | Uzbek (Cyrillic) |
uz-Latn | Uzbek (Latin) |
vi | Vietnamese |
zh-Hans | CTC Simplified |
zh-Hant | CTC Traditional |
{
"identity_document": {
"documents": [
{
"name": "Kazakhstan - ePassport (2009)",
"type": 11,
"country": "KZ",
"list_index": 0,
"page_index": 0
}
],
"statuses": {
"expiration": true,
"validation_fields": true,
"comparison_fields": true,
"mrz": true,
"overall": true
},
"fields": [
{
"field_id": 0,
"field_name": "document class code",
"source_id": 2,
"source_name": "mrz",
"value": "P",
lang": "la",
"validity_status": true,
"comparison_status": true,
"values": [
{
"source_id": 2,
"source_name": "mrz",
"value": "P",
"validity_status": true,
"page_index": 0
},
{
"source_id": 1,
"source_name": "visual",
"value": "P",
"validity_status": null,
"page_index": 0
}
]
},
...
],
"images": [
{
"field_id": 201,
"field_name": "portrait",
"source_id": 1,
"source_name": "visual",
"page_index": 1,
"original_page_index": 1,
"value": "/9j/4AAQSkZJRgABA...",
"width": 383,
"height": 502
},
...
],
"more_pages_available": 0,
"processing_time": 1022
}
}
Blacklists check
Persons
URL: https://api.kycaid.com/bdb/persons
Method: POST
curl https://api.kycaid.com/bdb/persons \
-H 'Authorization: Token {API_TOKEN}' \
-X POST \
-d '{
"first_name": "{first_name}",
"last_name": "{last_name}",
"middle_name": "{middle_name}",
"residence_country": "{residence_country}",
"dob": "{dob}",
"bdb_types": "{bdb_types}"
}'
curl https://api.kycaid.com/bdb/persons \
-H 'Authorization: Token {API_TOKEN}' \
-X POST \
-d '{
"first_name": "Johnson",
"last_name": "Brown",
"middle_name": "Abraham",
"residence_country": "UK",
"dob": "2012-10-18",
"bdb_types": "WANTED,PEP"
}'
Request
Parameter | Description |
---|---|
full_name | string (100) Required * An applicant's full name. Full name or first name with last name are required. |
first_name | string (64) Required * An applicant's first name. Full name or first name with last name are required. |
last_name | string (64) Required * An applicant's last name. Full name or first name with last name are required. |
middle_name | string (64) An applicant's middle name |
dob | string An applicant's date of birth |
residence_country | string An applicant's residence country |
bdb_types | Array Type of blacklist databases: SANCTIONS, PEP, SELF_RESTRICTED, WANTED, EXPIRED |
Response
Parameter | Description |
---|---|
data.name | string An applicant's full name |
data.origin_name | string An applicant's full name in applicant's language |
data.first_name | string An applicant's first name |
data.origin_first_name | string An applicant's first name in applicant's language |
data.last_name | string An applicant's last name |
data.origin_last_name | string An applicant's last name in applicant's language |
data.middle_name | string An applicant's middle name |
data.origin_middle_name | string An applicant's middle name in applicant's language |
data.residence_country | string (2) An applicant's residence country |
data.dob | string An applicant's date of birth |
data.gender | string An applicant's gender |
data.description | string A detailed description of applicant's status |
data.bdb_name | string A blacklist database name |
data.bdb_type | string A type of blacklist database |
data.accuracy | string An accuracy of provided information in percents |
Error types
Type | Message |
---|---|
not_found | Information not found |
{
"errors": [
{
"type": "{type}",
"message": "{message}"
}
],
"data": [
{
"name": "{name}",
"origin_name": "{origin_name}",
"first_name": "{first_name}",
"origin_first_name": "{origin_first_name}",
"last_name": "{last_name}",
"origin_last_name": "{origin_last_name}",
"middle_name": "{middle_name}",
"origin_middle_name": "{origin_middle_name}",
"residence_country": "{residence_country}",
"dob": "{dob}",
"gender": "{gender}",
"description": "{description}",
"bdb_name": "{bdb_name}",
"bdb_type": "{bdb_type}",
"accuracy": "{accuracy}"
}
]
}
Crypto check
Address verification
URL: https://api.kycaid.com/services/crypto/address-verification
Method: POST
curl https://api.kycaid.com/services/crypto/address-verification \
-H 'Authorization: Token {API_TOKEN}' \
-X POST \
-d '{
"hash": "{hash}",
"asset": "{asset}",
"callback_url": "{callback_url}",
}'
curl https://api.kycaid.com/services/crypto/address-verification \
-H 'Authorization: Token {API_TOKEN}' \
-X POST \
-d '{
"hash": "3HQBsRNJcnzk4kcGxMabFMqD6Ud23T5eUd",
"asset": "BTC",
"callback_url": "https://yourwebsite.com",
}'
Request
Parameter | Description |
---|---|
hash | string (16,128) Required * An crypto address. |
asset | string (5) Required * Currency that will be checked (BTC, BCH, LTC, XRP, ETC, ADA, ETH, TRX, ALGO, XLM, MATIC, ZEC, DOGE, SOL, BSV, AVAX, ARB, DOT, TetherOMNI, TON, XTZ, NEAR). |
callback_url | string (5) Required * The url to which you will receive a callback with data after verification is completed. *It can take from 30 seconds to 10 minutes. |
Response
Parameter | Description |
---|---|
data.service_request_id | string (36) Unique service request id. |
{
"data": {
"service_request_id": "{service_request_id}"
}
}
Transaction verification
URL: https://api.kycaid.com/services/crypto/transaction-verification
Method: POST
curl https://api.kycaid.com/services/crypto/transaction-verification \
-H 'Authorization: Token {API_TOKEN}' \
-X POST \
-d '{
"hash": "{hash}",
"address": "{address}"
"asset": "{asset}"
"direction": "{direction}",
"callback_url": "{callback_url}",
}'
curl https://api.kycaid.com/services/crypto/transaction-verification \
-H 'Authorization: Token {API_TOKEN}' \
-X POST \
-d '{
"hash": "41a57df436157b92d5d61cdd36dd43d5f4734cbeee7f4f4809b91cc2a7b2a520",
"address": "12mxdS6cmFmQgRDhboAqD5q9umtjVq6pE7",
"asset": "BTC"
"direction": "withdrawal",
"callback_url": "https://yourwebsite.com",
}'
Request
Parameter | Description |
---|---|
hash | string (16,128) Required * Verified transaction. |
address | string (16,128) Required * Address (BTC, BCH, LTC, XRP, ETC, ADA, ETH, TRX, ALGO, XLM, MATIC) where the funds were accepted |
asset | string (5) Required * Currency that will be checked (BTC, BCH, LTC, XRP, ETC, ADA, ETH, TRX, ALGO, XLM, MATIC, ZEC, DOGE, SOL, BSV, AVAX, ARB, DOT, TetherOMNI, TON, XTZ, NEAR). |
direction | deposit|withdrawal Required * If the funds were sent to your address, direction = deposit, if you sent the funds from your address, direction = withdrawal |
callback_url | string (5) Required * The url to which you will receive a callback with data after verification is completed. *It can take from 30 seconds to 10 minutes. |
Response
Parameter | Description |
---|---|
data.service_request_id | string (36) Unique service request id. |
{
"data": {
"service_request_id": "{service_request_id}"
}
}
Qualified electronic signature
SmartID
SmartID start
URL: https://api.kycaid.com/services/ua/smartid/start
Method: POST
curl https://api.kycaid.com/services/ua/smartid/start \
-H 'Authorization: Token {API_TOKEN}' \
-X POST \
-d '{
"verification_id": "{verification_id}"
}'
Request
Parameter | Description |
---|---|
verification_id | string (36) Required The verification’s unique identificator. |
Response
Parameter | Description |
---|---|
status | string Status of sign. Possible values:need_sign forbidden error |
data.verification_id | string (36) The verification’s unique identificator. |
data.confirmation_url | string The URL for opening SmartID application. |
{
"status": "need_sign"
"data": {
"verification_id": "{verification_id}",
"confirmation_url": "{confirmation_url}"
}
}
SmartID status
URL: https://api.kycaid.com/services/ua/smartid/status
Method: POST
curl https://api.kycaid.com/services/ua/smartid/status \
-H 'Authorization: Token {API_TOKEN}' \
-X POST \
-d '{
"verification_id": "{verification_id}"
}'
Request
Parameter | Description |
---|---|
verification_id | string (36) Required The verification’s unique identificator. |
Response
Parameter | Description |
---|---|
status | string Status of sign. Possible values:need_sign signed waiting forbidden error |
data.verification_id | string (36) The verification’s unique identificator. |
{
"status": "waiting",
"data": {
"verification_id": "{verification_id}"
}
}
Examples
KYC
Step 1. Create applicant
PERSON
. Details
curl https://api.kycaid.com/applicants \
-H 'Authorization: Token {API_TOKEN}' \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"type": "PERSON",
"first_name": "John",
"last_name": "Doe",
"dob": "1970-10-25",
"residence_country": "GB",
"email": "[email protected]"
}'
{
"applicant_id": "<applicant_id>"
}
Step 2. Create applicant document
curl https://api.kycaid.com/files \
-H 'Authorization: Token {API_TOKEN}' \
-H 'Content-Type: multipart/form-data' \
-X POST \
-F 'file=@./my_file.jpg'
{
"file_id": "<file_id>"
}
curl https://api.kycaid.com/documents \
-H 'Authorization: Token {API_TOKEN}' \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"applicant_id": "<applicant_id>",
"type": "PASSPORT",
"document_number": "2367823468",
"issue_date": "2010-10-25",
"expiry_date": "2025-07-10",
"front_side_id": "<file_id>"
}'
{
"document_id": "<document_id>"
}
Step 3. Create applicant selfie
SELFIE_IMAGE
. Details
curl https://api.kycaid.com/files \
-H 'Authorization: Token {API_TOKEN}' \
-H 'Content-Type: multipart/form-data' \
-X POST \
-F 'file=@./my_file.jpg'
{
"file_id": "<file_id>"
}
curl https://api.kycaid.com/documents \
-H 'Authorization: Token {API_TOKEN}' \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"applicant_id": "<applicant_id>",
"type": "SELFIE_IMAGE",
"front_side_id": "<file_id>"
}'
{
"document_id": "<document_id>"
}
Step 4. Create verification
curl https://api.kycaid.com/verifications \
-H 'Authorization: Token {API_TOKEN}' \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"applicant_id": "<applicant_id>",
"form_id": "<form_id>"
}'
{
"verification_id": "<verification_id>"
}
KYB
Step 1. Create applicant
COMPANY
. Details
curl https://api.kycaid.com/applicants \
-H 'Authorization: Token {API_TOKEN}' \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"type": "COMPANY",
"business_activity_id": "<business_activity_id>",
"company_name": "Apple Inc.",
"email": "[email protected]"
"phone": "4089961010",
"registration_country": "US"
}'
{
"applicant_id": "<applicant_id>"
}
Step 2. Create applicant business address
curl https://api.kycaid.com/addresses \
-H 'Authorization: Token {API_TOKEN}' \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"applicant_id": "<applicant_id>",
"type": "BUSINESS",
"full_address": "Apple, One Apple Park Way, Cupertino, CA 95014"
}'
{
"address_id": "<address_id>"
}
Step 3. Create applicant registered address
curl https://api.kycaid.com/addresses \
-H 'Authorization: Token {API_TOKEN}' \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"applicant_id": "<applicant_id>",
"type": "REGISTERED",
"full_address": "Apple, One Apple Park Way, Cupertino, CA 95014"
}'
{
"address_id": "<address_id>"
}
Step 4. Create registration company document
REGISTRATION_COMPANY
. Details
curl https://api.kycaid.com/files \
-H 'Authorization: Token {API_TOKEN}' \
-H 'Content-Type: multipart/form-data' \
-X POST \
-F 'file=@./my_file.jpg'
{
"file_id": "<file_id>"
}
curl https://api.kycaid.com/documents \
-H 'Authorization: Token {API_TOKEN}' \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"applicant_id": "<applicant_id>",
"type": "REGISTRATION_COMPANY",
"front_side_id": "<file_id>"
}'
{
"document_id": "<document_id>"
}
Step 5. Create legal address document
COMPANY_LEGAL_ADDRESS
. Details
curl https://api.kycaid.com/files \
-H 'Authorization: Token {API_TOKEN}' \
-H 'Content-Type: multipart/form-data' \
-X POST \
-F 'file=@./my_file.jpg'
{
"file_id": "<file_id>"
}
curl https://api.kycaid.com/documents \
-H 'Authorization: Token {API_TOKEN}' \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"applicant_id": "<applicant_id>",
"type": "COMPANY_LEGAL_ADDRESS",
"front_side_id": "<file_id>"
}'
{
"document_id": "<document_id>"
}
Step 6. Create authorised person document
AUTHORISED_PERSON
. Details
curl https://api.kycaid.com/files \
-H 'Authorization: Token {API_TOKEN}' \
-H 'Content-Type: multipart/form-data' \
-X POST \
-F 'file=@./my_file.jpg'
{
"file_id": "<file_id>"
}
curl https://api.kycaid.com/documents \
-H 'Authorization: Token {API_TOKEN}' \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"applicant_id": "<applicant_id>",
"type": "AUTHORISED_PERSON",
"front_side_id": "<file_id>"
}'
{
"document_id": "<document_id>"
}
Step 7. Create company ownership document
COMPANY_OWNERSHIP
. Details
curl https://api.kycaid.com/files \
-H 'Authorization: Token {API_TOKEN}' \
-H 'Content-Type: multipart/form-data' \
-X POST \
-F 'file=@./my_file.jpg'
{
"file_id": "<file_id>"
}
curl https://api.kycaid.com/documents \
-H 'Authorization: Token {API_TOKEN}' \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"applicant_id": "<applicant_id>",
"type": "COMPANY_OWNERSHIP",
"front_side_id": "<file_id>"
}'
{
"document_id": "<document_id>"
}
Step 8. Create authorised person
AUTHORISED
. Details
curl https://api.kycaid.com/affiliated-persons \
-H 'Authorization: Token {API_TOKEN}' \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"type": "AUTHORISED",
"applicant_id": "<applicant_id>",
"first_name": "John",
"last_name": "Doe",
"title": "CEO",
"dob": "1970-10-25",
"residence_country": "GB",
"email": "[email protected]"
}'
{
"affiliated_person_id": "<affiliated_person_id>"
}
Step 9. Create authorised person document
curl https://api.kycaid.com/files \
-H 'Authorization: Token {API_TOKEN}' \
-H 'Content-Type: multipart/form-data' \
-X POST \
-F 'file=@./my_file.jpg'
{
"file_id": "<file_id>"
}
curl https://api.kycaid.com/documents \
-H 'Authorization: Token {API_TOKEN}' \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"affiliated_person_id": "<affiliated_person_id>",
"type": "PASSPORT",
"document_number": "2367823468",
"issue_date": "2010-10-25",
"expiry_date": "2025-07-10",
"front_side_id": "<file_id>"
}'
{
"document_id": "<document_id>"
}
Step 10. Create authorised person address
curl https://api.kycaid.com/addresses \
-H 'Authorization: Token {API_TOKEN}' \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"affiliated_person_id": "<affiliated_person_id>",
"type": "REGISTERED",
"country": "GB",
"state_or_province": "Westminster",
"city": "London",
"postal_code": "SW1A 2AB",
"street_name": "Downing St",
"building_number": "10"
}'
{
"address_id": "<address_id>"
}
Step 11. Create beneficial person
BENEFICIAL
. Details
curl https://api.kycaid.com/affiliated-persons \
-H 'Authorization: Token {API_TOKEN}' \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"type": "BENEFICIAL",
"applicant_id": "<applicant_id>",
"first_name": "John",
"last_name": "Doe",
"title": "CEO",
"dob": "1970-10-25",
"residence_country": "GB",
"email": "[email protected]"
}'
{
"affiliated_person_id": "<affiliated_person_id>"
}
Step 12. Create beneficial person document
curl https://api.kycaid.com/files \
-H 'Authorization: Token {API_TOKEN}' \
-H 'Content-Type: multipart/form-data' \
-X POST \
-F 'file=@./my_file.jpg'
{
"file_id": "<file_id>"
}
curl https://api.kycaid.com/documents \
-H 'Authorization: Token {API_TOKEN}' \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"affiliated_person_id": "<affiliated_person_id>",
"type": "PASSPORT",
"document_number": "2367823468",
"issue_date": "2010-10-25",
"expiry_date": "2025-07-10",
"front_side_id": "<file_id>"
}'
{
"document_id": "<document_id>"
}
Step 13. Create beneficial person address
curl https://api.kycaid.com/addresses \
-H 'Authorization: Token {API_TOKEN}' \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"affiliated_person_id": "<affiliated_person_id>",
"type": "REGISTERED",
"country": "GB",
"state_or_province": "Westminster",
"city": "London",
"postal_code": "SW1A 2AB",
"street_name": "Downing St",
"building_number": "10"
}'
{
"address_id": "<address_id>"
}
Step 14. Create verification
COMPANY
type. Details
curl https://api.kycaid.com/verifications \
-H 'Authorization: Token {API_TOKEN}' \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"applicant_id": "<applicant_id>",
"form_id": "<form_id>"
}'
{
"verification_id": "<verification_id>"
}