PAN Business Profile
kycA complete business profile from one PAN, in one call: the PAN holder (name, type, status, address), every GST registration under the PAN with full details (status, constitution, turnover slab, nature of business, latest returns) for the active ones, the company's MCA record (CIN, status, capital, industry, registered address, active directors, registered charges), director identification for individual PANs, and the Legal Entity Identifier (LEI). Pass include_report: true to also get a ready-to-share PDF report. Company and LLP PANs get the MCA record; individual PANs get their director record if they hold a DIN. Parts that a registry has no record of come back empty rather than failing the call. Charged once per call, only when the PAN is found; a PAN with no record anywhere returns 404 and is not charged.
Authentication
Pass your key in the X-API-Key header. Use a test_ key against the sandbox and a live_ key in production. Send an optional Idempotency-Key header to safely retry — the same key returns the same response for 24h.
Request
Endpoint: POST https://apisathi.in/gw/v1/pan-business-profile-v1/
The trailing slash is required. /v1/pan-business-profile-v1/ works; /v1/pan-business-profile-v1 returns 404 Not Found. This applies to every product.
| Field | Type | Required | Constraints |
|---|---|---|---|
| pan | string | required | pattern: ^[A-Za-z]{5}[0-9]{4}[A-Za-z]$ · 10-character PAN of the business or individual. |
| include_report | boolean | optional | Optional. Also return a PDF report (base64) in report.file_base64. |
Code snippets
curl -X POST https://apisathi.in/gw/v1/pan-business-profile-v1/ \
-H "X-API-Key: $API_SATHI_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"pan":"AAACR5055K","include_report":false}'Response
| Field | Type | Required | Constraints |
|---|---|---|---|
| pan | string | optional | — |
| found | boolean | optional | — |
| holder | object | optional | Name, PAN type and status, allotment date, address (date of birth and gender only for individuals). |
| gst | object | optional | count, active_count, registrations[] (gstin, state, status) and details[] for up to 3 active GSTINs. |
| company | object | optional | MCA record for company/LLP PANs: CIN, status, capital, industry, addresses, directors, charges. |
| director | object | optional | DIN record for individual PANs that hold one. |
| lei | object | optional | — |
| sources | array | optional | Which parts were found / not found. |
| report | object | optional | Present when include_report is true: file_name, content_type, file_base64. |
| meta | object | optional | — |
Sample response
{
"pan": "AAACR5055K",
"found": true,
"holder": {
"name": "RELIANCE INDUSTRIES LIMITED",
"pan_type": "Company",
"pan_status": "VALID",
"allotment_date": "1975-03-01",
"aadhaar_linked": null,
"address": {
"line": "MAKER CHAMBERS IV, NARIMAN POINT",
"city": "MUMBAI",
"state": "MAHARASHTRA",
"pincode": "400021"
}
},
"gst": {
"count": 3,
"active_count": 2,
"registrations": [
{
"gstin": "27AAACR5055K1Z7",
"state": "Maharashtra",
"state_code": "27",
"status": "Active"
},
{
"gstin": "24AAACR5055K1Z9",
"state": "Gujarat",
"state_code": "24",
"status": "Active"
},
{
"gstin": "07AAACR5055K1Z3",
"state": "Delhi",
"state_code": "07",
"status": "Cancelled"
}
],
"details": [
{
"gstin": "27AAACR5055K1Z7",
"legal_name": "RELIANCE INDUSTRIES LIMITED",
"trade_name": "RELIANCE INDUSTRIES LIMITED",
"status": "Active",
"constitution": "Public Limited Company",
"taxpayer_type": "Regular",
"registration_date": "01/07/2017",
"cancellation_date": null,
"aggregate_turnover": "Slab: Rs. 500 Cr. and above",
"aggregate_turnover_fy": "2025-2026",
"nature_of_business": [
"Factory / Manufacturing",
"Wholesale Business"
],
"einvoice_status": "Yes",
"principal_address": "MAKER CHAMBERS IV, NARIMAN POINT, MUMBAI, MAHARASHTRA, 400021",
"last_filing": "GSTR3B September 2026-2027 filed 20/10/2026",
"recent_filings": [
{
"return_type": "GSTR3B",
"period": "September",
"fy": "2026-2027",
"filed_on": "20/10/2026",
"status": "Filed"
}
]
}
]
},
"company": {
"cin": "L17110MH1973PLC019786",
"name": "RELIANCE INDUSTRIES LIMITED",
"status": "Active",
"type": "Company limited by shares",
"category": "Company limited by Shares",
"sub_category": "Non-govt company",
"class": "Public",
"incorporation_date": "1973-05-08",
"roc": "RoC-Mumbai",
"authorised_capital": "150000000000",
"paid_up_capital": "135320000000",
"listed": "Listed",
"last_agm": "2026-08-28",
"balance_sheet_date": "2026-03-31",
"active_compliance": "ACTIVE compliant",
"industry": "Manufacture of refined petroleum products",
"registered_address": "3RD FLOOR, MAKER CHAMBERS IV, 222 NARIMAN POINT, MUMBAI 400021",
"email": "investor.relations@example.com",
"addresses": [
{
"type": "Registered Address",
"address": "3RD FLOOR, MAKER CHAMBERS IV, 222 NARIMAN POINT, MUMBAI, Maharashtra, 400021",
"active": true
}
],
"directors": [
{
"name": "MUKESH DHIRUBHAI AMBANI",
"din": "00001695",
"role": "Managing Director",
"appointed": "1977-01-11"
}
],
"charges": [
{
"holder": "STATE BANK OF INDIA",
"amount": "10000000000",
"created": "2020-03-12",
"satisfied": null,
"status": "OPEN"
}
]
},
"director": null,
"lei": {
"lei": "5493003UOETFYRONLG31",
"legal_name": "RELIANCE INDUSTRIES LIMITED",
"status": "ISSUED",
"valid_for_use": true,
"next_renewal": "2027-05-01"
},
"sources": [
{
"source": "pan",
"status": "found"
},
{
"source": "gst_by_pan",
"status": "found"
},
{
"source": "pan_to_cin",
"status": "found"
},
{
"source": "company_registry",
"status": "found"
},
{
"source": "gst_details",
"status": "found"
},
{
"source": "lei",
"status": "found"
}
],
"meta": {
"engine": "apisathi-business-profile-v1",
"generated_at": "2026-10-22T05:00:00.000Z"
}
}Reading a 400
A schema rejection returns INVALID_REQUEST with a details array naming the exact field. Read it before guessing — it gives you the JSON path and what was wrong with it.
{
"error": {
"code": "INVALID_REQUEST",
"message": "Request body failed schema validation",
"details": [
{ "path": "/callback_url",
"message": "unexpected property 'callback_url' — this endpoint does not accept unknown fields" }
]
}
}Most endpoints reject unknown top-level fields outright, so an extra key you added for your own bookkeeping will fail the call. Enum errors list the accepted values, and a missing required field is named with its full path.
Error codes
| Code | HTTP | When |
|---|---|---|
| INVALID_INPUT | 422 | The request was rejected as invalid — either it failed OUR schema validation (malformed input; not charged), or the upstream source rejected the value you sent. NOTE: an identifier that is well-formed but simply has NO RECORD is no longer an error — it returns 200 with `verified: false` and is charged (see the result-code table below). FIX the input before retrying; retrying the same value will fail again. |
| INVALID_API_KEY | 401 | Missing, malformed, or revoked X-API-Key. |
| OUT_OF_SCOPE | 403 | API key is not scoped for this product. |
| INSUFFICIENT_BALANCE | 402 | Wallet balance is below the per-call sale price. Recharge and retry. |
| RATE_LIMITED | 429 | Per-key RPS or RPM limit exceeded. Back off and retry after the Retry-After header. |
| PRODUCT_DEPRECATED | 410 | This API has been retired and is no longer available. Stop calling it — it will not return. Check the catalog for the current equivalent. |
| ROUTER_NO_VENDOR | 503 | No healthy vendor is currently available for this product. Transient — safe to retry after a short backoff. Not charged. |
| VENDOR_AUTH_FAILED | 502 | Upstream vendor rejected our credentials (our config issue). Not charged. |
| VENDOR_ERROR | 502 | A genuine transient upstream error (the source was briefly unavailable). Safe to RETRY after a short backoff. Not charged. NOTE: this is NOT for bad input — invalid values return 422 INVALID_INPUT, not 502. |
| TIMEOUT | 504 | Upstream vendor did not respond within the SLA window. Safe to retry after a short backoff. Not charged. |
| NOT_FOUND | 404 | No record of this PAN in any source. Not charged. |
OpenAPI 3.1
Generated from this product's request/response JSON Schemas.
{
"openapi": "3.1.0",
"info": {
"title": "API Sathi — PAN Business Profile",
"version": "1.0.0",
"description": "A complete business profile from one PAN, in one call: the PAN holder (name, type, status, address), every GST registration under the PAN with full details (status, constitution, turnover slab, nature of business, latest returns) for the active ones, the company's MCA record (CIN, status, capital, industry, registered address, active directors, registered charges), director identification for individual PANs, and the Legal Entity Identifier (LEI). Pass include_report: true to also get a ready-to-share PDF report. Company and LLP PANs get the MCA record; individual PANs get their director record if they hold a DIN. Parts that a registry has no record of come back empty rather than failing the call. Charged once per call, only when the PAN is found; a PAN with no record anywhere returns 404 and is not charged."
},
"servers": [
{
"url": "https://apisathi.in/gw/v1"
}
],
"components": {
"securitySchemes": {
"ApiKeyAuth": {
"type": "apiKey",
"in": "header",
"name": "X-API-Key",
"description": "Your live or test key, e.g. `live_xxxxxxxxxxxx`."
}
}
},
"paths": {
"/pan-business-profile-v1": {
"post": {
"operationId": "panBusinessProfileV1",
"tags": [
"kyc"
],
"summary": "PAN Business Profile",
"description": "A complete business profile from one PAN, in one call: the PAN holder (name, type, status, address), every GST registration under the PAN with full details (status, constitution, turnover slab, nature of business, latest returns) for the active ones, the company's MCA record (CIN, status, capital, industry, registered address, active directors, registered charges), director identification for individual PANs, and the Legal Entity Identifier (LEI). Pass include_report: true to also get a ready-to-share PDF report. Company and LLP PANs get the MCA record; individual PANs get their director record if they hold a DIN. Parts that a registry has no record of come back empty rather than failing the call. Charged once per call, only when the PAN is found; a PAN with no record anywhere returns 404 and is not charged.",
"security": [
{
"ApiKeyAuth": []
}
],
"parameters": [
{
"name": "Idempotency-Key",
"in": "header",
"required": false,
"schema": {
"type": "string"
},
"description": "Optional. Same key returns the same response for 24h."
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"required": [
"pan"
],
"properties": {
"pan": {
"type": "string",
"pattern": "^[A-Za-z]{5}[0-9]{4}[A-Za-z]$",
"description": "10-character PAN of the business or individual."
},
"include_report": {
"type": "boolean",
"description": "Optional. Also return a PDF report (base64) in report.file_base64."
}
},
"additionalProperties": false
},
"example": {
"pan": "AAACR5055K",
"include_report": false
}
}
}
},
"responses": {
"200": {
"description": "Successful, normalized response.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"pan": {
"type": "string"
},
"found": {
"type": "boolean"
},
"holder": {
"type": "object",
"description": "Name, PAN type and status, allotment date, address (date of birth and gender only for individuals)."
},
"gst": {
"type": "object",
"description": "count, active_count, registrations[] (gstin, state, status) and details[] for up to 3 active GSTINs."
},
"company": {
"type": "object",
"description": "MCA record for company/LLP PANs: CIN, status, capital, industry, addresses, directors, charges."
},
"director": {
"type": "object",
"description": "DIN record for individual PANs that hold one."
},
"lei": {
"type": "object"
},
"sources": {
"type": "array",
"description": "Which parts were found / not found."
},
"report": {
"type": "object",
"description": "Present when include_report is true: file_name, content_type, file_base64."
},
"meta": {
"type": "object"
}
}
},
"example": {
"pan": "AAACR5055K",
"found": true,
"holder": {
"name": "RELIANCE INDUSTRIES LIMITED",
"pan_type": "Company",
"pan_status": "VALID",
"allotment_date": "1975-03-01",
"aadhaar_linked": null,
"address": {
"line": "MAKER CHAMBERS IV, NARIMAN POINT",
"city": "MUMBAI",
"state": "MAHARASHTRA",
"pincode": "400021"
}
},
"gst": {
"count": 3,
"active_count": 2,
"registrations": [
{
"gstin": "27AAACR5055K1Z7",
"state": "Maharashtra",
"state_code": "27",
"status": "Active"
},
{
"gstin": "24AAACR5055K1Z9",
"state": "Gujarat",
"state_code": "24",
"status": "Active"
},
{
"gstin": "07AAACR5055K1Z3",
"state": "Delhi",
"state_code": "07",
"status": "Cancelled"
}
],
"details": [
{
"gstin": "27AAACR5055K1Z7",
"legal_name": "RELIANCE INDUSTRIES LIMITED",
"trade_name": "RELIANCE INDUSTRIES LIMITED",
"status": "Active",
"constitution": "Public Limited Company",
"taxpayer_type": "Regular",
"registration_date": "01/07/2017",
"cancellation_date": null,
"aggregate_turnover": "Slab: Rs. 500 Cr. and above",
"aggregate_turnover_fy": "2025-2026",
"nature_of_business": [
"Factory / Manufacturing",
"Wholesale Business"
],
"einvoice_status": "Yes",
"principal_address": "MAKER CHAMBERS IV, NARIMAN POINT, MUMBAI, MAHARASHTRA, 400021",
"last_filing": "GSTR3B September 2026-2027 filed 20/10/2026",
"recent_filings": [
{
"return_type": "GSTR3B",
"period": "September",
"fy": "2026-2027",
"filed_on": "20/10/2026",
"status": "Filed"
}
]
}
]
},
"company": {
"cin": "L17110MH1973PLC019786",
"name": "RELIANCE INDUSTRIES LIMITED",
"status": "Active",
"type": "Company limited by shares",
"category": "Company limited by Shares",
"sub_category": "Non-govt company",
"class": "Public",
"incorporation_date": "1973-05-08",
"roc": "RoC-Mumbai",
"authorised_capital": "150000000000",
"paid_up_capital": "135320000000",
"listed": "Listed",
"last_agm": "2026-08-28",
"balance_sheet_date": "2026-03-31",
"active_compliance": "ACTIVE compliant",
"industry": "Manufacture of refined petroleum products",
"registered_address": "3RD FLOOR, MAKER CHAMBERS IV, 222 NARIMAN POINT, MUMBAI 400021",
"email": "investor.relations@example.com",
"addresses": [
{
"type": "Registered Address",
"address": "3RD FLOOR, MAKER CHAMBERS IV, 222 NARIMAN POINT, MUMBAI, Maharashtra, 400021",
"active": true
}
],
"directors": [
{
"name": "MUKESH DHIRUBHAI AMBANI",
"din": "00001695",
"role": "Managing Director",
"appointed": "1977-01-11"
}
],
"charges": [
{
"holder": "STATE BANK OF INDIA",
"amount": "10000000000",
"created": "2020-03-12",
"satisfied": null,
"status": "OPEN"
}
]
},
"director": null,
"lei": {
"lei": "5493003UOETFYRONLG31",
"legal_name": "RELIANCE INDUSTRIES LIMITED",
"status": "ISSUED",
"valid_for_use": true,
"next_renewal": "2027-05-01"
},
"sources": [
{
"source": "pan",
"status": "found"
},
{
"source": "gst_by_pan",
"status": "found"
},
{
"source": "pan_to_cin",
"status": "found"
},
{
"source": "company_registry",
"status": "found"
},
{
"source": "gst_details",
"status": "found"
},
{
"source": "lei",
"status": "found"
}
],
"meta": {
"engine": "apisathi-business-profile-v1",
"generated_at": "2026-10-22T05:00:00.000Z"
}
}
}
}
},
"401": {
"description": "Missing, malformed, or revoked X-API-Key.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"code": {
"type": "string"
},
"message": {
"type": "string"
},
"call_id": {
"type": "string"
}
}
}
}
}
}
}
},
"402": {
"description": "Wallet balance is below the per-call sale price. Recharge and retry.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"code": {
"type": "string"
},
"message": {
"type": "string"
},
"call_id": {
"type": "string"
}
}
}
}
}
}
}
},
"403": {
"description": "API key is not scoped for this product.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"code": {
"type": "string"
},
"message": {
"type": "string"
},
"call_id": {
"type": "string"
}
}
}
}
}
}
}
},
"404": {
"description": "No record of this PAN in any source. Not charged.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"code": {
"type": "string"
},
"message": {
"type": "string"
},
"call_id": {
"type": "string"
}
}
}
}
}
}
}
},
"410": {
"description": "This API has been retired and is no longer available. Stop calling it — it will not return. Check the catalog for the current equivalent.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"code": {
"type": "string"
},
"message": {
"type": "string"
},
"call_id": {
"type": "string"
}
}
}
}
}
}
}
},
"422": {
"description": "The request was rejected as invalid — either it failed OUR schema validation (malformed input; not charged), or the upstream source rejected the value you sent. NOTE: an identifier that is well-formed but simply has NO RECORD is no longer an error — it returns 200 with `verified: false` and is charged (see the result-code table below). FIX the input before retrying; retrying the same value will fail again.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"code": {
"type": "string"
},
"message": {
"type": "string"
},
"call_id": {
"type": "string"
}
}
}
}
}
}
}
},
"429": {
"description": "Per-key RPS or RPM limit exceeded. Back off and retry after the Retry-After header.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"code": {
"type": "string"
},
"message": {
"type": "string"
},
"call_id": {
"type": "string"
}
}
}
}
}
}
}
},
"502": {
"description": "Upstream vendor rejected our credentials (our config issue). Not charged.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"code": {
"type": "string"
},
"message": {
"type": "string"
},
"call_id": {
"type": "string"
}
}
}
}
}
}
}
},
"503": {
"description": "No healthy vendor is currently available for this product. Transient — safe to retry after a short backoff. Not charged.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"code": {
"type": "string"
},
"message": {
"type": "string"
},
"call_id": {
"type": "string"
}
}
}
}
}
}
}
},
"504": {
"description": "Upstream vendor did not respond within the SLA window. Safe to retry after a short backoff. Not charged.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"code": {
"type": "string"
},
"message": {
"type": "string"
},
"call_id": {
"type": "string"
}
}
}
}
}
}
}
}
}
}
}
}
}