# Welcome to LenderLink

## Get Started

We've put together some helpful guides for you to get setup with our product quickly and easily.

{% content-ref url="/pages/IFZoyglAvsbNXaX9JPK1" %}
[Web Portal guides](/product-guides/web-portal-guides)
{% endcontent-ref %}

{% content-ref url="/pages/mePtRUv4vaUDMx8AKj4j" %}
[API Integration guides](/product-guides/api-integration-guides)
{% endcontent-ref %}

{% content-ref url="/pages/IPiWVeO5KQvvZDqpfOoR" %}
[Submitting Phone Numbers](/product-guides/submitting-phone-numbers)
{% endcontent-ref %}

{% content-ref url="/pages/ox8h3FWWlwDjHet3O97b" %}
[Contributor's backtest guide](/backtesting-guides/contributors-backtest-guide)
{% endcontent-ref %}

{% content-ref url="/pages/OHPJXYtvLHbAIvFjQBVy" %}
[Back-testing process](/backtesting-guides/back-testing-process)
{% endcontent-ref %}


# What we do

Open Finance Credit Data Exchange in the  Philippines

## Video overview

Got 2 minutes? Check out a video overview of our product:

{% embed url="<https://drive.google.com/file/d/1NDF1ddyK1UZuLA-XG2dhWR_jWuF_kjA5/view?usp=drive_link>" %}
Introduction
{% endembed %}


# Members

List of Financial Institutions & Partners with executed Data Sharing Agreements with LenderLink.

<div><figure><img src="/files/MmS47W915Poy5YgK2iaM" alt="" width="126"><figcaption><p>Smile Technology Pte Ltd.</p></figcaption></figure> <figure><img src="/files/2oZeaG7pqeCb2BdewHp6" alt="" width="204"><figcaption><p>Wefund Lending Corp</p></figcaption></figure> <figure><img src="/files/jskwC3Ung9JLrPW78dNI" alt=""><figcaption><p>GoTyme Bank<br>Corporation</p></figcaption></figure> <figure><img src="/files/MMCklLSu2mBNeN79YH6I" alt="" width="156"><figcaption><p>Lista Bookkeeping App, Inc.</p></figcaption></figure></div>

<div><figure><img src="/files/LNEm8QE40A9Nqc1AYu9h" alt="" width="221"><figcaption><p>Initiate PH, Inc.</p></figcaption></figure> <figure><img src="/files/qKvgYYjQSixMezQhfMEX" alt="" width="182"><figcaption><p>Datung Pte. Ltd.</p></figcaption></figure> <figure><img src="/files/39GXV9SjWyiiXLGvzl3Z" alt="" width="118"><figcaption><p>ONELOT FINANCING CORPORATION</p></figcaption></figure> <figure><img src="/files/4XGC5s8sFz3D0ZNRkIio" alt="" width="118"><figcaption><p>Siklos Lending Group</p></figcaption></figure> <figure><img src="/files/M2Q3wL8qfveWzU2YxkQj" alt="" width="255"><figcaption><p>KVIKU LENDING CO. INC</p></figcaption></figure></div>

<div><figure><img src="/files/n78cOHLbKLyC6ZUBJtBL" alt="" width="238"><figcaption><p>Michel J. Lhuillier Financial Services (Pawnshops), Inc.</p></figcaption></figure> <figure><img src="/files/UPtrkfVjrXwPtbqFeUbL" alt=""><figcaption><p>HC CONSUMER FINANCE PHILIPPINES, INC.,</p></figcaption></figure> <figure><img src="/files/aD04IdQH0seawqRSdLlE" alt="" width="161"><figcaption><p>INFOBIP LTD</p></figcaption></figure> <figure><img src="/files/XvBgUDav1ZNkCtFxxfHw" alt="" width="142"><figcaption><p>CASH-EXPRESS PHILIPPINES FINANCING INC.</p></figcaption></figure></div>

<div><figure><img src="/files/GvGSYdR9SCXG3d8IVEvx" alt="" width="188"><figcaption><p>CEBUANA LHUILLLIER FINANCE CORP. </p></figcaption></figure> <figure><img src="/files/iGehLHeVdgoHhTj8BeNq" alt="" width="132"><figcaption><p>Finance Technologies Inc.</p></figcaption></figure> <figure><img src="/files/tTlQBumESYnBo11rnwB5" alt="" width="145"><figcaption><p>FINGERTIP FINANCE CORP.</p></figcaption></figure> <figure><img src="/files/MWgkZqWVsUHOzvczuMQM" alt="" width="109"><figcaption><p>FIRST DIGITAL FINANCE CORPORATION</p></figcaption></figure></div>

<div align="left"><figure><img src="/files/EDptQCSCV0WZGUttIhXe" alt="" width="167"><figcaption><p>FHL FINANCIAL COMPANY, INC.</p></figcaption></figure> <figure><img src="/files/s7E7fuWVooEBBbt86hh6" alt="" width="167"><figcaption><p>SOFI LENDING INC.</p></figcaption></figure> <figure><img src="/files/EWzt2zrd5OwPOw8bT3FQ" alt="" width="143"><figcaption><p>MONEYCAT FINANCING INC.</p></figcaption></figure> <figure><img src="/files/oce6ultgei0g1xlcKbT5" alt="" width="167"><figcaption><p>Hi-Tech Smart Solutions Inc</p></figcaption></figure></div>

<div align="left"><figure><img src="/files/NEkbvrE7HkUwfKYpfmlO" alt="" width="266"><figcaption><p>AMG Collections Services Inc.</p></figcaption></figure> <figure><img src="/files/HkCNM0vmnpW4F0EBYa9M" alt="" width="167"><figcaption><p>FINSCORE INC.</p></figcaption></figure> <figure><img src="/files/oklXLG9xSNIDF6l7Xovy" alt="" width="167"><figcaption><p>ELECTRONIC TRANSFER AND ADVANCE PROCESSING INC.</p></figcaption></figure> <figure><img src="/files/ekFIKBGtXdiQv89YZwLk" alt="" width="167"><figcaption><p>DRAGONPAY CORPORATION</p></figcaption></figure></div>

<div align="left"><figure><img src="/files/yLNM3EDI6PpzHAu6NVzv" alt="" width="154"><figcaption><p>IDMETA INC.</p></figcaption></figure> <figure><img src="/files/vsp84EokyDacdxbvz3Db" alt="" width="274"><figcaption><p>Peso Redee Financing Inc</p></figcaption></figure> <figure><img src="/files/ERmgAmrYafJh7IHDf23c" alt="" width="244"><figcaption><p>CITY SAVINGS BANK, INC.</p></figcaption></figure> <figure><img src="/files/BZPrpT6hLnW4GKd5o12X" alt="" width="155"><figcaption><p>PALOO FINANCING, INC</p></figcaption></figure></div>

<div><figure><img src="/files/6qjzgaJNW3dmyRVhM5BM" alt="" width="106"><figcaption><p>Global Dominion Financing, Inc</p></figcaption></figure> <figure><img src="/files/wNeo6OUHd4UrCREX3IOr" alt="" width="158"><figcaption><p>PAYNAMICS TECHNOLOGIES INC.</p></figcaption></figure> <figure><img src="/files/04RkbrVkOlsfHRSlRlZB" alt="" width="63"><figcaption><p>PHILIPPINE SEVEN CORPORATION</p></figcaption></figure> <figure><img src="/files/N0l711VSlmyKrtnWT3Ab" alt="" width="106"><figcaption><p>ONLINE LOANS PILIPINAS FINANCING, INC</p></figcaption></figure></div>

<div><figure><img src="/files/FZWvUvr3PqYE9uFB0XFF" alt="" width="110"><figcaption><p>Advanced Finance Solutions, Inc</p></figcaption></figure> <figure><img src="/files/qJWiyQ7E2MDPhiI71IEk" alt="" width="148"><figcaption><p>KREDIVO PHILIPPINES LENDING CORP.</p></figcaption></figure> <figure><img src="/files/6rSrkfcGpmugF3AkmFae" alt="" width="148"><figcaption><p>WARM CASH LENDING CORP.</p></figcaption></figure> <figure><img src="/files/BpBJDMSbNKERK340KlFC" alt="" width="133"><figcaption><p>YINSHAN LENDING INC</p></figcaption></figure> <figure><img src="/files/ifYioESKlclIWM0Ts8e4" alt="" width="129"><figcaption><p>PayJoy Philippines Finance Inc</p></figcaption></figure></div>

<div><figure><img src="/files/Nqsj5Ii0jvZhl8M71mx6" alt="" width="75"><figcaption><p>Pondo Pinoy Lending Corp</p></figcaption></figure> <figure><img src="/files/yj9KOB3UBKhQYsFTHcBt" alt="" width="212"><figcaption><p>Netbank (A Rural Bank) Inc.</p></figcaption></figure> <figure><img src="/files/sRe7mBE7YBwxCwAsY5WC" alt="" width="306"><figcaption><p>CIRCA LOGICA GROUP CO</p></figcaption></figure> <figure><img src="/files/udZNlJJLTfxM09nf0ZEZ" alt="" width="139"><figcaption><p>RiskSeal, Inc</p></figcaption></figure></div>


# Release notes

This page contains the release notes for every version of the software we release.

### v1.2.0 – 2026-06-05

#### 🚀 New Features

* Features launch - Credit Score Gen-2 [Gen-2 LenderLink Network Score](/product-guides/lenderlink-network-score/gen-2-lenderlink-network-score)

### v1.1.9 – 2026-05-07

#### 🚀 New Features

* Features launch - Summary Block Enrichment [Mega API](/product-guides/api-integration-guides/mega-api#json-structure)
* Added in new Data Dictionary [Data Dictionary](/product-guides/api-integration-guides/data-dictionary)

### v1.1.8 – 2026-01-21

#### 🚀 New Features

* Added in Back-testing process [LenderLink Data - Predictive Power Assessment](/backtesting-guides/back-testing-process/lenderlink-data-predictive-power-assessment)
* Added in Data Dictionary [/pages/7xZVEcNDvF65GBaTVZWK#id-2.collection-agency-data-technical-documentation](https://docs.lenderlink.ph/overview/pages/7xZVEcNDvF65GBaTVZWK#id-2.collection-agency-data-technical-documentation "mention")

### v1.1.7 – 2025-11-14

#### 🚀 New Features

* Added Credit Score to the Full Response - [Gen-1 LenderLink Network Score](/product-guides/lenderlink-network-score/gen-1-lenderlink-network-score)

```json
{
  "scores": {
    "CS": {
      "score": 540,
      "band": 9
    }
  }
}

```

### v1.1.6 – 2025-10-14

#### 🚀 New Features

* Added parameters to the [Full Response Consumer API Integration guide](/product-guides/api-integration-guides/full-response-consumer-api-integration-guide) and [Mega API](/product-guides/api-integration-guides/mega-api)
* matchedKeys - array of strings that lists all the search parameters that returned results
* matchedKeyCount - integer that counts the number of matched keys.

```json
{
  "matchedKeys": [
    "cellphoneNumber",
    "email",
    "firstName-lastName-dateOfBirth"
  ],
  "matchedKeyCount": 3
}

```

### v1.1.5 – 2025-10-01

#### 🚀 New Features

* Added POST as accepter method on the [Mega API](/product-guides/api-integration-guides/mega-api)
* Changed the API method to POST on [Contributor API development guide](/product-guides/api-integration-guides/contributor-api-development-guide)

### v1.1.4 – 2025-08-06

#### 🚀 New Features

* Added [Bulk upload tool](/product-guides/web-portal-guides/bulk-upload-tool) under [Web Portal guides](/product-guides/web-portal-guides)

### v1.1.3 – 2025-08-05

#### 🚀 Edits

* Updated [/pages/tfU0OmFw1CY0KOJCzciZ#id-2.data-points-set](https://docs.lenderlink.ph/overview/pages/tfU0OmFw1CY0KOJCzciZ#id-2.data-points-set "mention") in [Contributor API development guide](/product-guides/api-integration-guides/contributor-api-development-guide)
* Updated [Contributor API development guide](/product-guides/api-integration-guides/contributor-api-development-guide#request-for-a-borrower-data) in [Contributor API development guide](/product-guides/api-integration-guides/contributor-api-development-guide)
* Added [Contributor API development guide](/product-guides/api-integration-guides/contributor-api-development-guide#example-of-proper-usage) examples for Multi Parameter Search implementation&#x20;
* Added prductId LAC to [Mega API](/product-guides/api-integration-guides/mega-api#request-data)in [Mega API](/product-guides/api-integration-guides/mega-api)

### v1.1.2 – 2025-07-10

#### 🚀 New Features

* Added Multi Parameter Search in [Contributor API development guide](/product-guides/api-integration-guides/contributor-api-development-guide)
* Added updated [Telco Score API](/product-guides/api-integration-guides/telco-score-api)
* Added updated [Loan Applications Check API](/product-guides/api-integration-guides/loan-applications-check-api)
* Added [Payment Transaction Data API](/product-guides/api-integration-guides/payment-transaction-data-api)

### v1.1.1 – 2025-05-01

Adds new parameters to the APIs.

#### 🚀 New Features

* Added parameter "**contributorId**" into the JSON response on the the [Full Response Consumer API Integration guide](/product-guides/api-integration-guides/full-response-consumer-api-integration-guide) which returns the unique ID of the contributor from which the data was sourced. The value is a string.&#x20;
* Added query search parameters "**email**" and "**idNumber**" to [Contributor API development guide](/product-guides/api-integration-guides/contributor-api-development-guide)
* Added query search parameters "**email**" and "**idNumber**" to [Full Response Consumer API Integration guide](/product-guides/api-integration-guides/full-response-consumer-api-integration-guide)
* Added parameter "**loanInfoRepaymentFullHistory**" to [Contributor API development guide](/product-guides/api-integration-guides/contributor-api-development-guide)


# FUNDAMENTALS


# Member Terms of Participation

{% file src="/files/6DsKRivVShyQ6x5XCLgW" %}

{% file src="/files/PfSPzdmloVKaDFdLFkxl" %}

{% file src="/files/UGDV0aBDnG7CmYbzze57" %}


# LenderLink infrastructure High Level Design

Infrastructure

### LenderLink Infrastructure High Level Design

**1. Solution HLD diagram**

Option 1 - The contributor opens an API endpoint for Lenderlink, allowing LenderLink to connect directly.

<figure><img src="/files/kKznxxark0UVymltgwyR" alt=""><figcaption></figcaption></figure>

Option 2 - LenderLink provides a Docker container to be deployed on the contributor’s infrastructure. The contributor will upload their data into the container using GUI.

<figure><img src="/files/VvNbYddUkE2WoynjA1hm" alt=""><figcaption></figcaption></figure>

**2. Data flow diagram**

Option 1 - The contributor opens an API endpoint for Lenderlink.

<figure><img src="/files/ubV9Wj0L8MbU5azDu5h3" alt=""><figcaption></figcaption></figure>

Option 2 - LenderLink provides a Docker container to be deployed on the contributor’s infrastructure. The contributor will upload their data into the container using GUI.

<figure><img src="/files/l0SEX28RrH2QBivYSbRp" alt=""><figcaption></figcaption></figure>

**3. Data flow for queries**

For data queries, LenderLink requires each contributor to provide a regularly updated SHA512 list of all phone numbers from their database.  For more information, see [Submitting Phone Numbers](/product-guides/submitting-phone-numbers)

As shown on the diagrams below when a phone number search query is received, LenderLink will first hash it and then compare it to the SHA512 phones list received from the contributor. If there is a match LenderLink will identify which contributor has this information and  query them via their endpoint (Option 1), or via our Docker container (Option 2), depending on the integration method chosen.  If there is no match, LenderLink will return that information to the consumer who made the query.

<figure><img src="/files/90nBQQlMQmb1qbAi53zJ" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/rXw0174AuCK1vKnPm9HH" alt=""><figcaption></figcaption></figure>

**4. Easy Integration**

LenderLink offers two primary integration methods for contributors:

* Preferred Method: API Endpoint: The contributor can open an API endpoint.
* Alternative Method: Docker Container: LenderLink provides a Docker container, which can be deployed on the contributor's infrastructure, containing a local database and microservice. The local DB will be updated by the contributor via a GUI (this could be automated depending on the contributor\`s setup) and the microservice will be used by the LenderLink platform to securely make queries to the local DB. This ensures that the contributor will always have control over their data and the data will always be resident in their data center infrastructure. The docker container will be easy to deploy in existing docker infrastructure and will be maintenance free for the contributors.

**5. Data Control**

The data stays at the contributor\`s data center in the local DB on our docker container.

**6. Secure Encrypted Connection**

The LenderLink microservice at the contributor\`s site will communicate with the platform in the AWS cloud via HTTPS in an encrypted dedicated VPN tunnel embedded in the docker container that LenderLink provides. That ensures a high level of secure and encrypted connection. When consumers query data from LenderLink, they connect directly to the main LenderLink API, hosted in the AWS cloud, via HTTPS.

**7. Availability, Security, Scalability of the LenderLink Platform**

The main LanderLink platform is hosted in the AWS Cloud. Particularly in the AWS\`s Manila local zone. This will ensure single-digit millisecond latency on the connection to the cloud. The platform will reside also in a second AWS zone for availability and redundancy. High level of security and DoS protection will be implemented via the AWS native services. Scalability is also provided by AWS services which ensures that the platform can scale rapidly in size and connect as much as needed by contributors and consumers.

**8. Monitoring**

LenderLink includes a monitoring service that will monitor the status of the Docker containers and the main platform. This will let us proactively resolve any issues and keep the solution up and running. The monitoring services includes:

* Docker container status – Regular checks to confirm the container is up and running with good connection to AWS.
* Data quality –Continuous monitoring to ensure that the data that is uploaded to the Docker container is in the correct format.
* Data upload – Verifying that the data is regularly uploaded.


# LenderLink Network Score

{% content-ref url="/pages/nqUrefyp63zf0ON9Knif" %}
[Gen-2 LenderLink Network Score](/product-guides/lenderlink-network-score/gen-2-lenderlink-network-score)
{% endcontent-ref %}

{% content-ref url="/pages/xCGmFk5064Lr6fUd6H8H" %}
[Gen-1 LenderLink Network Score](/product-guides/lenderlink-network-score/gen-1-lenderlink-network-score)
{% endcontent-ref %}


# Gen-2 LenderLink Network Score

### 1. Score Ranges

#### CS2\_1 — Payday Loan

| Band | Score Range |
| ---- | ----------- |
| 1    | 300 – 390   |
| 2    | 391 – 450   |
| 3    | 451 – 498   |
| 4    | 499 – 539   |
| 5    | 540 – 573   |
| 6    | 574 – 602   |
| 7    | 603 – 626   |
| 8    | 627 – 642   |
| 9    | 643 – 678   |
| 10   | 679 – 850   |
| -999 | -999        |
| -998 | -998        |
| -997 | -997        |

#### CS2\_2 — Point of Sale

| Band | Score Range |
| ---- | ----------- |
| 1    | 300 – 529   |
| 2    | 530 – 585   |
| 3    | 586 – 608   |
| 4    | 609 – 691   |
| 5    | 692 – 746   |
| 6    | 747 – 776   |
| 7    | 777 – 798   |
| 8    | 799 – 810   |
| 9    | 811 – 821   |
| 10   | 822 – 850   |
| -999 | -999        |
| -998 | -998        |
| -997 | -997        |

#### CS2\_3 — Cash Loan

| Band | Score Range |
| ---- | ----------- |
| 1    | 300 – 343   |
| 2    | 344 – 396   |
| 3    | 397 – 471   |
| 4    | 472 – 559   |
| 5    | 560 – 610   |
| 6    | 611 – 646   |
| 7    | 647 – 724   |
| 8    | 725 – 760   |
| 9    | 761 – 787   |
| 10   | 788 – 850   |
| -999 | -999        |
| -998 | -998        |
| -997 | -997        |

### Default Values

| Code | Meaning                                                                              |
| ---- | ------------------------------------------------------------------------------------ |
| -999 | Credit history data found only in Collection agency                                  |
| -998 | Only credit history data older than 2 years                                          |
| -997 | Only credit history found in contributors that are not part of the model development |

### 2. Example Response

```json
"scores": {
    "CS2_1": {
        "score": 540,
        "band": 9
    },
    "CS2_2": {
        "score": 402,
        "band": 3
    },
    "CS2_3": {
        "score": -999,
        "band": -999
    }
}
```


# Gen-1 LenderLink Network Score

The credit score will be delivered under the Full Response either via the stand-alone API or the Mega API

## 1.Score Ranges

| Score Range | Band Number |
| :---------: | :---------: |
|   300-329   |      1      |
|   330-359   |      2      |
|   360-389   |      3      |
|   390-419   |      4      |
|   420-449   |      5      |
|   450-479   |      6      |
|   480-509   |      7      |
|   510-539   |      8      |
|   540-569   |      9      |
|   570-600   |      10     |
|     -999    |     -999    |
|     -997    |     -997    |

{% hint style="warning" %}
-999 - No disbursed loans; loan applications only\
-997 - No recent data; data older than 2.5 years
{% endhint %}

### 2.Example&#x20;

```json
"scores": {
        "CS": {
            "score": 540,
            "band": 9
        }
    }
```


# Web Portal guides

This section contains guides for how to use our web portal. This portal is for customers that are not API ready yet or they do not need the API integration.

{% content-ref url="/pages/64oTx777pQZ8OKfroUJ1" %}
[Bulk upload tool](/product-guides/web-portal-guides/bulk-upload-tool)
{% endcontent-ref %}


# Bulk upload tool

### 1.Overview

The "Bulk upload tool" can be used to get all products that are included in the [Mega API](/product-guides/api-integration-guides/mega-api)

### 2.Instructions

{% embed url="<https://www.loom.com/share/382d650191a24d3c982655539620964b?sid=77302d7a-4748-492c-a297-9a1b314f4a53>" %}

{% stepper %}
{% step %}

### Open the link to the portal

Link and credentials will be provided via mail.

{% endstep %}

{% step %}

### Login

<figure><img src="/files/UGv7LrZVaqeHi35i7DZe" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}

### Click on "Mega Request Upload"

<figure><img src="/files/ZIV8x00RkVzPWX9SDoEr" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}

### Download the template and fill it up.&#x20;

<figure><img src="/files/anc1MGPkJytdwQoOpIWq" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}

### Select the products that you have permissions for and you need and upload the template via "Choose XLSX File"

<figure><img src="/files/qOyaUE3lNRck6L3nDQMS" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}

### Click on "Upload Report"

<figure><img src="/files/lRHo5RjVssIH5EQ3cmyH" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}

### Track the process by clicking the "Refresh" button on the right

<figure><img src="/files/JjEjrtG5CtxcJV9Gqb3R" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}

### When the status changes to "Compleate" download the report from the button on the right.

<figure><img src="/files/B6IHPSRpo56mAIoG5dOW" alt=""><figcaption></figcaption></figure>
{% endstep %}
{% endstepper %}


# API Integration guides

## This section contains the API guides for integrating with our services along with the Data Dictionaries.&#x20;

{% content-ref url="/pages/NWTzPaasyLYEQVDFow7f" %}
[Mega API](/product-guides/api-integration-guides/mega-api)
{% endcontent-ref %}

{% content-ref url="/pages/tfU0OmFw1CY0KOJCzciZ" %}
[Contributor API development guide](/product-guides/api-integration-guides/contributor-api-development-guide)
{% endcontent-ref %}

{% content-ref url="/pages/IPiWVeO5KQvvZDqpfOoR" %}
[Submitting Phone Numbers](/product-guides/submitting-phone-numbers)
{% endcontent-ref %}


# Authentication

This page describes how you can authenticate with our APIs

{% stepper %}
{% step %}

### Prerequisites

In order to obtain an API Token you first need to have **client\_id** and **client secret** from our team.
{% endstep %}

{% step %}

### Request the Access Token

To authenticate and obtain an OAuth token, follow the standard OAuth token request flow.

* **POST** API URL

```
https://sandbox-app.lenderlink.ph/oauth/token
```

* To request the Access Token, submit a POST request to the API URL, including the following body parameters in JSON format:

```json

{
    "grant_type": "client_credentials",
    "client_id": "your client id",
    "client_secret": "your client secret"
}
                                        
```

{% endstep %}

{% step %}

### Handling the Token Response

Upon successful validation, the authorization server will respond with an access token:

```json

{
    "token_type": "Bearer",
    "expires_in": 86400,
    "access_token": "eyJ0eXAiOiJKasd10sJhbGciOiJSUzI1NiJ9.eyJhdWQiOiI5YTc4MzVm..."
}
                                        
```

{% hint style="warning" %}
**Token Lifespan**

Access tokens have a limited lifespan of **86400** seconds. Once the token expires, you can obtain a new one.
{% endhint %}
{% endstep %}
{% endstepper %}


# Contributor API development guide

This guide provides the options and technical specifications for developing and securely consuming the specified REST API endpoint securely and effectively.

{% hint style="success" %}

#### For fast and easy development please use our specially designed GitHub repository for coding LLMs <https://github.com/lenderlink/lenderlink-docs>

{% endhint %}

### 1.Contributor API endpoint

<figure><img src="/files/iA6UAUMaXL0jKlzf06b7" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/E8DG25JhdvfIkgMZlt1d" alt=""><figcaption></figcaption></figure>

### 2.Data points set

Below is the set of data points that needs to be available as JSON trought the contributor\`s API. A proposed JSON structure is shared in section [#response-of-a-borrower-data-request](#response-of-a-borrower-data-request "mention")

<table data-full-width="true"><thead><tr><th width="252.68359375">Variable Name</th><th width="115.03515625">Type</th><th width="105.32421875">Required</th><th width="388">Example Value</th><th width="283">Comments</th></tr></thead><tbody><tr><td>RecordID</td><td>String</td><td>Y</td><td>123456789</td><td>Unique Identifier</td></tr><tr><td>kycSurname</td><td>String</td><td>Y</td><td>Doe</td><td>Borrower Surname</td></tr><tr><td>kycFirstName</td><td>String</td><td>Y</td><td>John</td><td>Borrower First name</td></tr><tr><td>kycMiddleName</td><td>String</td><td>N</td><td>Smith</td><td>Borrower Middle name</td></tr><tr><td>kycDateOfBirth</td><td>Date</td><td>Y</td><td>1990-01-01</td><td>Borrower Date of Birth</td></tr><tr><td>kycIdNumber</td><td>String</td><td>Y</td><td>ABC123456</td><td>Borrower ID number</td></tr><tr><td>kycIDType</td><td>Int</td><td>Y</td><td>1</td><td>0 - Other<br>1 - SSS<br>2 - TIN<br>3 - National Id<br>4 - Passport<br>5 - Driver's licence<br>6 - Philhealth<br>7 - Professional Regulation Commission<br>8 - Unified Multi-Purpose Id<br>9 - Voter's Id<br>10 - PhilSys<br>11 - Postal Id</td></tr><tr><td>kycMobilePhone</td><td>String</td><td>Y</td><td>63XXXXXXXXXX</td><td>Borrower Mobile number</td></tr><tr><td>kycEmailAddress</td><td>String</td><td>N</td><td><a href="mailto:john.doe@example.com">john.doe@example.com</a></td><td>Borrower Email address</td></tr><tr><td>kycAddress</td><td>String</td><td>N</td><td>123 Main St, Anytown, USA</td><td>Borrower Address</td></tr><tr><td>loanInfoLoanType</td><td>Int</td><td>Y</td><td>1</td><td>0 - Other<br>1 - PayDayLoan<br>2 - POS<br>3 - CashLoan<br>4 - CreditLine<br>5 - CreditCard<br>6 - AutoLoan<br>7 - MotorcycleLoan<br>8 - HomeLoan</td></tr><tr><td>loanInfoApplicationDate</td><td>Date</td><td>Y</td><td>2022-01-01</td><td>Loan Application date</td></tr><tr><td>loanInfoOpenDate</td><td>Date</td><td>Y</td><td>2022-01-01</td><td>Loan Open date</td></tr><tr><td>loanInfoLoanTerm</td><td>Int</td><td>Y</td><td>5</td><td>Count of months, loan term.</td></tr><tr><td>loanInfoOpenBalance</td><td>Float</td><td>Y</td><td>10000</td><td>Loan Open Balance</td></tr><tr><td>loanInfoOutstandingBalance</td><td>Float  </td><td>Y</td><td>8000</td><td>The total amount the borrower still owes as of the time of enquiry, including principal, accrued interest, and applicable fees. Can be '0' if there isn't an outstanding balance</td></tr><tr><td>loanInfoNextDueDate</td><td>Date</td><td>Y</td><td>2024-05-01</td><td>Loan Next Due date</td></tr><tr><td>loanInfoStatusCode</td><td>String</td><td>Y</td><td>Active</td><td>Active, Delayed, Collection, Written off, Closed, Rejected, Incomplete, Not Disbursed</td></tr><tr><td>loanInfoInstallmentAmount</td><td>Float</td><td>Y</td><td>500</td><td>Loan installment amount</td></tr><tr><td>loanInfoOverdueAmount</td><td>Float</td><td>Y</td><td>100</td><td>Loan Overdue amount</td></tr><tr><td>loanInfoRepaymentFrequency</td><td>Int</td><td>Y</td><td>1</td><td>0 - Other<br>1 - Monthly<br>2 - Biweekly<br>3 - SinglePayment</td></tr><tr><td>loanInfoRepaymentFullHistory</td><td>Array of Objects</td><td>Y</td><td> { "dueDate": "2024-03-15", "paymentDate": "2024-03-15",  "paymentAmount": 1300.00 },<br> {"dueDate": "2024-04-15", "paymentDate": "2024-04-15", "paymentAmount": 1250.50},<br> {"dueDate": "2024-05-15", "paymentDate": "2024-05-15","paymentAmount": 1275.75 },<br> { "dueDate": "2024-06-15", "paymentDate": "2024-06-15", "paymentAmount": 1320.25 },<br> {"dueDate": "2024-07-15","paymentDate": "2024-07-15","paymentAmount": 1295.00}<br></td><td>An array of objects detailing each payment made on the loan, including the due date, actual payment date, and payment amount. If a payment was not made, paymentDate is null.</td></tr><tr><td>loanInfoCloseDate</td><td>Date</td><td>Y</td><td>2024-05-25</td><td>Loan Close Date</td></tr></tbody></table>

{% hint style="success" %} <mark style="background-color:green;">Detailed descriptions for the variables can be found here</mark> [<mark style="background-color:green;">https://docs.google.com/spreadsheets/d/1ChI0ldz1yBr1bRYjZ6PeuXNahE0kwWyN/edit?usp=drivesdk\&ouid=102629089778994761174\&rtpof=true\&sd=true</mark>](https://docs.google.com/spreadsheets/d/1ChI0ldz1yBr1bRYjZ6PeuXNahE0kwWyN/edit?usp=drivesdk\&ouid=102629089778994761174\&rtpof=true\&sd=true)
{% endhint %}

<figure><img src="/files/iyjDNCAXCsloUBPy11T6" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
The API structure below is just an example. Every contributor can make the endpoint in their own way.
{% endhint %}

### 3. Create automation to upload your new hashed phones on a daily basis following this procedure [Submitting Phone Numbers](/product-guides/submitting-phone-numbers)

### 4.Technical overview

This document explains how Contributors should return data when they get an API request from the LenderLink API. It covers the authentication methods and parameters needed to make the process easy and straightforward. This way, when a lender makes a request for a specific number to the LenderLink API, we will be able to obtain this information from the contributors.

**API response layout**

1. The structure of the Contributor Database table to be used as a layout for the API response.
2. The contributors should keep the data, which will be returned to LendeLink upon enquiry, up-to-date.
3. The response data should be generated in real-time or reflect data as of the most recent update (the same day or the day before).

#### Authentication Method

The API you are going to build must include some form of authentication. This could be either JWT (JSON Web Token) as a Bearer token, or a simple one-time generated token that you provide to LenderLink.&#x20;

Additionally, IP whitelisting can be implemented, especially if using a one-time token.

The contributor must provide a second set of API credentials that will be used for the backtesting process by potential clients. The backtest process for clients is described here [Backtesting Guides](/backtesting-guides/contributors-backtest-guide)

#### Request for a Borrower Data

Contributors should build a REST API endpoint that **uses the POST method** and accepts a request body containing the parameters listed below. The endpoint must return a detailed response containing KYC and loan information.

**Example API Endpoint**

* POST API URL (Endpoint)

```
https://somedomain.com/api/v1/borrower
```

* Request Headers

  * `Content-Type: application/json`
  * `Authorization: Token <token>`

* Multi Parameters Search Query :

{% hint style="success" %}
A Multiple parameters search should be implemented. LenderLink will send API calls containing all the parameters below. &#x20;
{% endhint %}

<table><thead><tr><th width="258">Parameter</th><th width="125">Type</th><th width="149.95703125">Required</th><th>Description</th></tr></thead><tbody><tr><td>requestId</td><td>String</td><td>Yes</td><td>Unique identification code generated by the client</td></tr><tr><td>firstName</td><td>String</td><td>Yes</td><td>First Name</td></tr><tr><td>lastName</td><td>String</td><td>Yes</td><td>Last Name</td></tr><tr><td>dateOfBirth</td><td>Date</td><td>Yes</td><td>Date of Birth - YYYY-MM-DD</td></tr><tr><td>cellphoneNumber</td><td>String</td><td>Yes</td><td>Borrower's phone number, the format is 63XXXXXXXXXX.</td></tr><tr><td>email</td><td>String</td><td>Optional</td><td>Borrower's email address</td></tr><tr><td>idNumber</td><td>String</td><td>Optional</td><td>Borrower's ID document number. ID, Driver license, etc</td></tr></tbody></table>

* Example JSON of a request to the API

```json
{
  "requestId": "X123-AB45",
  "firstName": "John",
  "lastName": "Doe",
  "dateOfBirth": "1990-01-01",
  "cellphoneNumber": "639170000001",
  "email": "john.doe@example.com",
  "idNumber": "ABC123456"
}
```

\
Once the parameters have been accepted and the database search has begun, it is very important to ensure adequate results, the firstName, lastName and dateOfBirh parameters should be used as combination of the three. That means you should not use them individually or in a broad OR with everything else — doing so might return unrelated rows.&#x20;

#### Example of proper usage:&#x20;

```sql
SELECT *
FROM db_table
WHERE mobilePhone = '639170000001'
OR email = 'john.doe@example.com'
OR (firstName = 'John' AND lastName = 'Doe' AND dateOfBirth = '1990-01-01');
```

#### Here is example of improper usage:

```sql
SELECT *
FROM db_table
WHERE mobilePhone = '639170000001'
OR email = 'john.doe@example.com'
OR firstName = 'John' ;
```

#### Response of a borrower data request

The data should be split into 4 blocks (for each search criteria) depending on the search criteria with which the loan was found.&#x20;

For example if the same loan was found by two different criteria this will result in the one response with two blocks that hold the exact same information but returned in the different search criteria blocks.&#x20;

LenderLink will apply the appropriate match flags to the response and process it further. We are also going to apply deduplication on the data so you can skip that step at your side if you prefer.&#x20;

Example response:&#x20;

* Success Response

```json
{ 
  "mobilePhone":[
    {
      "recordId": "c1c9f6a3-0f1d-4f62-9d2d-8b8b8f1a2d7e",
      "kycSurname": "Doe",
      "kycFirstName": "John",
      "kycMiddleName": "Smith",
      "kycDateOfBirth": "1990-01-01",
      "kycIdNumber": "ABC123456",
      "kycIdType": 4,
      "kycMobileNumber": "639170000001",
      "kycEmailAddress": "john.doe@example.com",
      "kycAddress": "123 Main St, Anytown, USA",
      "loanInfoLoanType": 1,
      "loanInfoApplicationDate": "2024-01-01",
      "loanInfoOpenDate": "2024-01-01",
      "loanInfoLoanTerm": 5,
      "loanInfoOpenBalance": 10000,
      "loanInfoOutstandingBalance": 8000,
      "loanInfoNextDueDate": "2024-06-01",
      "loanInfoLastPaymentAmount": 200,
      "loanInfoLastPaymentDate": "2024-07-01",
      "loanInfoStatusCode": "Active",
      "loanInfoInstallmentAmount": 500,
      "loanInfoOverdueAmount": 100,
      "loanInfoRepaymentFrequency": 1,
      "loanInfoRepaymentHistory": "0000",
      "loanInfoCloseDate": "2024-05-25",
      "loanInfoRepaymentFullHistory": [
        {
          "dueDate": "2024-03-15",
          "paymentDate": "2024-03-15",
          "paymentAmount": 1300.00
        },
        {
          "dueDate": "2024-04-15",
          "paymentDate": "2024-04-15",
          "paymentAmount": 1250.50
        },
        {
          "dueDate": "2024-05-15",
          "paymentDate": "2024-05-15",
          "paymentAmount": 1275.75
        },
        {
          "dueDate": "2024-06-15",
          "paymentDate": "2024-06-15",
          "paymentAmount": 1320.25
        },
        {
          "dueDate": "2024-06-15",
          "paymentDate": "15-07-2024",
          "paymentAmount": 1295.00
        }
      ]
    }
  ],
  "firstNamelastNamedateOfBirth": [
    {
      "recordId": "7f2c1b7a-9c55-4f67-8b2a-2c8d30f5c9c1",
      "kycSurname": "Doe",
      "kycFirstName": "John",
      "kycMiddleName": "Smith",
      "kycDateOfBirth": "1990-01-01",
      "kycIdNumber": "ABC123456",
      "kycIdType": 4,
      "kycMobileNumber": "639170000001",
      "kycEmailAddress": "john.doe@example.com",
      "kycAddress": "123 Main St, Anytown, USA",
      "loanInfoLoanType": 1,
      "loanInfoApplicationDate": "2024-01-01",
      "loanInfoOpenDate": "2024-01-01",
      "loanInfoLoanTerm": 5,
      "loanInfoOpenBalance": 10000,
      "loanInfoOutstandingBalance": 8000,
      "loanInfoNextDueDate": "2024-06-01",
      "loanInfoLastPaymentAmount": 200,
      "loanInfoLastPaymentDate": "2024-07-01",
      "loanInfoStatusCode": "Active",
      "loanInfoInstallmentAmount": 500,
      "loanInfoOverdueAmount": 100,
      "loanInfoRepaymentFrequency": 1,
      "loanInfoCloseDate": "2024-05-25",
      "loanInfoRepaymentFullHistory": [
        {
          "dueDate": "2024-03-15",
          "paymentDate": "2024-03-15",
          "paymentAmount": 1300.00
        },
        {
          "dueDate": "2024-04-15",
          "paymentDate": "2024-04-15",
          "paymentAmount": 1250.50
        },
        {
          "dueDate": "2024-05-15",
          "paymentDate": "2024-05-15",
          "paymentAmount": 1275.75
        },
        {
          "dueDate": "2024-06-15",
          "paymentDate": "2024-06-15",
          "paymentAmount": 1320.25
        },
        {
          "dueDate": "2024-07-15",
          "paymentDate": "2024-07-15",
          "paymentAmount": 1295.00
        }
      ]
    }
  ]
}  
                          
```

\
**NB!** In case there is information for more than one loan in the current response, the information is returned as each loan follows the structure described in the table, collected in an array (array of JSON object, each one following the example above).

{% hint style="warning" %}
For  loanInfoStatusCode: "Rejected" , when you encounter a rejected borrower, you should return an object similar to the one below. But in the structure above.
{% endhint %}

```json
{
    "recordId": "2a6f3d5e-6b2c-4b8b-a3c0-9e1a4c7d2f11",
    "kycSurname": "Doe",
    "kycFirstName": "John",
    "kycMiddleName": "Smith",
    "kycDateOfBirth": "1990-01-01",
    "kycIdNumber": "ABC123456",
    "kycIdType": 4,
    "kycMobileNumber": "639123456789",
    "kycEmailAddress": "john.doe@example.com",
    "kycAddress": "123 Main St, Anytown, USA",
    "loanInfoLoanType": null,
    "loanInfoApplicationDate": "2022-01-01",
    "loanInfoOpenDate": null,
    "loanInfoLoanTerm": null,
    "loanInfoOpenBalance": null,
    "loanInfoOutstandingBalance": null,
    "loanInfoNextDueDate": null,
    "loanInfoLastPaymentAmount": null,
    "loanInfoLastPaymentDate": null,
    "loanInfoStatusCode": "Rejected",
    "loanInfoInstallmentAmount": null,
    "loanInfoOverdueAmount": null,
    "loanInfoRepaymentFrequency": null,
    "loanInfoCloseDate": null,
    "loanInfoRepaymentFullHistory": null
}
```

### 5. Follow [Submitting Phone Numbers](/product-guides/submitting-phone-numbers) as a final step.

### 6.Backup option

If the contributor is not API ready yet as a backup option we can use a SFTP integration as described below.

<figure><img src="/files/6T4Vti7WLb11h9kHS8sT" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/rRusmhJsf7O0hk6binBG" alt=""><figcaption></figcaption></figure>


# Mega API

{% hint style="success" %}

#### For fast and easy development please use our specially designed GitHub repository for coding LLMs <https://github.com/lenderlink/lenderlink-docs>

{% endhint %}

This API is used to deliver data responses for multiple products. It can deliver JSON containing the data from the APIs below:

* [Full Response Consumer API Integration guide](/product-guides/api-integration-guides/full-response-consumer-api-integration-guide)
* [Telco Score API](/product-guides/api-integration-guides/telco-score-api)
* [Loan Applications Check API](/product-guides/api-integration-guides/loan-applications-check-api)
* [Payment Transaction Data API](/product-guides/api-integration-guides/payment-transaction-data-api)
* [Gen-1 LenderLink Network Score](/product-guides/lenderlink-network-score/gen-1-lenderlink-network-score)
* [Gen-2 LenderLink Network Score](/product-guides/lenderlink-network-score/gen-2-lenderlink-network-score)

## Authentication

Obtain a token via the [Authentication](/product-guides/api-integration-guides/authentication) procedure.&#x20;

## Request  Data

### Introduction

This endpoint facilitates the generation of a borrower's full data available by their phone number.

{% hint style="warning" %}
Note:

To utilize this endpoint, an access token is required. The procedure for obtaining one is detailed in the preceding section.
{% endhint %}

### **Request Data  Flow**

#### **Option 1**

POST API

```
https://sandbox-app.lenderlink.ph/api/v1/person/mega-report
```

Accepts a **raw JSON request body**.\
\
Clients must send `Content-Type: application/json`

Authorization

Use the generated token as Bearer access token and include it into the request.

| Token | `eyJ0eXAiOiJKasd10sJhbGciOiJSUzI1NiJ9.eyJhdWQiOiI5YTc4MzVm...` |
| ----- | -------------------------------------------------------------- |

#### Request body (JSON)

```json
{
  "requestId": "test-02f2-4933-88f3-a73c94e83487",
  "firstName": "John",
  "lastName": "Doe",
  "dateOfBirth": "1990-01-01",
  "idNumber": "ABC123456",
  "email": "john.doe@example.com",
  "cellphoneNumber": "63XXXXXXXXXX",
  "productIds": "FR,PT,CHA,TS"
}

```

#### Live examples (Full Response) that can be tested on our sandbox.

```json
 {
    "requestId": "test-09ab-4933-88f3-a73c94e83401",
    "firstName": "John",
    "lastName": "Doe",
    "dateOfBirth": "1990-01-01",
    "idNumber": "ABC123456",
    "email": "john.doe@example.com",
    "cellphoneNumber": "639171230001",
    "productIds": "FR"
  },
  {
    "requestId": "test-10bc-4933-88f3-a73c94e83402",
    "firstName": "Jane",
    "lastName": "Smith",
    "dateOfBirth": "1985-07-15",
    "idNumber": "XYZ987654",
    "email": "jane.smith@example.com",
    "cellphoneNumber": "639171230002",
    "productIds": "FR"
  },
  {
    "requestId": "test-11cd-4933-88f3-a73c94e83403",
    "firstName": "Michael",
    "lastName": "Johnson",
    "dateOfBirth": "1978-12-30",
    "idNumber": "LMN456789",
    "email": "michael.johnson@example.com",
    "cellphoneNumber": "639171230003",
    "productIds": "FR"
  },
  {
    "requestId": "test-12de-4933-88f3-a73c94e83404",
    "firstName": "Maria",
    "lastName": "Garcia",
    "dateOfBirth": "1992-04-20",
    "idNumber": "PQR123456",
    "email": "maria.garcia@example.com",
    "cellphoneNumber": "639171230004",
    "productIds": "FR"
  },
  {
    "requestId": "test-13ef-4933-88f3-a73c94e83405",
    "firstName": "Wei",
    "lastName": "Chen",
    "dateOfBirth": "1980-10-05",
    "idNumber": "JKL789012",
    "email": "wei.chen@example.com",
    "cellphoneNumber": "639171230005",
    "productIds": "FR"
  },
  {
    "requestId": "test-14f0-4933-88f3-a73c94e83406",
    "firstName": "Soo",
    "lastName": "Lee",
    "dateOfBirth": "1995-02-18",
    "idNumber": "QRS567890",
    "email": "soo.jin.lee@example.com",
    "cellphoneNumber": "639171230006",
    "productIds": "FR"
  },
  {
    "requestId": "test-33a1-4933-88f3-a73c94e83407",
    "firstName": "Rojas",
    "lastName": "Smith",
    "dateOfBirth": "1990-07-01",
    "idNumber": "ABC123456",
    "email": "fernando@example.com",
    "cellphoneNumber": "639385208771",
    "productIds": "FR"
  },
  {
    "requestId": "test-a1b2-4c3d-91e5-f67890123401",
    "firstName": "Ramon",
    "lastName": "Santos",
    "dateOfBirth": "1988-03-14",
    "idNumber": "PHL20230001",
    "email": "ramon.santos@gmail.com",
    "cellphoneNumber": "639171230007",
    "productIds": "FR"
  },
  {
    "requestId": "test-b2c3-5d4e-82f6-a78901234502",
    "firstName": "Ana",
    "lastName": "Reyes",
    "dateOfBirth": "1993-11-22",
    "idNumber": "PHL20230002",
    "email": "ana.reyes@yahoo.com",
    "cellphoneNumber": "639171230008",
    "productIds": "FR"
  },
  {
    "requestId": "test-c3d4-6e5f-73a7-b89012345603",
    "firstName": "Carlos",
    "lastName": "Torres",
    "dateOfBirth": "1975-08-09",
    "idNumber": "PHL20230003",
    "email": "carlos.torres@outlook.com",
    "cellphoneNumber": "639171230009",
    "productIds": "FR"
  },
  {
    "requestId": "test-d4e5-7f6a-64b8-c90123456704",
    "firstName": "Lisa",
    "lastName": "Fernandez",
    "dateOfBirth": "1997-05-30",
    "idNumber": "PHL20230004",
    "email": "lisa.fernandez@email.com",
    "cellphoneNumber": "639171230010",
    "productIds": "FR"
  }
  {
  "requestId": "test-e5f6-8a7b-55c9-d01234567805",
  "firstName": "Pedro",
  "lastName": "Ramos",
  "dateOfBirth": "1986-09-17",
  "idNumber": "PHN20240011",
  "email": "pedro.ramos@gmail.com",
  "cellphoneNumber": "639171230011",
  "productIds": "FR"
}
```

#### Option 2

GET API URL

```
https://sandbox-app.lenderlink.ph/api/v1/person/mega-report
```

Authorization

Use the generated token as Bearer access token and include it into the request.

| Token | `eyJ0eXAiOiJKasd10sJhbGciOiJSUzI1NiJ9.eyJhdWQiOiI5YTc4MzVm...` |
| ----- | -------------------------------------------------------------- |

* **Query Params**

<table><thead><tr><th width="258">Parameter</th><th width="125">Type</th><th width="116">Mandatory</th><th>Description</th></tr></thead><tbody><tr><td>requestId</td><td>String</td><td>Yes</td><td>Unique identification code generated by the client</td></tr><tr><td>firstName</td><td>String</td><td>Yes</td><td>First Name</td></tr><tr><td>lastName</td><td>String</td><td>Yes</td><td>Last Name</td></tr><tr><td>dateOfBirth</td><td>Date</td><td>Yes</td><td>Date of Birth - YYYY-MM-DD</td></tr><tr><td>cellphoneNumber</td><td>String</td><td>Yes</td><td>Borrower's phone number, the format is 63XXXXXXXXXX.</td></tr><tr><td>email</td><td>String</td><td>No</td><td>Borrower's email address</td></tr><tr><td>idNumber</td><td>String</td><td>No</td><td>Borrower's ID document number. ID, Driver license, etc</td></tr><tr><td>productIds</td><td>String</td><td>Yes</td><td>The list of products that you are requesting data from. "FR", "PT", "TS", "LAC"</td></tr></tbody></table>

### 1. No match:

```json

{
    "requestId": "X123-AB45",
    "productIds": [],
    "response": {}
}
                                
```

### 2. Match&#x20;

{% stepper %}
{% step %}

### You can use this interactive tool [<mark style="color:green;background-color:yellow;">https://dimohh.github.io/json/</mark>](https://dimohh.github.io/json/) to check what will the be the exact JSON you will receive if you include or exclude productIds.

{% endstep %}

{% step %}

### JSON structure

```json
{
  "requestId": "X123-AB45",
  "productIds": [
    "FR",
    "PT",
    "TS",
    "LAC"
  ],
  "response": {
    "FR": {
      "data": [
        {
          "recordID": "123456789",
          "kycSurname": "Doe",
          "kycFirstName": "John",
          "kycMiddleName": "Smith",
          "kycDateOfBirth": "1990-01-01",
          "kycIdNumber": "ABC123456",
          "kycIdType": 4,
          "kycMobileNumber": "63XXXXXXXXXX",
          "kycEmailAddress": "john.doe@example.com",
          "kycAddress": "123 Main St, Anytown, USA",
          "loanInfoLoanType": 1,
          "loanInfoApplicationDate": "2022-01-01",
          "loanInfoOpenDate": "2022-01-01",
          "loanInfoLoanTerm": 5,
          "loanInfoOpenBalance": 10000,
          "loanInfoOutstandingBalance": 8000,
          "loanInfoNextDueDate": "2024-05-01",
          "loanInfoLastPaymentAmount": 200,
          "loanInfoLastPaymentDate": "2024-04-01",
          "loanInfoStatusCode": "Active",
          "loanInfoInstallmentAmount": 500,
          "loanInfoOverdueAmount": 100,
          "loanInfoRepaymentFrequency": 1,
          "loanInfoRepaymentHistory": "00000",
          "loanInfoRepaymentFullHistory": [
            {
              "dueDate": "2022-02-01",
              "paymentDate": "2022-02-01",
              "paymentAmount": 500.00
            },
            {
              "dueDate": "2022-03-01",
              "paymentDate": "2022-03-01",
              "paymentAmount": 500.00
            },
            {
              "dueDate": "2022-04-01",
              "paymentDate": "2022-04-01",
              "paymentAmount": 500.00
            },
            {
              "dueDate": "2022-05-01",
              "paymentDate": "2022-05-01",
              "paymentAmount": 500.00
            },
            {
              "dueDate": "2022-06-01",
              "paymentDate": "2022-06-01",
              "paymentAmount": 500.00
            }
          ],
          "loanInfoCloseDate": "2023-12-28",
          "loanInfoLenderType": "fintech",
          "contributorId": "12d3ae45-678d-9ae1-2345-6e789e3xx000",
          "matchedKeys": [
            "cellphoneNumber",
            "email",
            "firstName-lastName-dateOfBirth",
            "idNumber"
          ],
          "matchedKeyCount": 4
        }
      ],
      "summary": {
        "numApp": 1,
        "numAcc": 1,
        "numReqSameDay": 3,
        "wasDpd30Ever": 1,
        "wasDpd90Ever": 0,
        "wasDpd30Last3Months": 0,
        "wasDpd90Last3Months": 0,
        "wasDpd30LastYear": 0,
        "wasDpd90LastYear": 0,
        "numActiveLoan": 1,
        "numClosedLoans": 2,
        "numCollectionLoans": 0,
        "numDelayedLoans": 0,
        "numIncompleteLoans": 0,
        "numNotDisbLoans": 0,
        "numRejectedLoans": 2,
        "numWrittenoffLoans": 0,
        "minOpenBalance": 500,
        "maxOpenBalance": 3000,
        "sumOpenBalance": 4500,
        "avgOpenBalance": 1500,
        "minOutstanding": 3360,
        "maxOutstanding": 3360,
        "sumOutstanding": 3360,
        "avgOutstanding": 3360,
        "minLastPayment": 0,
        "maxLastPayment": 1000,
        "sumLastPayment": 1674,
        "avgLastPayment": 837,
        "minInstallment": 0,
        "maxInstallment": 3360,
        "sumInstallment": 4360,
        "avgInstallment": 1453.33,
        "minOverdue": 0,
        "maxOverdue": 0,
        "sumOverdue": 0,
        "avgOverdue": 0,
        "minLoanTerm": 0,
        "maxLoanTerm": 1,
        "avgLoanTerm": 1,
        "avgOpenBalancePerLoan": 1500,
        "avgOutstandingPerLoan": 1120,
        "ratioDisbAppl": 0.6,
        "ratioOutstandingOpenbalance": 0.75,
        "ratioOverdueInstallment": 0,
        "avgUtilizationRate": 2.24,
        "maxUtilizationRate": 1.12,
        "paymentToOutstandingRatio": 0.5,
        "avgPaymentToInstallmentRatio": 0.58,
        "highOutstandingFlag": 0,
        "veryHighOutstandingFlag": 0,
        "overdueFlag": 0,
        "highOverdueFlag": 0,
        "openRange": 2500,
        "balanceVolatilityProxy": 1.67,
        "outstandingRange": 0,
        "outstandingVolatilityProxy": 0,
        "installmentRange": 3360,
        "installmentVolatilityProxy": 2.31,
        "outstandingToOpenTrendProxy": 0,
        "overdueTrendProxy": 0,
        "loanTermTrendProxy": 0,
        "avgApplDays": 8,
        "daysSinceLastApplication": 1,
        "daysSinceLastReject": 1,
        "numRecordsLast10Days": 4,
        "numRecordsLast30Days": 4,
        "numRecordsLast60Days": 5,
        "numRecordsLast90Days": 5,
        "numRecordsLast180Days": 5,
        "maxRecWeek": 2,
        "minDaysApp": 1,
        "maxDaysApp": 32,
        "isFrequentApplicant": 1,
        "isMediumFreqApplicant": 0,
        "isInfrequentApplicant": 0,
        "applicationFrequencyTrend": 0.13,
        "numDistContr": 3,
        "shareBiggestContr": 0.4,
        "numDistIdNum": 1,
        "numDistIdType": 1,
        "numDistPhones": 1,
        "numDistEmail": 1,
        "numDistNames": 2,
        "closedRate": 0.4,
        "activeRate": 0.2,
        "delayedRate": 0,
        "collectionRate": 0,
        "writtenoffRate": 0,
        "rejectRate": 0.4,
        "notDisbRate": 0,
        "incompleteRate": 0,
        "noHistPerf": 0,
        "hasBadHistory": 0,
        "hasCleanClosedHistory": 1,
        "badToGoodRatio": 0,
        "age": 28,
        "numDistLoanType": 2,
        "numPaydayLoans": 2,
        "numPosLoans": 0,
        "numCashLoans": 0,
        "numRevLoans": 1,
        "numCCLoans": 0,
        "numAutoLoans": 0,
        "numMotoLoans": 0,
        "numHomeLoans": 0
      },
      "scores": {
        "CS": {
          "score": 540,
          "band": 9
        }
      }
    },
    "PT": {
      "transactionCount": 4,
      "minAmount": 1985,
      "maxAmount": 6656,
      "aveAmount": 3531.5,
      "sumAmount": 14126,
      "stdDev": 1839.28,
      "refDates": [
        "2025-03-19",
        "2025-04-30",
        "2025-05-10",
        "2025-05-18"
      ],
      "refDateDetails": [
        {
          "refDate": "2025-03-19",
          "count": 1,
          "total": 6656
        },
        {
          "refDate": "2025-05-18",
          "count": 1,
          "total": 2485
        },
        {
          "refDate": "2025-04-30",
          "count": 1,
          "total": 1985
        },
        {
          "refDate": "2025-05-10",
          "count": 1,
          "total": 3000
        }
      ],
      "categories": [
        "Loans"
      ],
      "procIds": [
        "GCSH"
      ],
      "within1to30Days": [],
      "within31to60Days": [],
      "beyond61Days": [
        {
          "category": "Loans",
          "transactionCount": 4,
          "minAmount": 1985,
          "maxAmount": 6656,
          "sumAmount": 14126,
          "stdDev": 1839.28
        }
      ],
      "matchKey": "cellphoneNumber"
    },
    "TS": {
      "transactionId": "f2279c3df6eb4368a8ec31c0ca561c8a",
      "code": "0000",
      "result": "ok",
      "scores": {
        "G": [
          ["score", 337],
          ["band", 1]
        ]
      }
    },
    "LAC": {
      "result": "ok",
      "code": "0000",
      "transactionId": "c14432247a694546bdd11abf156c2161",
      "scores": {
        "CVSCR2": {
          "cvScore": {
            "score": 501,
            "band": 3
          },
          "cvTotals": {
            "reqTotal1": 0,
            "unqEntities1": 0,
            "reqOthers1": 0,
            "reqBnpl1": 0,
            "reqPos1": 0,
            "reqDigiLoan1": 0,
            "reqDigiBank1": 0,
            "reqCashLoan1": 0,
            "reqAuto1": 0,
            "reqBank1": 0,
            "reqDigiBnpl1": 0,
            "reqTotal7": 0,
            "unqEntities7": 0,
            "reqOthers7": 0,
            "reqBnpl7": 0,
            "reqPos7": 0,
            "reqDigiLoan7": 0,
            "reqDigiBank7": 0,
            "reqCashLoan7": 0,
            "reqAuto7": 0,
            "reqBank7": 0,
            "reqDigiBnpl7": 0,
            "reqTotal14": 0,
            "unqEntities14": 0,
            "reqOthers14": 0,
            "reqBnpl14": 0,
            "reqPos14": 0,
            "reqDigiLoan14": 0,
            "reqDigiBank14": 0,
            "reqCashLoan14": 0,
            "reqAuto14": 0,
            "reqBank14": 0,
            "reqDigiBnpl14": 0,
            "reqTotal21": 0,
            "unqEntities21": 0,
            "reqOthers21": 0,
            "reqBnpl21": 0,
            "reqPos21": 0,
            "reqDigiLoan21": 0,
            "reqDigiBank21": 0,
            "reqCashLoan21": 0,
            "reqAuto21": 0,
            "reqBank21": 0,
            "reqDigiBnpl21": 0,
            "reqTotal28": 0,
            "unqEntities28": 0,
            "reqOthers28": 0,
            "reqBnpl28": 0,
            "reqPos28": 0,
            "reqDigiLoan28": 0,
            "reqDigiBank28": 0,
            "reqCashLoan28": 0,
            "reqAuto28": 0,
            "reqBank28": 0,
            "reqDigiBnpl28": 0,
            "reqTotal35": 0,
            "unqEntities35": 0,
            "reqOthers35": 0,
            "reqBnpl35": 0,
            "reqPos35": 0,
            "reqDigiLoan35": 0,
            "reqDigiBank35": 0,
            "reqCashLoan35": 0,
            "reqAuto35": 0,
            "reqBank35": 0,
            "reqDigiBnpl35": 0,
            "reqTotal45": 0,
            "unqEntities45": 0,
            "reqOthers45": 0,
            "reqBnpl45": 0,
            "reqPos45": 0,
            "reqDigiLoan45": 0,
            "reqDigiBank45": 0,
            "reqCashLoan45": 0,
            "reqAuto45": 0,
            "reqBank45": 0,
            "reqDigiBnpl45": 0,
            "reqTotal60": 0,
            "unqEntities60": 0,
            "reqOthers60": 0,
            "reqBnpl60": 0,
            "reqPos60": 0,
            "reqDigiLoan60": 0,
            "reqDigiBank60": 0,
            "reqCashLoan60": 0,
            "reqAuto60": 0,
            "reqBank60": 0,
            "reqDigiBnpl60": 0,
            "reqTotal90": 0,
            "unqEntities90": 0,
            "reqOthers90": 0,
            "reqBnpl90": 0,
            "reqPos90": 0,
            "reqDigiLoan90": 0,
            "reqDigiBank90": 0,
            "reqCashLoan90": 0,
            "reqAuto90": 0,
            "reqBank90": 0,
            "reqDigiBnpl90": 0,
            "reqTotal180": 0,
            "unqEntities180": 0,
            "reqOthers180": 0,
            "reqBnpl180": 0,
            "reqPos180": 0,
            "reqDigiLoan180": 0,
            "reqDigiBank180": 0,
            "reqCashLoan180": 0,
            "reqAuto180": 0,
            "reqBank180": 0,
            "reqDigiBnpl180": 0,
            "reqTotal360": 0,
            "unqEntities360": 0,
            "reqOthers360": 0,
            "reqBnpl360": 0,
            "reqPos360": 0,
            "reqDigiLoan360": 0,
            "reqDigiBank360": 0,
            "reqCashLoan360": 0,
            "reqAuto360": 0,
            "reqBank360": 0,
            "reqDigiBnpl360": 0,
            "reqTotal540": 0,
            "unqEntities540": 0,
            "reqOthers540": 0,
            "reqBnpl540": 0,
            "reqPos540": 0,
            "reqDigiLoan540": 0,
            "reqDigiBank540": 0,
            "reqCashLoan540": 0,
            "reqAuto540": 0,
            "reqBank540": 0,
            "reqDigiBnpl540": 0,
            "reqTotal720": 1,
            "unqEntities720": 1,
            "reqOthers720": 1,
            "reqBnpl720": 0,
            "reqPos720": 0,
            "reqDigiLoan720": 1,
            "reqDigiBank720": 0,
            "reqCashLoan720": 0,
            "reqAuto720": 0,
            "reqBank720": 0,
            "reqDigiBnpl720": 0,
            "reqTotalAll": 33,
            "unqEntitiesTotalAll": 6,
            "reqOthersTotalAll": 33
          }
        }
      }
    }
  }
}
```

{% endstep %}
{% endstepper %}


# Full Response Consumer API Integration guide

This guide outlines the specifications for integrating and utilizing the Consumer API, including authentication steps, token request flow, and data retrieval methods.

{% hint style="success" %}

#### For fast and easy development please use our specially designed GitHub repository for coding LLMs <https://github.com/lenderlink/lenderlink-docs>

{% endhint %}

### Authentication

Obtain a token via the [Authentication](/product-guides/api-integration-guides/authentication) procedure.&#x20;

### Request Borrower Data

### Introduction

This endpoint facilitates the generation of a borrower's full data available by their phone number.

{% hint style="warning" %}
Note:

To utilize this endpoint, an access token is required. The procedure for obtaining one is detailed in the preceding section.
{% endhint %}

**Borrower Data Request Flow**

To obtain a Borrower data, follow the instructions below.

* GET API URL

```
https://sandbox-app.lenderlink.ph/api/full/borrower
```

* Authorization

Use the generated token as Bearer access token and include it into the request.

| Token | `eyJ0eXAiOiJKasd10sJhbGciOiJSUzI1NiJ9.eyJhdWQiOiI5YTc4MzVm...` |
| ----- | -------------------------------------------------------------- |

* **Query Params**

<table><thead><tr><th width="258">Parameter</th><th width="125">Type</th><th width="116">Mandatory</th><th>Description</th></tr></thead><tbody><tr><td>requestId</td><td>String</td><td>Yes</td><td>Unique identification code generated by the client</td></tr><tr><td>firstName</td><td>String</td><td>Yes</td><td>First Name</td></tr><tr><td>lastName</td><td>String</td><td>Yes</td><td>Last Name</td></tr><tr><td>dateOfBirth</td><td>Date</td><td>Yes</td><td>Date of Birth - YYYY-MM-DD</td></tr><tr><td>cellphoneNumber</td><td>String</td><td>Yes</td><td>Borrower's phone number, the format is 63XXXXXXXXXX.</td></tr><tr><td>email</td><td>String</td><td>No</td><td>Borrower's email address</td></tr><tr><td>idNumber</td><td>String</td><td>No</td><td>Borrower's ID document number. ID, Driver license, etc</td></tr></tbody></table>

* **Handling the Response**

Upon successful validation, the server will return one of two responses:

1\. No match:

```json

{
    "requestId": "X123-AB45",
    "cellphoneNumber": "63XXXXXXXXXX",
    "matchFlag": "No hit",
    "data": []
}
                                
```

2\. Match - data for all loans found in partners databases (full response) is returned

```json
{
  "requestId": "X123-AB45",
  "cellphoneNumber": "63XXXXXXXXXX",
  "matchFlag": "Hit",
  "data": [
        {
          "recordID": "123456789",
          "kycSurname": "Doe",
          "kycFirstName": "John",
          "kycMiddleName": "Smith",
          "kycDateOfBirth": "1990-01-01",
          "kycIdNumber": "ABC123456",
          "kycIdType": 4,
          "kycMobileNumber": "63XXXXXXXXXX",
          "kycEmailAddress": "john.doe@example.com",
          "kycAddress": "123 Main St, Anytown, USA",
          "loanInfoLoanType": 1,
          "loanInfoApplicationDate": "2022-01-01",
          "loanInfoOpenDate": "2022-01-01",
          "loanInfoLoanTerm": 5,
          "loanInfoOpenBalance": 10000,
          "loanInfoOutstandingBalance": 8000,
          "loanInfoNextDueDate": "2024-05-01",
          "loanInfoLastPaymentAmount": 200,
          "loanInfoLastPaymentDate": "2024-04-01",
          "loanInfoStatusCode": "Active",
          "loanInfoInstallmentAmount": 500,
          "loanInfoOverdueAmount": 100,
          "loanInfoRepaymentFrequency": 1,
          "loanInfoRepaymentHistory": "00000",
          "loanInfoRepaymentFullHistory": [
            {
              "dueDate": "2022-02-01",
              "paymentDate": "2022-02-01",
              "paymentAmount": 500.00
            },
            {
              "dueDate": "2022-03-01",
              "paymentDate": "2022-03-01",
              "paymentAmount": 500.00
            },
            {
              "dueDate": "2022-04-01",
              "paymentDate": "2022-04-01",
              "paymentAmount": 500.00
            },
            {
              "dueDate": "2022-05-01",
              "paymentDate": "2022-05-01",
              "paymentAmount": 500.00
            },
            {
              "dueDate": "2022-06-01",
              "paymentDate": "2022-06-01",
              "paymentAmount": 500.00
            }
          ],
          "loanInfoCloseDate": "2023-12-28",
          "loanInfoLenderType": "fintech",
          "contributorId": "12d3ae45-678d-9ae1-2345-6e789e3xx000",
          "matchedKeys": [
            "cellphoneNumber",
            "email",
            "firstName-lastName-dateOfBirth",
            "idNumber"
          ],
          "matchedKeyCount": 4
        }
      ],
      "summary": {
        "numApp": 1,
        "numAcc": 1,
        "numReqSameDay": 3,
        "wasDpd30Ever": 1,
        "wasDpd90Ever": 0,
        "wasDpd30Last3Months": 0,
        "wasDpd90Last3Months": 0,
        "wasDpd30LastYear": 0,
        "wasDpd90LastYear": 0,
        "numActiveLoan": 1,
        "numClosedLoans": 2,
        "numCollectionLoans": 0,
        "numDelayedLoans": 0,
        "numIncompleteLoans": 0,
        "numNotDisbLoans": 0,
        "numRejectedLoans": 2,
        "numWrittenoffLoans": 0,
        "minOpenBalance": 500,
        "maxOpenBalance": 3000,
        "sumOpenBalance": 4500,
        "avgOpenBalance": 1500,
        "minOutstanding": 3360,
        "maxOutstanding": 3360,
        "sumOutstanding": 3360,
        "avgOutstanding": 3360,
        "minLastPayment": 0,
        "maxLastPayment": 1000,
        "sumLastPayment": 1674,
        "avgLastPayment": 837,
        "minInstallment": 0,
        "maxInstallment": 3360,
        "sumInstallment": 4360,
        "avgInstallment": 1453.33,
        "minOverdue": 0,
        "maxOverdue": 0,
        "sumOverdue": 0,
        "avgOverdue": 0,
        "minLoanTerm": 0,
        "maxLoanTerm": 1,
        "avgLoanTerm": 1,
        "avgOpenBalancePerLoan": 1500,
        "avgOutstandingPerLoan": 1120,
        "ratioDisbAppl": 0.6,
        "ratioOutstandingOpenbalance": 0.75,
        "ratioOverdueInstallment": 0,
        "avgUtilizationRate": 2.24,
        "maxUtilizationRate": 1.12,
        "paymentToOutstandingRatio": 0.5,
        "avgPaymentToInstallmentRatio": 0.58,
        "highOutstandingFlag": 0,
        "veryHighOutstandingFlag": 0,
        "overdueFlag": 0,
        "highOverdueFlag": 0,
        "openRange": 2500,
        "balanceVolatilityProxy": 1.67,
        "outstandingRange": 0,
        "outstandingVolatilityProxy": 0,
        "installmentRange": 3360,
        "installmentVolatilityProxy": 2.31,
        "outstandingToOpenTrendProxy": 0,
        "overdueTrendProxy": 0,
        "loanTermTrendProxy": 0,
        "avgApplDays": 8,
        "daysSinceLastApplication": 1,
        "daysSinceLastReject": 1,
        "numRecordsLast10Days": 4,
        "numRecordsLast30Days": 4,
        "numRecordsLast60Days": 5,
        "numRecordsLast90Days": 5,
        "numRecordsLast180Days": 5,
        "maxRecWeek": 2,
        "minDaysApp": 1,
        "maxDaysApp": 32,
        "isFrequentApplicant": 1,
        "isMediumFreqApplicant": 0,
        "isInfrequentApplicant": 0,
        "applicationFrequencyTrend": 0.13,
        "numDistContr": 3,
        "shareBiggestContr": 0.4,
        "numDistIdNum": 1,
        "numDistIdType": 1,
        "numDistPhones": 1,
        "numDistEmail": 1,
        "numDistNames": 2,
        "closedRate": 0.4,
        "activeRate": 0.2,
        "delayedRate": 0,
        "collectionRate": 0,
        "writtenoffRate": 0,
        "rejectRate": 0.4,
        "notDisbRate": 0,
        "incompleteRate": 0,
        "noHistPerf": 0,
        "hasBadHistory": 0,
        "hasCleanClosedHistory": 1,
        "badToGoodRatio": 0,
        "age": 28,
        "numDistLoanType": 2,
        "numPaydayLoans": 2,
        "numPosLoans": 0,
        "numCashLoans": 0,
        "numRevLoans": 1,
        "numCCLoans": 0,
        "numAutoLoans": 0,
        "numMotoLoans": 0,
        "numHomeLoans": 0
      },
      "scores": {
        "CS": {
          "score": 540,
          "band": 9
        }
      }
    }
```


# Telco Score API

{% hint style="success" %}

#### For fast and easy development please use our specially designed GitHub repository for coding LLMs <https://github.com/lenderlink/lenderlink-docs>

{% endhint %}

Telco scores are statistical models built on various MNO(Mobile Network Operator) data sources such as data and voice usage, top-up patterns, location and device data, and many more. Derived by the most advanced machine learning algorithms, the scores have significant predictive power and can be used as either standalone models or in combination with exiting internal Social-Demographic and/or Credit Bureau models. This is currently available for SMART and Globe mobile numbers.

### Versions

We have several versions(models) of the Telco score for prepaid and postpaid customers. These distinct versions are developed using diverse loan product payment information. All scores are calibrated to the same scale.When clients come on board, they will receive product IDs associated with the chosen version. Each individual model will encompass a specific spectrum of scores and bands for both postpaid and prepaid numbers, contingent upon the Mobile Network Operator (MNO).

**Example**: Below is an example score and band range for SMART prepaid and postpaid customer for a telco score model.

SMART Prepaid Customer

* `Score Range`: 300 to 600
* `Score Bands`:

| SCORE BAND | RISK LEVEL |
| ---------- | ---------- |
| 1          | Highest    |
| 2          | Highest    |
| 3          | High       |
| 4          | High       |
| 5          | Medium     |
| 6          | Medium     |
| 7          | Low        |
| 8          | Low        |
| 9          | Low        |
| 10         | Low        |

\
SMART Postpaid Customer

* `Score Range`: 700 to 999
* `Score Bands`:

| SCORE BAND | RISK LEVEL |
| ---------- | ---------- |
| 21         | High       |
| 22         | Medium     |
| 23         | Low        |

**Note**: The score bands and ranges may vary from the values provided above in certain models. Additionally, there are specific instances where default values can be assigned to the score bands. Clients will receive specific information about the score bands, ranges, and any special case values associated with the chosen model during the onboarding process. Below, an illustration is presented that showcases default values for special cases within one of the models.

| Default value | Definition                                                                  |
| ------------- | --------------------------------------------------------------------------- |
| -9            | Sun cellular subscribers                                                    |
| -8            | Smart broadband subscribers and others                                      |
| -7            | Smart prepaid and postpaid subscribers, registered before less than 10 days |
| -6            | Smart prepaid subscribers without top-ups in the last 90 days               |

This section enumerates all values that could be returned in the error code field.

| Code | HTTP Status | Message                                           | Note                                                                                                                                  |
| ---- | ----------- | ------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- |
| 1111 | 500         | General Error                                     | Something on our side is wrong. We are looking into it                                                                                |
|      | 422         | Request Id not found                              | Request ID is missing in the request                                                                                                  |
|      | 422         | Mobile number format is not correct               | Incorrect mobile number format in the request                                                                                         |
|      | 422         | Product ids not found                             | Product ID is missing in the request                                                                                                  |
|      | 422         | Mobile number is not a valid SMART / Globe number | Globe mobile number is sent in the request with SMART product ID or SMART mobile number is sent in the request with Globe product ID. |
|      | 422         | Product ids unknown id in the list                | The product IDs do not exist                                                                                                          |

\
Authentication
--------------

Obtain a token via the [Authentication](/product-guides/api-integration-guides/authentication) procedure.&#x20;

### Endpoint

The API endpoint for accessing the telco score is:

```
https://sandbox-app.lenderlink.ph/api/v1/telco/score
```

### Request Parameters

The request should include the following parameters:

| Parameter       | Mandatory | Description                                                                                                                                                                          |
| --------------- | --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| cellphoneNumber | Yes       | The mobile number of the client for whom you want to generate the telco score. Format 6XXXXXXXXXXX                                                                                   |
| productIds      | No        | parameter is a semicolon-separated list of product codes that you want to use for the telco score. For Sandbox API testing, you can use "**G;**" for SMART and "**GL1;**" for Globe. |
| requestId       | Yes       | Identifier for the API request. It should be a unique value for each API call.                                                                                                       |
| email           | No        | Email address of the person                                                                                                                                                          |

### Response Parameters

The API response will contain the calculated telco scores for the mobile number sent in the request. The response will be in JSON format and will include the following fields:

| Parameter     | Type   | Mandatory | Description                                                         |
| ------------- | ------ | --------- | ------------------------------------------------------------------- |
| requestId     | String | Yes       | Unique identifier for the request.                                  |
| transactionId | String | Yes       | Unique system identifier for the transaction.                       |
| code          | String | Yes       | Operation code.                                                     |
| result        | String | Yes       | Operation result, indicating the success or failure of the request. |
| score         | Object | Yes       | An object containing score and band values in numeric format.       |

### Example

#### GET Telco Score for celphone number

```
https://sandbox-app.lenderlink.ph/api/v1/telco/score
```

```json
{
  "mobileNumber": "63XXXXXXXXXX",
  "requestId": "X123-AB45"
}
```

**Example Response**

```json
{
  "requestId": "X123-AB45",
  "transactionId": "f2279c3df6eb4368a8ec31c0ca561c8a",
  "code": "0000",
  "result": "ok",
  "scores": {
    "G": [
      [
        "score",
        337
      ],
      [
        "band",
        1
      ]
    ]
  }
}
```


# Loan Applications Check API

Provides the information based on the telco scoring inquiries of a user. Loan Applications Check is currently available only for SMART and Globe numbers.

{% hint style="success" %}

#### For fast and easy development please use our specially designed GitHub repository for coding LLMs <https://github.com/lenderlink/lenderlink-docs>

{% endhint %}

## Authentication

Obtain a token via the [Authentication](/product-guides/api-integration-guides/authentication) procedure.&#x20;

### Endpoint

The API endpoint for accessing the telco score is:

```
https://sandbox-app.lenderlink.ph/api/v1/telco/score
```

### Request Parameters

The request should include the following parameters:

| Parameter       | Mandatory | Description                                                                                                                                                          |
| --------------- | --------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| cellphoneNumber | Yes       | Should contain the SMART number of the client for whom you want to generate the Loan Applications Check.Format 63XXXXXXXXXX                                          |
| productIds      | Yes       | parameter is a semicolon-separated list of product codes that you want to use for Loan Applications Check. For this API request, the productIds should be "CVSCR2;". |
| requestId       | Yes       | Identifier for the API request. It should be a unique value for each API call.                                                                                       |
| email           | No        | Email address of the person                                                                                                                                          |

### Response Parameters

The API response will be in JSON format and will include the following fields:

| Parameter              | Type    | Mandatory | Description                                                                                                                                                       |
| ---------------------- | ------- | --------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| requestId              | string  | Yes       | Unique identifier                                                                                                                                                 |
| transactionId          | string  | Yes       | Unique system identifier                                                                                                                                          |
| code                   | string  | Yes       | Operation code                                                                                                                                                    |
| result                 | string  | Yes       | Operation result                                                                                                                                                  |
| scores                 | string  | Yes       | Semicolon separated string scoring product identifiers (product id 911)                                                                                           |
| 911                    | Object  | yes       |                                                                                                                                                                   |
| cvTotals               | Object  | yes       |                                                                                                                                                                   |
| requestsTotalAll       | Integer | Yes       | # all previous requests, including such performed by the Client requesting Loan Applications Check                                                                |
| uniqueEntitiesTotalAll | Integer | Yes       | # of unique Lending institutions who performed the requests, including the Client requesting Loan Applications Check                                              |
| requestsSameTotalAll   | Integer | Yes       | # of all previous requests performed by the Client requesting Loan Applications Check                                                                             |
| requestsOtherTotalAll  | Integer | Yes       | # of all previous requests, excluding such performed by the Client requesting Loan Applications Check                                                             |
| requestsTotal1         | Integer | Yes       | # of all previous requests, including such performed by the Client requesting Loan Applications Check - 1 Day before the Main request date                        |
| requestsTotal7         | Integer | Yes       | Same as above, but "Last 7 days" (includes "\_1")                                                                                                                 |
| requestsTotal14        | Integer | Yes       | Same as above, but "Last 14 days" (includes "\_1" and "\_7")                                                                                                      |
| requestsTotal21        | Integer | Yes       | Same logic as above                                                                                                                                               |
| requestsTotal28        | Integer | Yes       | Same logic as above                                                                                                                                               |
| requestsTotal35        | Integer | Yes       | Same logic as above                                                                                                                                               |
| requestsTotal45        | Integer | Yes       | Same logic as above                                                                                                                                               |
| requestsTotal60        | Integer | Yes       | Same logic as above                                                                                                                                               |
| requestsTotal90        | Integer | Yes       | Same logic as above                                                                                                                                               |
| requestsTotal180       | Integer | Yes       | Same logic as above                                                                                                                                               |
| requestsTotal360       | Integer | Yes       | Same logic as above                                                                                                                                               |
| uniqueEntities1        | Integer | Yes       | # of unique Lending institutions who performed the requests, including the Client requesting Loan Applications Check - 1 Day before the Main request date         |
| uniqueEntities7        | Integer | Yes       | Same as above, but "Last 7 days" (includes "\_1")                                                                                                                 |
| uniqueEntities14       | Integer | Yes       | Same as above, but "Last 14 days" (includes "\_1" and "\_7")                                                                                                      |
| uniqueEntities21       | Integer | Yes       | Same logic as above                                                                                                                                               |
| uniqueEntities28       | Integer | Yes       | Same logic as above                                                                                                                                               |
| uniqueEntities35       | Integer | Yes       | Same logic as above                                                                                                                                               |
| uniqueEntities45       | Integer | Yes       | Same logic as above                                                                                                                                               |
| uniqueEntities60       | string  | Yes       | Same logic as above                                                                                                                                               |
| uniqueEntities90       | Integer | Yes       | Same logic as above                                                                                                                                               |
| uniqueEntities180      | Integer | Yes       | Same logic as above                                                                                                                                               |
| uniqueEntities360      | Integer | Yes       | Same logic as above                                                                                                                                               |
| requestsSame1          | Integer | Yes       | # of all previous requests performed by the Client requesting Loan Applications Check - 1 Day before the Main request date                                        |
| requestsSame7          | Integer | Yes       | Same as above, but "Last 7 days" (includes "\_1")                                                                                                                 |
| requestsSame14         | Integer | Yes       | Same as above, but "Last 14 days" (includes "\_1" and "\_7")                                                                                                      |
| requestsSame21         | Integer | Yes       | Same logic as above                                                                                                                                               |
| requestsSame28         | Integer | Yes       | Same logic as above                                                                                                                                               |
| requestsSame35         | Integer | Yes       | Same logic as above                                                                                                                                               |
| requestsSame45         | Integer | Yes       | Same logic as above                                                                                                                                               |
| requestsSame60         | Integer | Yes       | Same logic as above                                                                                                                                               |
| requestsSame90         | Integer | Yes       | Same logic as above                                                                                                                                               |
| requestsSame180        | Integer | Yes       | Same logic as above                                                                                                                                               |
| requestsSame360        | Integer | Yes       | Same logic as above                                                                                                                                               |
| requestsOthers1        | Integer | Yes       | # of all previous requests, excluding such performed by the Client requesting Loan Applications Check - 1 Day before the Main request date                        |
| requestsOthers7        | Integer | Yes       | Same as above, but "Last 7 days" (includes "\_1")                                                                                                                 |
| requestsOthers14       | Integer | Yes       | Same as above, but "Last 14 days" (includes "\_1" and "\_7")                                                                                                      |
| requestsOthers21       | Integer | Yes       | Same logic as above                                                                                                                                               |
| requestsOthers28       | Integer | Yes       | Same logic as above                                                                                                                                               |
| requestsOthers35       | Integer | Yes       | Same logic as above                                                                                                                                               |
| requestsOthers45       | Integer | Yes       | Same logic as above                                                                                                                                               |
| requestsOthers60       | Integer | Yes       | Same logic as above                                                                                                                                               |
| requestsOthers90       | Integer | Yes       | Same logic as above                                                                                                                                               |
| requestsOthers180      | Integer | Yes       | Same logic as above                                                                                                                                               |
| requestsOthers360      | Integer | Yes       | Same logic as above                                                                                                                                               |
| requestsBank1          | Integer | Yes       | # of all previous requests performed by Banks, excluding such performed by the Client requesting Loan Applications Check - 1 Day before the Main request date     |
| requestsBank7          | Integer | Yes       | Same as above, but "Last 7 days" (includes "\_1")                                                                                                                 |
| requestsBank14         | Integer | Yes       | Same as above, but "Last 14 days" (includes "\_1" and "\_7")                                                                                                      |
| requestsBank21         | Integer | Yes       | Same logic as above                                                                                                                                               |
| requestsBank28         | Integer | Yes       | Same logic as above                                                                                                                                               |
| requestsBank35         | Integer | Yes       | Same logic as above                                                                                                                                               |
| requestsBank45         | Integer | Yes       | Same logic as above                                                                                                                                               |
| requestsBank60         | Integer | Yes       | Same logic as above                                                                                                                                               |
| requestsBank90         | Integer | Yes       | Same logic as above                                                                                                                                               |
| requestsBank180        | Integer | Yes       | Same logic as above                                                                                                                                               |
| requestsBank360        | Integer | Yes       | Same logic as above                                                                                                                                               |
| requestsNonBank1       | Integer | Yes       | # of all previous requests performed by non banks, excluding such performed by the Client requesting Loan Applications Check - 1 Day before the Main request date |
| requestsNonBank17      | Integer | Yes       | Same as above, but "Last 7 days" (includes "\_1")                                                                                                                 |
| requestsNonBank14      | Integer | Yes       | Same logic as above                                                                                                                                               |
| requestsNonBank21      | Integer | Yes       | Same logic as above                                                                                                                                               |
| requestsNonBank28      | Integer | Yes       | Same logic as above                                                                                                                                               |
| requestsNonBank35      | Integer | Yes       | Same logic as above                                                                                                                                               |
| requestsNonBank45      | Integer | Yes       | Same logic as above                                                                                                                                               |
| requestsNonBank60      | Integer | Yes       | Same logic as above                                                                                                                                               |
| requestsNonBank90      | Integer | Yes       | Same logic as above                                                                                                                                               |
| requestsNonBank180     | Integer | Yes       | Same logic as above                                                                                                                                               |
| requestsNonBank360     | Integer | Yes       | Same logic as above                                                                                                                                               |
| scorePtd               | Integer | Yes       | The raw score generated by the Payment Transaction Data model, representing predicted customer risk (higher score = better).                                      |
| bandPtd                | Integer | Yes       | Score percentile band based on the development sample, segmented into 10 risk groups (1 = highest risk, 10 = lowest risk).                                        |

### Example

#### POST Loan Application Check without telco score for SMART

```
https://sandbox-app.lenderlink.ph/api/v1/telco/score
```

```json
{
  "mobilenumber": "639XXXXXXXXX",
  "productids": "911;",
  "requestId": "X123-AB45"
}
```

**Example Response**

```json
{
  "requestId": "X123-AB45",
  "transactionId": "75b0b20f46a54107a75a38b6d6dc1db0",
  "code": "0000",
  "result": "ok",
  "scores": {
    "911": {
      "cvTotals": [
        {
          "requestsTotalAll": 968,
          "uniqueEntitiesTotalAll": 30,
          "requestsSameTotalAll": 74,
          "requestsOthersTotalAll": 894,
          "requestsTotal1": 3,
          "requestsTotal7": 12,
          "requestsTotal14": 22,
          "requestsTotal21": 31,
          "requestsTotal28": 40,
          "requestsTotal35": 62,
          "requestsTotal45": 80,
          "requestsTotal60": 107,
          "requestsTotal90": 169,
          "requestsTotal180": 312,
          "requestsTotal360": 539,
          "uniqueEntities1": 2,
          "uniqueEntities7": 3,
          "uniqueEntities14": 3,
          "uniqueEntities21": 3,
          "uniqueEntities28": 3,
          "uniqueEntities35": 7,
          "uniqueEntities45": 9,
          "uniqueEntities60": 12,
          "uniqueEntities90": 18,
          "uniqueEntities180": 22,
          "uniqueEntities360": 24,
          "requestsSame1": 2,
          "requestsSame7": 4,
          "requestsSame14": 6,
          "requestsSame21": 8,
          "requestsSame28": 9,
          "requestsSame35": 14,
          "requestsSame45": 16,
          "requestsSame60": 21,
          "requestsSame90": 31,
          "requestsSame180": 41,
          "requestsSame360": 59,
          "requestsOthers1": 1,
          "requestsOthers7": 8,
          "requestsOthers14": 16,
          "requestsOthers21": 23,
          "requestsOthers28": 31,
          "requestsOthers35": 48,
          "requestsOthers45": 64,
          "requestsOthers60": 86,
          "requestsOthers90": 138,
          "requestsOthers180": 271,
          "requestsOthers360": 480,
          "requestsBank1": 0,
          "requestsBank7": 0,
          "requestsBank14": 0,
          "requestsBank21": 0,
          "requestsBank28": 0,
          "requestsBank35": 0,
          "requestsBank45": 1,
          "requestsBank60": 3,
          "requestsBank90": 9,
          "requestsBank180": 16,
          "requestsBank360": 23,
          "requestsNonBank1": 0,
          "requestsNonBank7": 1,
          "requestsNonBank14": 2,
          "requestsNonBank21": 2,
          "requestsNonBank28": 3,
          "requestsNonBank35": 13,
          "requestsNonBank45": 18,
          "requestsNonBank60": 22,
          "requestsNonBank90": 29,
          "requestsNonBank180": 58,
          "requestsNonBank360": 79
        }
      ]
    }
  }
}

```

#### POST Loan Application Check with telco score for SMART

```
https://sandbox-app.lenderlink.ph/api/v1/telco/score
```

```json
{
  "mobileNumber": "639XXXXXXXXX",
  "productIds": "911;G;",
  "requestId": "X123-AB45"
}
```

**Example Response**

```json
{
  "requestId": "X123-AB45",
  "transactionId": "14e09f5f01ad4797a08f23386502ad38",
  "code": "0000",
  "result": "ok",
  "scores": {
    "911": {
      "cvTotals": [
        {
          "requestsTotalAll": 968,
          "uniqueEntitiesTotalAll": 30,
          "requestsSameTotalAll": 74,
          "requestsOthersTotalAll": 894,
          "requestsTotal1": 3,
          "requestsTotal7": 12,
          "requestsTotal14": 22,
          "requestsTotal21": 31,
          "requestsTotal28": 40,
          "requestsTotal35": 62,
          "requestsTotal45": 80,
          "requestsTotal60": 107,
          "requestsTotal90": 169,
          "requestsTotal180": 312,
          "requestsTotal360": 539,
          "uniqueEntities1": 2,
          "uniqueEntities7": 3,
          "uniqueEntities14": 3,
          "uniqueEntities21": 3,
          "uniqueEntities28": 3,
          "uniqueEntities35": 7,
          "uniqueEntities45": 9,
          "uniqueEntities60": 12,
          "uniqueEntities90": 18,
          "uniqueEntities180": 22,
          "uniqueEntities360": 24,
          "requestsSame1": 2,
          "requestsSame7": 4,
          "requestsSame14": 6,
          "requestsSame21": 8,
          "requestsSame28": 9,
          "requestsSame35": 14,
          "requestsSame45": 16,
          "requestsSame60": 21,
          "requestsSame90": 31,
          "requestsSame180": 41,
          "requestsSame360": 59,
          "requestsOthers1": 1,
          "requestsOthers7": 8,
          "requestsOthers14": 16,
          "requestsOthers21": 23,
          "requestsOthers28": 31,
          "requestsOthers35": 48,
          "requestsOthers45": 64,
          "requestsOthers60": 86,
          "requestsOthers90": 138,
          "requestsOthers180": 271,
          "requestsOthers360": 480,
          "requestsBank1": 0,
          "requestsBank7": 0,
          "requestsBank14": 0,
          "requestsBank21": 0,
          "requestsBank28": 0,
          "requestsBank35": 0,
          "requestsBank45": 1,
          "requestsBank60": 3,
          "requestsBank90": 9,
          "requestsBank180": 16,
          "requestsBank360": 23,
          "requestsNonBank1": 0,
          "requestsNonBank7": 1,
          "requestsNonBank14": 2,
          "requestsNonBank21": 2,
          "requestsNonBank28": 3,
          "requestsNonBank35": 13,
          "requestsNonBank45": 18,
          "requestsNonBank60": 22,
          "requestsNonBank90": 29,
          "requestsNonBank180": 58,
          "requestsNonBank360": 79
        }
      ]
    },
    "G": [
      [
        "scorePtd",
        337
      ],
      [
        "bandPtd",
        1
      ]
    ]
  }
}

```


# Payment Transaction Data API

{% hint style="success" %}

#### For fast and easy development please use our specially designed GitHub repository for coding LLMs <https://github.com/lenderlink/lenderlink-docs>

{% endhint %}

## Authentication

Obtain a token via the [Authentication](/product-guides/api-integration-guides/authentication) procedure.&#x20;

### Endpoint

The API endpoint for accessing the Payment Transaction Data is:

```
https://sandbox-app.lenderlink.ph/api/v1/person/payment-transactions
```

Web Method: **GET**&#x20;

<table><thead><tr><th valign="top">Parameter</th><th valign="top">Type</th><th>Mandatory</th><th valign="top">Description </th></tr></thead><tbody><tr><td valign="top">requestId</td><td valign="top">String </td><td>Yes</td><td valign="top">Unique identification code generated by the client</td></tr><tr><td valign="top">email </td><td valign="top">String </td><td>Yes</td><td valign="top">Email address </td></tr><tr><td valign="top">cellphoneNumber</td><td valign="top">String </td><td>Yes</td><td valign="top">Borrower's phone number, the format is 63XXXXXXXXXX.</td></tr></tbody></table>

### Response Parameters

System responds with HTTP status 401 (unauthorized) if an unsupported version number was provided. Otherwise, a status 200 and a JSON object is returned in its body.

```json
{
    "requestId": "X123-AB45",
    "matchFlag": "Hit",
    "data": {
        "transactionCount": 33,
        "minAmount": 94,
        "maxAmount": 10150,
        "aveAmount": 2668.43,
        "sumAmount": 88058.04000000001,
        "stdDev": 2737.87,
        "refDates": [
            "2025-01-16",
            "2025-01-20",
            "2025-01-21",
            "2025-02-02",
            "2025-02-16",
            "2025-02-19",
            "2025-02-20",
            "2025-02-28",
            "2025-03-03",
            "2025-03-15",
            "2025-03-30",
            "2025-04-17",
            "2025-04-18",
            "2025-04-21",
            "2025-05-02",
            "2025-05-09",
            "2025-05-10",
            "2025-05-11",
            "2025-05-18",
            "2025-05-21",
            "2025-05-23",
            "2025-05-25",
            "2025-05-28",
            "2025-05-30",
            "2025-05-31",
            "2025-06-10",
            "2025-06-13",
            "2025-06-28",
            "2025-06-29",
            "2025-07-02",
            "2025-07-04"
        ],
        "refDateDetails": [
            {
                "refDate": "2025-01-21",
                "count": 1,
                "total": 2880
            },
            {
                "refDate": "2025-02-28",
                "count": 1,
                "total": 638.07
            },
            {
                "refDate": "2025-05-25",
                "count": 1,
                "total": 1140
            },
            {
                "refDate": "2025-02-16",
                "count": 1,
                "total": 6575
            },
            {
                "refDate": "2025-05-28",
                "count": 1,
                "total": 1315
            },
            {
                "refDate": "2025-05-18",
                "count": 1,
                "total": 182
            },
            {
                "refDate": "2025-03-03",
                "count": 1,
                "total": 406
            },
            {
                "refDate": "2025-04-18",
                "count": 1,
                "total": 5260
            },
            {
                "refDate": "2025-03-30",
                "count": 1,
                "total": 4350
            },
            {
                "refDate": "2025-02-02",
                "count": 1,
                "total": 406
            },
            {
                "refDate": "2025-06-29",
                "count": 1,
                "total": 2840
            },
            {
                "refDate": "2025-02-20",
                "count": 1,
                "total": 6400
            },
            {
                "refDate": "2025-04-17",
                "count": 2,
                "total": 3146.99
            },
            {
                "refDate": "2025-05-09",
                "count": 1,
                "total": 153
            },
            {
                "refDate": "2025-05-23",
                "count": 1,
                "total": 3287
            },
            {
                "refDate": "2025-05-30",
                "count": 1,
                "total": 10150
            },
            {
                "refDate": "2025-05-21",
                "count": 1,
                "total": 123
            },
            {
                "refDate": "2025-05-10",
                "count": 1,
                "total": 145
            },
            {
                "refDate": "2025-05-11",
                "count": 2,
                "total": 311
            },
            {
                "refDate": "2025-06-28",
                "count": 1,
                "total": 5260
            },
            {
                "refDate": "2025-04-21",
                "count": 1,
                "total": 669.98
            },
            {
                "refDate": "2025-07-04",
                "count": 1,
                "total": 94
            },
            {
                "refDate": "2025-07-02",
                "count": 1,
                "total": 2175
            },
            {
                "refDate": "2025-05-02",
                "count": 1,
                "total": 1440
            },
            {
                "refDate": "2025-05-31",
                "count": 1,
                "total": 1450
            },
            {
                "refDate": "2025-02-19",
                "count": 1,
                "total": 5800
            },
            {
                "refDate": "2025-01-16",
                "count": 1,
                "total": 6575
            },
            {
                "refDate": "2025-06-13",
                "count": 1,
                "total": 106
            },
            {
                "refDate": "2025-06-10",
                "count": 1,
                "total": 1180
            },
            {
                "refDate": "2025-03-15",
                "count": 1,
                "total": 7800
            },
            {
                "refDate": "2025-01-20",
                "count": 1,
                "total": 5800
            }
        ],
        "categories": [
            "Loans",
            "Fintech",
            "Marketplace"
        ],
        "procIds": [
            "ECPY",
            "ABQR",
            "GCSH"
        ],
        "within1to30Days": [
            {
                "category": "Loans",
                "transactionCount": 4,
                "minAmount": 1180,
                "maxAmount": 5260,
                "sumAmount": 11455,
                "stdDev": 1504.32
            },
            {
                "category": "Marketplace",
                "transactionCount": 2,
                "minAmount": 94,
                "maxAmount": 106,
                "sumAmount": 200,
                "stdDev": 6
            }
        ],
        "within31to60Days": [
            {
                "category": "Marketplace",
                "transactionCount": 6,
                "minAmount": 114,
                "maxAmount": 197,
                "sumAmount": 914,
                "stdDev": 29.61
            },
            {
                "category": "Loans",
                "transactionCount": 5,
                "minAmount": 1140,
                "maxAmount": 10150,
                "sumAmount": 17342,
                "stdDev": 3429.55
            }
        ],
        "beyond61Days": [
            {
                "category": "Loans",
                "transactionCount": 11,
                "minAmount": 1440,
                "maxAmount": 7800,
                "sumAmount": 55621,
                "stdDev": 1877.31
            },
            {
                "category": "Fintech",
                "transactionCount": 5,
                "minAmount": 405.99,
                "maxAmount": 669.98,
                "sumAmount": 2526.04,
                "stdDev": 121.93
            }
        ],
        "matchKey": "cellphoneNumber"
    }
}

```

The details of the JSON object are as follows:

<table><thead><tr><th valign="top">Parameter</th><th valign="top">Data Type </th><th valign="top">Description</th></tr></thead><tbody><tr><td valign="top">transactionCount </td><td valign="top">Integer </td><td valign="top">The number of successful collection transactions completed by the user within the time period </td></tr><tr><td valign="top">minAmount </td><td valign="top">Decimal </td><td valign="top">The smallest amount among all the transactions by that user within the period </td></tr><tr><td valign="top">maxAmount </td><td valign="top">Decimal </td><td valign="top">The largest amount among all the transactions by that user within the period </td></tr><tr><td valign="top">aveAmount </td><td valign="top">Decimal </td><td valign="top">The average amount of all the transactions by that user within the period </td></tr><tr><td valign="top">sumAmount </td><td valign="top">Decimal </td><td valign="top">The total amount of all the transactions by that user within the period </td></tr><tr><td valign="top">stdDev </td><td valign="top">Decimal </td><td valign="top">The population standard deviation of the amounts </td></tr><tr><td valign="top">refDates </td><td valign="top">Array of Date </td><td valign="top">An array of dates when the transactions occurred </td></tr><tr><td valign="top">categories </td><td valign="top">Array of String </td><td valign="top">An array of categories covering the various merchants where the payments were made to </td></tr><tr><td valign="top">procIds </td><td valign="top">Array of String </td><td valign="top">An array of payment processors where the various payments were made to </td></tr><tr><td valign="top">within1to30Days </td><td valign="top">Array of Sub-Details Records </td><td valign="top">An array of records based on the transactions from the last 30 days showing the breakdown by category </td></tr><tr><td valign="top">within31to60Days </td><td valign="top">Array of Sub-Details Records </td><td valign="top">An array of records based on the transactions from the last 31 to 60 days showing the breakdown by category </td></tr><tr><td valign="top">beyond61Days </td><td valign="top">Array of Sub-Details Records </td><td valign="top">An array of records based on the transactions beyond the last 61 days showing the breakdown by category </td></tr><tr><td valign="top">matchKey</td><td valign="top">cellphoneNumber or email</td><td valign="top">Shows the key that matched </td></tr></tbody></table>

The Sub-details Record follows the format:

<table><thead><tr><th valign="top">Parameter</th><th valign="top">Data Type </th><th valign="top">Description</th></tr></thead><tbody><tr><td valign="top">category </td><td valign="top">String </td><td valign="top">The industry or category of the merchant </td></tr><tr><td valign="top">transactionCount </td><td valign="top">Integer </td><td valign="top">The number of successful collection transactions completed by the user associated with the email within the time period </td></tr><tr><td valign="top">minAmount </td><td valign="top">Decimal </td><td valign="top">The smallest amount among all the transactions by that user within the time period </td></tr><tr><td valign="top">maxAmount </td><td valign="top">Decimal </td><td valign="top">The largest amount among all the transactions by that user within the time period </td></tr><tr><td valign="top">sumAmount </td><td valign="top">Decimal </td><td valign="top">The total amount of all the transactions by that user within the time period </td></tr><tr><td valign="top">stdDev </td><td valign="top">Decimal </td><td valign="top">The population standard deviation of the amounts </td></tr></tbody></table>


# Contributor Integration Options - Responsibility Split

The sheet below provides more information regarding the options that a contributor has to integrade and how can they split the responsibilities with LenderLink.&#x20;

{% hint style="success" %}
Please scroll to the right to see all the columns.&#x20;

You can access and download the table at the link below.&#x20;

<https://docs.google.com/spreadsheets/d/1a9shXB6v8zq5mUzxpsV_MAJovuzWKBUMtC6hJH4EwxI/edit?gid=0#gid=0>
{% endhint %}

{% embed url="<https://docs.google.com/spreadsheets/d/1a9shXB6v8zq5mUzxpsV_MAJovuzWKBUMtC6hJH4EwxI/edit?gid=0#gid=0>" %}


# Data Dictionary

This page explains the types of data the consumer can expect to receive.

## 1.Data Dictionary

The file below contains excel table with all Data Dictionaries for our APIs.

{% file src="/files/On4fmUbDL2ftB9tpMkYX" %}

## 2.Summary Block and Risk Features

{% file src="/files/idPVSSNV7DikfXq9rqbT" %}

## 3.Collection Agency Data – Technical Documentation

This section describes the structure, semantics, and field conventions applied to **collection agency data** provided through LenderLink.

***

### 1. Identifying Collection Agency Records

Collection agency records are identified **exclusively** by the following contributor ID:

```
contributorId = eb275afa-21c6-4f48-8480-db1a3ab9b222
```

All records with this `contributorId` must be interpreted as collection agency data.

{% hint style="info" %}
Note than some of the mandatory fields may not be always populated, as some attributes are not available to the collection agency from the original lender.
{% endhint %}

***

### 2. `loanInfoLenderType`

#### Description

`loanInfoLenderType` indicates the **original institution type** of the debt prior to transfer to the collection agency.

#### Allowed Values (Collection Agency Data)

| Value     | Description                                |
| --------- | ------------------------------------------ |
| `fintech` | Debt originated from a fintech institution |
| `bank`    | Debt originated from a bank                |
| `telecom` | Debt originated from a telecom provider    |

***

### 3. Telecom-Specific Conventions

The following rules apply **only when** `loanInfoLenderType = telecom`.

***

#### 3.1 Repayment History

Repayment history is a **standardized indicator** and does not reflect installment-level behavior.

| Debt Status | Repayment History |
| ----------- | ----------------- |
| Unsettled   | `123456`          |
| Settled     | `1234560`         |

***

#### 3.2 Balances

* **Open Balance**\
  Represents the **initial overdue amount** transferred from the telecom provider to the collection agency.
* **Outstanding Balance**\
  Always equal to the open balance.
* **Overdue Amount**\
  Represents the **current debt amount**, reflecting collection actions applied by the agency.

***

#### 3.3 Loan Term

```
null
```

Loan term information is not available for telecom debts handled by collection agencies.

***

#### 3.4 Loan Type

```
0
```

Value `0` corresponds to **Others**.

***

### 4. `loanInfoOpenDate` Semantics for Collection Agency Records

For collection agency data, `loanInfoOpenDate` represents the **contract sale date** — the date on which the original lender sold the debt to the collection agency.

This field should **not** be interpreted as the original loan origination date.\
The original loan open date is available in `loanInfoApplicationDate`.


# Submitting Phone Numbers

This guide outlines the process for submitting hashed phone numbers during the initial setup and for daily updates, including the hashing method and submission options.

### Objective

This procedure outlines the steps contributors should follow to hash a list of phone numbers, starting with the Philippines country code (63), using the SHA-512 algorithm and sending the hashed data either in a CSV file to <devops@lenderlink.ph> or using our detracted API endpoint.

### Initial and Ongoing Submission Procedure

For the initial setup, all contributors are required to submit their phone numbers using the procedure described in the guides that follow below. The same procedure should be followed for submitting new phone numbers daily. Our recommendation is that the contributors first send the initial list of phones in a CSV via email and after that to send the new phone numbers via the API on a daily bases. If security or other factors are a concern, the API can be used for both initial and daily submissions.&#x20;

{% content-ref url="/pages/C15WxTj9kcIJvn29whUs" %}
[Submitting via Email](/product-guides/submitting-phone-numbers/submitting-via-email)
{% endcontent-ref %}

{% content-ref url="/pages/0LhymTavscG7z6OsYgBb" %}
[Submitting via API](/product-guides/submitting-phone-numbers/submitting-via-api)
{% endcontent-ref %}


# Submitting via Email

### Step-by-Step Process

#### Step 1: Prepare the List of Phone Numbers

Ensure the list of phone numbers is available and formatted correctly. The phone numbers must begin with the Philippines country code (63). Example format:

639170000001\
639170000002\
639170000003

#### Step 2: Hash the Phone Numbers Using SHA-512

Use a tool that supports the SHA-512 algorithm to hash the phone numbers.

The CSV file should contain only one column with the hashed values of the phone numbers.

#### Step 3: Create the CSV File

Ensure the CSV file contains only one column with the hashed phone numbers.

Example CSV format:\
\
09f44b1394a9d6e1b153f95e65684b6da97a9cd36914357ca3011\
2fce96459f87c8b0898bce21e0f71b0f81ca24150f56b4c0bb157

#### Step 4: Submit the CSV File via Email

Once the CSV file is created, attach it to an email and send it to <devops@lenderlink.ph>.

The subject of the mail should be the company name of the contributor.

#### Step 5: Verification

Once the email has been sent, ensure to check for any confirmation or response from the DevOps team regarding the receipt and processing of the file.


# Submitting via API

## API Upload MSISDNs

### Prepare the List of Phone Numbers

Ensure the list of phone numbers is available and formatted correctly. The phone numbers must begin with the Philippines country code (63). Example format:

639170000001\
639170000002\
639170000003

### Hash the Phone Numbers Using SHA-512

Use a tool that supports the SHA-512 algorithm to hash the phone numbers.

The CSV file should contain only one column with the hashed values of the phone numbers.

### Authentication

Obtain a token via the [Authentication](/product-guides/api-integration-guides/authentication) procedure.&#x20;

### Endpoint: Upload MSISDNs

This API allows users to upload a list of MSISDNs (phone numbers) associated with a contributor.

**URL:**

`POST https://sandbox-app.lenderlink.ph/api/mobile-phone/upload`

### Request Headers

| Key           | Value            |
| ------------- | ---------------- |
| Content-Type  | application/json |
| Accept        | application/json |
| Authorization | Bearer `<token>` |

### Request Body (JSON)

```json
{
    "msisdns": [
        "94706ae07de698ee06d7716782c22e7cff507bf0d23b388dcec77d9dec6bfff393d37c0cf811b44ba77ff54a89c089c9c26c8f62a015d9b3860bcb369339ace3",
        "9dd3bac56f710d0a01cdc9af9df5be40e64f3f40e9510978a1fc937f24a68c0564d46834f12c86135bdcb48a6bfd5d781205383041b6e4105a24a84d2aa85f9a",
        "2cb88faba90a250561e07c42a7f65d4e86a5f3baced2b962cdcc9f660d3bc976fd7dd70ae59fcf26ce51d58aa8e0a1b271abb11dd7a1dd1f2ecd75d40a18621b",
        "fc8652e8bb0bf66db7e8f6a196e953c47dbbcc696f85229168f5d817ec3f7a4fa078b4b79a0ec9e4f4ef2399ae9145a6c262ec9000486de7834eea8d6258e690",
        "69e28301b2234f4b9bbabe2097665e860f34df2cf02c3ad4a8d5ed4a326892d0360e26efc48ee3b4ca234efa06a8a40ac0768a952c298f24812299bc99b7a98c"
    ]
}
```

### Validation

* **msisdns**: Required, must be an array with a maximum of 10000 entries.
* **msisdns.\***: Each MSISDN must be a valid string with only low case letters and digits that should be 128 in total per string.

### Error Handling

If validation fails, the following type of response will be returned:

```json
{
    "message": "The given data was invalid.",
    "errors": {
        "msisdns": [
            "The msisdns field is required."
        ],
        "msisdns.*": [
            "Each msisdn must be a valid string."
        ]
    }
}
```

Status Code: `422 Unprocessable Entity`

### Server Error

If there’s an issue on the server (e.g., batch number generation fails),the response will be: :

```json
{
    "error": "Failed to store MSISDNs"
}
```

Status Code: `500 Internal Server Error`

### Example Curl Request

```bash
curl -X POST https://sandbox-app.lenderlink.ph/mobile-phone/upload \
-H "Content-Type: application/json" \
-d '{
    "msisdns": [
        "94706ae07de698ee06d7716782c22e7cff507bf0d23b388dcec77d9dec6bfff393d37c0cf811b44ba77ff54a89c089c9c26c8f62a015d9b3860bcb369339ace3",
        "9dd3bac56f710d0a01cdc9af9df5be40e64f3f40e9510978a1fc937f24a68c0564d46834f12c86135bdcb48a6bfd5d781205383041b6e4105a24a84d2aa85f9a",
        "2cb88faba90a250561e07c42a7f65d4e86a5f3baced2b962cdcc9f660d3bc976fd7dd70ae59fcf26ce51d58aa8e0a1b271abb11dd7a1dd1f2ecd75d40a18621b",
        "fc8652e8bb0bf66db7e8f6a196e953c47dbbcc696f85229168f5d817ec3f7a4fa078b4b79a0ec9e4f4ef2399ae9145a6c262ec9000486de7834eea8d6258e690",
        "69e28301b2234f4b9bbabe2097665e860f34df2cf02c3ad4a8d5ed4a326892d0360e26efc48ee3b4ca234efa06a8a40ac0768a952c298f24812299bc99b7a98c"
    ]
}'
```


# Contributor's backtest guide

This page describes how a contributor should set their API for LenderLink to run backtesting records for potential customers.

### 1. Integration via Contributor API endpoint

The Contributor first needs to create API and join the LenderLink platform per the [Contributor API development guide](/product-guides/api-integration-guides/contributor-api-development-guide)

### 2. Authentication

The Contributor needs to create different set of credentials for the API that are going to be used only for running backtests.

### 3. API requests&#x20;

The expected layout of the requests that LenderLink's API will send to the Contributors for backtesting is show below.&#x20;

* Query params:

{% hint style="info" %}
The **requestID** will be always in the format - backtest\[YYYYMMDD]\[prospect ID]\[5 digits]&#x20;

Example: backtest20250121aa00010000
{% endhint %}

<table><thead><tr><th width="171">Property Name</th><th width="147">Property Type</th><th>Mandatory</th><th>Description</th></tr></thead><tbody><tr><td>requestId</td><td>String</td><td>Yes</td><td>Unique identifier</td></tr><tr><td>mobileNumber</td><td>String</td><td>Yes</td><td>Borrower's mobile number</td></tr><tr><td>prospectID</td><td>String</td><td>No</td><td>Unique identifier that we give to all prospect clients that we do backtest for. Example: aa000</td></tr></tbody></table>


# Back-testing process

## 1. Requirements for input parameters

{% hint style="warning" %}

**Loan Eligibility Disbursement Window** – mandatory window of at least 6 months and at most 12 months in the past. Example – if today is 1<sup>st</sup> January 2026, the sample should consist of loans no older than 1<sup>st</sup> January 2025 and no recent than 1<sup>st</sup> July 2025
{% endhint %}

A csv/xlsx file containing the following columns:  &#x20;

* Phone number
* Email address
* Application date
* Loan Performance (GB Flag – indicator if the loan was repaid or not)
* ID number (optional)
* ID type (optional)
* First Name + Last Name (optional)
* Date of birth (optional)

{% file src="/files/32QxSSBJeBvOLHOtPKdw" %}

To receive a sufficient number of matches, we request a **minimum of 20k  records per sample.**

The file transfer can be:

a) Sent via e-mail with password protection (password sent via separate channel)

b) Uploaded to an SFTP, prepared by LenderLink team

## 2. Expected output

a) Summary block – aggregated information for all matched borrowers from all lenders and data sources.

<table><thead><tr><th valign="top">Variable Name</th><th valign="top">Description</th></tr></thead><tbody><tr><td valign="top">MSIDN</td><td valign="top"> Phone number</td></tr><tr><td valign="top"> num_app</td><td valign="top"> Number of applications</td></tr><tr><td valign="top"> num_acc</td><td valign="top"> Number of disbursed credits</td></tr><tr><td valign="top"> was_dpd_30_ever</td><td valign="top"> Flag if borrower reached 30 dpd ever; 1 - yes, 0 - no </td></tr><tr><td valign="top"><p> was_dpd_90_ever</p><p> </p></td><td valign="top"> Flag if borrower reached 90 dpd ever; 1 - yes, 0 - no</td></tr><tr><td valign="top"><p> was_dpd_30_last_3_months</p><p> </p></td><td valign="top"> Flag if borrower reached 30 dpd in last three months; 1 - yes, 0 - no </td></tr><tr><td valign="top"><p> was_dpd_90_last_3_months</p><p> </p></td><td valign="top"> Flag if borrower reached 90 dpd in last three months; 1 - yes, 0 - no</td></tr><tr><td valign="top"><p> was_dpd_30_last_year</p><p> </p></td><td valign="top"><p> </p><p>Flag if borrower reached 30 dpd in last year; 1 - yes, 0 - no</p></td></tr><tr><td valign="top"><p> was_dpd_90_last_year</p><p> </p></td><td valign="top"> Flag if borrower reached 90 dpd in last year; 1 - yes, 0 - no</td></tr></tbody></table>

b) Full response – records for all credits for up to 5000 unique matched borrowers

<table><thead><tr><th valign="top">Variable Name</th><th valign="top">Description</th></tr></thead><tbody><tr><td valign="top"> RecordID</td><td valign="top"> Unique Identifier</td></tr><tr><td valign="top"> kycSurname</td><td valign="top"> Borrower Surname</td></tr><tr><td valign="top"> kycFirstName</td><td valign="top"> Borrower First name</td></tr><tr><td valign="top"> kycMiddleName</td><td valign="top"> Borrower Middle name</td></tr><tr><td valign="top"> kycDateOfBirth</td><td valign="top"> Borrower Date of Birth</td></tr><tr><td valign="top"> kycIdNumber</td><td valign="top"> Borrower ID number</td></tr><tr><td valign="top"> kycIdType</td><td valign="top"> Type of ID</td></tr><tr><td valign="top"> kycMobileNumber</td><td valign="top"> Borrower Mobile number</td></tr><tr><td valign="top"> kycEmailAddress</td><td valign="top"> Borrower Email address</td></tr><tr><td valign="top"> kycAddress</td><td valign="top"> Borrower Address</td></tr><tr><td valign="top"> loanInfoLoanType</td><td valign="top"> Loan Type</td></tr><tr><td valign="top"> loanInfoOpenDate</td><td valign="top"> Loan Open date</td></tr><tr><td valign="top"> loanInfoLoanTerm</td><td valign="top"> Count of months, loan term.</td></tr><tr><td valign="top"> loanInfoOpenBalance</td><td valign="top"> Loan Open Balance</td></tr><tr><td valign="top"> loanInfoOutstandingBalance</td><td valign="top"> Loan Outstanding Balance</td></tr><tr><td valign="top"> loanInfoNextDueDate</td><td valign="top"> Loan Next Due date</td></tr><tr><td valign="top"> loanInfoLastPaymentAmount</td><td valign="top"> Loan Last Payment Amount</td></tr><tr><td valign="top"> loanInfoLastPaymentDate</td><td valign="top"> Loan Last Payment Date</td></tr><tr><td valign="top">loanInfoStatusCode</td><td valign="top">Rejected, Active, Delayed, Collection, Written off, Closed</td></tr><tr><td valign="top"> loanInfoInstallmentAmount</td><td valign="top"> Loan installment amount</td></tr><tr><td valign="top"> loanInfoOverdueAmount</td><td valign="top"> Loan Overdue amount</td></tr><tr><td valign="top"> loanInfoRepaymentFrequency</td><td valign="top"> Monthly, Bi-weekly, Single payment</td></tr><tr><td valign="top"> loanInfoRepaymentHistory</td><td valign="top"> Flag representing all paid and missed instalments</td></tr><tr><td valign="top"> loanInfoCloseDate</td><td valign="top"> Loan Close Date</td></tr></tbody></table>

## 3.Predictive Power Assessment

[LenderLink Data - Predictive Power Assessment](/backtesting-guides/back-testing-process/lenderlink-data-predictive-power-assessment)


# LenderLink Data - Predictive Power Assessment

## LenderLink Data – Predictive Power Assessment

### Introduction

The purpose of this document is to help potential LenderLink clients assess the results from historical back-testing. By understanding the key evaluation metrics and the methodology behind them, clients can make informed decisions about integrating LenderLink data into their credit assessment processes.

### Evaluating Results

#### Hit Rate

**Definition**\
Hit Rate represents the proportion of a client’s borrowers for whom LenderLink was able to retrieve at least one corresponding record from its database.

**Calculation**<br>

![](/files/2dFVItqHgwWz7eoDH4Ey)

**Interpretation example**\
If a client has 10,000 loans and LenderLink data is available for 6,000 of them, the hit rate is 60%. This means that risk signals can be evaluated for 60% of the portfolio.

***

#### Information Value (IV)

**Definition**\
Information Value (IV) measures the strength of the relationship between a single explanatory variable and a binary outcome (e.g. good vs. bad). It assesses how well a variable distinguishes between outcomes based on the distribution of good and bad borrowers across predefined bins.

IV is primarily used for **variable assessment and early-stage screening**, rather than for evaluating overall model performance.

**How IV is calculated**

1. Divide the variable into bins (e.g. deciles or business-defined ranges).
2. For each bin, calculate:
   * Share of good borrowers
   * Share of bad borrowers
3. Compute Weight of Evidence (WoE).\
   ![](/files/IUgwhOPSkW3Yh1isMmGw)
4. Aggregate the bin-level contributions to obtain IV.\
   ![](/files/q5MjoDg7KcsjX9qytAOK)

**Interpretation guidelines**

| IV Range    | Interpretation          |
| ----------- | ----------------------- |
| < 0.02      | Not predictive          |
| 0.02 – 0.10 | Weak predictive power   |
| 0.10 – 0.30 | Medium predictive power |
| > 0.30      | Strong predictive power |

**Example**\
When analyzing a variable such as *Overdue Amount*, higher overdue ranges often contain a disproportionately larger share of bad borrowers. This divergence between good and bad distributions leads to a higher IV, indicating that the variable is informative for credit risk assessment.

<figure><img src="/files/PrdSF9PJTdQoWLh7LKmm" alt=""><figcaption></figcaption></figure>

**Practical note**\
IV is a univariate measure and does not capture interaction effects, incremental contribution alongside existing model features, or monotonic risk ordering. Variables with a clear monotonic relationship to risk may therefore show relatively low IV despite being predictive.

***

#### Gini Coefficient

**Definition**\
The Gini coefficient measures how well a variable or model separates outcomes across a population. It quantifies discriminatory power by evaluating how consistently risk changes across ordered values.

**Calculation approach**<br>

<figure><img src="/files/y48t5XuF5tGuZ1VuqOK2" alt="" width="563"><figcaption></figcaption></figure>

**Interpretation (Philippines context, single variables)**

| Gini Range    | Interpretation          |
| ------------- | ----------------------- |
| 0–5%          | Low predictive power    |
| 5–25%         | Medium predictive power |
| 25% and above | High predictive power   |

**Example**\
Using the same *Overdue Amount* variable, the Gini coefficient captures how consistently default risk increases as overdue balances rise. Even when Information Value is moderate, a clear monotonic trend can result in a higher Gini, highlighting stronger discriminatory power.

<figure><img src="/files/PFdSTlHvWds5InXTvouZ" alt=""><figcaption></figcaption></figure>

**Gini for scores**\
The same concept applies to scoring models. Gini can be calculated on predicted scores to assess the overall discriminatory power of a model, including when combining LenderLink-derived features with an existing internal score.

<figure><img src="/files/jAwhJjnNALbtNKWd87oG" alt="" width="563"><figcaption></figcaption></figure>

### Recommended Evaluation Approach

LenderLink data reflects borrower behavior across multiple loans and lenders and should be evaluated for **incremental predictive value**, rather than in isolation.

#### Overlay (Challenger) Model

* Keep the approved production model unchanged
* Build a challenger model combining the existing score with LenderLink features
* Evaluate incremental lift using:
  * Change in Gini / KS
  * Bad rate at constant approval rate

#### Risk Segmentation

* Select an approved population or a narrow score band
* Use LenderLink data to further segment borrowers
* Assess:
  * Bad rate monotonicity
  * Risk separation across segments

#### Live Proof of Concept (POC)

* Run LenderLink in parallel with production decisions
* No impact on approvals or declines
* Analyze outcomes after a sufficient observation period

#### Key Metrics to Monitor

* Change in Gini / KS
* Bad rate reduction at constant approval
* Approval uplift at constant bad rate
* Segment-level risk separation


