Skip to content

PAN Verification

Validate a PAN (Permanent Account Number) and retrieve the holder's name and status.

Endpoint

POST /vas-api/pan-validation-v1

Authentication

Requires OAuth2 Bearer token. Get your credentials →

Request

Headers

HeaderTypeRequiredDescription
AuthorizationstringYesBearer YOUR_ACCESS_TOKEN
Content-TypestringYesapplication/json

Body parameters

FieldTypeRequiredDescriptionExample
panstringYes10-character PAN number (5 letters + 4 digits + 1 letter)ABCDE1234F

Example request

bash
curl -X POST https://api.api4business.com/vas-api/pan-validation-v1 \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"pan": "ABCDE1234F"}'
python
import requests

response = requests.post(
  "https://api.api4business.com/vas-api/pan-validation-v1",
  headers={
    "Authorization": "Bearer YOUR_ACCESS_TOKEN",
    "Content-Type": "application/json"
  },
  json={"pan": "ABCDE1234F"}
)
print(response.json())
javascript
const response = await fetch(
  "https://api.api4business.com/vas-api/pan-validation-v1",
  {
    method: "POST",
    headers: {
      "Authorization": "Bearer YOUR_ACCESS_TOKEN",
      "Content-Type": "application/json"
    },
    body: JSON.stringify({ pan: "ABCDE1234F" })
  }
);
const data = await response.json();
console.log(data);
java
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
  .uri(URI.create("https://api.api4business.com/vas-api/pan-validation-v1"))
  .header("Authorization", "Bearer YOUR_ACCESS_TOKEN")
  .header("Content-Type", "application/json")
  .POST(HttpRequest.BodyPublishers.ofString("{\"pan\": \"ABCDE1234F\"}"))
  .build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());

Response

Success (200)

FieldTypeDescription
okbooleantrue if the request was successful
responseCodenumberHTTP status code
messagestringStatus message
body.panNamestringFull name on the PAN card
body.panNumberstringThe PAN number that was verified
body.panStatusstringStatus of the PAN (Active, Inactive, etc.)

Example response

json
{
  "ok": true,
  "responseCode": 200,
  "message": "Transmission OK",
  "body": {
    "panName": "SAMPLE ENTERPRISE PRIVATE LIMITED",
    "panNumber": "ABCDE1234F",
    "panStatus": "Active"
  }
}

Response headers

HeaderDescription
x-request-idUnique request identifier for tracing and support

Error responses

StatusError CodeMessageResolution
400400Invalid PANCheck that the PAN is exactly 10 alphanumeric characters (AAAAA9999A format)
400400Invalid RequestVerify the request body is valid JSON with a pan field
401401Invalid CredentialsCheck your access token — it may be expired or invalid
429429Quota ViolationRate limit exceeded — implement exponential backoff and retry
500500Internal Server ErrorRetry after a short delay. Contact support if persistent
503503Service Not AvailableUpstream service temporarily unavailable. Retry with backoff

Error response format

json
{
  "errorCode": 400,
  "errorType": "proxy",
  "errorMessage": "Invalid PAN"
}

Rate limits

Standard rate limits apply. See Rate Limits for details.

Released under the API4Business Terms of Service