Equifax_Credit_Report_V1 — Credit Bureau Report API
Equifax_Credit_Report_V1 v1 live
Download as Markdownthe full page as a single .md file — for offline reading or as context for an AI assistantAuthentication
Every request must carry your API key in the X-API-Key header.
Your key is issued to you separately by ops and is never shown in this document.
X-API-Key: <your-key>Base URL
All endpoints are served through the gateway:
https://api.pehchaantech.comEndpoints
/equifax-credit-report/v1
| URL | https://api.pehchaantech.com/equifax-credit-report/v1 |
|---|---|
| Timeout | 35000 ms |
| Rate limit | 60 req/min · 100000 req/day |
Overview
Retrieve an individual’s Equifax credit bureau report: accounts and their balances, past-due amounts and payment history, the account summary, the bureau score, and the list of reporting institutions. One call returns the whole report.
mobile_number, full_name, pan and consent_declaration are the ONLY accepted fields, and the first three are all required. The bureau matches on full_name and pan together, so a name that does not match the PAN’s registered name is the most common cause of a not_found on someone who does have a credit file. consent_declaration must exactly equal the required attestation text (see field descriptions below); it is YOUR confirmation that you obtained the individual’s consent before pulling their credit file, and is checked before any pull happens, so a missing/wrong value costs nothing.
Every response — success or not — uses the same envelope, so branch on the status field. There is NO pending state; every response is final. Latency is capped at 30 seconds, so set your client timeout to at least 35 seconds.
BILLING: completed and not_found are both billable — the bureau was actually queried either way, and a thin-file individual with no record is a real, billed pull. invalid_input is NOT billable — a rejected request never reached the bureau. Validate inputs before calling (a malformed mobile number, PAN or name is rejected with 422 and costs nothing), don’t loop on not_found, and cache — two calls for the same individual are two charges. Note that a name which does not match the PAN’s registered name reads as not_found and bills like a hit.
This is a soft/consumer-initiated retrieval of the individual’s own credit information, made on their consent. It is not a lending decision service: the report is returned to you as data, with no score interpretation, recommendation or eligibility verdict attached.
Request example
{
"pan": "ABCDE1234F",
"full_name": "Rohit Kumar Sharma",
"mobile_number": "9876543210",
"client_ref_num": "onboard-7f3a2b",
"consent_declaration": "I take consent to collection and processing of data"
}Response example
{
"result": {
"email": [
{
"value": "ROHIT@EXAMPLE.COM",
"reported_date": "2026-06-22",
"serial_number": "1"
}
],
"phone": [
{
"type": "M",
"value": "9876543210",
"reported_date": "2026-06-22",
"serial_number": "1"
}
],
"address": [
{
"type": "Primary",
"state": "KA",
"pincode": "560001",
"serial_number": "1",
"detailed_address": "12 MG ROAD BENGALURU 560001 KA",
"date_of_reporting": "2026-06-22"
}
],
"score_detail": [
{
"name": "ERS4.0",
"type": "ERS",
"value": "798",
"version": "4.0",
"scoring_elements": [
{
"code": "703",
"type": "RES",
"description": "Total Utilization"
}
]
}
],
"account_detail": [
{
"open": "Yes",
"source": "INDIVIDUAL",
"balance": "11583.00",
"date_opened": "2024-10-22",
"high_credit": "39186.00",
"institution": "Example Bank Limited",
"account_type": "Credit Card",
"credit_limit": "337000.0",
"date_reported": "2026-07-25",
"serial_number": "1",
"account_number": "XXXXXXXX1234",
"account_status": "Current Account",
"ownership_type": "Individual",
"last_payment_date": "2026-07-21",
"last_four_year_history_data": [
{
"key": "07-26",
"payment_status": "000",
"suit_filed_status": "*",
"asset_classification_status": "*"
},
{
"key": "10-24",
"payment_status": "NEW",
"suit_filed_status": "*",
"asset_classification_status": "*"
}
]
}
],
"account_summary": {
"oldest_account": "Credit Card on 22-10-2024",
"recent_account": "Credit Card on 22-10-2024",
"total_past_due": "0.00",
"number_of_accounts": "1",
"total_credit_limit": "337000.0",
"average_open_balance": "11583.00",
"number_of_write_offs": "0",
"total_balance_amount": "11583.00",
"total_highest_credit": "39186.00",
"single_highest_credit": "39186.00",
"total_sanction_amount": "0.00",
"single_highest_balance": "11583.00",
"number_of_active_accounts": "1",
"number_of_past_due_accounts": "0",
"total_monthly_payment_amount": "0.00",
"single_highest_sanction_amount": "0.00",
"number_of_zero_balance_accounts": "0",
"most_severe_status_within_24_months": "Non-Delnqt"
},
"enquiry_summary": {
"total": "0",
"purpose": "ALL",
"past_30_days": "0",
"past_12_months": "0",
"past_24_months": "0"
},
"recent_activities": {
"accounts_opened": "0",
"total_inquiries": "0",
"accounts_updated": "1",
"accounts_delinquent": "0"
},
"list_of_institution": [
{
"institution_name": "Example Bank Limited",
"last_payment_date": "2026-07-21",
"number_of_open_accounts": 1,
"number_of_total_accounts": 1
}
],
"other_key_indicators": {
"age_of_oldest_trade": "21",
"number_of_open_trades": "1",
"all_lines_ever_written": "0.00",
"all_lines_ever_written_in_6_months": "0",
"all_lines_ever_written_in_9_months": "0"
},
"personal_information": {
"age": "34",
"gender": "Male",
"full_name": "ROHIT KUMAR SHARMA",
"first_name": "ROHIT",
"date_of_birth": "1992-05-14"
},
"national_document_data": {
"pan": [
{
"value": "ABCDE1234F",
"reported_date": "2026-06-22",
"serial_number": "1"
}
]
}
},
"status": "completed",
"success": true,
"description": "Credit report retrieved successfully",
"client_ref_num": "pehchaan-b5f08841d8f1"
}Fields
| Field | Description |
|---|---|
mobile_number | Required. 10-digit Indian mobile number, first digit 6-9 (^[6-9]\d{9}$). |
full_name | Required. The individual’s full name as the bureau holds it. A letter, then letters, spaces, periods, apostrophes or hyphens; 100 chars max ("O’Brien", "Van Der Berg", "D. Kumar"). ONE field — do not send first_name/last_name. |
pan | Required. Permanent Account Number — 5 letters, 4 digits, 1 letter (e.g. ABCDE1234F). Case-insensitive; forwarded as sent. |
consent_declaration | Required. Must exactly equal "I take consent to collection and processing of data" — your attestation that you obtained the individual’s consent to pull their credit file. Not forwarded to the bureau. A missing or incorrect value is a free 422, before any pull. |
client_ref_num | Optional trace id; 6–64 chars of A-Z a-z 0-9 . _ -. Omit and the platform generates one. Each call is an independent pull, so use a FRESH value per attempt. Also returned in the X-Client-Ref-Num response header. |
success | true only when a report was delivered. |
status | Machine-readable outcome — branch on this (see Outcomes below). |
result | The credit report — present only when status = completed, otherwise null. TWELVE top-level families: personal_information, national_document_data, address[], phone[], email[], account_detail[], account_summary, score_detail[], enquiry_summary, recent_activities, other_key_indicators and list_of_institution[]. NOTE that national_document_data (which holds pan[]) is TOP-LEVEL — a sibling of personal_information, not nested inside it. Treat the whole object as an OPEN structure: any sub-object or array can be empty or absent, monetary and count values arrive as STRINGS, and new fields may appear without notice. Read the paths you need defensively rather than validating against a fixed schema. VALUE FORMATS THAT WILL SURPRISE YOU (all observed on real responses): oldest_account/recent_account are SENTENCES, not dates ("Credit Card on 22-10-2024"); most_severe_status_within_24_months is a label ("Non-Delnqt"), not a code; money and counts are STRINGS with inconsistent decimals ("11583.00", "337000.0", "0"), so parse as float and never assume two places; number_of_total_accounts and number_of_open_accounts inside list_of_institution[] are the only real integers in the report; payment_status can be non-numeric ("NEW"); history keys are MM-YY ("07-26"); "*" means not-reported; casing is bureau-styled ("Credit Card", "Individual", "Male"), so compare case-insensitively; phone[].type is a single letter ("M"); and `source` is not a bureau name ("INDIVIDUAL"). |
Errors
| Code | Meaning |
|---|---|
completed (HTTP 200) — BILLABLE | Report delivered in result — consume it. |
not_found (HTTP 200) — BILLABLE | "No credit record found for this individual" — the bureau holds no file matching these details. Common for a thin-file or new-to-credit individual, and also what a name/PAN mismatch looks like. Definitive; do NOT retry. Billed the same as a successful pull, because the bureau was actually queried. |
invalid_input (HTTP 200) — not billable | "Invalid request details" — the request was rejected before the bureau was queried. Re-check the details with the customer; do NOT retry unchanged. |
failed (HTTP 502) — not billable | "Source down — please retry later." Temporary upstream issue and the ONLY retryable status; retry with exponential backoff (~2 s, max 3 tries). Free, because the bureau never answered. |
401 / 403 | Missing or invalid API key, or the key is not granted this API. |
422 | Validation failed — malformed mobile number, name or PAN, a missing required field, missing/incorrect consent_declaration, or a field outside the contract. Never retry unchanged. |
429 | Rate limited — respect the Retry-After header. |
503 / 504 | Gateway protecting itself, or the call exceeded the 30 s budget — retry. |
Changelog
- 2026-07-26 Initial release: Equifax credit bureau report by mobile number, full name and PAN, with a required consent attestation field, uniform response envelope, and no pending state (every response is final).