Global KYC

Verify a wide range of international and domestic identity documents through a single, standardized API.

Introduction

FrankieOne’s Global KYC feature is a core component of the V2 platform, designed to provide a unified and extensible solution for verifying identity documents from around the world. It introduces a standardized data model for handling various document types and an intelligent routing mechanism to direct verification requests to the most appropriate data provider.

This solution allows you to build a comprehensive and scalable onboarding process, validating documents from dozens of countries through a single, consistent API interface.

Key Business Goals

  • Unified API for Global Documents: Verify a wide range of government-issued identity documents using the same standardized document object structure, reducing integration complexity.
  • Intelligent Routing: The platform automatically inspects a document’s type and country to route the verification request to the most suitable downstream data source, such as a national document verification service or transport authority.
  • Extensive Country Coverage: Leverage our expanding network of data sources across Asia-Pacific (APAC), Europe, Middle East & Africa (EMEA), and the Americas.
  • Flexible & Extensible Data Model: Our schema uses a supplementaryData object to handle unique, country-specific document requirements without cluttering the primary API structure.

The End-to-End Verification Flow

The verification process is seamlessly integrated into the standard entity and workflow execution flow. It involves creating an entity, attaching structured document data, and executing a workflow.

1

Step 1: Create an Individual with Documents

First, create an individual entity and attach one or more document objects within the documents.IDENTITY array. Each object should contain the individual’s PII and the specific identifiers for that document, conforming to the standardized schema.

$POST /v2/individuals

This single request populates the user’s profile with all the necessary information for verification.

2

Step 2: Execute a KYC Workflow

Next, execute a pre-configured workflow that contains a KYC step for the relevant service profile.

$POST /v2/individuals/{entityId}/serviceprofiles/{serviceName}/workflows/{workflowName}/execute
3

Step 3: Intelligent Routing and Verification

The KYC workflow step automatically inspects each document’s country and type. Based on these fields, it determines the correct downstream data source for verification. The system validates the data against the source’s specific requirements and transforms the V2 schema into the format needed by the provider’s API.

4

Step 4: Receive Normalized Results

The response from the data source is received and normalized into a standard V2 Process Result Object (PRO). This standardized result can then be used by your workflow’s decisioning logic to determine an outcome, such as PASS or REVIEW.


Core Concepts: The Document Object

Understanding the standardized document object and the role of supplementaryData is key to leveraging the Global KYC feature.

Standardized Document Fields

The Document-Information object is the primary container for all document details. It uses a consistent structure regardless of the country of origin.

FieldData TypeRequirementDescription
typeString (Enum)RequiredThe standardized type of the document (e.g., DRIVERS_LICENSE, PASSPORT). Must be a valid Document-Type enum value.
countryStringRequiredThe ISO 3166-1 alpha-3 code of the issuing country (e.g., AUS, NZL). This is a key field for routing.
primaryIdentifierStringRequiredThe main number or identifier on the document (e.g., Licence Number, Passport Number).
secondaryIdentifierStringOptionalAn additional identifier, often used for conditional requirements (e.g., the Card Number on some Australian Driver’s Licences).
subdivisionStringOptionalThe abbreviated state, province, or territory of issue where applicable (e.g., “VIC” for Victoria, “NSW” for New South Wales).
issueDateDate ObjectOptionalThe document’s date of issue.
expiryDateDate ObjectOptionalThe document’s expiration date.
supplementaryDataObjectOptionalA flexible object for storing document-specific data that doesn’t fit into the standard fields. See details below.
documentIdString (UUID)Read-onlyA unique identifier assigned by FrankieOne when a document is created.

Handling Country-Specific Data with supplementaryData

The supplementaryData object is the key to our extensible model, allowing us to support unique data points for specific documents without altering the core schema. When you submit a document with supplementary data, the supplementaryData.type must match the main document.type.

Here are a few key examples:

  • Australian Medicare Card (NATIONAL_HEALTH_ID): Requires the 1-digit reference number that appears to the left of the individual’s name on the card.
  • Chinese National ID (NATIONAL_ID): Supports a homeCountryFullName field to capture the individual’s name in native Chinese characters.
  • Australian Citizenship Certificate (CITIZENSHIP_CERTIFICATE): Requires the acquisitionDate.
  • Australian Marriage Certificate (MARRIAGE_CERT): Requires the marriageDate and the full name of the second partner (partner2GivenName, partner2FamilyName).

API Request Examples

Example 1: Simple Document (Australian Passport)

This is a straightforward verification using only the common document fields.

1{
2 "individual": {
3 "name": {
4 "givenName": "Jane",
5 "familyName": "Citizen"
6 },
7 "dateOfBirth": {
8 "year": "1990",
9 "month": "01",
10 "day": "15"
11 },
12 "documents": {
13 "IDENTITY": [
14 {
15 "type": "PASSPORT",
16 "country": "AUS",
17 "primaryIdentifier": "E1234567"
18 }
19 ]
20 }
21 }
22}

Example 2: Document with Conditional Fields (NSW Driver’s Licence)

For an Australian Driver’s Licence issued in New South Wales (and all states/territories except Victoria), the secondaryIdentifier (Card Number) is mandatory.

1{
2 "individual": {
3 "name": {
4 "givenName": "John",
5 "familyName": "Smith"
6 },
7 "dateOfBirth": {
8 "year": "1985",
9 "month": "05",
10 "day": "20"
11 },
12 "documents": {
13 "IDENTITY": [
14 {
15 "type": "DRIVERS_LICENSE",
16 "country": "AUS",
17 "subdivision": "NSW",
18 "primaryIdentifier": "98765432",
19 "secondaryIdentifier": "1234567890"
20 }
21 ]
22 }
23 }
24}

Example 3: Document with Supplementary Data (Australian Marriage Certificate)

This example shows how to use the supplementaryData object to provide the extra information needed to verify an Australian Marriage Certificate from Victoria.

1{
2 "individual": {
3 "name": {
4 "givenName": "Jane",
5 "familyName": "Citizen"
6 },
7 "documents": {
8 "IDENTITY": [
9 {
10 "type": "MARRIAGE_CERT",
11 "country": "AUS",
12 "subdivision": "VIC",
13 "primaryIdentifier": "98765/1990",
14 "supplementaryData": {
15 "type": "MARRIAGE_CERT",
16 "marriageDate": "1990-12-15",
17 "partner2GivenName": "John",
18 "partner2FamilyName": "Doe"
19 }
20 }
21 ]
22 }
23 }
24}

Country and Document Coverage

Our Global KYC services span across multiple regions. The tables below provide a detailed breakdown of supported documents and their API codes for each country.

Supported Documents by Country

CountryDocumentCode
Australia (AU)Birth CertificateBIRTH_CERT
Centrelink CardCONCESSION, PENSION, HEALTH_CONCESSION
Citizenship CertificateCITIZENSHIP
Death CertificateDEATH_CERT
Immigration Card (ImmiCard)IMMIGRATION_CARD
Drivers LicenseDRIVERS_LICENSE
Marriage CertificateMARRIAGE_CERT
Name Change CertificateNAME_CHANGE
National Health ID (Medicare)NATIONAL_HEALTH_ID
National IDNATIONAL_ID
PassportPASSPORT
BrazilCNPJ (Cadastro Nacional de Pessoas Jurídicas)NATIONAL_ID
CPF (Cadastro de Pessoas Físicas)NATIONAL_ID
CanadaSIN (Social Insurance Number)NATIONAL_ID
ChileRUT (Rol Único Tributario)TAX_ID
RUN (Rol Único Nacional)NATIONAL_ID
ChinaNational ID (Resident Identity Card Number)NATIONAL_ID
PassportPASSPORT
ColombiaCPIN (Colombian Personal Identification Number)NATIONAL_ID
Czech RepublicNID (Rodné číslo)NATIONAL_ID
DenmarkCPR (Central Person Register)NATIONAL_ID
FinlandPersonal Identity CodeNATIONAL_ID
GhanaSSNIT (Social Security and National Insurance Trust)NATIONAL_ID
Voter IDNATIONAL_ID
Hong KongHKID (Hong Kong Identification Number)NATIONAL_ID
IndiaAadharNATIONAL_ID
EPIC - Voter IDNATIONAL_ID
LicenseDRIVERS_LICENSE
PAN (Permanent Account Number)NATIONAL_ID
PassportPASSPORT
IndonesiaNIK (Nomor Induk Kependudukan)NATIONAL_ID
ItalyCodice FiscaleTAX_ID
JapanMy numberTAX_ID
JordanCivil Identification NumberNATIONAL_ID
KenyaAlien Card (Foreign ID)NATIONAL_ID
LicenseDRIVERS_LICENSE
National ID (Huduma Namba)NATIONAL_ID
PassportPASSPORT
LuxembourgSocial SecurityNATIONAL_ID
MalaysiaNRIC (National Registration Identity Card)NATIONAL_ID
MexicoCURP (Clave Única de Registro de Población)NATIONAL_ID
RFC (Registro Federal de Contribuyentes)TAX_ID
NigeriaBVN (Bank Verification Number)NATIONAL_ID
CAC (Corporate Affairs Commission)NATIONAL_ID
LicenseDRIVERS_LICENSE
NIN (National Identification Number)NATIONAL_ID
TIN (Tax Identification Number)TAX_ID
Voter IDNATIONAL_ID
New ZealandBirth CertificateBIRTH_CERT
LicenseDRIVERS_LICENSE
PassportPASSPORT
PhilippinesPCN (PhilSys Card Number)NATIONAL_ID
PassportPASSPORT
PolandPESEL (Powszechny Elektroniczny System Ewidencji Ludności)NATIONAL_ID
PortugalTax number (Número de Identificação Fiscal)TAX_ID
RomaniaCNP (Cod Numeric Personal)NATIONAL_ID
RussiaInternal Passport NumberPASSPORT
Tax ID NumberTAX_ID
South AfricaNational IDNATIONAL_ID
SpainDNI (Documento Nacional de Identidad)NATIONAL_ID
NIF (Número de Identificación Fiscal)TAX_ID
NIE (Número de Identificación de Extranjero)NATIONAL_ID
SwedenPIN (Personal Identification Number)NATIONAL_ID
ThailandNational Identity CardNATIONAL_ID
TurkeyTIN (Turkish Identification Number)TAX_ID
USASSN (Social Security Number)NATIONAL_ID
InternationalPassportPASSPORT
Tax IDTAX_ID

This section provides a list of common abbreviations used for various identification documents across different countries. These abbreviations are often used in KYC processes and can help streamline document handling.

  • Aadhar: Unique Identification Number (India)
  • ASIC/MSIC: Aviation/Maritime Security Identification Card (Australia)
  • BVN: Bank Verification Number (Nigeria)
  • CAC: Corporate Affairs Commission (Nigeria)
  • CNPJ: Cadastro Nacional de Pessoas Jurídicas (Brazil)
  • CPF: Cadastro de Pessoas Físicas (Brazil)
  • CPIN: Colombian Personal Identification Number (Colombia)
  • CNP: Cod Numeric Personal (Romania)
  • CURP: Clave Única de Registro de Población (Mexico)
  • DNI: Documento Nacional de Identidad (Spain)
  • EPIC: Electors Photo Identity Card (India)
  • HKID: Hong Kong Identification Number (Hong Kong)
  • ImmiCard: Immigration Card (Australia)
  • NID: National Identification Number (Czech Republic)
  • NIE: Número de Identificación de Extranjero (Spain)
  • NIF: Número de Identificación Fiscal (Spain)
  • NIK: Nomor Induk Kependudukan (Indonesia)
  • NRIC: National Registration Identity Card (Malaysia)
  • PAN: Permanent Account Number (India)
  • PCN: PhilSys Card Number (Philippines)
  • PESEL: Powszechny Elektroniczny System Ewidencji Ludności (Poland)
  • PIN: Personal Identification Number (Sweden)
  • RFC: Registro Federal de Contribuyentes (Mexico)
  • RUT: Rol Único Tributario (Chile)
  • RUN: Rol Único Nacional (Chile)
  • SIN: Social Insurance Number (Canada)
  • SSN: Social Security Number (USA)
  • SSNIT: Social Security and National Insurance Trust (Ghana)
  • TIN: Tax Identification Number (Nigeria, Turkey)

For KYC checks, all tax identification documents must be submitted as document type NATIONAL_ID in the FrankieOne KYC v2 API to verify entity details.

Important Notes

The document codes above are used in the FrankieOne KYC v2 API. Ensure you use the correct code for each document type when making API requests.

  • Not all document types are available in every country. Refer to the specific country documentation for details.
  • Not all document types are supported in the FrankieOne Portal. If you need to use a document type not listed here, please contact FrankieOne support.

Integration Best Practices

  • Understand Local Requirements: Each country may require different document types for KYC. Review the documentation for the countries you support.
  • Use Correct Document Codes: Always use the exact Document Code specified in the table above when submitting documents via the API to ensure correct routing and processing.
  • Handle Supplementary Data: For documents that require additional details (such as Australian Medicare or Marriage Certificates), ensure you populate the supplementaryData object correctly.
  • Validation & Error Handling: Handle API errors gracefully by interpreting error messages and providing clear feedback to users.
  • Testing & Monitoring: Test your integration thoroughly before going live. Monitor document handling workflows to quickly identify and resolve issues.

For detailed field requirements and valid values for different document types, please refer to the specific country-level documentation pages.