to search

Introducing Setu API playground Check it out ↗

#PAN API Quickstart

#What is Setu PAN API?

Setu PAN API allows you to use just one API to verify your customer’s PAN details. We directly connect with NSDL, to maintain the best uptimes.

#What can I do with this product?

Use our lightweight PAN API to verify your customer, with their consent—to check identity during onboarding, enable other financial products or to enable income tax filing/verification.

Here’s a quick overview of the PAN API. Additionally, here are the URLs you would need for this API—

  • Sandbox—
  • Production—
  • Headers—Contact Setu for providing the credentials required to successfully call Setu APIs. This contains:
    • x-client-id
    • x-client-secret
    • x-product-instance-id

#Verify PAN

Call this API to verify a PAN provided by your customer. A quick explanation of the request params—

  • pan is the PAN value. It may belong to different categories like Person, Company, Trust, Goverment, Firm, etc.
  • consent indicates if you have collected consent from your customer. To get a successful verification, it must contain Y or y.
  • reason is the explanation of why you are requesting for PAN from your customer. It should be explained in 20 characters or more.

While the implementation of consent and reason cannot be enforced by Setu, we recommend collecting explicit consent from your customers and also explaining to your customers the reason why you are verifying their PAN.

While testing on Sandbox, you may use the following sample values—

  • Use ABCDE1234A for a valid PAN
  • Use ABCDE1234B for an invalid PAN, i.e, a PAN number has been found but is invalid. A PAN is considered invalid by NSDL for different reasons. For e.g, if it is a blacklisted one, or maybe because it is not linked to an Aadhaar card.
  • If you use any other values for pan, you will get a 404 PAN not found error.

Your request has a valid pan and Setu has processed your request successfully.

POST /api/verify/pan
"pan": "ABCDE1234A",
"consent": "Y" ,
"reason": "Reason for verifying PAN set by the developer"

"data": {
"aadhaar_seeding_status": "LINKED", // optional
"category": "Individual",
"full_name": "John Doe"
"message": "PAN is valid",
"verification": "success",
"traceId": "1-6346a91a-620cf6cc4f68d2e30316881e"

Was this page helpful?