PAN to UAN Lookup — Find EPFO Account
Find the Universal Account Number (UAN) linked to a PAN. Useful for employment verification and EPFO account discovery.
curl -X GET "https://production.deepvue.tech/v1/verification/epfo/pan-to-uan?pan_number=example_string" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_TOKEN (JWT)" \
-H "x-api-key: YOUR_API_KEY"
import requests
import json
url = "https://production.deepvue.tech/v1/verification/epfo/pan-to-uan?pan_number=example_string"
headers = {
"Content-Type": "application/json",
"Authorization": "Bearer YOUR_API_TOKEN (JWT)",
"x-api-key": "YOUR_API_KEY"
}
response = requests.get(url, headers=headers)
print(response.json())
const response = await fetch("https://production.deepvue.tech/v1/verification/epfo/pan-to-uan?pan_number=example_string", {
method: "GET",
headers: {
"Content-Type": "application/json",
"Authorization": "Bearer YOUR_API_TOKEN (JWT)",
"x-api-key": "YOUR_API_KEY"
}
});
const data = await response.json();
console.log(data);
package main
import (
"fmt"
"net/http"
)
func main() {
req, err := http.NewRequest("GET", "https://production.deepvue.tech/v1/verification/epfo/pan-to-uan?pan_number=example_string", nil)
if err != nil {
panic(err)
}
req.Header.Set("Content-Type", "application/json")
req.Header.Set("Authorization", "Bearer YOUR_API_TOKEN (JWT)")
req.Header.Set("x-api-key", "YOUR_API_KEY")
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
fmt.Println("Response Status:", resp.Status)
}
require 'net/http'
require 'json'
uri = URI('https://production.deepvue.tech/v1/verification/epfo/pan-to-uan?pan_number=example_string')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Get.new(uri)
request['Content-Type'] = 'application/json'
request['Authorization'] = 'Bearer YOUR_API_TOKEN (JWT)'
request['x-api-key'] = 'YOUR_API_KEY'
response = http.request(request)
puts response.body
{
"code": 200,
"timestamp": 1738342014954,
"transaction_id": "44e1ac67f83c455badcfd4c2a99ac4cd",
"sub_code": "SUCCESS",
"message": "UAN Number fetched successfully",
"data": {
"uan_number": "101813402596"
}
}
{
"code": 200,
"timestamp": 1738342014954,
"transaction_id": "d06fa0eef5964633a54c6ebf9e8762e8",
"sub_code": "DETAILS_NOT_FOUND",
"message": "PAN not linked to UAN",
"data": null
}
{
"detail": "Inactive client_id"
}
{
"detail": "Not authenticated"
}
{
"detail": "Not a valid token"
}
{
"code": 422,
"timestamp": 1738342015512,
"transaction_id": "6c6fc25310ee4bbda83d5455e04c188f",
"sub_code": "INVALID_PAN_NUMBER",
"message": "Invalid PAN Number"
}
{
"code": 500,
"timestamp": 1738238378216,
"transaction_id": "dc588c5c58c9478f8c65ad98ed24db54",
"sub_code": "INTERNAL_SERVER_ERROR",
"message": "Internal Server Error"
}
{
"code": 503,
"timestamp": 1738238378216,
"transaction_id": "dc588c5c58c9478f8c65ad98ed24db54",
"message": "Source Unavailable"
}
/v1/verification/epfo/pan-to-uan
ACCESS_TOKEN generated from the authorize endpoint. Should be included in the header as Bearer .
The CLIENT_SECRET provided to you. This header parameter is required for authentication purposes.
Request Preview
Response
Response will appear here after sending the request
Authentication
Bearer token (JWT). ACCESS_TOKEN generated from the authorize endpoint. Should be included in the header as Bearer .
API Key for authentication. The CLIENT_SECRET provided to you. This header parameter is required for authentication purposes.
Query Parameters
Responses
Overview
This API retrieves the Universal Account Number (UAN) linked to a given PAN (Permanent Account Number) from EPFO (Employees' Provident Fund Organisation) records. You can use this endpoint to look up UAN information for employment verification purposes under India's employment and tax regulatory framework.
The endpoint operates synchronously, returning results immediately within a single request-response cycle. If the provided PAN is linked to a UAN, the API returns the complete UAN account identification. If no UAN is associated with the PAN, the API confirms the absence of any linked record. Both outcomes return an HTTP 200 status.
Last updated 4 weeks ago
Built with Documentation.AI