Trulioo

Trulioo Developer Portal

Welcome to the Trulioo's developer hub. You'll find comprehensive guides and documentation to help you start working with Trulioo as quickly as possible, as well as support if you get stuck. Let's jump right in!

Get Started

Step 6: Verify

Once steps 1 through 5 have been completed you should have everything needed to carry out a Verify request. Using one of the country codes from step 3, the fields from step 4, and any necessary consents from step 5, you can now run the following request.

Request

Explanation of additional fields:

  • AcceptTruliooTermsAndConditions: This flag indicates that you accept Trulioo terms and conditions. The verification request will be executed only if the value of this field is passed as 'true'.
  • CleansedAddress: Trulioo provides a service to check address data and ensure it is correct and all necessary address fields are provided. In general these cleansed addresses have a higher likelihood of producing a match result. Contact Trulioo Support if you are interested in configuring address cleansing for your account. Once address cleansing is configured, set this field to true to receive address cleanse information.
  • ConfigurationName: For now this should be hard-coded to "Identity Verification".

Sandbox Accounts

If you are configured for a sandbox account make sure to call Get Test Entities to get test data for a country you want to try. Sandbox accounts only use these test entities and so trying to verify with any other data will result in no matches being found.

POST https://api.globaldatacompany.com/verifications/v1/verify
Authorization: Basic ACCESS_TOKEN
Content-Type: application/json
body:
{
  "AcceptTruliooTermsAndConditions": true,
  "CleansedAddress": false,
  "ConfigurationName": "Identity Verification",
  "ConsentForDataSources": [
    "Birth Registry",
    "Visa Verification",
    "DVS ImmiCard Search",
    "DVS Citizenship Certificate Search",
    "Credit Agency"
  ],
  "CountryCode": "AU",
  "DataFields": {
    "PersonInfo": {
      "FirstGivenName": "John",
      "MiddleName": "Henry",
      "FirstSurName": "Smith",
      "DayOfBirth": 5,
      "MonthOfBirth": 3,
      "YearOfBirth": 1983,
      "Gender": "M"
    },
    "Location": {
      "BuildingNumber": "10",
      "UnitNumber": "3",
      "StreetName": "Lawford",
      "StreetType": "st",
      "City": "NAPOLI",
      "Suburb": "Doncaster",
      "StateProvinceCode": "VIC",
      "PostalCode": "3108"
    },
    "Communication": {
      "Telephone": "03 9896 8785",
      "EmailAddress": "testpersonAU@gdctest.com"
    },
    "CountrySpecific": {
      "AU": {
        "AuImmiCardNumber": "EIS123456",
      }
    }
  },
  "VerboseMode": false
}
//Example Username: JoeNapoli_API_Demo, Example Password: 05uZuPRCyPi!6
var truliooClient = new TruliooApiClient("JoeNapoli_API_Demo", "05uZuPRCyPi!6");
VerifyRequest request = new VerifyRequest()
{
    AcceptTruliooTermsAndConditions = true,
    Demo = true,
    CleansedAddress = false,
    ConfigurationName = "Identity Verification",
    ConsentForDataSources = new string[]
        {
            "Australia Driver License",
            "Australia Passport",
            "Birth Registry",
            "Visa Verification",
            "DVS Driver License Search",
            "DVS Medicare Search",
            "DVS Passport Search",
            "DVS Visa Search",
            "DVS ImmiCard Search",
            "DVS Citizenship Certificate Search",
            "DVS Certificate of Registration by Descent Search",
            "Credit Agency"
        },
    CountryCode = "AU",
    DataFields = new DataFields()
    {
        PersonInfo = new PersonInfo()
        {
            FirstGivenName = "John",
            MiddleName = "Henry",
            FirstSurName = "Smith",
            DayOfBirth = 5,
            MonthOfBirth = 3,
            YearOfBirth = 1983,
            Gender = "M"
        },
        Location = new Location()
        {
            BuildingNumber = "10",
            UnitNumber = "3",
            StreetName = "Lawford",
            StreetType = "st",
            Suburb = "Doncaster",
            StateProvinceCode = "VIC",
            PostalCode = "3108"
        },
        Communication = new Communication()
        {
            Telephone = "03 9896 8785",
            EmailAddress = "testpersonAU@gdctest.com"
        },
        DriverLicence = new DriverLicence()
        {
            Number = "076310691",
            State = "VIC",
            DayOfExpiry = 3,
            MonthOfExpiry = 4,
            YearOfExpiry = 2021
        },
        NationalIds = new NationalId[]
        {
            new NationalId()
            {
                Number = "5643513953",
                Type = "Health"
            }
        },
        Passport = new Passport()
        {
            Mrz1 = "P<SAGSMITH<<JOHN<HENRY<<<<<<<<<<<<<<<<<<<<<<",
            Mrz2 = "N1236548<1AUS8303052359438740809<<<<<<<<<<54",
            Number = "N1236548",
            DayOfExpiry = 5,
            MonthOfExpiry = 12,
            YearOfExpiry = 2018
        },
        CountrySpecific = new CountrySpecific()
        {
            { "AU",
                new Dictionary<string, string>()
                {
                    { "AuImmiCardNumber", "EIS123456" },
                    { "CitizenshipAcquisitionDay", "15" },
                    { "CitizenshipAcquisitionMonth", "4" },
                    { "CitizenshipAcquisitionYear", "1987" },
                    { "CountryOfBirth", "Australia" },
                    { "FamilyNameAtBirth", "Smith" },
                    { "MedicareColor", "Blue" },
                    { "MedicareMonthOfExpiry", "12" },
                    { "MedicareReference", "2" },
                    { "MedicareYearOfExpiry", "2017" },
                    { "PassportCountry", "Australia" },
                    { "PlaceOfBirth", "Melbourne" },
                    { "RegistrationNumber", "565659" },
                    { "RegistrationState", "NSW" },
                    { "StockNumber", "ACD1234567" }
                }
            }
        }
    }
};
            
VerifyResult result = await truliooClient.Verification
    .VerifyAsync(request);
//Example Username: JoeNapoli_API_Demo, Example Password: 05uZuPRCyPi!6
ApiClient apiClient = new ApiClient();
apiClient.setUsername("JoeNapoli_API_Demo");
apiClient.setPassword("05uZuPRCyPi!6");
VerificationsApi verificationClient = new VerificationsApi(apiClient);
VerifyRequest request = new VerifyRequest()
    .acceptTruliooTermsAndConditions(Boolean.TRUE)
    .demo(true)
    .cleansedAddress(false)
    .configurationName("Identity Verification")
    .countryCode("AU")
    .consentForDataSources(new ArrayList<>(Arrays.asList(
        "Australia Driver License",
        "Australia Passport",
        "Birth Registry",
        "Visa Verification",
        "DVS Driver License Search",
        "DVS Medicare Search",
        "DVS Passport Search",
        "DVS Visa Search",
        "DVS ImmiCard Search",
        "DVS Citizenship Certificate Search",
        "DVS Certificate of Registration by Descent Search",
        "Credit Agency")))
    .dataFields(new DataFields()
        .personInfo(new PersonInfo()
            .firstGivenName("John")
            .middleName("Henry")
            .firstSurName("Smith")
            .yearOfBirth(1983)
            .monthOfBirth(3)
            .dayOfBirth(5)
            .gender("M"))
        .location(new Location()
            .postalCode("3108")
            .buildingNumber("10")
            .unitNumber("3")
            .streetName("Lawford")
            .streetType("st")
            .suburb("Doncaster")
            .stateProvinceCode("VIC")
            .city("Vancouver"))
        .communication(new Communication()
            .telephone("03 9896 8785")
            .emailAddress("testpersonAU@gdctest.com"))
            .driverLicence(new DriverLicence()
            .number("076310691")
            .state("VIC")
            .dayOfExpiry(3)
            .monthOfExpiry(4)
            .yearOfExpiry(2021))
        .nationalIds(Arrays.asList(new NationalId()
            .number("5643513953")
            .type("Health")))
        .passport(new Passport()
            .mrz1("P<SAGSMITH<<JOHN<HENRY<<<<<<<<<<<<<<<<<<<<<<")
            .mrz2("N1236548<1AUS8303052359438740809<<<<<<<<<<54")
            .number("N1236548")
            .dayOfExpiry(5)
            .monthOfExpiry(12)
            .yearOfExpiry(2018))
        .countrySpecific(new HashMap<String, Map<String, String>>(){{
            put("AU", new HashMap<String, String>(){{
                put("AuImmiCardNumber", "EIS123456");
                put("CitizenshipAcquisitionDay", "15");
                put("CitizenshipAcquisitionMonth", "4");
                put("CitizenshipAcquisitionYear", "1987");
                put("CountryOfBirth", "Australia");
                put("FamilyNameAtBirth", "Smith");
                put("MedicareColor", "Blue");
                put("MedicareMonthOfExpiry", "12");
                put("MedicareReference", "2");
                put("MedicareYearOfExpiry", "2017");
                put("PassportCountry", "Australia");
                put("PlaceOfBirth", "Melbourne");
                put("RegistrationNumber", "565659");
                put("RegistrationState", "NSW");
                put("StockNumber", "ACD1234567");}});
}}));
//verify
VerifyResult result = verificationClient.verify(request);
//verifyAsync
verificationClient.verifyAsync(request, new ApiCallback<VerifyResult>() {
    @Override
    public void onFailure(ApiException e, int statusCode, Map<String, List<String>> responseHeaders) {
        Logger.getLogger(SdkJavaV1Sample.class.getName()).log(Level.SEVERE, null, e);
    }
    @Override
    public void onSuccess(VerifyResult result, int statusCode, Map<String, List<String>> responseHeaders) {
        System.out.println(result); //To change body of generated methods, choose Tools | Templates.
    }
    @Override
    public void onUploadProgress(long bytesWritten, long contentLength, boolean done) {
        //To change body of generated methods, choose Tools | Templates.
    }
    @Override
    public void onDownloadProgress(long bytesRead, long contentLength, boolean done) {
        //To change body of generated methods, choose Tools | Templates.
    }
});

Response

There's a lot of information provided in the response, which will be broken down in full detail in the next section of this guide Understanding a Verify Response. For now, the first things to pay attention to are:

  • RecordStatus: This field is the overall value of the verification. Match means that the individual has been verified, any other value means that they have not.
  • DatasourceResults: This contains an array of results from every datasource your verification has been run against. Every datasource result has the same standard format, so it's easy to parse results from many sources at once.
{
  "TransactionID": "d3e5d20c-3ad7-448d-9034-b28c68d6db07",
  "UploadedDt": "2017-07-11T21:47:50",
  "Record": {
    "TransactionRecordID": "0ac8ccee-ab7a-495e-8b88-a6da1bdcb6ae",
    "RecordStatus": "match",
    "DatasourceResults": [
      {
        "DatasourceName": "Australia Citizen File",
        "DatasourceFields": [
          {
            "FieldName": "BuildingNumber",
            "Status": "match"
          },
          {
            "FieldName": "MiddleName",
            "Status": "match"
          },
          {
            "FieldName": "StreetName",
            "Status": "match"
          },
          {
            "FieldName": "UnitNumber",
            "Status": "match"
          },
          {
            "FieldName": "Suburb",
            "Status": "match"
          },
          {
            "FieldName": "StreetType",
            "Status": "match"
          },
          {
            "FieldName": "Telephone",
            "Status": "match"
          },
          {
            "FieldName": "DayOfBirth",
            "Status": "match"
          },
          {
            "FieldName": "FirstSurName",
            "Status": "match"
          },
          {
            "FieldName": "StateProvinceCode",
            "Status": "match"
          },
          {
            "FieldName": "MonthOfBirth",
            "Status": "match"
          },
          {
            "FieldName": "PostalCode",
            "Status": "match"
          },
          {
            "FieldName": "FirstInitial",
            "Status": "match"
          },
          {
            "FieldName": "YearOfBirth",
            "Status": "match"
          },
          {
            "FieldName": "FirstGivenName",
            "Status": "match"
          },
          {
            "FieldName": "MiddleInitial",
            "Status": "match"
          }
        ],
        "AppendedFields": [],
        "Errors": [],
        "FieldGroups": []
      },
      {
        "DatasourceName": "Credit Agency",
        "DatasourceFields": [
          {
            "FieldName": "StreetName",
            "Status": "match"
          },
          {
            "FieldName": "FirstInitial",
            "Status": "match"
          },
          {
            "FieldName": "BuildingNumber",
            "Status": "match"
          },
          {
            "FieldName": "FirstGivenName",
            "Status": "match"
          },
          {
            "FieldName": "StreetType",
            "Status": "match"
          },
          {
            "FieldName": "FirstSurName",
            "Status": "match"
          },
          {
            "FieldName": "Suburb",
            "Status": "match"
          },
          {
            "FieldName": "MiddleInitial",
            "Status": "match"
          },
          {
            "FieldName": "Telephone",
            "Status": "match"
          },
          {
            "FieldName": "MiddleName",
            "Status": "match"
          },
          {
            "FieldName": "UnitNumber",
            "Status": "match"
          },
          {
            "FieldName": "PostalCode",
            "Status": "match"
          },
          {
            "FieldName": "StateProvinceCode",
            "Status": "match"
          }
        ],
        "AppendedFields": [],
        "Errors": [],
        "FieldGroups": []
      }
    ],
    "Errors": [],
    "Rule": {
      "RuleName": "Category 3 KYC v3",
      "Note": "Match(FamilyAndGivenInitial, DOB) or Match(FamilyAndGivenInitial, FullAddress) or Match(FamilyAndGivenInitial, ID) MiddleName Ignored"
    }
  },
  "Errors": []
}

By following a few simple set up steps, you are now able to send a verification request for any identity and receive a set of rich, detailed results. Trulioo provides the overall match signal (RecordStatus), individual match signals for each field underneath the datasource results (Status), any additional information returned from a datasource (AppendedFields), and the rule being used to judge whether an individual is verified (Rule). This gives you full transparency into the results of all your verification requests.


Step 6: Verify


Suggested Edits are limited on API Reference Pages

You can only suggest edits to Markdown body content, but not to the API spec.