Employment Verification Using UAN
FETCH EMPLOYMENT HISTORY USING EPFO UAN NUMBER IN REAL TIME
Introduction
Every employee who makes a contribution to the provident fund in India is given a Universal Account Number (UAN) by the Employees' Provident Fund Organization (EPFO), which has been recognized by the Ministry of Labour and Employment, Government of India. No matter how many companies a person worked for, their universal account number, or UAN, never changes.
UAN Verification Employment History API verifies a given UAN in real time and returns the employment history of an employee. This offers an instant employment verification option and often used in the place of otherwise physical / manual process of employment verification.

API Details
Request
Type | URL | Current Version |
---|---|---|
POST | https://api.attestr.com/api/{version} /public/checkx/epfo/uan | v2 |
Request Body Parameters
Type | Name | Description | Optional (default) | Min Version | Max Version |
---|---|---|---|---|---|
String | uan | Input 12 digit UAN number to be verified. | Required | v2 |
Request Header Parameters
Type | Name | Value / Description | Optional | Min Version | Max Version |
---|---|---|---|---|---|
String | Content-Type | application/json | Required | v2 | |
String | Authorization | Basic {authToken} | Required | v2 |
If you do not have the authentication token, please refer to Register App to generate one.
Sample Request Payload
{
"uan": "900272278544"
}
Response
HTTP status code 200
Please note that the valid key decides the availability of rest of the keys in the response. If provided contact number does not exist, all keys except valid and message are omitted. If true, remaining keys will have appropriate data.
Key | Description | Type | Min Version | Max Version |
---|---|---|---|---|
valid | True | false depending on if provided contact number exists and is valid | Boolean | v2 | |
items | Employment history as mapped to the provided UAN | Array (Employment Object) | v2 | |
message | Error message if provided UAN is invalid | String | v2 |
Employment Object
Key | Description | Type | Min Version | Max Version |
---|---|---|---|---|
member | Name of the member / employee | String | v2 | |
careOf | Legal guardian name as registered in UAN database | String | v2 | |
employer | Name of the employer | String | v2 | |
epfoMemberId | PF Member Number as allotted for this job. While the UAN number remains same across companies, the PF number changes for every employer. | String | v2 | |
joiningDate | Date of joining the company | Date | v2 | |
exitDate | Date of exiting the company | Date | v2 |
Sample Response
Sample response for valid UAN number
{
"valid": true,
"message": null,
"items": [
{
"member": "GITANJALI RAHEJA",
"careOf": "MUKESH RAHEJA",
"employer": "ACME INDIA PRIVATE LIMITED",
"epfoMemberId": "APHYD1234235324510074",
"joiningDate": "2022-03-01",
"exitDate": null
},
{
"member": "GITANJALI RAHEJA",
"careOf": "MUKESH RAHEJA",
"employer": "BETA CORP PRIVATE LIMITED",
"epfoMemberId": "BGBNG01234123400049757",
"joiningDate": "2015-05-25",
"exitDate": "2022-02-12"
}
]
}
Sample response for invalid UAN number
{
"valid": false,
"message": "No records found for the provided UAN"
}
Error Response
Parameter | Type | Description |
---|---|---|
code | Number | Unique error codes for different errors. Always available. |
message | String | Error message describing the error. Always Available. |
details | String | Detail error message. Available only for certain types of errors. |
Error Codes
HTTP Status | Error Code | Error Message |
---|---|---|
400 | 4001 | Malformed data or missing required parameter values |
400 | 4005 | Operation could not be performed due to low credits balance |
401 | 4016 | Invalid client authorization |
403 | 4031 | Unauthorized access |
403 | 4035 | Requested service is not provisioned for your account |
403 | 4039 | Client's IP address is not whitelisted |
403 | 4035 | Requested service is not provisioned for your account |
429 | 4291 | Maximum account rate limit exceeded |
429 | 4292 | Maximum API rate limit exceeded |
429 | 4293 | Maximum account daily limit exceeded |
429 | 4294 | Maximum API daily limit exceeded |
500 | 5001 | Request could not be processed |
Sample Error Response
{
"code": 4001,
"message": "Malformed data or missing required parameter values"
}