Basic KYC in Uganda

Overview

The Basic KYC API allows you to verify the identity information for an individual using their personal information and the ID number from one of our supported ID Types. This API will return a value of no match, partial match, or exact match along with detailed data of the matching outcome of specific fields.

How Basic KYC in Uganda differs from other countries

When running Basic KYC in Uganda, you are required to send us the NIN as the id_number, the card number as secondary_id_number, date of birth as dob.

Integration Options

Currently only available via the Rest API.

Asynchronous vs Synchronous

This API is available as both an Asynchronous API (recommended) and as a Synchronous API.

The Asynchronous API guarantees an eventual response regardless of ID authority availability. The Synchronous API is suited for real-time environments, such as mobile applications. It does not guarantee a response in the event that an ID authority is unavailable.

For high volume applications the Asynchronous API is required. If you are using the Asynchronous API you must have a callback endpoint in your request where the response will be delivered. The urls for the endpoints are:

Asynchronous

Synchronous

Request Values

The Basic KYC API has the following input parameters. They should be contained in a JSON body object submitted to the endpoint.

Request Type: Post

Example JSON Body

{
  "source_sdk": "rest_api",
  "source_sdk_version": "2.0.0",
  "partner_id": "023",
  "timestamp": "2021-08-12T17:57:00.614879",
  "signature": "...",
  "country": "UG",
  "id_type": "NATIONAL_ID_NO_PHOTO",
  "id_number": "0000000000000",
  "callback_url": "example.webhook.com",
  "secondary_id_number": "000000000",
  "dob": "2000-09-20",
  "partner_params": {
    "job_id": "3ba0e15e-1a56-4799-a94d-b0e084f50256",
    "user_id": "4cb0f26-2b567-5800-b05e-c0f095g6036"
  }
}

Return Values

The Basic KYC API returns a set of top-level values and a detailed set of actions that can be used for a more granular evaluation of the individual fields.

Example JSON Response

Depending on the endpoint you hit (asynchronous or synchronous) the immediate response you get is different.

For the Asynchronous Endpoint

{
  "success": true
}

For the Synchronous Endpoint (this is the same response sent to the callback of the asynchronous endpoint)

{
  "SmileJobID": "0000000571",
  "PartnerParams": {
    "job_id": "001",
    "user_id": "UG_Test_User_001",
    "job_type": 5
  },
  "ResultText": "Exact Match",
  "ResultCode": "1020",
  "Actions": {
    "DOB": "Exact Match",
    "Gender": "Not Provided",
    "ID_Verification": "Exact Match",
    "Names": "Not Provided",
    "Phone_Number": "Not Provided",
    "Return_Personal_Info": "Not Applicable",
    "Secondary_ID_Number": "Exact Match",
    "Verify_ID_Number": "Verified"
  },
  "Source": "ID Verification",
  "signature": "...",
  "timestamp": "2022-07-27T21:02:27.384Z"
}

Evaluating the Results

The overall result of the verification can be any of the following:

  • Exact match: Both the date of birth and the secondary ID number were exact matches with the data in the ID authority’s database

  • Partial match: Either the date of birth OR the secondary ID number was an an exact match; the other was not a match

  • No match: Both the date of birth and secondary ID number were no matches

We advise that you build your own business logic to handle cases where the overall result is a partial match. The business logic should be based on the individual match results of the date of birth and secondary ID number fields (returned as DOB and Secondary_ID_Number in the Actions object). The individual match results are based on the following:

Result Codes and Result Texts

General Failures Result Codes and Texts

This means no further processing is possible on the job. General failures occur when a job could not be submitted due to a logical/technical issue. These jobs do not show up in the portal and do not have a Smile Job ID.

Product Specific Result Codes and Texts

Last updated