---
title: "Philippines"
url: "https://developer.incode.com/general-reference/ekyc-reference-philippines/"
section: "general-reference"
group: "eKYC Reference / eKYC Coverage"
version: "v1.1"
status: "live"
---
Philippines eKYC non-doc verification leverages the Philippines' sources 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.

## Integration

### User input flow

eKYC module configuration gives various options to specify different search criteria with various sources of truth for each country (e.g. Philippines has a sequenced/waterfall source that looks for matches through 2 data sources: Philippines Residential and Philippines Credit Bureau). User data can be collected via a user input flow by using pre-selected fields where users can type in their name, date of birth, etc. See an example below:


<Image src="https://files.readme.io/6ce66fb68b75890ff4b237960b29c2b63f6b4f09ffc393911b1243be49d806dd-Screenshot_2026-06-19_at_14.13.02.png" align="center" width="250px" caption="_eKYC User Input Flow_" />


<br />

### Module configuration

The module configuration 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/de5143005b6377ef6d689d8b8fb7d43901ea7e301220971f90242520149e718c-Screenshot_2026-06-19_at_14.10.50.png" align="center" width="600px" caption="_eKYC Module configuration_" />


<br />

<br />_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.

<Callout icon="📘" theme="info">
  #### **API Authentication**

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

#### eKYC request

**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 `PH`. Note: `countryCode` takes priority over `country` if both are provided.
- **source**: (mandatory) String. Must be `PH_RES_CREDIT`.
- **firstName**: (mandatory) String. First name of the individual. Must not contain digits.
- **surName**: (mandatory) String. Last name of the individual. Must not contain digits.
- **middleName**: (optional) String. Must not contain digits.
- **dateOfBirth**: (mandatory) String. Format: `YYYY-MM-DD` (e.g. `1970-12-12`).
- **street**: (optional) String. House number and street name of the address.
- **district**: (optional) String. Barangay or district of the address.
- **city**: (optional) String. City of the individual's address (e.g. `Quezon City`).
- **state**: (optional) String. Province or region (e.g. `Metro Manila (NCR)`).
- **postalCode**: (optional) String. Must be exactly 4 digits (e.g. `1100`).
- **idNumber**: (optional) String. National ID number. Must be provided together with `idType`. Supported types below.
- **idType**: (optional) String. Must be one of `SSS`, `TIN`, or `GSIS`. Must be provided together with `idNumber`.

**Supported ID types:**

| ID Type | Description                                | Format                                                                                     |
| ------- | ------------------------------------------ | ------------------------------------------------------------------------------------------ |
| `TIN`   | Tax Identification Number                  | 9 digits (`123456789` or `123-456-789`) or 12 digits (`123456789000` or `123-456-789-000`) |
| `SSS`   | Social Security System Number              | 10 digits with hyphens (`12-3456789-0`)                                                    |
| `GSIS`  | Government Service Insurance System Number | Exactly 12 digits (`123456789012`)                                                         |

Example Incode request:

```json
{
    "plugins": ["kyc"],
    "source": "PH_RES_CREDIT",
    "firstName": "Maria",
    "middleName": "Santos",
    "surName": "Cruz",
    "street": "123 Rizal Street",
    "district": "Tangil",
    "city": "Quezon City",
    "state": "Metro Manila (NCR)",
    "postalCode": "1100",
    "country": "PH",
    "dateOfBirth": "1970-12-12",
    "idNumber": "123456789012",
    "idType": "GSIS"
}
```

### Direct API Response

<Callout icon="📘" theme="info">
  #### **API Authentication**

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

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

Example Incode response:

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

#### 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 Philippines, custom 400 error messages if required fields are missing or incorrectly formatted:

| 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 (firstName, surName, middleName)                                        | exact, nomatch        | Matches full name (firstName, surName, middleName) 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.                                                                                                |
| districtMatch                                                                         | exact, nomatch        | Matches district/Barangay submitted against the district associated to the value in the source of truth. New field for Philippines.                                                        |
| cityMatch                                                                             | exact, nomatch        | Matches city submitted against the city associated to the value in the source of truth.                                                                                                    |
| stateMatch                                                                            | exact, nomatch        | Matches state/province 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, districtMatch, cityMatch, stateMatch, postalCodeMatch) | exact, fuzzy, nomatch | Matches full address (street, district, city, state, postalCode) submitted against the full address associated to the value in the source of truth.                                        |
| idNumberMatch                                                                         | exact, nomatch        | Matches national ID number submitted against the ID number associated to the value in the source of truth.                                                                                 |
| overallLevel                                                                          | low, medium, high     | Overall Risk Level is focused on the risk associated to the submitted full name and date of birth. See context below for more information around how low, medium, and high are calculated. |

#### overallLevel

Overall Level is the API response key for the submitted name. The fields low, medium, and high are mapped to the result of the identity verification check.

As a default, overallLevel will return:

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

**high**: when fullNameMatch OR dobMatch are nomatch;

**medium**: for all otherwise combinations.

### Single Session Dashboard Result<br />


<Image src="https://files.readme.io/28c549919410de90a04dae6c1cbbae47ee47109ed69457ff886ab1a8525d1a7d-Screenshot_2026-06-19_at_14.05.19.png" align="center" caption="_Single Session Dashboard Result_" />