Introduction
IDmission provides best-in-class IDentity Solutions through our APIs and SDKs which integrate directly into your existing workflows. Whether you're looking for document verification, identity authentication, frictionless liveness detection, or biometric deduplication services, IDentity Solutions is your all-in-one toolkit.
For more information please visit: IDmission IDentity Solutions
Getting Started with API
STEP 1: Obtain access to our IDentity Portal
- If you haven’t already been granted access to our IDentity Portal by the Sales Team, please contact our Customer Success Team at customersuccess@idmission.com.
STEP 2: Generate Sandbox Testing Credentials
- Once logged in to the IDentity Portal, from the downloads page, you can click on the ‘Generate Sandbox Testing Credentials’ button.
STEP 3: Review the API Services Documentation
- Determine which service(s) are best for your business and understand the input schemas.
API Overview
Although IDmission’s recommendation is to utilize our Mobile & Web SDKs for ID Capture and Passive Liveness Detection, if you already have those capture functions in place, our APIs are available to accept this information. There are several services that are available to submit input data and images based on your business need. The core services utilized by the majority of our customers are as follows:
- Validate ID
- Validate ID and Match Selfie
- Validate ID and Match Selfie with Enrollment
- Biometric Verification
General API Guidelines and Examples
With the Validate ID based services, there are several request options that provide flexibility in controlling the flow of the service. One of the main options is to elect to have IDmission’s Team of identity Experts perform a manual review. If this option is selected, it will be important to refer to the POST Processing API for the webhook that will provide the results. If this option is not utilized, the standard response will provide you with the results and extracted ID data.
Code Examples Python
import urllib.request
import ssl
ctx = ssl.SSLContext(ssl.PROTOCOL_TLSv1_2)
requestString = "Your Request"
url = 'Your URL'
f = urllib.request.urlopen(url, data = bytes(requestString, 'utf-8'), context = ctx)
resp = f.read().decode('utf-8')
print("" + resp)
Code Examples Java
>"Note: Before using the preceding code, please verify that TLS1.2 support is already added
to the JVM ( -Dhttps.protocols=TLSv1, TLSv1.1, TLSv1.2)."
public static String submitRequest(String url, String requestJson) {
String exceptionCode = "";
String exceptionStatusMsg = "";
String resp = "";
SSLContext sslContext = null;
HttpURLConnection httpConn = null;
try {
URL urlObj = new URL(url);
URLConnection conn = urlObj.openConnection();
httpConn = (HttpURLConnection) conn;
httpConn.setRequestMethod("POST");
int readTimeout = 15 * 1000;
int connTimeout = 1000;
// logger.info(" ReadTimeout >>" + readTimeout +
// "<< connTimeout >> " + connTimeout);
httpConn.setConnectTimeout(connTimeout);
httpConn.setReadTimeout(readTimeout);
httpConn.setDoInput(true);
// logger.info(" Host url >>" + url);
httpConn.setDoOutput(true);
httpConn.setRequestProperty("Content-Type", "application/json; charset=utf-8");
OutputStream outStream = httpConn.getOutputStream();
outStream.write(requestJson.getBytes());
outStream.close();
InputStream inStream = httpConn.getInputStream();
ByteArrayOutputStream respBytes = new ByteArrayOutputStream();
//use ioutil.transfer
transfer(inStream, respBytes, false, 1024);
resp = new String(respBytes.toByteArray());
} catch (Exception e) {
// logger.error("Error while using processing", respe);
e.printStackTrace();
}
return resp;
}
Code Examples csharp
public static String postRequest(String url, String requestJson)
{
String resp = null;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
byte[] requestBytes = System.Text.Encoding.UTF8.GetBytes(requestJson);
request.ContentType = "application/json; encoding='utf-8'";
request.ContentLength = requestBytes.Length;
request.Method = "POST";
Stream requestStream = request.GetRequestStream();
requestStream.Write(requestBytes, 0, requestBytes.Length);
requestStream.Close();
HttpWebResponse response = (HttpWebResponse)request.GetResponse();;
if (response.StatusCode == HttpStatusCode.OK)
{
Stream responseStream = response.GetResponseStream();
string responseStr = new StreamReader(responseStream).ReadToEnd();
return responseStr;
}
return resp;
}
Certification
Certification URL for API: To submit the application, use the following link: https://identity.idmission.com/IDS/service/integ/idm/thirdparty/upsert
Note: Follow the examples in the subsequent sections as a guide to the IDentity API Services.
API Services
Swagger API
POST Processing API
The below JSON format can be sent via an API once processing is complete by IDmission. In order to receive this, a URL must be provided and the POST_Data_API_Required field in the original API request must be set to a value of ‘Y’. These URLs need to be defined in the dashboard for the Sandbox and Production environments through My Account > Account Settings.
Example: JSON POST Update API
{
"Form_Status": "Approved",
"Form_Id": "18169223",
"Product_Id": "1523",
"Form_Key": "IDM_051120231020_32303",
"Form_Data":
{
"EmailID": "someonecompany.com",
"Customer_Name": "John Doe",
"CompanyID": "12345",
"UniqueRequestId": "URID051120231020",
"Client_Customer_Number": "string",
"Expiration_Date": "DD/MM/YYYY",
"Gender": "M",
"ID_Number": "991111111",
"content": 12345,
"Name": "John Doe",
"PlaceOfBirth": "CALIFORNIA USA",
"First_Name": "JOHN",
"Valid_ID_Number": "Y",
"MRZValid": "Y",
"API_resultCount_PEP": "0",
"API_resultCount_WLS": "0",
"API_resultCount_NM": "0",
"Client_Request_ID": "CRID888888",
"Issue_Date": "DD/NN/YYYY",
"MRZData": "MRZDATA STRING",
"CURRENT_FORM_STATE_FOR_CALL": "Approved",
"LivenessScore": "1.0",
"Date_of_Birth": "DD/MM/YYYY",
"Date_of_Birth_Formatted": "DD/MM/YYYY",
"Expiration_Date_Formatted": "DD/MM/YYYY",
"DocumentType": "PP",
"FaceVerificationStatus": "Verified",
"ID_Country": "USA",
"Face_Detected": "Y",
"ID_Type": "PP",
"IssuingAuthority": "U S D D F D S",
"Issuing_Country": "USA",
"ServiceID": "12",
"ID_Number_Match_Result": "Matched",
"AddressLine2": "Company Name",
"AddressLine1": "123 Main Street",
"Unique_Customer_Number": "string",
"Last_Name": "DOE",
"Customer_Gender": "M",
"FullName": "JOHN DOE",
"Country": "USA",
"Form_State_Code": "00",
"PhoneNumber": "1234567890",
"District": "CA",
"Customer_DateOfBirth": "DD/MM/YYYY",
"CustomerNameMatched": "Y",
"CustomerDateofBirthMatched": "Y",
"CustomerIDNumberMatched": "Y",
"CustomerExpiryDateMatched": "Y"
}
}
Post API Element Dictionary
Field Name | Field Type |
Response Description |
---|---|---|
Form_Status | Text | Final result of the ID Validation and Face Matching Processes.For a full list of values, please refer to the Appendix section of the document. |
Form_Id | Text | Form ID that was generated by IDmission and provided in the original API response. |
Product_Id | Text | Product ID for the environment, echo back from the request. |
Form_Key | Text | Form_Key from the original request. |
Form_Data Node
Note: These are all of the values that are extracted from the ID images themselves or are result fields from the ID Validation process.
Important: If a value is not present for a particular field for a request, it will not be included in this JSON response.
Field Name | Field Type |
Response Description |
---|---|---|
ID_Type |
Text | In most cases, this is an echo back from the request, unless it was updated by the ID Verification Team because it was incorrect. |
ID_Country |
Text | In most cases, this is an echo back from the request, unless it was updated by the ID Verification Team because it was incorrect. |
ID_State |
Text | In most cases, this is an echo back from the request, unless it was added/updated by the ID Verification Team because it was not provided or incorrect. |
Name |
Text | Full Name extracted from either barcode, MRZ, or front of the ID when MRZ/barcode are not present. |
First_Name |
Text | First Name extracted from either barcode, MRZ, or front of the ID when MRZ/barcode are not present. |
Middle_Name |
Text | Middle Name extracted from either barcode, MRZ, or front of the ID when MRZ/barcode are not present. |
Last_Name |
Text | Last Name extracted from either barcode, MRZ, or front of the ID when MRZ/barcode are not present |
Last_Name_2 |
Text | If there is a secondary last name, it will display as extracted from either the barcode, MRZ, or front of the ID when MRZ/barcode are not present. |
Address |
Text | Full Address extracted from either barcode, MRZ, or front of the ID when MRZ/barcode are not present. |
Address1 |
Text | Address Line 1 (usually the Street Number and Street Name) extracted from either barcode, MRZ, or front of the ID when MRZ/barcode are not presen. |
Address2 |
Text | Address Line 2 (e.g. Suite Number, Unit) extracted from either barcode, MRZ, or front of the ID when MRZ/barcode are not present. |
Country |
Text | City parsed from a barcode or MRZ, only when a one is present. In most cases the address will be in AddressLine1 / 2. |
ID_Number |
Text | ID Number extracted from either barcode, MRZ, or front of the ID when MRZ/barcode are not present. |
IDNumber1 |
Text | Additional IDNumber 1, extracted from barcode/MRZ data, or if neither are present, from the front of the ID. This will only be present if this additional ID Number component is defined in the matching ID template. |
IDNumber2 |
Text | Additional IDNumber 2, extracted from barcode/MRZ data, or if neither are present, from the front of the ID. This will only be present if this additional ID Number 2 component is defined in the matching ID template. |
IDNumber3 |
Text | Additional IDNumber 3, extracted from barcode/MRZ data, or if neither are present, from the front of the ID. This will only be present if this additional ID Number 3 component is defined in the matching ID template. |
Valid_ID_Number |
Text | Flag that indicates of the format of the ID number matches what is defined in the matching ID template. - Flag = Y if the ID Number extracts correctly and matches the format. - Flag = N if the ID Number does not match the format. - Flag = NA If there is no specific format defined - Flag = D if it cannot be clearly determined (D = Doubtful) |
Date_of_Birth |
Text | Date of Birth extracted from either barcode, MRZ, or front of the ID when MRZ/barcode are not present. This is the text that is extracted directly, not always a formatted date. |
Date_of_Birth_Formatted |
Date | Date of Birth extracted from either barcode, MRZ, or front of the ID when MRZ/barcode are not present. If the date cannot be formatted based on extraction (e.g. Odd format, not present in the MRZ and not corrected by manual review) then this field would be blank. Format: DD/MM/YYYY |
Expiration_Date |
Text | Expiration Date extracted from either barcode, MRZ, or front of the ID when MRZ/barcode are not present. This is the text that is extracted directly, not always a formatted date. |
Expiration_Date_Formatted |
Date | Expiration Date extracted from either barcode, MRZ, or front of the ID when MRZ/barcode are not present. If the date cannot be formatted based on extraction (e.g. Odd format, not present in the MRZ and not corrected by manual review) then this field would be blank. Format: DD/MM/YYYY |
Issue_Date |
Text | Issue Date extracted from either barcode, MRZ, or front of the ID when MRZ/barcode are not present. In most cases this is not present in a machine-readable portion of the ID, so we often see many variations of formats. This will be sent as a Text field. |
IssuingCountry |
Text | This is the 3-digit ISO country code in which the identity document was issued, either extracted from the barcode/MRZ or as defined in the template. |
Face_Detected |
Text | This flag indicates whether or not a clear/visible face is found on the identity document. If a ‘Photo’ component is captured for the specific ID template matched, and a face is clearly detected, this flag will = Y. If a face is expected and is NOT clearly detected, this flag will = N. If there is no ‘Photo’ component captured for the template, this flag will be blank. |
MRZ_Data |
Text | This is the raw data extracted from the MRZ. There is a parsing tool (in the back-office portal) where you can copy and paste the extracted MRZ string, compare it to the image, and correct any errors that may have resulted during OCR. This way you can determine the validity of the MRZ without having to ask the customer to resubmit their identity documents. |
MRZValid |
Text | This flag indicates the validity of the MRZ data, this will = Y if it is valid (passes all of the check digits), otherwise this will = N. When flag = N, there are usually MRZ Error Messages associated with. When there is not an MRZ detected (MRZ Detected = N), this flag will be blank. NA when there is a template matched, but no MRZ expected. |
FaceVerificationStatus |
Text | This is the result of the Face Match – ‘Verified’ or ‘Not Verified’ will be the values. A verified face must have a score that equates to a 62% or higher match. |
Manual_Review_Executed |
Text | If a request was submitted with the ‘Manual_Review_Required’ parameter = Y, and a manual review was actually executed, this field will = Y. If not, it will = N or Blank. |
NameNonEng |
Text | This field is extracted from the front or back of the ID |
FirstNameNonEng |
Text | This field is extracted from the front or back of the ID |
LastNameNonEng |
Text | This field is extracted from the front or back of the ID |
MiddleNameNonEng |
Text | This field is extracted from the front or back of the ID |
LastName2 |
Text | This field is extracted from: - The barcode or MRZ (if present) - The front or back of the ID, if both the MRZ and barcode are not present. |
AddressNonEng |
Text | This field is extracted from the front or back of the ID |
AddressLine1NonEng |
Text | This field is extracted from the front or back of the ID |
AddressLine2NonEng |
Text | This field is extracted from the front or back of the ID |
IDNumberNonEng |
Text | This field is extracted from the front or back of the ID |
IDNumber2NonEng |
Text | This field is extracted from the front or back of the ID |
DateofBirthNonEng |
Text | This field is extracted from the front or back of the ID |
ExpiryDateNonEng |
Text | This field is extracted from the front or back of the ID |
IssueDateNonEng |
Text | This field is extracted from the front or back of the ID |
Gender |
Text | This field is extracted from: - The barcode or MRZ - The front or back of the ID, if both the MRZ and barcode are not present. |
Unique_Customer_Number |
Text | This field is an echo back from what is submitted in the request. This is not extracted from the ID or generated by IDmission. It is for the client to use to define a unique number associated with their customer. |
API_resultCount_NM |
Text | This field returns a count of matches found using the customer or employee name against a Negative Media database. |
API_resultCount_PEP |
Text | This field returns a count of matches found using the customer or employee name against Politically Exposed Persons (PEPs) lists. |
API_resultCount_WLS |
Text | This field returns a count of matches found using the customer or employee name against Global watchlists. |
Client_Customer_Number |
Text | This field contains the unique client customer number associated with the customer record from the original enrollment. This is also used for ongoing verification. |
Customer_AddressLine1 |
Text | This field contains Address Line 1 for the customer that was submitted as part of the request. |
Customer_AddressLine2 |
Text | This field contains Address Line 2 for the customer that was submitted as part of the request. |
Customer_City |
Text | This field contains the city for the customer that was submitted as part of the request. |
Customer_Country |
Text | This field contains the country code or country name for the customer that was submitted as part of the request. |
Customer_DateOfBirth |
Text | This field contains the date of birth for the customer that was submitted as part of the request. |
Customer_District |
Text | This field contains the district for the customer that was submitted as part of the request. |
Customer_Email |
Text | This field contains the email address for the customer that was submitted as part of the request. |
Customer_Enrolled_Date |
Date | This field indicates the date the customer was enrolled. Format: YYYY-MM-DD |
Customer_FP_Data |
Image BLOB | This field returns the fingerprint data associated with the original enrollment of the Customer that a verification submission is verified against. |
Customer_Gender |
Text | This field contains the gender code that was submitted as part of the request. |
Customer_Name |
Text | This field contains the Customer Name that was submitted as part of the request or the name that was extracted from the ID document if present. |
Customer_PhoneNumber |
Text | This field contains the phone number for the customer that was submitted as part of the request. |
Customer_Search_Status |
Text | This field returns the status of the search results for the Customer based on the biometric data that was sent. The valid values are “SUCCESS” and “FAIL”. |
Customer_Signature |
Image BLOB | This is an image of the customer’s signature that can be optionally collected during any service where customer data is supported. |
Customer_verification_Result |
Text | This field returns the results of the Verify Customer request. The valid values are “Verified” and “Verification Failed”. |
CustomerCode |
Text | This field contains the Customer Code that is auto-generated by the IDmission system during the enrollment process. |
CustomerStatus |
Text | This field is used for Customer Enrollment processing. This field indicates if a customer has been found and returns the current status of that customer. The field can return “SUCCESS” or “FAILED”. |
CustomerVerification_Status |
Text | This field indicates the current status of the customer in the IDmission database. The field can return “Verified” or “Unverified”. |
DeDuplication_Status |
Text | The field indicates the overall status of Deduplication processing. This field can return “SUCCESS” or “FAIL”. |
Employee_AddresLine1 |
Text | This field contains Address Line 1 for the employee that was submitted as part of the request. |
Employee_AddresLine2 |
Text | This field contains Address Line 2 for the employee that was submitted as part of the request. |
Employee_City |
Text | This field contains the city associated with the address of the employee submitted as part of the request. |
EMPLOYEE_CODE |
Text | This field contains the employee code submitted as part of the request. |
Employee_Country |
Text | This field contains the country associated with the address for the employee submitted as part of the request. |
Employee_Email |
Text | This field contains the email associated with the employee submitted as part of the request. |
Employee_Gender |
Text | This field contains the gender code that was submitted as part of the request. |
Employee_ID |
Text | The field contains the employee ID that was provided during the employee enrollment process as part of the request. |
Employee_ID_State |
Text | This field contains the State associated with the ID of the employee submitted as part of the original request. |
Employee_LoginID |
Text | This field contains the employee Login ID that was submitted as part of the request. |
Employee_Name |
Text | This field contains the name of the employee submitted as part of the request. |
Employee_Phone |
Text | This field contains the phone number associated with the employee submitted as part of the request. |
Employee_PostalCode |
Text | This field contains the postal/zip code associated with the address for the employee submitted as part of the request. |
Employee_Type |
Text | This field contains the type of employee that was specified during the employee enrollment process, as part of the request. |
Employee_verification_Result |
Text | This field returns the results of the Verify Employee request. The valid values are “Verified” and “Verification Failed”. |
EmployeeCreateStatus |
Text | This field indicates whether or not the Employee enrollment was successful. The field can return “SUCCESS” or “FAILED”. |
EmployeeCreateStatusMessage |
Text | This field is the message that is returned based on the employee enrollment processing. For example, “Employee already exists” or “User does not have required privileges.” |
EmployeeID |
Text | This field is the employee ID provided during any employee enrollment services. |
EmployeeSignature |
Image BLOB | This field contains a signature image captured during the original employee enrollment. |
EmployeeVerification_Status |
Text | This field indicates the current status of the employee in the IDmission database. The field can return “Verified” or “Unverified”. |
ENROLLED_FACE_IMAGE |
Image BLOB | This field returns the photograph associated with the original enrollment of the Customer or Employee that a verification submission is verified against. |
FullName |
Text | This field is the full name of the customer, with the First,Middle, and Last names combined into one field. |
HOST_URL |
Text | This field is the URL that is provided to IDmission to return the POST API to. |
ID_Number_Match_Result |
Text | This field indicates if the ID Number that was extracted from the ID matches the ID Number that was read from the MRZ or Barcode when applicable. |
Name_Match_Result |
Text | This field returns the result of the name submitted in request matches the name extracted from the ID during processing. |
ServiceID |
Text | This is an echo back of the ServiceID sent in the request for the SDK, or utilized when using the Swagger API. The ServiceID is associated with the service being performed (e.g., ID Validation, Customer Enrollment, Verification, etc.) |
CompanyCode |
Text | This is an echo back of the CompanyCode submitted in the original request that the form is processed under. |
CustomerIDExpiryDate |
Date | This is the expiration date from an ID document that has been enrolled for a customer. This will be provided back based on input parameters in the Verification requests. Format: dd/mm/yyyy. |
DocumentType |
Text | This is ID Type that is determined based on the template it was matched against. This will be the same list of values are in the input ID Type. |
PlaceOfBirth |
Text | This is a text-based field that will contain the place of birth if specified on the ID. (Currently only available for Italy IDs) |
PlaceofIssue |
Text | This is a text-based field that will contain the place in which the ID was issued if specified on the ID. (Currently only available for Italy IDs) |
IssuingAuthority |
Text | This is a text-based field that will contain the issuing authority of the ID. This will only be present if this is a text-based field on the ID, it will not be extracted from a stamp. (Currently only available for Italy IDs) |
OCR_Signature |
Image BLOB | This field is the signature that is extracted from the ID |
PostalCode |
Text | This field contains postal code for the customer that was submitted as part of the request. |
Image_ProcessedFront |
Image BLOB | This image is the processed version of the front image from the server after ID validation processing is completed. It will be cropped and de-skewed and have security features highlighted. |
Image_ProcessedBack |
Image BLOB | This image is the processed version of the back image from the server after ID validation processing is completed. It will be cropped and de-skewed and have security features highlighted. |
Image_Front |
Image BLOB | This image is the front image provided by the client. |
Image_Back |
Image BLOB | This image is the back image provided by the client. |
Customer_Photo |
Image BLOB | This image is the live selfie image provided by the client. |
Form_State_Code |
Single Select | This is the two-digit code associated with the Form_Status. For a full list of values, please refer to the Form Status and State Codes Section of this document. |
Verification_Approval_Code |
Text | 4 digit verification code when biometric verification is done through the IDentity as a Service (IDaaS) Web Application. |
uniqueRequestId |
STRING | This is the unique key that is echoed back from the request. |
CustomerNameMatched |
Text | Present only if name matching was indicated in the request, values of Y or N will be provided to indicate if the input name matched the extracted name. |
CustomerDateofBirthMatched |
Text | Present only if DOB matching was indicated in the request, values of Y or N will be provided to indicate if the input dob matched the extracted dob. |
CustomerIDNumberMatched |
Text | Present only if IDNumber matching was indicated in the request, values of Y or N will be provided to indicate if the input IDNumber matched the extracted IDNumber. |
CustomerExpiryDateMatched |
Text | Present only if ExpiryDate matching was indicated in the request, values of Y or N will be provided to indicate if the input ExpiryDate matched the extracted ExpiryDate. |
Deduplication fields
Note: These fields will appear if Deduplication_Required = Y and Deduplication processing finds multiple matches. If multiple duplicates are found, the field will repeat with an appended “_1”, “_2”, etc. in the POST.
For example, if the user’s name is found to have multiple matches, then the DeDuplicationData_Name will repeat as follows:
DeDuplicationData_Name
DeDuplicationData_Name_1
Field Name | Field Type |
Response Description |
---|---|---|
DeDuplicationData_Client_Customer_Number |
Text | This field returns the unique customer number associated with a duplicate found during biometric deduplication processing. |
DeDuplicationData_Customer_ID |
Text | This field returns the IDmission-generated customer code associated with a duplicate found during biometric deduplication processing. |
DeDuplicationData_Name |
Text | This field returns the customer or employee name associated with a duplicate found during biometric deduplication processing. |
DeDuplicationData_Person_Type |
Text | This field returns the categorization of the user type associated with any duplicates found during biometric deduplication processing. Valid values are: “Customer”, “Employee”. |
DeDuplicationResult |
Text | This field returns the response if the Deduplication_Required flag is set in the original request. The response will either be “Duplicates Found” or “No Duplicates Found”. |
Duplicate_Employee_Type |
Text | This field indicates the type of employee the system matched against while completing biometric deduplication processing. |
Duplicate_Fingerprint_Data |
Image BLOB | This field returns the fingerprint data that is associated with a duplicate found during biometric deduplication processing. |
Duplicate_Found |
Text | This is a Yes/No field that indicates whether or not a duplicate customer or employee has been found when completing biometric deduplication processing. |
Duplicate_Photograph |
Image BLOB | This field returns the photograph that is associated with a duplicate found during biometric deduplication processing. |
Here is an example of Post Data API for Service ID 50, where three matches are found:
{
"Form_Status":"Duplicate Customer",
"Form_Id":"760716",
"Product_Id":"4130",
"Form_Key":"Test7363433222343232323243236323343453334343342e3343443434",
"Form_Data":
{
"Address":"123 Test Street, Anywhere, CA 90001",
"DeDuplicationData_Client_Customer_Number":"AN22G001230",
"DeDuplicationData_Client_Customer_Number_1":"AN22G00123012",
"DeDuplicationData_Client_Customer_Number_2":"AN22G00123012233",
"Client_Customer_Number":"AN22G001230122334455",
"Expiration_Date":"25/06/2023",
"DeDuplicationData_Name":"JOHN DOE",
"DeDuplicationData_Name_1":"JOHN DOE",
"DeDuplicationData_Name_2":"JOHN DOE",
"Gender":"M",
"ID_State":"CA",
"ID_Number":"1234567",
"content":"35309",
"First_Name":"JOHN",
"Valid_ID_Number":"Y",
"MRZValid":"NA",
"DeDuplicationResult":"Duplicates Found",
"Issue_Date":"25/06/2017",
"DeDuplicationData_Customer_ID":"52381",
"DeDuplicationData_Customer_ID_1":"53188",
"DeDuplicationData_Customer_ID_2":"53189",
"Duplicate_Found":"Y",
"PostalCode_Extracted":"9650000",
"CURRENT_FORM_STATE_FOR_CALL":"Duplicate Customer",
"IDNumber2":"04132013631RBBBFD12",
"Date_of_Birth":"12/04/1950",
"Date_of_Birth_Formatted":"12/04/1950",
"Expiration_Date_Formatted":"25/06/2023",
"Address2":"ANYWHERE CA 90001",
"FaceVerificationStatus":"Verified",
"Address1":"123 Test Street",
"ID_Country":"USA",
"Face_Detected":"Y",
"ID_Type":"PP",
"Issuing_Country":"USA",
"DeDuplicationData_Person_Type":"CUSTOMER"
"DeDuplicationData_Person_Type_1":"CUSTOMER",
"DeDuplicationData_Person_Type_2":"CUSTOMER",
"ID_Number_Match_Result":"Matched",
"Unique_Customer_Number":"AN22G001230122334455",
"Last_Name":"DOE",
"FullName":"JOHN DOE",
"Country":"USA",
"Form_State_Code":"00",
"DeDuplication_Status":"SUCCESS",
}
}
Post API Expected Acknowledgement Response
The system who is accepting this POST API from the IDmission server should respond with a simple ‘200’ HTTPS successful acknowledgement response.
Example
HTTPS status code = 200
response json formatted as
{
"status_code" : 0,
"status_message" : "Success"
}
WebSDK
IDentity SDK 2.0
WebSDK
Android SDK
Android Expo Wrapper
Android Flutter Wrapper
Android Ionic Capacitor Wrapper
Android React Wrapper
iOS SDK
iOS Cordova Wrapper
iOS Expo Wrapper
iOS Flutter Wrapper
iOS Ionic Capacitor Wrapper
iOS React Wrapper
SDK 1.0 to 2.0 Migration
iOS SDK 1.0 to 2.0 Migration
Android SDK 1.0 to 2.0 Migration
Legacy SDK 1.0
WebSDK
Android SDK
Android React Wrapper
iOS SDK
Legacy SDK Cordova Wrapper
IDMission SDK Cordova Plugin
This plugin is a comprehensive toolkit that offers identity services (e.g. ID validation, live face detection, etc.) for positive identification.
Installation
If you download the plugin
ionic cordova plugin add PATH\IDMissionSDK_Cordova_Plugin
Loading it from the GitHub repository
ionic cordova plugin add https://github.com/idmission/pluginCordova.git
Configurations for Android
Platform
- If it exists, delete it with ionic cordova platform rm android and re-create with ionic cordova platform add android
- If it doesn't exist, create it withionic cordova platform add android
Prepare Android
- To prepare it, execute ionic cordova prepare android
File build.gradle
- Alter file build.gradle inside the folder app of the project, add the following information:
android
{
compileSdkVersion 27
buildToolsVersion "27.0.3"
defaultConfig
{
applicationId "com.idmission.sdk.Client"
minSdkVersion 23
targetSdkVersion 26
versionCode 20190816
versionName "6.3.3.3"
multiDexEnabled true
ndk
{
// Don't package arm64-v8a or x86_64, 'x86'
abiFilters 'armeabi-v7a'
}
}
dexOptions
{
javaMaxHeapSize "4g"
}
aaptOptions
{
noCompress "tflite"
}
}
- Search for the buildscript property and within the dependencies section add the following line:
classpath 'com.google.gms:google-services:4.2.0'
- Find the dependencies property and add the following lines:
implementation files ('libs/idm-imgproc-7.2.4.26.aar')
implementation files ('libs/OpenCV_4.1.1.aar')
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'io.fotoapparat:fotoapparat:2.6.1'
implementation 'org.tensorflow:tensorflow-lite:0.0.0-nightly'
implementation 'com.google.android.gms:play-services-location:16.0.0'
implementation 'com.google.firebase:firebase-ml-vision:24.0.1'
implementation 'com.google.firebase:firebase-ml-vision-face-model:19.0.0'
implementation 'com.google.firebase:firebase-core:17.2.2'
- At the end of the file add the following line:
apply plugin:'com.google.gms.google-services'
File google-services.json
Make sure the package_name is the same as your project ID
Configurations for IOS
Platform
- If it exists, delete it with ionic cordova platform rm ios and re-create with ionic cordova platform add ios
- If it doesn't exist, create it with ionic cordova platform add ios
Prepare IOS
- To prepare it, execute ionic cordova prepare ios
Install Pod
In platforms/ios install pod:
pod install
Settings in Xcode
- Add the framework AppItFramework.framework to the root of the project.
- Note: Make sure that the Embed option of the framework AppItFramework.framework is in Embed & Sign
- Add the file idmissionconfig.json inside the folder Classes
- Edit the MainViewController.h file:
- Add the import: #import <AppItFramework/AppItframework.h>
- And where it says @interface MainViewController : CDVViewController overwrite it by:
@interface MainViewController : CDVViewController<AppItSDKResponse>
@property (nonatomic, copy, readwrite) NSString *scanCallbackId;
- (void)sendSuccessTo:(NSString *)callbackId withObject:(id)objwithObject;
- (void)sendFailureTo:(NSString *)callbackId withObject:(id)objwithObject;
- Edit the MainViewController.m file:
- Inside the implementation MainViewController:
//IDmission SDK Methods - Start
-(void) sendSuccessTo: (NSString * ) callbackId withObject: (id) obj {
CDVPluginResult * result = nil;
if ([obj isKindOfClass: [NSString class]]) {
result = [CDVPluginResult resultWithStatus: CDVCommandStatus_OK messageAsString: obj];
} else if ([obj isKindOfClass: [NSDictionary class]]) {
NSError * error;
NSData * jsonData = [NSJSONSerialization dataWithJSONObject: obj options: NSJSONWritingPrettyPrinted // Pass 0 if you don't care about the readability of the generated string error:&error]; if (! jsonData)
{
NSLog(@ "Got an error: %@", error);
} else {
NSString * jsonString = [
[NSString alloc] initWithData: jsonData encoding: NSUTF8StringEncoding
];
result = [CDVPlu CDVPluginResult resultWithStatus: CDVCommandStatus_OK messageAsString: jsonString];
}
}
else if ([obj isKindOfClass: [NSNumber class]]) {
// all the numbers we return are bools result = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsInt:[obj intValue]];
} else if (!obj) {
result = [CDVPluginResult resultWithStatus: CDVCommandStatus_OK];
} else {
NSLog(@ "Success callback wrapper not yet implemented for class %@", [obj class]);
}
[self.commandDelegate sendPluginResult: result callbackId: callbackId];
}
-
(void) sendFailureTo: (NSString * ) callbackId withObject: (id) obj {
CDVPluginResult * result = nil;
if ([obj isKindOfClass: [NSString class]]) {
result = [CDVPluginResult resultWithStatus: CDVCommandStatus_ERROR messageAsString: obj];
} else if ([obj isKindOfClass: [NSDictionary class]]) {
NSError * error;
NSData * jsonData = [NSJSONSerialization dataWithJSONObject: obj options: NSJSONWritingPrettyPrinted // Pass 0 if you don't care about the readability of the generated string error:&error];
if (!jsonData) {
NSLog(@ "Got an error: %@", error);
} else {
NSString * jsonString = [
[NSString alloc] initWithData: jsonData encoding: NSUTF8StringEncoding
];
result = [CDVPluginResult resultWithStatus: CDVCommandStatus_OK messageAsString: jsonString];
}
}
else if ([obj isKindOfClass: [NSNumber class]]) {
// all the numbers we return are bools result = [CDVPluginResult resultWithStatus:CDVCommandStatus_ERROR messageAsInt:[obj intValue]];
} else if (!obj) {
result = [CDVPluginResult resultWithStatus: CDVCommandStatus_ERROR];
} else {
NSLog(@ "Success callback wrapper not yet implemented for class %@", [obj class]);
}
[self.commandDelegate sendPluginResult: result callbackId: callbackId];
}
-
(void) bankStatementDetectionResponse: (NSMutableDictionary * ) result {} -
(void) birthCertificateDetectionResponse: (NSMutableDictionary * ) result {} -
(void) captureImageResponse: (NSMutableDictionary * ) result {
NSLog(@ "captureImageResponse");
[self sendSuccessTo: self.scanCallbackId withObject: result];
} -
(void) captureSignatureResponse: (NSMutableDictionary * ) result {} -
(void) cardDetectionResponse: (NSMutableDictionary * ) result {} -
(void) completeOperationResponse: (NSMutableDictionary * ) result {} -
(void) createEmployeeResponse: (NSMutableDictionary * ) result {} -
(void) executeGenericResponse: (NSMutableDictionary * ) result {} -
(void) faceDetectionResponse: (NSMutableDictionary * ) result {
NSLog(@ "faceDetectionResponse");
[self sendSuccessTo: self.scanCallbackId withObject: result];
} -
(void) faceMatchingResponse: (NSMutableDictionary * ) result {} -
(void) fingerprintEnrolmentResponse: (NSMutableDictionary * ) result {} -
(void) fingerprintVerificationResponse: (NSMutableDictionary * ) result {} -
(void) fourFingerprintDetectionResponse: (NSMutableDictionary * ) result {} -
(void) generateOTPResponse: (NSMutableDictionary * ) result {} -
(void) generateTokenResponse: (NSMutableDictionary * ) result {} -
(void) genericDocumentResponse: (NSMutableDictionary * ) result {} -
(void) gpsCoordinateResponse: (NSMutableDictionary * ) result {} -
(void) idValidationAndVideoMatchingResponse: (NSMutableDictionary * ) result {} -
(void) cardDetectionResponse: (NSMutableDictionary * ) result {} -
(void) completeOperationResponse: (NSMutableDictionary * ) result {} -
(void) createEmployeeResponse: (NSMutableDictionary * ) result {} -
(void) executeGenericResponse: (NSMutableDictionary * ) result {} -
(void) faceDetectionResponse: (NSMutableDictionary * ) result {
NSLog(@ "faceDetectionResponse");
[self sendSuccessTo: self.scanCallbackId withObject: result];
} -
(void) faceMatchingResponse: (NSMutableDictionary * ) result {} -
(void) fingerprintEnrolmentResponse: (NSMutableDictionary * ) result {} -
(void) fingerprintVerificationResponse: (NSMutableDictionary * ) result {} -
(void) fourFingerprintDetectionResponse: (NSMutableDictionary * ) result {} -
(void) generateOTPResponse: (NSMutableDictionary * ) result {} -
(void) generateTokenResponse: (NSMutableDictionary * ) result {} -
(void) genericDocumentResponse: (NSMutableDictionary * ) result {} -
(void) gpsCoordinateResponse: (NSMutableDictionary * ) result {} -
(void) idValidationAndVideoMatchingResponse: (NSMutableDictionary * ) result {} -
(void) videoRecordingResponse: (NSMutableDictionary * ) result {
NSLog(@ "videoRecordingResponse"); //[0] (null) @"statusMessage" : @"Success" //[1] (null) @"statusCode" : @"0" //[2] (null) @"StatusCode" : @"0"
NSMutableDictionary * filteredResp = [NSMutableDictionary dictionary];
[filteredResp setValue: [result objectForKey: @ "statusMessage"] forKey: @ "statusMessage"];
[filteredResp setValue: [result objectForKey: @ "statusCode"] forKey: @ "statusCode"];
[filteredResp setValue: [result objectForKey: @ "StatusCode"] forKey: @ "StatusCode"];
[self sendSuccessTo: self.scanCallbackId withObject: filteredResp];
} -
(void) voiceRecordingResponse: (NSMutableDictionary * ) result {} //IDmission SDK Methods - End
Properties
- idm_sdk_init
- idm_sdk_IdFront
- idm_sdk_IdBack
- idm_sdk_detectFace
- idm_sdk_recordVideo
- idm_sdk_getPermissions (Only Android)
- idm_sdk_CaptureSignature
- idm_sdk_processImageAndMatchFace
Usage
To use the plugin, you need to create an integration user at Evolv IDMission and request the login credentials.
idm_sdk_init
It is necessary to execute this function first before the others.
var exampleData = {
url: 'https://kyc.idmission.com/IDS/service/integ/idm/thirdparty/upsert',
loginId: 'ev_integ_54192',
password: 'IDmi#192$',
merchantID: '33635',
productID: '920',
productName: 'Identity_Validation_and_Face_Matching',
Language: 'en',
EnableDebug: 'true',
enableGPS: 'true'
};
( < any > window).cordova.plugins.IDMissionSDK_Cordova_Plugin.idm_sdk_init(JSON.stringify(exampleData), this.successCallback, this.errorCallback);
JSON success response
{
"StatusCode": "0",
"StatusMessage": "Success",
"statusCode": "0",
"statusMessage": "Success"
}
JSON error response
{
"StatusCode": "-1",
"StatusMessage": , // Error type message "statusCode": "-1", "statusMessage": // Error type message
}
idm_sdk_IdFront
This function will open the camera that will automatically take the photo of the credential.
(<any>window).cordova.plugins.IDMissionSDK_Cordova_Plugin.idm_sdk_IdFront(null,this.successCallback, this.errorCallback);
JSON success response
{ "FRONT": "", // Base64 Image }
JSON error response
{ "StatusCode": "-1", "StatusMessage": , // Error type message "statusCode": "-1", "statusMessage": // Error type message }
idm_sdk_IdBack
This function will open the camera that will automatically take the photo of the back of the credential.
(<any>window).cordova.plugins.IDMissionSDK_Cordova_Plugin.idm_sdk_IdBack(null,this.successCallback, this.errorCallback);
JSON success response
{ "BACK": "", // Base64 Image }
JSON error response
{ "StatusCode": "-1", "StatusMessage": , // Error type message "statusCode": "-1", "statusMessage": // Error type message }
idm_sdk_detectFace
This function will open the camera that will automatically take a selfie of the user.
(<any>window).cordova.plugins.IDMissionSDK_Cordova_Plugin.idm_sdk_detectFace(null,this.successCallback, this.errorCallback);
JSON success response
{ "FACE": "", // Base64 Image }
JSON error response
{ "StatusCode": "-1", "StatusMessage": , // Error type message "statusCode": "-1", "statusMessage": // Error type message }
idm_sdk_recordVideo
This function will open the camera with which you can record.
var options = {
recordingTime: 30,
textDatatoScrolled: 'Hello world! Please let me know how this is recorded to the end of the video.'
};
( < any > window).cordova.plugins.IDMissionSDK_Cordova_Plugin.idm_sdk_recordVideo(JSON.stringify(options), this.successCallback, this.errorCallback);
JSON success response
{ "StatusCode": "0", "StatusMessage": "Success", "statusCode": "0", "statusMessage": "Success" }
JSON error response
{ "StatusCode": "-1", "StatusMessage": , // Error type message "statusCode": "-1", "statusMessage": // Error type message }
idm_sdk_getPermissions
Only for Android, you can obtain the permissions of the following native properties:
- CAMERA
- MODIFY_AUDIO_SETTINGS
- RECORD_AUDIO
- READ_EXTERNAL_STORAGE
- WRITE_EXTERNAL_STORAGE
var permission = { permissionName : "CAMERA", // Type Permission }; (<any>window).cordova.plugins.IDMissionSDK_Cordova_Plugin.idm_sdk_getPermissions(JSON.stringify(permission),this.successCallback, this.errorCallback);
JSON success response
{ "StatusCode": "0", "StatusMessage": "Success", "statusCode": "0", "statusMessage": "Success" }
JSON error response
{ "StatusCode": "-1", "StatusMessage": , // Error type message "statusCode": "-1", "statusMessage": // Error type message }
idm_sdk_CaptureSignature
This function will open a blank screen where you can capture the signature.
(<any>window).cordova.plugins.IDMissionSDK_Cordova_Plugin.idm_sdk_CaptureSignature(null,this.successCallback, this.errorCallback);
JSON success response
{ "result": "", // Base64 Image }
JSON error response
{ "StatusCode": "-1", "StatusMessage": , // Error type message "statusCode": "-1", "statusMessage": // Error type message }
idm_sdk_processImageAndMatchFace
This function will send the form with the data collected from the previous functions to process the identity of the user to be registered.
var options = {
countryCode: 'USA',
stateCode: '',
idType: 'PP',
faceImageType: '',
additionalDictionary: {
Service_ID: 10
},
finalSubmit: 'true',
clearFormKey: 'true'
};
( < any > window).cordova.plugins.IDMissionSDK_Cordova_Plugin.idm_sdk_processImageAndMatchFace(JSON.stringify(options), this.successCallback, this.errorCallback);
JSON success response
{
"Status_Code": "000",
"Status_Message": "Form Submitted Successfully",
"Request_Id": "000000000",
"FormKey": "IDMTPIA_0000000000000_00:C0:F0:F0:C0:00",
"FormID": "00000000",
"ProductId": "920",
"State": "Template Not Found",
"Face_Detected": "Y",
"EnoughFeatureFoundOnID_FRONT": "Y",
"NoTemplatesAvailable": "N",
"EnoughFeatureFound": "Y",
"MatchingTemplateFound": "D",
"MRZValid": "NA",
"PixelCount": "272688",
"InputImagePixelCount": "272688",
"LowResolution": "N",
"ColorCode": "C",
"IDBackImageExpected": "N",
"PhotoEditingSoftwareDetected": "N",
"ImageDateDiscrepancy": "N",
"BarCodeExpected": "N",
"IDImageMismatch": "N",
"MRExist": "N",
"Form_State_Code": "15",
"FaceVerificationStatus": "Verified",
"IsPassport": "N",
"TotalDedupMatches": "0",
"NegativeDBMatchFound": "N",
"StatusCode": "0",
"StatusMessage": "Success",
"statusMessage": "Success",
"statusCode": "0"
}
JSON response
If daily limit forms are exceeded
{
"Status_Code": "3057",
"Status_Message": "You have exceeded the limit of \"10\" forms in \"24\" hours",
"ErrorData": "{}",
"Request_Id": "000000000",
"ProductId": "920",
"StatusCode": "0",
"StatusMessage": "Success",
"statusMessage": "Success",
"statusCode": "0"
}
JSON error response
{ "StatusCode": "-1", "StatusMessage": , // Error type message "statusCode": "-1", "statusMessage": // Error type message }
Note
The above documentation can be found in the following path
https://drive.google.com/file/d/1nHfvM60iirtKKhY3x7Es8fcAc4oj1iMN/view?usp=sharing
After extracting the zip that was downloaded, the documentation file is located at IDMissionSDK_Cordova_Plugin.zip-> IDMissionSDK_Cordova_Plugin-> README.md
In order to see it locally, I use an extension in my Visual Studio Code called "Markdown Preview Enhanced" by Yiyi Wang
iFrame Integration
Following explains the steps to invoke Apps from within the Web Application or current web site.
- Before rendering the link in your web application make sure that a unique token generation request is sent to Apps using the assigned user/password from the web application server to ensure the user/password is not exposed on your web site.
- This token returned in response should be sent to the webpage which will invoke the Apps UI.
- While invoking the Apps UI…you can send some additional data which can be pre-populated.
- A returnURL is also required which will be invoked once the Apps UI processing is complete
Sample example is available at
https://demo.idmission.com/thirdyPartySimulator/
The URLs that you will need to use for testing within the simulator specific fields will be ‘https://uat.idmission.com/…….’
ThirdParty-Integration
Initiate token creation :
Request :
URL : https://uat.idmission.com/apps/generateToken
PARAMS :
loginId : "****",
password : "****",
requestId : "123123"
Response : /* Content-Type:"application/json;charset=UTF-8" */
{
"statusCode": "000",
"statusMessage": "Token has been created successfully.",
"data": {
"tokenId": "23E2500084F870867F90DA76774BA651F87852C844B4CEC355AE699ABB0B6519.C2HVD2NHC2UTZHATBMFNAW9ZWZEYNY4WLJAUMV0",
"requestId": "123123"
},
"dataList": []
}
Initiate form execution
Request :
URL : https://uat.idmission.com/apps/invokeApps
PARAMS :
tokenId :"B8DA48CF83B58968F14C8DD8405B5141BDA25A608A5B5957D5FD1D54B41A1392.C2HVD2NHC2UTZHATBMFNAW9ZWZEYNY4WLJAUMV0",
productId :"***",
requestId :"5694828",
returnurl :"https://uat.idmission.com/thirdyPartySimulator/returnUrl.jsp",
language :"en_US",
formId :"123123",
formData : null
Response on Form Completion sent to returnurl:
Response is JSON with following params.
responseMessage : Token already used.,
requesStatus : FAILED,
formId : null,
formStatus : null
formData : null
Form Data Example 1
<FormData>
<Field>
<Name>COUNTRY</Name>
<FieldValue>
<Value>USA</Value>
</FieldValue>
</Field>
</FormData>
Form Data Example 2
<FormData>
<Field>
<Name>Name</Name>
<FieldValue>
<Value>PHILIPPE ROY</Value>
</FieldValue>
</Field>
<Field>
<Name>IDNumber</Name>
<FieldValue>
<Value>AA12345</Value>
</FieldValue>
</Field>
<Field>
<Name>DateOfBirth</Name>
<FieldValue>
<Value>03/11/2000</Value>
</FieldValue>
</Field>
<Field>
<Name>IDCountry</Name>
<FieldValue>
<Value>TH</Value>
</FieldValue>
</Field>
<Field>
<Name>IDType</Name>
<FieldValue>
<Value>PP</Value>
</FieldValue>
</Field>
<Field>
<Name>CustomerIdValue</Name>
<FieldValue>
<Value>9012345</Value>
</FieldValue>
</Field>
<Field>
<Name>ExpiryDate</Name>
<FieldValue>
<Value>02/03/2022</Value>
</FieldValue>
</Field>
<Field>
<Name>AgentCountry</Name>
<FieldValue>
<Value>TH</Value>
</FieldValue>
</Field>
<Field>
<Name>SendImagesToHost</Name>
<FieldValue>
<Value>N</Value>
</FieldValue>
</Field>
<Field>
<Name>FirstName</Name>
<FieldValue>
<Value>PHILIPPE</Value>
</FieldValue>
</Field>
<Field>
<Name>LastName</Name>
<FieldValue>
<Value>ROY</Value>
</FieldValue>
</Field>
<Field>
<Name>MiddleName</Name>
<FieldValue>
<Value></Value>
</FieldValue>
</Field>
<Field>
<Name>CustomerEmail</Name>
<FieldValue>
<Value>test@abcd.com</Value>
</FieldValue>
</Field>
<Field>
<Name>CustomerPhone</Name>
<FieldValue>
<Value>mob-11-931510902</Value>
</FieldValue>
</Field>
<Field>
<Name>Platform</Name>
<FieldValue>
<Value>AMERIGO</Value>
</FieldValue>
</Field>
<Field>
<Name>ExactNameMatch</Name>
<FieldValue>
<Value>Y</Value>
</FieldValue>
</Field>
<Field>
<Name>ExactIdNumberMatch</Name>
<FieldValue>
<Value>Y</Value>
</FieldValue>
</Field>
<Field>
<Name>ExactDateMatch</Name>
<FieldValue>
<Value>Y</Value>
</FieldValue>
</Field>
<Field>
<Name>IssueDate_Match</Name>
<FieldValue>
<Value>Y</Value>
</FieldValue>
</Field>
<Field>
<Name>Issue_Date</Name>
<FieldValue>
<Value>02/03/2018</Value>
</FieldValue>
</Field>
<Field>
<Name>IDTypeMismatchCheck</Name>
<FieldValue>
<Value>Y</Value>
</FieldValue>
</Field>
</FormData>
Appendix
The following section includes supplementary information about IDmission IDentity APIs.
APPENDIX A - Submitting ID Images & Photos
BLOB fields can be of different types such as images or attachments. To handle them appropriately, you may submit different attributes to the server.
Example: ID Image Front (JSON)
<ID_Image__Front>
{
"fieldId": "",
"fileContent": "BASE_64_DATA_OF_IMAGE",
"fileUploadType": "Y",
"isImageControlData": "Y",
"name": "#UniqueID#.jpeg",
"type": "data:image/jpeg;base64",
"uniqueId": #UniqueID#
}
</ID_Image__Front>
"fileContent": "BASE_64_DATA_OF_IMAGE"
: It contains Base_64 data of image.
APPENDIX C – Form Status and State Codes
The following table contains a list of values that will be returned in the tag ‘State’ in the response. This indicates the overall result of the ID Validation and/or any additional processing based on the Service ID. The table also includes a recommendation for action for the requesting application.
Note: If Manual Review is supported for your configuration, these initially would go into a result state with the word ‘Review…’ in front of the result. Once the form is actioned by the manual review team, it would be updated to reflect the states below. These Form Status and State Code values for Manual Review are in APPENDIX D.
Form State Returns and State Codes Table
State Code |
Form Status |
Description | Recommended Actions |
---|---|---|---|
00 | Approved |
|
|
50 | Barcode Unreadable | A barcode is expected to be present, but the barcode data is not detected by IDmission. | The application using this API should prompt the user to recapture the images where the barcode is present in better lighting without glare so the ID can be processed properly. |
32 | Biometric Match Fail | If the user’s biometric data (face, voice, and/or fingerprint) captured does not match the biometric data in the database from a previously enrolled user. | The application using this SDK/API should prompt the user to recapture their biometric information, ensuring that face, fingerprint, and voice can be captured with clarity and accuracy. |
46 | Customer Found | If the customer biometric data (face, voice, and/or fingerprint) has matched the biometric data in the database of a previous enrollment. |
|
44 | Customer Not Found | If the customer biometric data (face, voice, and/or fingerprint) does not match the biometric data in the database from a previously enrolled user. | The application using this SDK/API should prompt the user to recapture their biometric information. The capture should be completed in a well-lit room with the customer biometric fully visible. |
34 | Customer Onboarded |
|
|
37 | Customer Onboarding Failed |
|
|
39 | Customer Updated | If the capture of customer data has updated a previously enrolled customer record. |
|
135 | DOB Match Failed | If the Date of Birth submitted in the request for the Customer or the Employee doesn’t meet the matching thresholds against the Date of Birth extracted from the ID Document. | The application using this API should prompt the user to provide a valid ID as this was deemed invalid. |
35 | Duplicate Customer | The biometric data provided by the customer for a new enrollment has matched to a previously enrolled user. |
|
36 | Duplicate Employee | The biometric data provided by the employee for a new enrollment has matched to biometric data from a previous enrollment. |
|
47 | Employee Found | If the customer biometric data (face, voice, and/or fingerprint) has matched the biometric data in the database of a previous enrollment. |
|
45 | Employee Not Found | If the customer biometric data (face, voice, and/or fingerprint) does not match the biometric data in the database from a previously enrolled user. | The application using this SDK/API should prompt the user to recapture their biometric information. The capture should be completed in a well-lit room with the customer biometric fully visible. |
33 | Employee Onboarded |
|
|
38 | Employee Onboarding Failed |
|
|
41 | Employee Updated | If the capture of employee data has updated a previously enrolled customer record. |
|
40 | Expired ID | The expiration date on the ID is equal to or less than the current date. | The application using this API should prompt the user to provide an ID with a valid expiration date. |
137 | Expiry Date Match Failed | If the Expiration Date submitted in the request for the Customer or the Employee doesn’t meet the matching thresholds against the Expiration Date extracted from the ID Document. | The application using this API should prompt the user to provide a valid ID as this was deemed invalid. |
31 | Face Not Detected |
|
The application using this API should prompt the user to provide a clear image of an ID that includes a photo. |
30 | Facial Biometric Match Failed | If a customer photo is captured and does not biometrically match the photo in the ID document, the ability to review the images is in the back office. | The application using this API should prompt the user to capture a new selfie image. |
10 | ID Back Image not found |
|
The application using this API should prompt the user to provide a clear image of the back of the ID. |
52 | ID Face Not Found |
|
The application using this SDK/API should prompt the user to provide a clear ID with a clear face image to ensure that facial biometric verification can be completed. |
60 | ID Front and Back Mismatch | If the data extracted from the back of the ID image does not belong to the data presented on the front of the ID image. | The application using the API should prompt the user to provide new front and back images because inconsistences were found. Note: If this occurs more than once, the application could decide to push this to a manual review queue because it could be an issue with OCR extraction accuracy. |
11 | ID Front Image Not Found | The front of an ID is not uploaded, or a blank image was provided. | The application using this API should prompt the user to provide a clear image of the front of the ID. |
61 | ID Not Accepted | The uploaded ID contains an invalid configuration for the selected country. | The application using this API should prompt the user to provide an ID that is in the list of accepted ID Types. Note: The application should prompt the user to select an ID type from a dropdown list, which reduces the likeliness of this result. |
62 | ID Type Mismatch | If the ID Type submitted doesn’t match the ID Type extracted from the ID Image. | The application using this API should prompt the user to select the ID Type that matches the Type of ID that was uploaded/captured. |
51 | IDNumber Match Failed | The ID Number that was extracted by OCR from the ID does not match the ID Number that was extracted from the MRZ or Barcode, OR the ID Number submitted in the request does not match the ID Number that was extracted through OCR. | The application using this SDK/API should prompt the user to retry ID Validation. |
63 | Invalid ID Number | The ID Number on the ID does not match the pattern defined in the ID Template. | The application using this API should prompt the user to provide a valid ID. |
12 | Key Component Not Visible | If one of the key components on the ID such as the date of birth or expiration date is missing. | The application using this SDK should prompt the user that: The ID they have provided is not valid or the image provided may be blurred or unreadable in some portions or to recapture or capture an image of a different ID. |
13 | Low Resolution |
|
The application using this API should prompt the user to recapture the images in better lighting without glare so the ID can be processed properly. |
48 | Live Face Detected | If our system detects a live face from the selfie. |
|
49 | Live Face Not Detected | If our system does not detect a live face from the selfie image (e.g., if the selfie image is a photo of a photo, if the selfie image is a screen capture of a face, etc.) | The application using the SDK should prompt the user to retake the selfie ensuring that a live face is captured in good lighting. |
64 | MRZ and ID Data Mismatch | If the data extracted from the MRZ does not match the data extracted from the ID image itself. | The application using the API should prompt the user to provide new image(s) because inconsistences were found. Note: If this occurs more than once, the application could decide to push this to a manual review queue because it could be an issue with OCR extraction accuracy. |
65 | MRZ Invalid | The MRZ Validation flag (Machine Readable Zone) results in determining that the MRZ Data was not correct according to the standards. | The application using this API should prompt the user that the ID they have provided is not valid and to capture image of a different ID. |
66 | Name Match Failed | If the name submitted for the Customer or the Employee doesn’t meet the matching thresholds against the name extracted from the ID Document. | The application using this API should prompt the user to provide a valid ID as this was deemed invalid. |
14 | No Image Found | The ID front and back images are black or white and missing an ID Image. | The application using this API should prompt the user to recapture the images in better lighting without glare so the ID can be processed properly. |
N/A | Pending Review | Initial state of the form. System checks are still pending. | No action required. Final results are sent via the POST API |
53 | Real ID Detected | If our system detects a real ID from the ID image. |
|
54 | Real ID Not Detected | If our system does not detect a real ID from the ID image (e.g., if the ID image is a photocopy, if the ID image is a screen capture of an ID, etc.) | The application using the SDK should prompt the user to retake the ID image ensuring that a real ID is captured in good lighting. |
67 | Sample ID | If an ID has been confirmed as a sample after manual review. | The application using this API should prompt the user that: The ID they have provided is not valid and to capture a different ID image. |
68 | Security Feature Invalid | One or more security features defined for the ID template are a mismatch with the provided image. | The application using this API should prompt the user to recapture the ID or a different one. |
01 | Submitted | If it is an asynchronous call via the API, the ID is awaiting process completion to be categorized into a form state. |
|
69 | Suspected Sample | An ID has been detected as a sample (logic has been configured to recognize sample ID numbers, names, watermarks and other suspected sample data.) | The application using this API should prompt the user that the ID they have provided is not valid and to capture image of a different ID. |
70 | Suspected Tampering |
|
The application using this API should prompt the user that the ID they have provided is not valid and to capture image of a different ID. |
73 | Suspicious ID |
|
The application using this API should prompt the user that the ID they have provided is not valid and to capture an image of a different ID. |
71 | Tampered ID | An ID has been confirmed to be tampered with after manual review. | The application using this API should prompt the user that the ID they have provided is not valid and to capture image of a different ID. |
15 | Template Not Found | The correct template cannot be matched against those configured for the client. Note: The system will not find a template to associate with the image for correct data extraction and validation. |
The application using the API should prompt the user to capture a different ID. |
80 | Third Party Verification Failed | If an ID has not been successfully verified by a third party. |
|
72 | Under the age of 18 | The date of birth (extracted from the barcode / MRZ) calculates the individual as under the age of 18. |
The date of birth indicates that the user is under the age of 18 Note: The API can determine if this was already indicated in the application. If it was not indicated, the API should prompt for correct ID. |
118 | Under the Age of 21 | The date of birth (extracted from the barcode / MRZ) calculates the individual as under the age of 21. | The date of birth indicates that the user is under the age of 21. Note: The API can determine if this was already indicated in the application. If it was not indicated, the API should prompt for correct ID. |
129 | VideoID Audio Match Failed | The user’s Audio captured in the videoID does not match the Audio data in the database from a previously enrolled user. | The application using this SDK/API should prompt the user to recapture their VideoID and can be captured with clarity and accuracy. |
131 | ID and VideoID Not Matched | The user's captured ID does not match the ID in the VideoID | The application using this SDK/API should prompt the user to recapture their VideoID and can be captured with clarity and accuracy. |
133 | VideoID Face Match Failed | The user's captured Selfie does not match the Face in the VideoID | The application using this SDK/API should prompt the user to recapture their VideoID and can be captured with clarity and accuracy. |
APPENDIX D – Manual Review Form Status and State Codes
If Manual Review is requested and the form moves into a ‘Review…’ formStatus, this is the list of values that the formStatus will show until manual review is completed. These are not the final form states, this is just a temporary formStatus that will be present until review is completed.
State Code |
Form Status |
Description | Recommended Actions |
---|---|---|---|
104 | Review Barcode | If a barcode is expected to be present, and the barcode data is not detected by our system. | Manual review of the ID in the Back Office to verify the information on the front of the ID against what is shown on the back. |
111 | Review Duplicate Employee Found | If the submitted biometric data matches data already associated with an enrolled employee. | The submission will be manually reviewed in the back-office to determine if the matches found are true duplicates and will action the form accordingly. |
134 | Review DOB Match Failed | If the Date of Birth submitted in the request for the Customer or the Employee doesn’t meet the matching thresholds against the Date of Birth extracted from the ID Document. | Manual Review in the Back Office to compare the Date of Birth submitted in the request against the Date of Birth extracted from the ID. |
95 | Review Expired ID | If an ID has an expiration date that is expired as of today's date. | Manual review of the ID in the back-office to determine if the ID is truly expired or not. |
136 | Review Expiry Date Match Failed | If the Expiration Date submitted in the request for the Customer or the Employee doesn’t meet the matching thresholds against the Expiration Date extracted from the ID Document. | Manual Review in the Back Office to compare the Expiration Date submitted in the request against the Expiration Date extracted from the ID. |
93 | Review Face Not Detected | If a face is not detected on an image. The main reason for this is that the face was not present on the ID, however in some cases this could be due to poor image quality, or if there is a glare throughout the image. | Manual review of the ID in the Back Office to determine if a face is actually present on the ID. |
102 | Review Facial Biometric Match Not Verified | If a customer photo is captured and does not biometrically match the photo in the ID document, the ability to review the images is in the back office. | Manual review of the ID in the Back Office to determine if the Customer Photo is a match to the photo on the ID. If the person appears to be the same, it would be Approved, if not, it would be marked as ‘Facial Biometric Match Failed’. |
90 | Review Forced | This form state occurs when the Manual Review flag is set to F (Forced), which requires every form to be reviewed by the back-office team. | The ID will be manually reviewed in the back-office and decisioned into the appropriate form state. |
94 | Review ID Back Image not found | If the flags that determine a back image is not found are questionable, then the ability to review the ID back image is available in the back office. | Manual review of the ID back image in the Back Office to determine if its present and valid. |
105 | Review ID Front and Back Mismatch | If the back of an ID is expected to be present and if the data extracted from the front of the ID data does not match the data extracted from the barcode, then the ability to review the data is available in the Back Office. | Manual review of the ID in the Back Office because the data from the front does not match the data extracted from the barcode. The back office user will need to be able to see the ID Number field that was extracted from the front of the ID vs what was extracted from the barcode. They can manually compare this to the image to see if it's actually a mismatch or if it was an issue with OCR extraction. |
103 | Review ID Front Image Not Found | If the front of an ID is not uploaded or a blank image was provided. | Manual review of the ID front image in the Back Office to see if its present and valid. |
108 | Review ID Type Mismatch | If the ID Type submitted doesn’t match the ID Type extracted from the ID Image. | Manual Review of the ID in the Back Office to determine if the template match is correct based on the ID Type submitted. |
126 | Review IDNumber Match Failed | The ID Number that was extracted by OCR from the ID does not match the ID Number that was extracted from the MRZ or Barcode, OR the ID Number submitted in the request does not match the ID Number that was extracted through OCR. | Manual Review in the Back Office to compare the ID Number submitted in the request against the ID Number extracted from the ID. |
63 | Review Invalid ID Number | The ID Number on the ID does not match the pattern defined in the ID Template. | The ID will be manually reviewed in the back office to determine if the ID number matches the pattern defined in the ID template and was extracted incorrectly. |
109 | Review Key Component Not Visible | A key component that is expected on the ID is missing such as the Date of birth, expiration date, photo, etc. | Manual Review of the ID in the Back Office to determine if the components are present but just weren’t extracted. |
116 | Review Live Face Not Detected | If the live photo submitted fails the liveness checks based on IDmission's liveness detection logic. | Manual Review in the back-office. This occurs when an image fails the liveness check. |
96 | Review Low Resolution | If either the front or back image that is uploaded has been detected as low resolution or the ID image is not a color/gray scale image. This is based on resolution thresholds defined in our system. | Manual review of the ID in the Back Office to determine if the ID images have a clear enough resolution to be reviewed and validated. |
106 | Review MRZ and ID Data Mismatch | If the data extracted from the MRZ does not match the data extracted from the ID image itself. | Manual review of the ID in the Back office because the data from the front does not match the data extracted from the MRZ. The back-office user will need to be able to see the ID Number field that was extracted from the front of the ID vs what was extracted from the MRZ. They can manually compare this to the image to see if it's actually a mismatch or if it was an issue with OCR extraction. |
91 | Review MRZ Invalid | If the MRZ Validation flag (Machine Readable Zone) is questionable, and MRZ Data is expected to be present, then the ability to review the MRZ is available in the back office. An MRZ parsing tool is provided in the event the MRZ extracted might have a few characters transposed. | Manual Review of the ID in the Back Office. The MRZ String should be provided and an MRZ parsing tool should be present for the back-office user to utilize. In most cases, this is due to a glare on the MRZ so the data was extracted improperly. It can be manually fixed and tested to ensure the MRZ is truly valid. |
107 | Review Name Match Failed | If the name submitted for the Customer or the Employee doesn’t meet the matching thresholds against the name extracted from the ID Document. | Manual Review in the Back Office of the name submitted against the name extracted from the ID. |
98 | Review No Image Found | If the ID front and back images were not uploaded or a blank image was provided. | The ID front and back images will be manually reviewed in the back-office to see if they are present and valid. |
97 | Review Security Feature Invalid | If one or more security features defined for the ID template are detected as not matching with the image provided. | Manual Review in the Back Office. This occurs when the ID Template the image is matched against indicates the placement of the security feature is off or is not present. |
112 | Review Suspected Tampering | If photo editing software (e.g., Microsoft Paint, Adobe Photoshop) or other means of ID tampering were detected. | The ID will be manually reviewed in the back-office to investigate whether the ID has been tampered with. |
113 | Review Suspicious ID | If an ID is found to be suspicious based on IDmission’s AI logic. | Manual Review in the back-office. This occurs when an ID is found to be suspicious. |
92 | Review Template Not Found | If the image provided does not match any ID templates that are configured for a client, it can be reviewed by a back office team to determine if the image was just of poor quality and if it should be accepted OR if it should be rejected OR if the template needs to be setup and configured for that client. | Manual Review in the Back Office. This is generally due to poor image quality, so a manual check is required to see if it's truly a valid and accepted ID type for the region / customer. |
101 | Review Under the age of 18** | If the date of birth (extracted from the barcode/MRZ) calculates the individual as under the age of 18. | Manual review of the ID in the Back Office to determine if the date of birth extracted has resulted in a proper calculated age. |
114 | Review Verification Results | If the verification results through a third-party verification process are flagged to be reviewed. For example, the customer name matched against a watchlist. | The verification results will be manually reviewed in the back-office |
117 | Review Under the age of 21 | If the date of birth (extracted from the barcode/MRZ) calculates the individual as under the age of 21. | Manual review of the ID in the Back Office to determine if the date of birth extracted has resulted in a proper calculated age. |
128 | Review VideoID Audio Match Failed | The user’s Audio captured in the videoID does not match the Audio data in the database from a previously enrolled user. | Manual review of the VideoID Audio in the Back Office to determine if the Customer Audio is a match to the VideoID Audio previously recorded. If the person appears to be the same, it would be Approved, if not, it would be marked as ‘VideoID Audio Match Failed'. |
130 | Review ID and VideoID Not Matched | The user's captured ID does not match the ID in the VideoID | Manual review of the VideoID ID in the Back Office to determine if the Customer ID is a match to the ID captured in the Video . If the person appears to be the same, it would be Approved, if not, it would be marked as ‘ID and VideoID Not Matched'. |
132 | Review VideoID Face Match Failed | The user's captured Selfie does not match the Face in the VideoID | Manual review of the Selfie and Face in the VideoID in the Back Office to determine if the Customer's Face is a match. If the person appears to be the same, it would be Approved, if not, it would be marked as ‘VideoID Face Match Failed’. |
APPENDIX E – ID Types Codes
ID Type Code | ID Type Description |
---|---|
PP | PASSPORT |
NID | NATIONAL_ID |
RID | RESIDENCE_CARD |
DL | DRIVERS_LICENSE |
PID | PHOTO_ID |
VID | VOTER_ID_CARD |
TID | TAX_ID_CARD |
WV | WORK_VISA_PERMIT |
SV | STUDENT_VISA_PERMIT |
GID | MILITARY_POLICE_GOVERNMENT_ID |
BID | BOAT_SHIP_ID_CARD |
OTH | OTHERS |
GE | GLOBAL_ENTRY_CARD |
PPC | PASSPORT CARD |
NSP | NOT SPECIFIED |
UNR | UNITED_NATION_REFUGEE_CARD |
TD | TRAVEL_DOCUMENT |
BC | BANK_CARD |
PPA | PASSPORT_ADDRESS |
APPENDIX F – ISO Country Codes
Country Code | Country Name |
---|---|
AFG | Afghanistan |
ALA | Aland Islands |
ALB | Albania |
DZA | Algeria |
ASM | American Samoa |
AND | Andorra |
AGO | Angola |
AIA | Anguilla |
ATA | Antarctica |
ATG | Antigua and Barbuda |
ARG | Argentina |
ARM | Armenia |
ABW | Aruba |
AUS | Australia |
AUT | Austria |
AZE | Azerbaijan |
BHS | Bahamas |
BHR | Bahrain |
BGD | Bangladesh |
BRB | Barbados |
BLR | Belarus |
BEL | Belgium |
BLZ | Belize |
BEN | Benin |
BMU | Bermuda |
BTN | Bhutan |
BOL | Bolivia |
BES | Bonaire, Sint Eustatius and Saba |
BIH | Bosnia and Herzegovina |
BWA | Botswana |
BVT | Bouvet Island |
BRA | Brazil |
IOT | British Indian Ocean Territory |
BRN | Brunei Darussalam |
BGR | Bulgaria |
BFA | Burkina Faso |
BDI | Burundi |
KHM | Cambodia |
CMR | Cameroon |
CAN | Canada |
CPV | Cape Verde |
CYM | Cayman Islands |
CAF | Central African Republic |
TCD | Chad |
CHL | Chile |
CHN | China |
CXR | Christmas Island |
CCK | Cocos (Keeling) Islands |
COL | Colombia |
COM | Comoros |
COG | Congo |
COD | Congo, The Democratic Republic of |
COK | Cook Islands |
CRI | Costa Rica |
CIV | Cote d'Ivoire |
HRV | Croatia |
CUB | Cuba |
CUW | Curaçao |
CYP | Cyprus |
CZE | Czechia |
DNK | Denmark |
DJI | Djibouti |
DMA | Dominica |
DOM | Dominican Republic |
ECU | Ecuador |
EGY | Egypt |
SLV | El Salvador |
GNQ | Equatorial Guinea |
ERI | Eritrea |
EST | Estonia |
ETH | Ethiopia |
FLK | Falkland Islands (Malvinas) |
FRO | Faroe Islands |
FJI | Fiji |
FIN | Finland |
FRA | France |
GUF | French Guiana |
PYF | French Polynesia |
ATF | French Southern Territories |
GAB | Gabon |
GMB | Gambia |
GEO | Georgia |
DEU | Germany |
GHA | Ghana |
GIB | Gibraltar |
GRC | Greece |
GRL | Greenland |
GRD | Grenada |
GLP | Guadeloupe |
GUM | Guam |
GTM | Guatemala |
GGY | Guernsey |
GIN | Guinea |
GNB | Guinea-Bissau |
GUY | Guyana |
HTI | Haiti |
HMD | Heard and Mc Donald Islands |
VAT | Holy See (Vatican City State) |
HND | Honduras |
HKG | Hong Kong |
HUN | Hungary |
ISL | Iceland |
IND | India |
IDN | Indonesia |
IRN | Iran, Islamic Republic of |
IRQ | Iraq |
IRL | Ireland |
IMN | Isle of Man |
ISR | Israel |
ITA | Italy |
JAM | Jamaica |
JPN | Japan |
JEY | Jersey |
JOR | Jordan |
KAZ | Kazakstan |
KEN | Kenya |
KIR | Kiribati |
PRK | Korea, Democratic People's Republic of |
KOR | Korea, Republic of |
XKX | Kosovo (temporary code) |
KWT | Kuwait |
KGZ | Kyrgyzstan |
LAO | Lao, People's Democratic Republic |
LVA | Latvia |
LBN | Lebanon |
LSO | Lesotho |
LBR | Liberia |
LBY | Libyan Arab Jamahiriya |
LIE | Liechtenstein |
LTU | Lithuania |
LUX | Luxembourg |
MAC | Macao |
MKD | Macedonia, The Former Yugoslav Republic Of |
MDG | Madagascar |
MWI | Malawi |
MYS | Malaysia |
MDV | Maldives |
MLI | Mali |
MLT | Malta |
MHL | Marshall Islands |
MTQ | Martinique |
MRT | Mauritania |
MUS | Mauritius |
MYT | Mayotte |
MEX | Mexico |
FSM | Micronesia, Federated States of |
MDA | Moldova, Republic of |
MCO | Monaco |
MNG | Mongolia |
MNE | Montenegro |
MSR | Montserrat |
MAR | Morocco |
MOZ | Mozambique |
MMR | Myanmar |
NAM | Namibia |
NRU | Nauru |
NPL | Nepal |
NLD | Netherlands |
NCL | New Caledonia |
NZL | New Zealand |
NIC | Nicaragua |
NER | Niger |
NGA | Nigeria |
NIU | Niue |
NFK | Norfolk Island |
MNP | Northern Mariana Islands |
NOR | Norway |
OMN | Oman |
PAK | Pakistan |
PLW | Palau |
PSE | Palestinian Territory, Occupied |
PAN | Panama |
PNG | Papua New Guinea |
PRY | Paraguay |
PER | Peru |
PHL | Philippines |
PCN | Pitcairn |
POL | Poland |
PRT | Portugal |
PRI | Puerto Rico |
QAT | Qatar |
SRB | Republic of Serbia |
REU | Reunion |
ROU | Romania |
RUS | Russia Federation |
RWA | Rwanda |
BLM | Saint Barthélemy |
SHN | Saint Helena |
KNA | Saint Kitts & Nevis |
LCA | Saint Lucia |
MAF | Saint Martin |
SPM | Saint Pierre and Miquelon |
VCT | Saint Vincent and the Grenadines |
WSM | Samoa |
SMR | San Marino |
STP | Sao Tome and Principe |
SAU | Saudi Arabia |
SEN | Senegal |
SYC | Seychelles |
SLE | Sierra Leone |
SGP | Singapore |
SXM | Sint Maarten |
SVK | Slovakia |
SVN | Slovenia |
SLB | Solomon Islands |
SOM | Somalia |
ZAF | South Africa |
SGS | South Georgia & The South Sandwich Islands |
SSD | South Sudan |
ESP | Spain |
LKA | Sri Lanka |
SDN | Sudan |
SUR | Suriname |
SJM | Svalbard and Jan Mayen |
SWZ | Swaziland |
SWE | Sweden |
CHE | Switzerland |
SYR | Syrian Arab Republic |
TWN | Taiwan, Province of China |
TJK | Tajikistan |
TZA | Tanzania, United Republic of |
THA | Thailand |
TLS | Timor-Leste |
TGO | Togo |
TKL | Tokelau |
TON | Tonga |
TTO | Trinidad and Tobago |
TUN | Tunisia |
TUR | Turkey |
XTX | Turkish Rep N Cyprus (temporary code) |
TKM | Turkmenistan |
TCA | Turks and Caicos Islands |
TUV | Tuvalu |
UGA | Uganda |
UKR | Ukraine |
ARE | United Arab Emirates |
GBR | United Kingdom |
USA | United States |
UMI | United States Minor Outlying Islands |
URY | Uruguay |
UZB | Uzbekistan |
VUT | Vanuatu |
VEN | Venezuela |
VNM | Vietnam |
VGB | Virgin Islands, British |
VIR | Virgin Islands, U.S. |
WLF | Wallis and Futuna |
ESH | Western Sahara |
YEM | Yemen |
ZMB | Zambia |
ZWE | Zimbabwe |
APPENDIX G – ISO State Codes
State Code | Country Code | State Name |
---|---|---|
AL | USA | Alabama |
AK | USA | Alaska |
AZ | USA | Arizona |
AR | USA | Arkansas |
CA | USA | California |
CO | USA | Colorado |
CT | USA | Connecticut |
DE | USA | Delaware |
FL | USA | Florida |
GA | USA | Georgia |
HI | USA | Hawaii |
ID | USA | Idaho |
IL | USA | Illinois |
IN | USA | Indiana |
IA | USA | Iowa |
KS | USA | Kansas |
KY | USA | Kentucky |
LA | USA | Louisiana |
ME | USA | Maine |
MD | USA | Maryland |
MA | USA | Massachusetts |
MI | USA | Michigan |
MN | USA | Minnesota |
MS | USA | Mississippi |
MO | USA | Missouri |
MT | USA | Montana |
NE | USA | Nebraska |
NV | USA | Nevada |
NH | USA | New Hampshire |
NJ | USA | New Jersey |
NM | USA | New Mexico |
NY | USA | New York |
NC | USA | North Carolina |
ND | USA | North Dakota |
OH | USA | Ohio |
OK | USA | Oklahoma |
OR | USA | Oregon |
PA | USA | Pennsylvania |
RI | USA | Rhode Island |
SC | USA | South Carolina |
SD | USA | South Dakota |
TN | USA | Tennessee |
TX | USA | Texas |
UT | USA | Utah |
VT | USA | Vermont |
VA | USA | Virginia |
WA | USA | Washington |
WV | USA | West Virginia |
WI | USA | Wisconsin |
WY | USA | Wyoming |
ON | CAN | Ontario |
QC | CAN | Quebec |
NS | CAN | Nova Scotia |
NB | CAN | New Brunswick |
MB | CAN | Manitoba |
BC | CAN | British Columbia |
PE | CAN | Prince Edward Island |
SK | CAN | Saskatchewan |
AB | CAN | Alberta |
NL | CAN | Newfoundland and Labrador |
NSW | AUS | New South Wales |
QLD | AUS | Queensland |
SA | AUS | South Australia |
TAS | AUS | Tasmania |
VIC | AUS | Victoria |
WA | AUS | Western Australia |