KYC integration information
Integration Information
To integrate FrankieOne KYC we need to do the following steps:
Create New Entity
We need to create an entity to get an entityID and populate details.
Note: You could do a verify action in this step, or you can do it in two steps. Both options are possible. We do recommend you pass through a customer_reference
when creating an entity, which is a unique identifier for your customer.
POST
https://api.kycaml.frankiefinancial.com/compliance/v1.2/entity
API reference: Create New Entity
Collect the entityID
Ensure to collect the entity ID from the response, to be able to update in subsequent calls.
Update Entity
Update an entity when needed, to avoid creating a new entity every time.
POST
https://api.kycaml.frankiefinancial.io/compliance/v1.2/entity/{entityId}
API reference: Update Existing Entity
Pass through consent capture
The following Extra data elements are important to pass through consent capture as per your obligations to consent. Customer reference is recommended to have alignment between your customer record and the FrankieOne entityID.
"extraData": [
{
"kvpKey": "consent.general",
"kvpValue": "true",
"kvpType": "general.bool"
},
{
"kvpKey": "consent.docs",
"kvpValue": "true",
"kvpType": "general.bool"
},
{
"kvpKey": "consent.creditheader",
"kvpValue": "true",
"kvpType": "general.bool"
},
{
"kvpKey": "consent.under18",
"kvpValue": "true",
"kvpType": "general.bool"
},
{
"kvpKey": "customer_reference",
"kvpValue": "cust_001",
"kvpType": "id.external"
}
],
Ensure correct consents are sent
Please ensure you send the correct consents; we do apply logic on our verification checks. For example, if a consent data source and we do not receive the API consent flag for that data source we will likely reject the verification check on that data source, such as credit headers.
For the
under18
consent flag please only send this if your customer is under 18 (using DOB). If they are 18 you do not need to send this. Please ensure you read the notes on the consent page and if unclear please ask about consent.
Learn more about consent.
Search for Entity
In case someone is coming back into their preexisting sign up process, you can “search” for existing customers using the customer_reference
.
It’s always best to maintain the status of a customer and update existing vs being stateless and creating new entities each time.
POST
https://api.kycaml.frankiefinancial.io/compliance/v1.2/entity/search
Body of the call
{
"extraData": [
{
"kvpKey": "customer_reference",
"kvpValue": "01FTVQHK4WDZCRV5ABHZDYSQVF",
"kvpType": "id.external"
}
]
}
API reference: Search for Entity
Update Data
When you need to update the data in your records, you can the FrankieOne API. Follow the instructions in Updating Data Through the API.
Verify Checks
We recommend verifying checks to ensure the latest details are verified. Verifying checks can also be done at the Create or Update stage. If there are no changes to key attributes such as Name, DOB or Address then previous results can still be used. This applies as long as they are still within the reasonable time period (age is a configuration for how long checks last).
API references:
Create and Verify Entity
Update Entity and Verify Details
POST
https://api.kycaml.frankiefinancial.com/compliance/v1.2/entity/{entityid}/verify/profile/full
entityProfile
= international
, safe_harbour_id
Refer to Standard entity profile verificationStandard entity profile verification for a list of entity profiles available in demo.
We can also set up a custom profile as part of onboarding.
If you would like biometrics, we can also include the additional API calls. To learn more about ID verification (IDV), OCR, and biometrics integrations, vist IDV Service Flows.
Set up webhooks
It’s important to set up webhook notifications as detailed in Notifications - Webhooks
Set up asynchronous Get results
The FrankieOne API will allow both synchronous and asynchronous processes to run in many operations. The choice can be made on a request-by-request basis too.
By default, all functions are synchronous (with some exceptions, see Note below). However, where appropriate you can set a header flag:
X-Frankie-Background: 1
This will indicate to the function that you wish to operate asynchronously. This is not available for all functions (such as GET functions), so check the specific documentation to be sure. To learn more, visit Asynchronous Calls (Background Processes)
Attach support docs
Use the FrankieOne API to Create New Document.
You can also Update Existing Document.:
Use with
entityProfile
Pease use with
entityProfile
that has support docs activated to ensure we check support docs.
Get check results
You can also pull details down at any time using GET on the /entity/{entityId}/checks
endpoint. Learn more on how to Retrieve Entity Verification Check Details.
Explanation of key attributes
Name
Attribute: name
"name": {
"familyName": "Last",
"givenName": "Test",
"middleName": "Two"
}
In Australia, the document verification service accepts a hyphen as the first name and the single name in the FamilyName field. This can be used for verifying single name applicants in Australia through the portal
To learn more about verifying single name applicants DVS checks in Australia, read Verifying Single Name Applicants.
Note on prompts
Ideally, there should be prompt as per the ID document.
Native Name
Attribute: home_country_givenname
, home_country_familyname
Local home country support is available for native script names.
Extra Data KVP on the entity records can be used.
{
"kvpKey": "home_country_givenname",
"kvpValue": "山本"
},
{
"kvpKey": "home_country_familyname",
"kvpValue": "健太"
}
Date of birth (DOB)
Attribute: dateOfBirth
Format: yyyy-mm-dd
We would need you to concatenate your DOB, we do have a yearofBirth
, but not specifically Day or Month.
"entity": {
"dateOfBirth": {
"dateOfBirth": "1990-01-01"
}
}
Email Address
The email address is one of the Identity Docs accepted.
To learn more about using an email address as an identity document, read about Adding an Email Address
"identityDocs": [
{ "country" : "JPN",
"idNumber" : "[email protected]",
"idType" : "EMAIL_ADDRESS"
}
Mobile Phone
A mobile phone number is one of the identity docs accepted.
To learn more about using a mobile phone number as an identity document, read about Adding a Mobile Phone Number
"identityDocs": [
{
"country" : "JPN",
"idNumber" : "+8145313",
"idType" : "MSISDN"
}
Document
Learn more about the document object at The Document Object.
{
"country": "JPN",
"docScan": [
{
"scanData": "BASE64 ENCODED DATA",
"scanDocId": "7cd911d4-d9a1-a784-705f-39a7a97bf26b",
"scanFilename": "Scanned Documents.pdf",
"scanMIME": "application/pdf",
"scanSide": "F"
}
],
"documentId": "9948498d-248b-df9d-fe0f-617709b24081",
"extraData": [
{
"kvpKey": "supporting_docs.label",
"kvpValue": "House Registration"
},
{
"kvpKey": "supporting_docs.status",
"kvpValue": "Needs Review"
}
],
"idExpiry": "0001-01-01",
"idIssued": "0001-01-01",
"idType": "HOUSE_REGISTRATION""
}
Passport
Name: Requires given, middle and family names as shown on the passport
Date of Birth: Always in YYYY-MM-DD format
ID Type: idType = PASSPORT
Country: AUS
Document Number: idNumber = The passport number
Expiry Date: idExpiry = the expiry date YYYY-MM-DD format
Learn more about the AUS: Passport.
"identityDocs": [
{
"idType": "PASSPORT",
"country": "AUS",
"idNumber": "P32516383"
}
],
Learn more about the International: Passport
"identityDocs": [
{
"idType": "PASSPORT",
"idSubType": "",
"country": "JPN",
"region": "",
"idNumber": "ABC-123456789",
"idExpiry": "2025-10-01"
},
Drivers Licence
State: region - one of: VIC/NSW/ACT/WA/SA/NT/QLD/TAS - For Australian Drivers Licence
Licence Number: idNumber = The licence number (not document number as given on some state licences - see below)
Document Number: extraData
KvpKey: "document_number",
KvpValue: "nnnnnnn…" This is the new document number being introduced from 1st July 2022 on Australian licences (in NSW).
Learn more about AUS: Driver's Licence
"identityDocs": \[
{
"idType": "DRIVERS_LICENCE",
"country": "AUS",
"region": "NSW",
"idNumber": "N49187",
"extraData": [
{
"KvpKey": "document_number",
"KvpValue": "21631234"
}
]
}
]
"identityDocs": [
{
"idType": "DRIVERS_LICENCE",
"country": "AUS",
"region": "ACT",
"idNumber": "0123456789"
}
],
"identityDocs": [
{
"idType": "DRIVERS_LICENCE",
"country": "JPN",
"idNumber": "0123456789"
}
],
Medicare
Name: Requires given, middle initial and family names as shown on the card
Date of Birth: Always in YYYY-MM-DD format
ID Type: idType = NATIONAL_HEALTH_ID
Country: AUS
Number: idNumber = The full card number
Colour: idSubType = G|B|Y (choice of Green Blue or Yellow)
Expiry: idExpiry = YYYY-MM-DD (note: Green cards only have YYYY-MM so you need to append -01 for the -DD)
Reference number: extraData
Example:
- KvpKey: "reference",
- KvpValue: "n" ( where n is a number 1< n < 6 )
Middle name/initial on card: (optional) extraData
Example
- KvpKey: "display_middle_name",
- KvpValue: "J"
Learn more about AUS: Medicare Card
"identityDocs": [
{
"country": "AUS",
"idSubType": "B",
"idNumber": "2952216811",
"idExpiry":"2021-01-01",
"idType": "NATIONAL_HEALTH_ID",
"extraData": [
{
"kvpKey": "reference",
"kvpValue": "1",
"kvpType": "general.string"
}
]
}
Address
Long form or structured:
unitNumber
streetNumber
streetName
streetType
- drop down (see Street types in our Australia dataset - FAQ for a list) or input
town - in Smart UI label is Suburb
state - VIC
/NSW
/ACT
/WA
/SA
/NT
/QLD
/TAS
postalCode - 4 digits
country - AUS
Example:
Japanese:
"addresses": [
{
"addressType": "RESIDENTIAL1",
"buildingName": "",
"unitNumber": "",
"streetNumber": "",
"streetName": "4 Chome-11-2 Minamiazabu",
"streetType": "",
"suburb": "",
"town": "Minato City",
"region": "",
"state": "Tokyo",
"country": "JPN",
"postalCode": "106-0047",
"longForm": "4 Chome-11-2 Minamiazabu , Minato City, Tokyo 106-0047"
}
Unstructured or longform:
"addresses": [
{
"country": "AUS",
"longForm": " 2 Brown St IPSWICH QLD 4305 AU"
}
],
Frankie has geolocation.
Australian:
"addresses": [
{
"addressType": "RESIDENTIAL1",
"country": "AUS",
"longForm": "2/176 Buckwell Drive, HASSALL GROVE New South Wales 2761, Australia",
"postalCode": "2761",
"state": "NSW",
"streetName": "Buckwell",
"streetNumber": "176",
"streetType": "Drive",
"town": "HASSALL GROVE",
"unitNumber": "2""
}
National ID
Visit the following pages to learn more about using nation IDs:
Updated 12 months ago