Get MSME Status Using PAN API
VERIFY IF A GIVEN PAN NUMBER IS REGISTERED AS MSME IN UDYAM DATABASE
Description
Under the new law imposed under Section 43B(h) of the Income Tax Act, the payments to Micro and Small enterprise vendors must be made within 45 days of delivery in order to claim tax deductions. The requirement to contact all of the existing vendors and request that they produce the MSME certificate has presented difficulties for the companies. Finding out if a seller is already registered under the MSME category may take a while.
This API provide the live MSME status for a given vendor PAN number. By offering an automation, it resolves the ordinarily challenging issue of manually verifying the MSME status of vendors. If a PAN number is entered, this API returns whether or not the PAN is already listed in the UDYAM database as an MSME.

API Details
Request
Type | URL |
---|---|
POST | https://api.attestr.com/api/{version} /public/corpx/pan-msme-status |
Request Body Parameters
Type | Name | Description | Optional (default) | Min Version | Max Version |
---|---|---|---|---|---|
String | pan | PAN number to be checked in MSME database. | Required | v1 | |
String | birthOrIncorporatedDate | Date of birth for individual PAN or incorporation date in case of company PAN ( DD/MM/YYYY ) | Required | v1 | |
String | name | Registered legal name as per PAN records | Required | v1 |
Request Header Parameters
Type | Name | Value / Description | Optional | Min Version | Max Version |
---|---|---|---|---|---|
String | Content-Type | application/json | Required | v1 | |
String | Authorization | Basic {authToken} | Required | v1 |
If you do not have the authentication token, please refer to Register App to generate one.
Sample Request Payload
{
"pan": "ABCDP1234R",
"birthOrIncorporatedDate": "13/07/2017",
"name": "Acme Corporations"
}
Response
HTTP status code 200
Key | Description | Type | Min Version | Max Version |
---|---|---|---|---|
valid | True | false indicating if the provided PAN is valid. | Boolean | v1 | |
message | Detail message explaining the outcome | String | v1 | |
status | Status code. Possible values are - ALREADY_REGISTERED Provided PAN is already registered as MSME. NOT_REGISTERED PAN is not registered as MSME. INVALID_PAN Provided PAN is invalid / inactive MAX_LIMIT_EXCEEDED Daily limit exceeded for the provided PAN number. | String | v1 | |
msmeRegistered | Flag indicating is registered as MSME or not. | Boolean | v1 | |
panStatus | Status of the provided PAN details. Possible values are as follows. VALID_DETAILS_MATCHED Provided details matched VALID_DETAILS_NOT_MATCHED Provided details do not match INVALID Provided PAN does not exist MAX_LIMIT_EXCEEDED Maximum daily attempts exceeded for the provided PAN | String | v1 |
Sample Response
Sample response for valid PAN number - MSME Registered
{
"valid": true,
"message": "PAN is registered as MSME",
"status": "ALREADY_REGISTERED",
"msmeRegistered": true,
"panStatus": "VALID_DETAILS_MATCHED"
}
Sample response for valid PAN Number - MSME Not Registered
{
"valid": true,
"message": "PAN is not registered as MSME",
"status": "NOT_REGISTERED",
"msmeRegistered": false,
"panStatus": "VALID_DETAILS_MATCHED"
}
Sample response for invalid PAN Number
{
"valid": false,
"message": "Provided PAN details are invalid / not active",
"status": "INVALID_PAN",
"msmeRegistered": null,
"panStatus": "INVALID"
}
Sample response for a particular PAN number daily limit exceeded
{
"valid": false,
"message": "Max attempts exceeded for the provided PAN",
"status": "MAX_LIMIT_EXCEEDED",
"msmeRegistered": null,
"panStatus": "MAX_LIMIT_EXCEEDED"
}
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"
}