---
title: "Canada"
url: "https://developer.incode.com/general-reference/ekyc-reference-canada/"
section: "general-reference"
group: "eKYC Reference / eKYC Coverage"
version: "v1.1"
status: "live"
---
Canada eKYC verification matches submitted individual data against Canadian sources of truth. See the [eKYC API Reference](https://developer.incode.com/v1.1_shipweek/docs/ekyc-api-reference) for common response semantics that apply across all sources.

## Available sources

| Source                   | API source string                   | Description                                                                                      |
| ------------------------ | ----------------------------------- | ------------------------------------------------------------------------------------------------ |
| CA RES CREDIT            | `CA_RES_CREDIT`                     | Verifies submitted data against Canadian residential and credit records.                         |
| CA Credit Bureau FINTRAC | `CA_CREDIT_FINTRAC` | Verifies submitted data against Canadian credit bureau records for FINTRAC compliance workflows. |


## CA RES CREDIT

### Request parameters

| Parameter     | Required  | Description                                                |
| ------------- | --------- | ---------------------------------------------------------- |
| `source`      | Mandatory | Must be `CA_RES_CREDIT`.                                   |
| `country`     | Mandatory | Must be `CA`.                                              |
| `firstName`   | Mandatory | First name of the individual.                              |
| `middleName`  | Optional  | Middle name of the individual.                             |
| `surName`     | Mandatory | Last name of the individual.                               |
| `street`      | Mandatory | Street name and house number.                              |
| `city`        | Mandatory | City of the individual's address (for example, `Toronto`). |
| `state`       | Mandatory | Province.                                                  |
| `postalCode`  | Mandatory | Postal code.                                               |
| `dateOfBirth` | Mandatory | Format: `yyyy-mm-dd`.                                      |
| `phone`       | Optional  | Phone number.                                              |

### Response fields

CA RES CREDIT anchors verification on the source-of-truth register. See the [eKYC API Reference](https://developer.incode.com/v1.1_shipweek/docs/ekyc-api-reference) for common match field definitions and status values.

| Field              | Statuses                    | Description                                                                                                 |
| ------------------ | --------------------------- | ----------------------------------------------------------------------------------------------------------- |
| `firstNameMatch`   | `exact`, `nomatch`          | Matches first name submitted against the value in the source of truth.                                      |
| `middleNameMatch`  | `exact`, `nomatch`          | Matches middle name submitted against the value in the source of truth.                                     |
| `lastNameMatch`    | `exact`, `nomatch`          | Matches last name submitted against the value in the source of truth.                                       |
| `fullNameMatch`    | `exact`, `nomatch`          | Matches full name submitted against the value in the source of truth.                                       |
| `dobMatch`         | `exact`, `nomatch`          | Matches date of birth submitted against the value in the source of truth.                                   |
| `streetMatch`      | `exact`, `nomatch`          | Matches street submitted against the value in the source of truth.                                          |
| `cityMatch`        | `exact`, `nomatch`          | Matches city submitted against the value in the source of truth.                                            |
| `stateMatch`       | `exact`, `nomatch`          | Matches province submitted against the value in the source of truth.                                        |
| `postalCodeMatch`  | `exact`, `nomatch`          | Matches postal code submitted against the value in the source of truth.                                     |
| `fullAddressMatch` | `exact`, `fuzzy`, `nomatch` | Matches full address (street, city, state, postal code) submitted against the value in the source of truth. |
| `phoneMatch`       | `exact`, `nomatch`          | Matches phone submitted against the value in the source of truth.                                           |
| `overallLevel`     | `low`, `medium`, `high`     | Overall risk level. See below for calculation logic.                                                        |

### overallLevel calculation

`overallLevel` is calculated based on the risk associated with the submitted full name, postal code, and date of birth:

- `low` when `fullNameMatch`, `postalCodeMatch`, and `dobMatch` are all `exact`.
- `high` when `fullNameMatch`, `postalCodeMatch`, and `dobMatch` are all `nomatch`.
- `medium` for all other combinations.

Contact your Incode representative to customize the `overallLevel` calculation for your use case.

### Sample response

```json
{
    "kyc": [
        { "key": "firstNameMatch", "status": "exact" },
        { "key": "middleNameMatch", "status": "exact" },
        { "key": "lastNameMatch", "status": "nomatch" },
        { "key": "fullNameMatch", "status": "nomatch" },
        { "key": "dobMatch", "status": "exact" },
        { "key": "streetMatch", "status": "exact" },
        { "key": "cityMatch", "status": "exact" },
        { "key": "stateMatch", "status": "exact" },
        { "key": "postalCodeMatch", "status": "exact" },
        { "key": "fullAddressMatch", "status": "fuzzy" },
        { "key": "phoneMatch", "status": "nomatch" },
        { "key": "overallLevel", "status": "medium" }
    ]
}
```

## CA Credit Bureau FINTRAC

Canada eKYC non-doc verification leverages Canada's source of truth to validate individuals. It is essential in eKYC processes for ensuring identity authenticity, regulatory compliance, and enhanced security. It helps prevent fraud, boosts user trust, and streamlines operations through automated and efficient verification methods.

eKYC module configuration gives various options to specify different search criteria with various sources of truth for each country (eg. US has multiple via Telco, Credit Bureau, and Driver's License). User data can be collected via a user input flow by using pre-selected fields where users can type in their name or date of birth, etc. See an example below:


<Image src="https://files.readme.io/3da5ab23367321193d4a51bdf86a643552adecb90fc7e8450e27ba7febf2e2e6-Screenshot_2025-11-03_at_14.39.49.png" align="center" caption="eKYC  user input flow example" />


### Module Configuration

The [module configuration](/dashboard-platform-administration/ekyc-dashboard) can be leveraged to select the applicable fields for the input data you would like to collect from the end user. 


<Image src="https://files.readme.io/2d6f18fcd67295ee4ab014daa0c7a1db24581c6f435fa37322aac9961212171f-SC_CA.png" align="center" caption="eKYC Module configuration" />


### Direct API Approach

All module configurations and user data can be forwarded directly in the request for performing an eKYC search. This will override existing configuration and data collected about the user.

  All endpoints require authentication headers to be specified as stated in [Incode API Documentation](https://developer.incode.com/reference/introduction)


### [**eKYC request**](https://developer.incode.com/reference/externalverificationekyb)

**POST /omni/externalVerification/ekyc**

This endpoint performs an eKYC check for the individual specified. Note: Endpoint can have empty body {} and in that case information will be pulled from module configuration and session details.

- **country**:  (mandatory) String. Two letter Alpha-2 country code. Must be CA.
- **source**: (mandatory) String. Must be CA_RES_CREDIT or CA_CREDIT_FINTRAC.
- **firstName:**: (mandatory) String. First name of the individual.
- **surName**: (mandatory) String. Last name of the individual.
- **middleName:**: (optional) String.
- **street**: (mandatory) String. (Address = street + houseNo in CA)
- **city**: (mandatory) String. City of the individual's address. (eg. Toronto).
- **state**: (mandatory) String.
- **postalCode**: (mandatory) String. postalCode formatted based on per-country postalCode basis.
- **dateOfBirth**: (mandatory) String. Format: YYYY-MM-DD (eg. 1980-06-21)
- **phone**: (mandatory) String.

Example Incode requests:

```json
{
    "plugins": ["kyc"],
	  "source": "CA_RES_CREDIT", //mandatory
    "firstName": "Daniel", //mandatory
    "middleName": "", //optional
    "surName": "Whitmore ", //mandatory
    "street": "2799 Maplewood Crescent", //mandatory - houseNo + street
    "city" : "Ottawa", //mandatory
    "state": "ON", // mandatory
    "postalCode": "K1R7X5", //mandatory
    "country": "CA", //mandatory
    "dateOfBirth" : "1991-08-02", //mandatory
    "phone": "+12048900252", //mandatory
}
```

```json
{
    "plugins": ["kyc"],
	  "source": "CA_CREDIT_FINTRAC", 
    "firstName": "John",
    "middleName": "", 
    "surName": "Doe",
    "street": "97 Main St",
    "city" : "Ottawa",
    "state": "ON",
    "postalCode": "K1M1N8",
    "country": "CA", 
    "dateOfBirth" : "1990-12-12", 
}
```

### Direct API Response

  All endpoints require authentication headers to be specified as stated in [Incode API Documentation](https://developer.incode.com/reference/introduction)


:::note
Endpoint can have empty body {} and in that case information will be pulled from module configuration and session details.
:::

Example Incode responses:

```json
{
    "kyc": [
        {
            "key": "firstNameMatch",
            "status": "Exact"; 
        },
        {
            "key": "middleNameMatch",
            "status": "Exact"
        },
        {
            "key": "lastNameMatch",
            "status": "Approximate Match"
        },
        {
            "key": "fullNameMatch",
            "status": "Fuzzy"
        },
        {
            "key": "dobMatch",
            "status": "Exact"
        },
        {
            "key": "streetMatch",
            "status": "Exact"
        },
        {
            "key": "cityMatch",
            "status": "Exact"
        },
        {
            "key": "stateMatch",
            "status": "Exact"
        },
        {
            "key": "postalCodeMatch",
            "status": "Exact"
        },
        {
            "key": "fullAddressMatch",
            "status": "Fuzzy"
        },
        {
            "key": "phoneMatch",
            "status": "Match"
        },
        {
            "key": "overallLevel",
            "status": "Low"
        }
    ]
}
```

```json
{
    "kyc": [
        {
            "key": "firstNameMatch",
            "status": "Exact"; 
        },
        {
            "key": "middleNameMatch",
            "status": "No Match"
        },
        {
            "key": "lastNameMatch",
            "status": "Exact"
        },
        {
            "key": "fullNameMatch",
            "status": "Exact"
        },
        {
            "key": "dobMatch",
            "status": "Exact"
        },
        {
            "key": "streetMatch",
            "status": "Exact"
        },
        {
            "key": "cityMatch",
            "status": "Exact"
        },
        {
            "key": "stateMatch",
            "status": "Exact"
        },
        {
            "key": "postalCodeMatch",
            "status": "Exact"
        },
        {
            "key": "fullAddressMatch",
            "status": "Exact"
        },
        {
            "key": "overallLevel",
            "status": "Low"
        },
        {
		        "key": "creditFileNumber", 
		        "status": "123456789"
		        
        },
        {
		        "key": "creditFileCreationDate", 
          "status": "01-14-2000"
        }
    ]
}
```

### **eKYC error responses**

Please refer to [error response](https://developer.incode.com/reference/introduction#api-responses) to see conventional HTTP response codes to indicate the success or failure of an API request.
For Canada, custom 400 error messages if taxId, or country is “ “ or null:

| Incode API Key | Status | Definition |
|---|---|---|
| firstNameMatch | exact, nomatch | Matches first name submitted against the name associated to the value in the source of truth. |
| middleNameMatch | exact, nomatch | Matches middle name submitted against the name associated to the value in the source of truth. |
| lastNameMatch | exact, nomatch | Matches last name submitted against the name associated to the value in the source of truth. |
| fullNameMatch (first_name, last_name, middle_name) | exact, nomatch | Matches full name (first_name, last_name, middle_name) submitted against the full name associated to the value in the source of truth. |
| dobMatch | exact, nomatch | Matches date of birth submitted against the date of birth associated to the value in the source of truth |
| streetMatch | exact, nomatch | Matches street submitted against the street associated to the value in the source of truth (address1) |
| cityMatch | exact, nomatch | Matches city submitted against the city associated to the value in the source of truth |
| stateMatch | exact, nomatch | Matches state submitted against the state associated to the value in the source of truth |
| postalCodeMatch | exact, nomatch | Matches postal code submitted against the postal code associated to the value in the source of truth |
| fullAddressMatch (StreetMatch, cityMatch, stateMatch, postalCodeMatch) | exact, fuzzy, nomatch | Matches full address (street, city, state, zip) submitted against the full address associated to the value in the source of truth |
| phoneMatch | exact, nomatch | Matches phone submitted against the phone associated to the value in the source of truth |
| creditFileNumber | Integer | The credit file number of the individual.<br />Note: This is only available if the credit file was created at least 3 years ago. For cases where the credit file was created 3 years ago or later, the response will be "_File created less than 3 years ago_". |
| creditFileCreationDate | Date | Date when credit file was created.<br />Note: This is only available if the credit file was created at least 3 years ago. For cases where the credit file was created 3 years ago or later, the response will be "_File created less than 3 years ago_". |

<br />

### overallLevel

Overall Level is the API response key for the submitted name. The fields low, medium, and high are mapped to a proprietary fuzzy matching algorithm that is mapped to a score from 0 to 100.

As a default, overallLevel will return:

**low**: when fullNameMatch & postalCodeMatch & dobMatch are exact;

**high**: when fullNameMatch & postalCodeMatch & dobMatch are nomatch;

**medium**: for all otherwise combination.

### Single Session Dashboard Result


<Image src="https://files.readme.io/19df3f6228d1866dbe41abe58a0d419669bbb7928e73dfd601d7dcc9c0c79f56-CA_eKYC.png" align="center" caption="Single Session Dashboard Result" />