Implementation steps
This series of guides explains how to use the FrankieOne API to perform many different types of functions. It includes descriptions, code samples and things to consider during implementation Itβs important to remember the following:
- The Individuals API is separate and can not be used in conjunction with any other API.
- All sample requests require authorization as defined in the Getting Started section.
Individual Verification
The following examples show how to use the FrankieOne API to perform functions related to an individual.
Create an individual entity
To create an individual entity eligible for verification, make a request to the POST /v2/individuals
API endpoint.
- To add a name to an individual, use the
name
object in the request body.
- To add a date of birth to an individual, use the
dateOfBirth
object in the request body.
- To add an address to an individual, use the addresses array in the request body.
- To add multiple addresses, add a separate address to the addresses array.
- To acknowledge consent for an individual, use the consents array in the request body.
Sample request
Sample response
Collect the entityId
in the response as it will be used in subsequent API
calls for this individual.
Note: Service Profiles have been intentionally omitted for brevity
Addresses
Don't forget the Address ID.
When updating an address, donβt forget to include the addressId
field. This
would have been in the response message when you first added the address. You
can always get the addressId
(and all other IDs) if you call the GET /v2/ {entityType}/{entityId}
API call.
Don't forget the Country
This field is mandatory and must be one of the ISO-3166-alpha-3 codes.
See here: List of ISO 3166 country codes
Address Types
Addresses have a number of available type options. Whilst this is an optional field, itβs good practice to include the type to assist with processing and checking. Itβs recommended that these following types be used:
**RESIDENTIAL **
- This will be the primary address used when trying to determine the country of residence and primary current address. IfRESIDENTIAL
has been used for this, note that this will be deprecated and removed in the next major version of the API.**POSTAL **
- This is a mailing address. Itβs also used as the current residential address if noRESIDENTIAL
type is found.
Street Address and the use of the streetName
field
It can be hard to break down an address and so weβve made the streetName
field quite flexible.
Whilst itβs best to break the address into its constituent parts, you can combine streetNumber
, streetName
and streetType
into the streetName
field if required.
It's better to break down the address fields.
Whilst combining the fields is readily supported, best matching results are found when you break the address down into as many fields as you can.
Structured Addresses
Itβs always best to use the structured address and map in 1-1 the following fields.
Example 1: Full Address Entered as Separate Fields (preferable)
Example 2: Full Address Entered as Long Form
Consent
Before proceeding with data verification checks, obtaining consent is essential and varies based on the verification type. While general consent encompasses standard verifications against government databases, it may not include credit checks and document validations. Consult with your AML team and the FrankieOne team to determine what consent flags you need to supply.
Retrieve an individual entity
The individual entity can be retrieved at any time by making a request to the GET /v2/individuals/{entityId}
API endpoint.
Update an individual entity
The individual entity can be updated at any time by making a request to the PATCH /v2/individuals/{entityId} API
endpoint.
To update a specific element of an individual entity, be sure to provide the relevant information you wish to update along with the ID of the object. This doesnβt the case with primary entity elements (name
, dateOfBirth
, placeOfBirth
)
Example 1: update a name
Example 2: update an address
Example 3: update alternateDatesOfBirth
Adding entity elements
To add a new object to an existing entity, simply add the new object without an ID.
Example 1: adding an address
Adding consents
Consents wonβt be duplicated so new consent types will simply be added if not already applied.
Example 2: adding consents
Deleting entity elements
Individual entity objects can be deleted at any time by making a request to the DELETE /v2/individuals/{entityId}/{objectType}/{objectId}
API endpoint.
Example 1: deleting a phoneNumber
Example 2: deleting a emailAddress
Deleting documents
Individual document objects can be deleted at any time by making a request to the DELETE /v2/individuals/{entityId}/documents/{documentId}
API endpoint.
Deleting document attachments
Individual document attachment objects can be deleted at any time by making a request to the DELETE /v2/individuals/{entityId}/documents/{documentId}/attachments/{attachmentId}
API endpoint.
Withdrawing consent
Individual consent of a certain type can be withdrawn at any time by making a request to the DELETE /v2/individuals/{entityId}/consents/{consentType}
API endpoint.
Delete an individual entity
The individual entity can be deleted at any time by making a request to the DELETE /v2/individuals/{entityId}
API endpoint.
Individual entities that are deleted can not be recovered by FrankieOne.
Please ensure you only delete entities that are no longer needed for any purpose, including audit or compliance.
Execute a workflow
To start onboarding an individual and running checks on them, youβll need to call the βexecute workflowβ API endpoint. Upon execution, the workflow will return a result.
Retrieve a workflow execution result
The workflow execution result can be retrieved at any time post execution by making a request to the GET /v2/individuals/{entityId}/serviceprofiles/{serviceName}/workflows/{workflowName}/executions/{workflowExecutionId}
API endpoint.
Retrieve a history of workflow execution result
The individual entity can be updated at any time by making a request to the PATCH /v2/individuals/{entityId}
API endpoint.
Interpreting Workflow Results
After a workflow has been executed, various elements require examination to determine the final outcome.
Legend:
- βΌοΈ - Results that deem whether the entity has passed or failed or the workflow failed to execute to completion.
- β - Context on why the entity may have passed or failed.
- βΉοΈ - Information-only, no contribution to whether the entity has passed or failed.
Know Your Customer (KYC) Database Verification
Example 1: Pass
Example 2: Fail
Example 3: Workflow failed but status was overridden to be passed
Interpreting Workflow Step Results
Workflow outcomes will encompass a variety of individual step outcomes, each autonomously documenting the findings of their specific verification processes. Steps such as data verification/Know Your Customer (KYC) checks, Anti-Money Laundering (AML) screenings, Identity Verification (IDV), and risk evaluations are integral components of a workflow. To streamline reporting, step outcomes are consolidated according to their category, ensuring that identical steps are aggregated and presented as a unified outcome. For instance, KYC procedures may be executed repeatedly using a diversified set of service providers and configurations; however, a singular step outcome will be generated, encapsulating the entirety of the assessments conducted.
Each step is defined in a consistent format, with significant variations stemming from the stepData
and processResults
only. These elements are distinct to each step type, providing tailored insights specific to the stepβs function.
Know Your Customer (KYC) Database Verification
The KYC workflow step takes into account all the processed data and indicates the outcome in the result
field.
UNCHECKED
- KYC wasnβt attempted due to a failure in a previous stepMISSING_DATA
- KYC wasnβt attempted as not enough data was availableMATCH
- KYC was attempted successfully, the entity was verified against the required number of data sourcesNO_MATCH
- KYC was attempted, however the entity wasnβt verified against any data sourcesPARTIAL
- KYC was attempted, however the entity wasnβt verified against the required number of data sources if more than 1 was requiredERROR
- KYC was attempted, however an error was encountered during the process. See errors for more information.
Service Provider Result
The KYC workflow step indicates the service provider overall outcome as the serviceProviders.result
Step Summary: Data Source Match Details
To gain insight into which personal information matched against specific sources, please refer to the matchedRules
. Commonly, youβll find a singular ruleMatches
entry detailing the outcome of a particular rule established in the workflow. For example, a rule might stipulate that both a name and either a date of birth or address be verified against two independent data sources. matchTypes
will reveal the exact element verified, while matchSources
will specify the data sources used for confirmation. Any data sources consulted but yielding no matches will be listed as nonMatchSources
.
After a KYC step has been executed, various elements require examination to determine the final outcome.
Legend:
- βΌοΈ - Results that deem whether the entity has passed or failed or the workflow failed to execute to completion.
- β - Context on why the entity may have passed or failed.
- βΉοΈ - Information-only, no contribution to whether the entity has passed or failed.
Matched and Unmatched Rules
The matchedRules
and unmatchedRules
that exist within the KYC workflow step summary are identical in structure and differ only in whether the ruleset was matched against successfully (matchedRules
) or not (unmatchedRules
).
Rulesets
The requirements rulesets are defined within the KYC workflow step configuration and are used to determine whether the number of data source matches have been met for each entity element (for example, name, date of birth, address and others) for the verification to be considered a match.
Ruleset Match Details
The specific matching details of each **rule **that was matched or not matched.
Ruleset Matched Types
The specific matching details of each element (for example, name
, dateOfBirth
, and others) that was matched or not matched.
Example 1: Successful KYC Database Verification
Letβs break down the following **match **result:
name
,dob
andaddress
were checked as theyβre listed undermatchTypes
- Based on the
matchCount
we can determine how many data sources we were able to match against for each element:name
matched against the Australian Electoral Roll (βau-elec-rollβ) and Equifax Public Credit Data Header (βau-efax-cdh-pubβ)address
matched against the Australian Electoral Roll (βau-elec-rollβ) onlydateOfBirth
matched against the Equifax Public Credit Data Header (βau-efax-cdh-pubβ)
matchCount
equals thematchCountRequired
which means we were able to find enough matches for a positive resultrequiredSourcesMatched
indicates that the Australian Electoral Roll (βau-elec-rollβ) was a source that was required to be matched against, which it was (name, address)isVerified
indicates that the match requirements were satisfied based on the rule criteria
Example 2: Unsuccessful KYC Database Verification
Similarly to the matchedRules
, the unmatchedRules
contains a singular ruleMatches
entry detailing the outcome of a particular rule established in the workflow that hasnβt been met.
Letβs break down the following **non matched **result:
name
,dob
andaddress
were checked as theyβre listed undermatchTypes
- Based on the
matchCount
we can see nomatchSources
present which tells us that there were no matches. - The
nonMatchSources
lists the sources that were checked against but without a successful match resultname
didnβt match against the Australian Electoral Roll (βau-elec-rollβ) and Equifax Public Credit Data Header (βau-efax-cdh-pubβ) or Equifax Consumer Credit Data Header (βau-efax-cdh-consumerβ)address
didnβt match against the Australian Electoral Roll (βau-elec-rollβ) and Equifax Public Credit Data Header (βau-efax-cdh-pubβ) or Equifax Consumer Credit Data Header (βau-efax-cdh-consumerβ)dateOfBirth
didnβt match against the Australian Electoral Roll (βau-elec-rollβ) and Equifax Public Credit Data Header (βau-efax-cdh-pubβ) or Equifax Consumer Credit Data Header (βau-efax-cdh-consumerβ)
matchCount
doesnβt equal thematchCountRequired
which means we werenβt able to find enough matches for a positive resultrequiredSourcesMatched
indicates that the Australian Electoral Roll (βau-elec-rollβ) was also a source that was required to be matched against, which wasnβtisVerified
indicates that the match requirements werenβt satisfied based on the rule criteria
Process Results: Data Source Match Details
KYC match details are represented as processResults
existing under the workflow step results for steps that require verification or some sort of checks to be run and differ based on the context of what the check is trying to accomplish. For checks against external data sources, the processResults
will aim to capture what exactly has matched against what source. Steps typically return an array of all the individual process results that were used in determining that stepβs result
.
After a KYC step has been executed, various elements require examination to determine the final outcome.
Legend:
- βΌοΈ - Results that deem whether the entity has passed or failed or the workflow failed to execute to completion.
- β - Context on why the entity may have passed or failed.
- βΉοΈ - Information-only, no contribution to whether the entity has passed or failed.
Example: 1: KYC Data Source Match Details
Process Result Objects (PROs) encapsulate the outcomes of specific processes (check, comparison, verification etc.). They play a crucial role in evaluating the overall outcome of relevant workflow steps.
Letβs break down the following KYC process result:
- The
class
is βKYCβ which indicates the process is in relation to a KYC database verification check. - The address of the entity has been successfully verified against the Australian Electoral Roll:
- Based on the
objectType
we can see that the specific element checked was an βADDRESSβ - The
providerResult
array contains the details of the service provider that the entity was checked against:- The service provider is the Document Verification Service as indicated by the
name
field (βdvsβ) - The specific data source that was checked is the Australian Electoral Roll as indicated by the source (βau-elec-rollβ) and
sourceNormalized
(βau-elec-rollβ) fields
- The service provider is the Document Verification Service as indicated by the
- The result is βMATCHβ indicating that the address was successfully matched.
- Based on the
- The check was completed successfully (
state
is βCOMPLETEDβ) and hasnβt yet been invalidated in any way (systemStatus
is βVALIDβ), therefore itβs safe to determine that the process ran to completion and was indeed used in determining the successfulresult
. - There has been no manual status applied to the process (due to the absence of a
manualStatus
field)
Example: 2: KYC Data Source Non-Match Details
Similar to Process Results (PROs) for KYC database verification matches, process results that result in no match will be generated during step execution and will provide insights into why the data source could NOT be matched.
Letβs break down the following KYC process result:
- The
class
is βKYCβ which indicates the process is in relation to a KYC database verification check. - The address of the entity has been checked but wasnβt verified against the Australian Electoral Roll:
- Based on the
objectType
we can see that the specific element checked was an βNAMEβ - The
providerResult
array contains the details of the service provider that the entity was checked against:- The service provider is the Document Verification Service as indicated by the
name
field (βdvsβ) - The specific data source that was checked is the Australian Electoral Roll as indicated by the source (βau-elec-rollβ) and
sourceNormalized
(βau-elec-rollβ) fields
- The service provider is the Document Verification Service as indicated by the
- The
result
is βMATCHβ indicating that the address was successfully matched.
- Based on the
- The
matchStrengths
withinsupplementaryData
shows that no part of the name matched at all. - The fuzziness within
supplementaryData
shows that an exact match (normalized
as β0β) was required, potentially restricting any passable partial matching (βSarahβ, βSaraβ). - The check was completed successfully (state is βCOMPLETEDβ) and hasnβt yet been invalidated in any way (systemStatus is βVALIDβ), therefore itβs safe to determine that the process ran to completion and was indeed used in determining the successful
result
. - There has been no manual status applied to the process (due to the absence of a
manualStatus
field).
Anti-Money Laundering (AML) Screening
AML screening results are reflected in the result
field, which clearly indicates the stepβs outcome. This field summarizes the stepβs result, taking into account all the processed data. For instance, if an individualβs details such as name show up on any AML screening lists like PEP or Sanctions lists, the result will be HIT
. If not, the result will be CLEAR
.
processResults
and summary has been omitted for brevity
Process Results: AML Match Results
processResults
exist under the workflow step results for steps that require verification or some sort of checks to be run and differ based on the context of what the check is trying to accomplish. For checks against external data sources, the processResults
will aim to capture what exactly has matched against what source. Steps typically return an array of all the individual process results that were used in determining that stepβs result
.
Take for instance the following example:
Supplementary Workflow Steps
Start Step
The start step indicates a successful commencement of the workflow. An effective measure to ascertain if the workflow initiated without complications is to check if the execution result includes a start step with a βCOMPLETEβ result
. Typically, no processResults
are anticipated for this step.
Finish Step
The finish step indicates whether the workflow completed successfully. This means that all results have been collected and stored, ready for further investigation. To check if the workflow finished without issues, look for a βCOMPLETEβ result
. Keep in mind that this only confirms the workflowβs completion, not the success of individual checks or the absence of errors. Typically, no processResults
are generated in this step.
Decision Step
The decision step within the workflow serves as a critical juncture that determines the workflowβs statusβbe it PASS, FAIL, or REVIEW. This determination hinges on the specific actions taken during the workflow. For instance, if all preceding steps have been executed flawlessly and all checks were cleared, the workflow is typically set to be βPASSβ. Conversely, if thereβs a hiccup in any step, such as an issue with individual verification, the workflow is likely to be marked as βFAILβ. Itβs important to note that the statuses set can be modified within the workflow builder.
Risk Step
The risk step in the workflow is a mandatory checkpoint for risk assessment. It doesnβt result in a pass or fail status. Instead, itβs simply marked as βCOMPLETEDβ once a risk evaluation has been conducted. This step ensures that risks are always considered in the process, without directly affecting the workflowβs status. While the risk assessment itself doesnβt change the workflow, the information gathered may be useful for later steps.
Classifying AML Match Results
After investigating the supplementaryData
for any AML screening match details, youβll need to make a decision on whether the person you are evaluating matches the person that we found during screening (true positive) or not (false positive).
To confirm whether an AML screening hit is true positive, false positive or unknown, youβll need to update the manualStatus
of the process result. The manualStatus
is used to store any manually determined statuses on a result as not to override the initial result gathered as part of the workflow execution.