Pan Basic
Identity & KYCValidate a PAN, match the name and confirm it is active with the tax department.
Check a Permanent Account Number against Income Tax Department records in real time. Get the registered name, PAN status, a name-match result and whether the PAN is seeded with Aadhaar, from a single request.
Endpoint
Request parameters
| Field | Type | Description |
|---|---|---|
pan_api_detail_pan_number
optional
|
string | Pan Number |
Example request
curl -X POST https://app.emver.io/api/sandbox/v1/pan-basic \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{
"pan_api_detail_pan_number": "string"
}'
import requests
response = requests.post(
"https://app.emver.io/api/sandbox/v1/pan-basic",
headers={
"Authorization": "Bearer YOUR_API_KEY",
"Accept": "application/json",
},
json={
"pan_api_detail_pan_number": "string"
},
timeout=60,
)
response.raise_for_status()
data = response.json()
const response = await fetch("https://app.emver.io/api/sandbox/v1/pan-basic", {
method: "POST",
headers: {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
"Accept": "application/json",
},
body: JSON.stringify({
"pan_api_detail_pan_number": "string"
}),
});
const data = await response.json();
$response = Http::withToken('YOUR_API_KEY')
->acceptJson()
->post('https://app.emver.io/api/sandbox/v1/pan-basic', {
"pan_api_detail_pan_number": "string"
});
$data = $response->json();
Replace YOUR_API_KEY and the placeholder values. Use the switch above to see production URLs.
Response
Structure · 200
{
"status": INTEGER,
"message": STRING
}
Example · 200
{
"status": 200,
"message": "string"
}
Error · 4xx / 5xx
{
"status": INTEGER,
"message": STRING
}
See Errors & status codes for what each status means and which calls are billed.
About this API
PAN is the anchor identifier for financial onboarding in India. The PAN Verification API confirms the number is valid and active, returns the name held on record and compares it with the name you supply, so you can spot typos, impersonation and inactive or deactivated PANs before money moves.
Optional name and date-of-birth inputs sharpen the match and let the API flag mismatches instead of leaving your team to compare strings by eye.
Typical uses
- Employee and contractor onboarding. Verify the PAN a new hire submits for payroll and tax filing.
- Vendor registration. Confirm the PAN behind a supplier before the first invoice is approved.
- Lending and investment KYC. Mandatory PAN validation for loan, demat and mutual fund journeys.
- Fraud prevention. Detect inactive, duplicate or mismatched PANs at application time.
Questions
- What does a name-match result mean?
- The API compares the name you send with the name on the tax department record and returns a match verdict, so partial matches and spelling variations are handled consistently rather than by manual comparison.
- Can I verify a company PAN?
- Yes. The API works for individual and entity PANs. For companies, pair it with GSTIN-by-PAN and the MCA company lookup to complete the emver profile.
- Is consent needed for PAN verification?
- PAN verification for KYC and onboarding is a standard, expected check. emver still recommends capturing purpose-emver consent and passing the consent record with the request.
- What happens when a PAN is inactive?
- The response flags the status explicitly so your workflow can route the case to review instead of failing silently.