PAN Verification

8 endpoints · Core API

This API allows validation of Permanent Account Numbers (PAN) issued by the Income Tax Department of India. It is designed to confirm the identity of individuals or entities by checking their PAN details against authoritative databases. This API plays a vital role in KYC processes, financial onboarding, and fraud prevention.

Benefits

  • Identity Validation
    Confirms the authenticity of PANs submitted by users or businesses.
  • Regulatory Compliance
    Ensures compliance with income tax and financial regulations.
  • Fraud Detection
    Helps detect and prevent use of fake or invalid PANs.
  • Seamless Integration
    Easily integrates into onboarding and KYC workflows.

What you can do

You can verify an individual's or entity's PAN number in real-time, retrieve associated details (like name or status), and ensure the PAN is valid and active.

POST

/api/v1/pan/verify

#

Get Pan Verify details

docs.signcare.io/core/api/pan/pan-verification/#post-api-v1-pan-verify

Headers

  • X-API-KEY
    stringrequired
    Your secret API key for the environment you are calling (Stage and Live use different keys).
  • X-API-APP-ID
    stringrequired
    The App ID issued together with the key.
  • Content-Type
    stringrequired
    application/json

Body parameters

application/json
  • consent
    stringrequired
    Required. The end user's consent to this verification. Send `Y`.
    minLength 1default Y
  • consent_text
    stringrequired
    Required. The consent statement shown to the end user. Send the default text from the sample.
    minLength 1default I hear by declare my consent agreeme…
  • request_id
    stringoptional
    No description.
    nullable
  • pan_number
    stringrequired
    Required. 10-character PAN in the format AAAAA9999A (uppercase letters and digits only).
    length 10pattern ^[A-Z]{5}[0-9]{4}[A-Z]{1}$default ABCDE1234F
  • pan_holder_name
    stringrequired
    Required. Name of the PAN holder as printed on the PAN card, used for name matching.
    minLength 1default JOHN DOE
  • dob
    stringoptional
    Optional. Date of birth of the PAN holder, for example 15-08-1990. Accepted formats: dd-MM-yyyy, dd/MM/yyyy, dd-MMM-yyyy (15-AUG-1990) and dd/MMM/yyyy. A missing or unrecognised value is not rejected: it is replaced by a default date, so the date of birth is not checked.
    nullabledefault 15-08-1990
Sample request body
{ "consent": "Y", "consent_text": "I hear by declare my consent agreement for fetching my information via SignCare API", "pan_number": "ABCDE1234F", "pan_holder_name": "JOHN DOE", "dob": "15-08-1990" }

Responses

200OK
  • success
    booleanoptional
    No description.
  • statusCode
    integer (int32)optional
    No description.
    default 200
  • message
    stringoptional
    No description.
    nullabledefault XXXXX
  • data
    objectoptional
    Response model for PAN verification containing status and match results.
    6 fields
    • pan
      stringoptional
      Gets or sets the PAN number that was verified.
      nullabledefault IRZPS88XXX
    • category
      stringoptional
      Gets or sets the category of the PAN holder (e.g., "individual", "company").
      nullabledefault individual
    • status
      stringoptional
      Gets or sets the validity status of the PAN (e.g., "valid", "invalid").
      nullabledefault valid
    • name_as_per_pan_match
      booleanoptional
      Gets or sets a value indicating whether the provided name matches the PAN record.
      nullable
    • date_of_birth_match
      booleanoptional
      Gets or sets a value indicating whether the provided date of birth matches the PAN record.
      nullable
    • aadhaar_seeding_status
      stringoptional
      Gets or sets the Aadhaar seeding status ("y" or "n") indicating Aadhaar-PAN linkage.
      nullabledefault y
  • messages
    array<string>optional
    No description.
    nullable
  • request_id
    stringoptional
    No description.
    nullable
  • isBillable
    booleanoptional
    Whether this request was charged: true if it was, false if not. Errors always show false. Flows that finish later (ITR Fetch, SHCIL eStamp, DigiLocker, eSign) show false here, because the charge is made when the result is ready. eSign charges each signer when they complete signing. DigiLocker deducts the credit when the link is created and refunds it automatically if the link expires before the user completes it.
Example
{ "success": false, "statusCode": 200, "message": "XXXXX", "data": { "pan": "IRZPS88XXX", "category": "individual", "status": "valid", "name_as_per_pan_match": false, "date_of_birth_match": false, "aadhaar_seeding_status": "y" }, "messages": [ "string" ], "request_id": "string", "isBillable": false }
400Bad Request
  • data
    objectoptional
    No description.
  • messages
    array<string>optional
    No description.
    nullable
  • request_id
    stringoptional
    No description.
    nullable
  • success
    booleanoptional
    No description.
    default false
  • message
    stringoptional
    No description.
    nullabledefault XXXXX
  • isBillable
    booleanoptional
    No description.
  • statusCode
    integer (int32)optional
    No description.
    default 400
Example
{ "data": {}, "messages": [ "string" ], "request_id": "string", "success": false, "message": "XXXXX", "isBillable": false, "statusCode": 400 }
401Unauthorized
  • data
    objectoptional
    No description.
  • messages
    array<string>optional
    No description.
    nullable
  • request_id
    stringoptional
    No description.
    nullable
  • success
    booleanoptional
    No description.
    default false
  • message
    stringoptional
    No description.
    nullabledefault XXXXX
  • isBillable
    booleanoptional
    No description.
  • statusCode
    integer (int32)optional
    No description.
    default 401
Example
{ "data": {}, "messages": [ "string" ], "request_id": "string", "success": false, "message": "XXXXX", "isBillable": false, "statusCode": 401 }
500Internal Server Error
  • data
    objectoptional
    No description.
  • messages
    array<string>optional
    No description.
    nullable
  • request_id
    stringoptional
    No description.
    nullable
  • success
    booleanoptional
    No description.
    default false
  • message
    stringoptional
    No description.
    nullabledefault XXXXX
  • isBillable
    booleanoptional
    No description.
  • statusCode
    integer (int32)optional
    No description.
    default 500
Example
{ "data": {}, "messages": [ "string" ], "request_id": "string", "success": false, "message": "XXXXX", "isBillable": false, "statusCode": 500 }
Code samplescurl · Node.js · Python
Stage: uat-ext.signcare.io
curl -X POST 'https://uat-ext.signcare.io/api/v1/pan/verify' \ -H 'X-API-KEY: YOUR_API_KEY' \ -H 'X-API-APP-ID: YOUR_APP_ID' \ -H 'Content-Type: application/json' \ -d '{ "consent": "Y", "consent_text": "I hear by declare my consent agreement for fetching my information via SignCare API", "pan_number": "ABCDE1234F", "pan_holder_name": "JOHN DOE", "dob": "15-08-1990" }'
POST

/api/v1/pan/lite

#

Get Pan Lite details

docs.signcare.io/core/api/pan/pan-verification/#post-api-v1-pan-lite

Headers

  • X-API-KEY
    stringrequired
    Your secret API key for the environment you are calling (Stage and Live use different keys).
  • X-API-APP-ID
    stringrequired
    The App ID issued together with the key.
  • Content-Type
    stringrequired
    application/json

Body parameters

application/json
  • consent
    stringrequired
    Required. The end user's consent to this verification. Send `Y`.
    minLength 1default Y
  • consent_text
    stringrequired
    Required. The consent statement shown to the end user. Send the default text from the sample.
    minLength 1default I hear by declare my consent agreeme…
  • request_id
    stringoptional
    Optional. Your own id to correlate this call in your logs. A unique id is generated if you leave it out.
    nullable
  • customer_pan_number
    stringrequired
    Required. 10-character PAN in the format AAAAA9999A (uppercase letters and digits only).
    length 10pattern ^[A-Z]{5}[0-9]{4}[A-Z]{1}$default ABCDE1234F
  • pan_holder_name
    stringoptional
    Optional. Name of the PAN holder as printed on the PAN card, used for name matching.
    nullabledefault JOHN DOE
Sample request body
{ "consent": "Y", "consent_text": "I hear by declare my consent agreement for fetching my information via SignCare API", "customer_pan_number": "ABCDE1234F", "pan_holder_name": "JOHN DOE" }

Responses

200OK
  • success
    booleanoptional
    No description.
  • statusCode
    integer (int32)optional
    No description.
    default 200
  • message
    stringoptional
    No description.
    nullabledefault XXXXX
  • data
    objectoptional
    Response model for PAN Lite verification containing basic PAN details.
    5 fields
    • pan_number
      stringoptional
      Gets or sets the PAN number.
      nullabledefault IRZPS88XXX
    • pan_status
      stringoptional
      Gets or sets the validity status of the PAN (e.g., "VALID").
      nullabledefault VALID
    • user_full_name
      stringoptional
      Gets or sets the full name of the PAN card holder.
      nullabledefault VAXXXX SAXXXX
    • name_match_score
      stringoptional
      Gets or sets the name match score as a percentage string.
      nullabledefault 28.00
    • pan_type
      stringoptional
      Gets or sets the type of PAN (e.g., "Person", "Company").
      nullabledefault Person
  • messages
    array<string>optional
    No description.
    nullable
  • request_id
    stringoptional
    No description.
    nullable
  • isBillable
    booleanoptional
    Whether this request was charged: true if it was, false if not. Errors always show false. Flows that finish later (ITR Fetch, SHCIL eStamp, DigiLocker, eSign) show false here, because the charge is made when the result is ready. eSign charges each signer when they complete signing. DigiLocker deducts the credit when the link is created and refunds it automatically if the link expires before the user completes it.
Example
{ "success": false, "statusCode": 200, "message": "XXXXX", "data": { "pan_number": "IRZPS88XXX", "pan_status": "VALID", "user_full_name": "VAXXXX SAXXXX", "name_match_score": "28.00", "pan_type": "Person" }, "messages": [ "string" ], "request_id": "string", "isBillable": false }
400Bad Request
  • data
    objectoptional
    No description.
  • messages
    array<string>optional
    No description.
    nullable
  • request_id
    stringoptional
    No description.
    nullable
  • success
    booleanoptional
    No description.
    default false
  • message
    stringoptional
    No description.
    nullabledefault XXXXX
  • isBillable
    booleanoptional
    No description.
  • statusCode
    integer (int32)optional
    No description.
    default 400
Example
{ "data": {}, "messages": [ "string" ], "request_id": "string", "success": false, "message": "XXXXX", "isBillable": false, "statusCode": 400 }
401Unauthorized
  • data
    objectoptional
    No description.
  • messages
    array<string>optional
    No description.
    nullable
  • request_id
    stringoptional
    No description.
    nullable
  • success
    booleanoptional
    No description.
    default false
  • message
    stringoptional
    No description.
    nullabledefault XXXXX
  • isBillable
    booleanoptional
    No description.
  • statusCode
    integer (int32)optional
    No description.
    default 401
Example
{ "data": {}, "messages": [ "string" ], "request_id": "string", "success": false, "message": "XXXXX", "isBillable": false, "statusCode": 401 }
500Internal Server Error
  • data
    objectoptional
    No description.
  • messages
    array<string>optional
    No description.
    nullable
  • request_id
    stringoptional
    No description.
    nullable
  • success
    booleanoptional
    No description.
    default false
  • message
    stringoptional
    No description.
    nullabledefault XXXXX
  • isBillable
    booleanoptional
    No description.
  • statusCode
    integer (int32)optional
    No description.
    default 500
Example
{ "data": {}, "messages": [ "string" ], "request_id": "string", "success": false, "message": "XXXXX", "isBillable": false, "statusCode": 500 }
Code samplescurl · Node.js · Python
Stage: uat-ext.signcare.io
curl -X POST 'https://uat-ext.signcare.io/api/v1/pan/lite' \ -H 'X-API-KEY: YOUR_API_KEY' \ -H 'X-API-APP-ID: YOUR_APP_ID' \ -H 'Content-Type: application/json' \ -d '{ "consent": "Y", "consent_text": "I hear by declare my consent agreement for fetching my information via SignCare API", "customer_pan_number": "ABCDE1234F", "pan_holder_name": "JOHN DOE" }'
POST

/api/v1/pan/advance

#

Get Pan Advance details

docs.signcare.io/core/api/pan/pan-verification/#post-api-v1-pan-advance

Headers

  • X-API-KEY
    stringrequired
    Your secret API key for the environment you are calling (Stage and Live use different keys).
  • X-API-APP-ID
    stringrequired
    The App ID issued together with the key.
  • Content-Type
    stringrequired
    application/json

Body parameters

application/json
  • consent
    stringrequired
    Required. The end user's consent to this verification. Send `Y`.
    minLength 1default Y
  • consent_text
    stringrequired
    Required. The consent statement shown to the end user. Send the default text from the sample.
    minLength 1default I hear by declare my consent agreeme…
  • request_id
    stringoptional
    Optional. Your own id to correlate this call in your logs. A unique id is generated if you leave it out.
    nullable
  • customer_pan_number
    stringrequired
    Required. 10-character PAN in the format AAAAA9999A (uppercase letters and digits only).
    length 10pattern ^[A-Z]{5}[0-9]{4}[A-Z]{1}$default ABCDE1234F
  • pan_holder_name
    stringrequired
    Required. Name of the PAN holder as printed on the PAN card, used for name matching.
    minLength 1default JOHN DOE
Sample request body
{ "consent": "Y", "consent_text": "I hear by declare my consent agreement for fetching my information via SignCare API", "customer_pan_number": "ABCDE1234F", "pan_holder_name": "JOHN DOE" }

Responses

200OK
  • success
    booleanoptional
    No description.
  • statusCode
    integer (int32)optional
    No description.
    default 200
  • message
    stringoptional
    No description.
    nullabledefault XXXXX
  • data
    objectoptional
    Response model for PAN Advance verification with detailed holder information.
    11 fields
    • aadhaar_seeding_status
      stringoptional
      Gets or sets the Aadhaar seeding status of the PAN.
      nullabledefault OPERATIVE PAN
    • pan_last_updated
      stringoptional
      Gets or sets the date when the PAN record was last updated.
      nullabledefault 01/02/2023
    • pan_number
      stringoptional
      Gets or sets the PAN number.
      nullabledefault IRZPS88XXX
    • pan_status
      stringoptional
      Gets or sets the validity status of the PAN.
      nullabledefault VALID
    • user_first_name
      stringoptional
      Gets or sets the first name of the PAN card holder.
      nullabledefault VAXXXX
    • user_middle_name
      stringoptional
      Gets or sets the middle name of the PAN card holder.
      nullabledefault MAXXXX
    • name_on_card
      stringoptional
      Gets or sets the full name as printed on the PAN card.
      nullabledefault VAXXXX MAXXXX SAXXXX
    • user_last_name
      stringoptional
      Gets or sets the last name of the PAN card holder.
      nullabledefault SAXXXX
    • user_title
      stringoptional
      Gets or sets the title of the PAN card holder (e.g., "Shri", "Smt").
      nullabledefault Shri
    • name_match_score
      stringoptional
      Gets or sets the name match score as a percentage string.
      nullabledefault 34.50
    • pan_type
      stringoptional
      Gets or sets the type of PAN (e.g., "Person", "Company").
      nullabledefault Person
  • messages
    array<string>optional
    No description.
    nullable
  • request_id
    stringoptional
    No description.
    nullable
  • isBillable
    booleanoptional
    Whether this request was charged: true if it was, false if not. Errors always show false. Flows that finish later (ITR Fetch, SHCIL eStamp, DigiLocker, eSign) show false here, because the charge is made when the result is ready. eSign charges each signer when they complete signing. DigiLocker deducts the credit when the link is created and refunds it automatically if the link expires before the user completes it.
Example
{ "success": false, "statusCode": 200, "message": "XXXXX", "data": { "aadhaar_seeding_status": "OPERATIVE PAN", "pan_last_updated": "01/02/2023", "pan_number": "IRZPS88XXX", "pan_status": "VALID", "user_first_name": "VAXXXX", "user_middle_name": "MAXXXX", "name_on_card": "VAXXXX MAXXXX SAXXXX", "user_last_name": "SAXXXX", "user_title": "Shri", "name_match_score": "34.50", "pan_type": "Person" }, "messages": [ "string" ], "request_id": "string", "isBillable": false }
400Bad Request
  • data
    objectoptional
    No description.
  • messages
    array<string>optional
    No description.
    nullable
  • request_id
    stringoptional
    No description.
    nullable
  • success
    booleanoptional
    No description.
    default false
  • message
    stringoptional
    No description.
    nullabledefault XXXXX
  • isBillable
    booleanoptional
    No description.
  • statusCode
    integer (int32)optional
    No description.
    default 400
Example
{ "data": {}, "messages": [ "string" ], "request_id": "string", "success": false, "message": "XXXXX", "isBillable": false, "statusCode": 400 }
401Unauthorized
  • data
    objectoptional
    No description.
  • messages
    array<string>optional
    No description.
    nullable
  • request_id
    stringoptional
    No description.
    nullable
  • success
    booleanoptional
    No description.
    default false
  • message
    stringoptional
    No description.
    nullabledefault XXXXX
  • isBillable
    booleanoptional
    No description.
  • statusCode
    integer (int32)optional
    No description.
    default 401
Example
{ "data": {}, "messages": [ "string" ], "request_id": "string", "success": false, "message": "XXXXX", "isBillable": false, "statusCode": 401 }
500Internal Server Error
  • data
    objectoptional
    No description.
  • messages
    array<string>optional
    No description.
    nullable
  • request_id
    stringoptional
    No description.
    nullable
  • success
    booleanoptional
    No description.
    default false
  • message
    stringoptional
    No description.
    nullabledefault XXXXX
  • isBillable
    booleanoptional
    No description.
  • statusCode
    integer (int32)optional
    No description.
    default 500
Example
{ "data": {}, "messages": [ "string" ], "request_id": "string", "success": false, "message": "XXXXX", "isBillable": false, "statusCode": 500 }
Code samplescurl · Node.js · Python
Stage: uat-ext.signcare.io
curl -X POST 'https://uat-ext.signcare.io/api/v1/pan/advance' \ -H 'X-API-KEY: YOUR_API_KEY' \ -H 'X-API-APP-ID: YOUR_APP_ID' \ -H 'Content-Type: application/json' \ -d '{ "consent": "Y", "consent_text": "I hear by declare my consent agreement for fetching my information via SignCare API", "customer_pan_number": "ABCDE1234F", "pan_holder_name": "JOHN DOE" }'
POST

/api/v1/pan/pro

#

Get Pan Pro details

docs.signcare.io/core/api/pan/pan-verification/#post-api-v1-pan-pro

Headers

  • X-API-KEY
    stringrequired
    Your secret API key for the environment you are calling (Stage and Live use different keys).
  • X-API-APP-ID
    stringrequired
    The App ID issued together with the key.
  • Content-Type
    stringrequired
    application/json

Body parameters

application/json
  • consent
    stringrequired
    Required. The end user's consent to this verification. Send `Y`.
    minLength 1default Y
  • consent_text
    stringrequired
    Required. The consent statement shown to the end user. Send the default text from the sample.
    minLength 1default I hear by declare my consent agreeme…
  • request_id
    stringoptional
    Optional. Your own id to correlate this call in your logs. A unique id is generated if you leave it out.
    nullable
  • customer_pan_number
    stringrequired
    Required. 10-character PAN in the format AAAAA9999A (uppercase letters and digits only).
    length 10pattern ^[A-Z]{5}[0-9]{4}[A-Z]{1}$default ABCDE1234F
  • pan_holder_name
    stringrequired
    Required. Name of the PAN holder as printed on the PAN card, used for name matching.
    minLength 1default JOHN DOE
Sample request body
{ "consent": "Y", "consent_text": "I hear by declare my consent agreement for fetching my information via SignCare API", "customer_pan_number": "ABCDE1234F", "pan_holder_name": "JOHN DOE" }

Responses

200OK
  • success
    booleanoptional
    No description.
  • statusCode
    integer (int32)optional
    No description.
    default 200
  • message
    stringoptional
    No description.
    nullabledefault XXXXX
  • data
    objectoptional
    Response model for PAN Pro verification with comprehensive holder details including address and contact info.
    12 fields
    • pan_number
      stringoptional
      Gets or sets the PAN number.
      nullabledefault IRZPS88XXX
    • user_full_name
      stringoptional
      Gets or sets the full name of the PAN card holder.
      nullabledefault XXXXXX XXXXXX XXXXXX
    • user_full_name_split
      array<string>optional
      Gets or sets the full name split into individual name parts.
      nullabledefault ["XXXXXX","XXXXXX","XXXXXX"]
    • masked_aadhaar
      stringoptional
      Gets or sets the masked Aadhaar number linked to the PAN.
      nullabledefault XXXXXXXX7895
    • user_address
      objectoptional
      Represents the address of a PAN Pro verification response.
      8 fields
      • line_1
        stringoptional
        Gets or sets the first line of the address.
        nullabledefault XXXX XXXXXXX XXXXXX
      • line_2
        stringoptional
        Gets or sets the second line of the address.
        nullabledefault XXXX XXXXXXX, XXXXXX XXXXXXX XXXXXX
      • street_name
        stringoptional
        Gets or sets the street name.
        nullabledefault XXXXXX
      • zip
        stringoptional
        Gets or sets the postal ZIP code.
        nullabledefault XXXXXX
      • city
        stringoptional
        Gets or sets the city name.
        nullabledefault XXXXXX
      • state
        stringoptional
        Gets or sets the state name.
        nullabledefault XXXXXX
      • country
        stringoptional
        Gets or sets the country name.
        nullabledefault XXXXXX
      • full
        stringoptional
        Gets or sets the full concatenated address string.
        nullabledefault XXXXX, XXXXXX XXXXXXX, XXXXXX XXXX
    • user_email
      stringoptional
      Gets or sets the masked email address of the PAN card holder.
      nullabledefault er*********el@gmail.com
    • user_phone_number
      stringoptional
      Gets or sets the phone number of the PAN card holder.
      nullabledefault 94XXXXXX12
    • user_gender
      stringoptional
      Gets or sets the gender of the PAN card holder (e.g., "M" or "F").
      nullabledefault M
    • user_dob
      stringoptional
      Gets or sets the date of birth of the PAN card holder.
      nullabledefault XX-XX-XXXX
    • aadhaar_linked_status
      booleanoptional
      Gets or sets a value indicating whether the PAN is linked with Aadhaar.
      nullabledefault true
    • name_match_score
      stringoptional
      Gets or sets the name match score as a percentage string.
      nullabledefault 34.50
    • pan_type
      stringoptional
      Gets or sets the type of PAN (e.g., "Person", "Company").
      nullabledefault Person
  • messages
    array<string>optional
    No description.
    nullable
  • request_id
    stringoptional
    No description.
    nullable
  • isBillable
    booleanoptional
    Whether this request was charged: true if it was, false if not. Errors always show false. Flows that finish later (ITR Fetch, SHCIL eStamp, DigiLocker, eSign) show false here, because the charge is made when the result is ready. eSign charges each signer when they complete signing. DigiLocker deducts the credit when the link is created and refunds it automatically if the link expires before the user completes it.
Example
{ "success": false, "statusCode": 200, "message": "XXXXX", "data": { "pan_number": "IRZPS88XXX", "user_full_name": "XXXXXX XXXXXX XXXXXX", "user_full_name_split": [ "XXXXXX", "XXXXXX", "XXXXXX" ], "masked_aadhaar": "XXXXXXXX7895", "user_address": { "line_1": "XXXX XXXXXXX XXXXXX", "line_2": "XXXX XXXXXXX, XXXXXX XXXXXXX XXXXXX", "street_name": "XXXXXX", "zip": "XXXXXX", "city": "XXXXXX", "state": "XXXXXX", "country": "XXXXXX", "full": "XXXXX, XXXXXX XXXXXXX, XXXXXX XXXX" }, "user_email": "er*********el@gmail.com", "user_phone_number": "94XXXXXX12", "user_gender": "M", "user_dob": "XX-XX-XXXX", "aadhaar_linked_status": "true", "name_match_score": "34.50", "pan_type": "Person" }, "messages": [ "string" ], "request_id": "string", "isBillable": false }
400Bad Request
  • data
    objectoptional
    No description.
  • messages
    array<string>optional
    No description.
    nullable
  • request_id
    stringoptional
    No description.
    nullable
  • success
    booleanoptional
    No description.
    default false
  • message
    stringoptional
    No description.
    nullabledefault XXXXX
  • isBillable
    booleanoptional
    No description.
  • statusCode
    integer (int32)optional
    No description.
    default 400
Example
{ "data": {}, "messages": [ "string" ], "request_id": "string", "success": false, "message": "XXXXX", "isBillable": false, "statusCode": 400 }
401Unauthorized
  • data
    objectoptional
    No description.
  • messages
    array<string>optional
    No description.
    nullable
  • request_id
    stringoptional
    No description.
    nullable
  • success
    booleanoptional
    No description.
    default false
  • message
    stringoptional
    No description.
    nullabledefault XXXXX
  • isBillable
    booleanoptional
    No description.
  • statusCode
    integer (int32)optional
    No description.
    default 401
Example
{ "data": {}, "messages": [ "string" ], "request_id": "string", "success": false, "message": "XXXXX", "isBillable": false, "statusCode": 401 }
500Internal Server Error
  • data
    objectoptional
    No description.
  • messages
    array<string>optional
    No description.
    nullable
  • request_id
    stringoptional
    No description.
    nullable
  • success
    booleanoptional
    No description.
    default false
  • message
    stringoptional
    No description.
    nullabledefault XXXXX
  • isBillable
    booleanoptional
    No description.
  • statusCode
    integer (int32)optional
    No description.
    default 500
Example
{ "data": {}, "messages": [ "string" ], "request_id": "string", "success": false, "message": "XXXXX", "isBillable": false, "statusCode": 500 }
Code samplescurl · Node.js · Python
Stage: uat-ext.signcare.io
curl -X POST 'https://uat-ext.signcare.io/api/v1/pan/pro' \ -H 'X-API-KEY: YOUR_API_KEY' \ -H 'X-API-APP-ID: YOUR_APP_ID' \ -H 'Content-Type: application/json' \ -d '{ "consent": "Y", "consent_text": "I hear by declare my consent agreement for fetching my information via SignCare API", "customer_pan_number": "ABCDE1234F", "pan_holder_name": "JOHN DOE" }'
POST

/api/v1/pan/mobile-to-pan

#

Retrieve PAN details using mobile number and name.

docs.signcare.io/core/api/pan/pan-verification/#post-api-v1-pan-mobile-to-pan

This API retrieves Permanent Account Number (PAN) details by matching a mobile number with a person's name. It allows you to verify and fetch PAN information when you have a user's mobile number and name, providing a convenient way to retrieve PAN details without requiring the physical PAN card or number from the user.

Key Benefits:

→ Simplifies KYC processes by retrieving PAN details using just mobile number and name.

→ Reduces manual data entry errors in financial and regulatory compliance workflows.

→ Enables faster customer onboarding with automated PAN verification.

→ Helps prevent identity fraud by cross-verifying user-provided information.

Use Cases:

→ Streamline customer onboarding for banking and financial institutions.

→ Verify customer identity during loan application processing.

→ Automate KYC verification for investment accounts and trading platforms.

Request Body Parameters:

→ name (required): Full name of the person as registered with the PAN.

→ mobile_no (required): Mobile number registered with the PAN: 10 digits starting with 6, 7, 8 or 9.

Headers

  • X-API-KEY
    stringrequired
    Your secret API key for the environment you are calling (Stage and Live use different keys).
  • X-API-APP-ID
    stringrequired
    The App ID issued together with the key.
  • Content-Type
    stringrequired
    application/json

Body parameters

application/json
  • consent
    stringrequired
    Required. The end user's consent to this verification. Send `Y`.
    minLength 1default Y
  • consent_text
    stringrequired
    Required. The consent statement shown to the end user. Send the default text from the sample.
    minLength 1default I hear by declare my consent agreeme…
  • request_id
    stringoptional
    Optional. Your own id to correlate this call in your logs. A unique id is generated if you leave it out.
    nullable
  • name
    stringrequired
    Required. Full name of the person as registered with the PAN.
    minLength 1default JOHN DOE
  • mobile_no
    stringrequired
    Required. 10-digit Indian mobile number starting with 6, 7, 8 or 9, without country code.
    length 10pattern ^[6-9]\d{9}$default 9876543210
Sample request body
{ "consent": "Y", "consent_text": "I hear by declare my consent agreement for fetching my information via SignCare API", "name": "JOHN DOE", "mobile_no": "9876543210" }

Responses

200OK
  • success
    booleanoptional
    No description.
  • statusCode
    integer (int32)optional
    No description.
    default 200
  • message
    stringoptional
    No description.
    nullabledefault XXXXX
  • data
    objectoptional
    Data payload returned from a successful Mobile to PAN lookup.
    3 fields
    • name
      stringoptional
      No description.
      nullable
    • mobile_no
      stringoptional
      No description.
      nullable
    • pan_number
      stringoptional
      No description.
      nullable
  • messages
    array<string>optional
    No description.
    nullable
  • request_id
    stringoptional
    No description.
    nullable
  • isBillable
    booleanoptional
    Whether this request was charged: true if it was, false if not. Errors always show false. Flows that finish later (ITR Fetch, SHCIL eStamp, DigiLocker, eSign) show false here, because the charge is made when the result is ready. eSign charges each signer when they complete signing. DigiLocker deducts the credit when the link is created and refunds it automatically if the link expires before the user completes it.
Example
{ "success": false, "statusCode": 200, "message": "XXXXX", "data": { "name": "string", "mobile_no": "string", "pan_number": "string" }, "messages": [ "string" ], "request_id": "string", "isBillable": false }
400Bad Request
  • data
    objectoptional
    No description.
  • messages
    array<string>optional
    No description.
    nullable
  • request_id
    stringoptional
    No description.
    nullable
  • success
    booleanoptional
    No description.
    default false
  • message
    stringoptional
    No description.
    nullabledefault XXXXX
  • isBillable
    booleanoptional
    No description.
  • statusCode
    integer (int32)optional
    No description.
    default 400
Example
{ "data": {}, "messages": [ "string" ], "request_id": "string", "success": false, "message": "XXXXX", "isBillable": false, "statusCode": 400 }
401Unauthorized
  • data
    objectoptional
    No description.
  • messages
    array<string>optional
    No description.
    nullable
  • request_id
    stringoptional
    No description.
    nullable
  • success
    booleanoptional
    No description.
    default false
  • message
    stringoptional
    No description.
    nullabledefault XXXXX
  • isBillable
    booleanoptional
    No description.
  • statusCode
    integer (int32)optional
    No description.
    default 401
Example
{ "data": {}, "messages": [ "string" ], "request_id": "string", "success": false, "message": "XXXXX", "isBillable": false, "statusCode": 401 }
500Internal Server Error
  • data
    objectoptional
    No description.
  • messages
    array<string>optional
    No description.
    nullable
  • request_id
    stringoptional
    No description.
    nullable
  • success
    booleanoptional
    No description.
    default false
  • message
    stringoptional
    No description.
    nullabledefault XXXXX
  • isBillable
    booleanoptional
    No description.
  • statusCode
    integer (int32)optional
    No description.
    default 500
Example
{ "data": {}, "messages": [ "string" ], "request_id": "string", "success": false, "message": "XXXXX", "isBillable": false, "statusCode": 500 }
Code samplescurl · Node.js · Python
Stage: uat-ext.signcare.io
curl -X POST 'https://uat-ext.signcare.io/api/v1/pan/mobile-to-pan' \ -H 'X-API-KEY: YOUR_API_KEY' \ -H 'X-API-APP-ID: YOUR_APP_ID' \ -H 'Content-Type: application/json' \ -d '{ "consent": "Y", "consent_text": "I hear by declare my consent agreement for fetching my information via SignCare API", "name": "JOHN DOE", "mobile_no": "9876543210" }'
POST

/api/v1/pan/pan-to-email-mobile

#

Retrieve email addresses and mobile numbers associated with a PAN. Pass `version: "v2"` in the request body to call the V2 version of this API with a broader data set.

docs.signcare.io/core/api/pan/pan-verification/#post-api-v1-pan-pan-to-email-mobile

Queries official databases to fetch all registered email IDs and mobile numbers linked to a specific PAN card.

API Versions:

This endpoint supports two versions of the lookup, selectable via the version field in the request body.

Key Benefits:

→ Comprehensive Contact Discovery: Retrieve all registered email and mobile numbers in a single API call.

→ Enhanced Customer Profiling: Enrich customer data with verified contact information from official sources.

→ Multi-Channel Communication: Access multiple communication channels for customer outreach.

→ Streamlined Onboarding: Auto-populate contact fields with verified information.

→ Higher Coverage with V2: The V2 version taps into a wider data source — useful when the default version returns empty results.

Use Cases:

→ Customer Reactivation: Retrieve contact details of dormant account holders.

→ Loan Collections: Obtain verified contact information for borrowers.

→ Account Updates: Reach out to customers for KYC updates.

→ Cross-Selling Campaigns: Access accurate contact details for targeted offers.

Request Body Parameters:

→ id_number (required): Valid PAN card number — 5 letters, 4 digits, 1 letter (e.g., ABCDE1234F).

→ version (optional): Pass "v2" to call the V2 version of this API. Omit to use the default V1 version. Accepted value: "v2" (not case-sensitive); any other value is rejected.

Headers

  • X-API-KEY
    stringrequired
    Your secret API key for the environment you are calling (Stage and Live use different keys).
  • X-API-APP-ID
    stringrequired
    The App ID issued together with the key.
  • Content-Type
    stringrequired
    application/json

Body parameters

application/json
  • consent
    stringrequired
    Required. The end user's consent to this verification. Send `Y`.
    minLength 1default Y
  • consent_text
    stringrequired
    Required. The consent statement shown to the end user. Send the default text from the sample.
    minLength 1default I hear by declare my consent agreeme…
  • request_id
    stringoptional
    Optional. Your own id to correlate this call in your logs. A unique id is generated if you leave it out.
    nullable
  • id_number
    stringrequired
    Required. 10-character PAN in the format AAAAA9999A (uppercase letters and digits only).
    minLength 1default ABCDE1234F
  • version
    stringoptional
    Optional. Pass "v2" (not case-sensitive) to use version 2 of the lookup, which has wider coverage. Omit it to use version 1. Any other value is rejected.
    nullablepattern ^[vV]2$
Sample request body
{ "consent": "Y", "consent_text": "I hear by declare my consent agreement for fetching my information via SignCare API", "id_number": "ABCDE1234F" }

Responses

200OK
  • success
    booleanoptional
    No description.
  • statusCode
    integer (int32)optional
    No description.
    default 200
  • message
    stringoptional
    No description.
    nullabledefault XXXXX
  • data
    objectoptional
    No description.
    3 fields
    • id_number
      stringoptional
      No description.
      nullable
    • email_id
      array<string>optional
      No description.
      nullable
    • mobile_number
      array<string>optional
      No description.
      nullable
  • messages
    array<string>optional
    No description.
    nullable
  • request_id
    stringoptional
    No description.
    nullable
  • isBillable
    booleanoptional
    Whether this request was charged: true if it was, false if not. Errors always show false. Flows that finish later (ITR Fetch, SHCIL eStamp, DigiLocker, eSign) show false here, because the charge is made when the result is ready. eSign charges each signer when they complete signing. DigiLocker deducts the credit when the link is created and refunds it automatically if the link expires before the user completes it.
Example
{ "success": false, "statusCode": 200, "message": "XXXXX", "data": { "id_number": "string", "email_id": [ "string" ], "mobile_number": [ "string" ] }, "messages": [ "string" ], "request_id": "string", "isBillable": false }
400Bad Request
  • data
    objectoptional
    No description.
  • messages
    array<string>optional
    No description.
    nullable
  • request_id
    stringoptional
    No description.
    nullable
  • success
    booleanoptional
    No description.
    default false
  • message
    stringoptional
    No description.
    nullabledefault XXXXX
  • isBillable
    booleanoptional
    No description.
  • statusCode
    integer (int32)optional
    No description.
    default 400
Example
{ "data": {}, "messages": [ "string" ], "request_id": "string", "success": false, "message": "XXXXX", "isBillable": false, "statusCode": 400 }
401Unauthorized
  • data
    objectoptional
    No description.
  • messages
    array<string>optional
    No description.
    nullable
  • request_id
    stringoptional
    No description.
    nullable
  • success
    booleanoptional
    No description.
    default false
  • message
    stringoptional
    No description.
    nullabledefault XXXXX
  • isBillable
    booleanoptional
    No description.
  • statusCode
    integer (int32)optional
    No description.
    default 401
Example
{ "data": {}, "messages": [ "string" ], "request_id": "string", "success": false, "message": "XXXXX", "isBillable": false, "statusCode": 401 }
429Too Many Requests
  • success
    booleanoptional
    No description.
  • statusCode
    integer (int32)optional
    No description.
    default 200
  • message
    stringoptional
    No description.
    nullabledefault XXXXX
  • data
    anyoptional
    No description.
    nullable
  • messages
    array<string>optional
    No description.
    nullable
  • request_id
    stringoptional
    No description.
    nullable
  • isBillable
    booleanoptional
    Whether this request was charged: true if it was, false if not. Errors always show false. Flows that finish later (ITR Fetch, SHCIL eStamp, DigiLocker, eSign) show false here, because the charge is made when the result is ready. eSign charges each signer when they complete signing. DigiLocker deducts the credit when the link is created and refunds it automatically if the link expires before the user completes it.
Example
{ "success": false, "statusCode": 200, "message": "XXXXX", "data": null, "messages": [ "string" ], "request_id": "string", "isBillable": false }
500Internal Server Error
  • data
    objectoptional
    No description.
  • messages
    array<string>optional
    No description.
    nullable
  • request_id
    stringoptional
    No description.
    nullable
  • success
    booleanoptional
    No description.
    default false
  • message
    stringoptional
    No description.
    nullabledefault XXXXX
  • isBillable
    booleanoptional
    No description.
  • statusCode
    integer (int32)optional
    No description.
    default 500
Example
{ "data": {}, "messages": [ "string" ], "request_id": "string", "success": false, "message": "XXXXX", "isBillable": false, "statusCode": 500 }
Code samplescurl · Node.js · Python
Stage: uat-ext.signcare.io
curl -X POST 'https://uat-ext.signcare.io/api/v1/pan/pan-to-email-mobile' \ -H 'X-API-KEY: YOUR_API_KEY' \ -H 'X-API-APP-ID: YOUR_APP_ID' \ -H 'Content-Type: application/json' \ -d '{ "consent": "Y", "consent_text": "I hear by declare my consent agreement for fetching my information via SignCare API", "id_number": "ABCDE1234F" }'
POST

/api/v1/pan/pan-to-gst

#

Retrieve all GST registrations linked to a business PAN.

docs.signcare.io/core/api/pan/pan-verification/#post-api-v1-pan-pan-to-gst

Queries official records to fetch all GST Identification Numbers (GSTINs) associated with a given Business PAN.

Key Benefits:

→ Fetch all GST registrations linked to a single Business PAN in one request.

→ Simplify GST verification and business onboarding processes.

→ Validate business tax registrations across multiple states.

→ Improve compliance and KYC verification workflows.

→ Reduce manual effort in identifying all GST registrations for an organization.

Use Cases:

→ Business KYC: Verify all GST registrations associated with a business entity.

→ Vendor Verification: Validate GST registrations during vendor onboarding.

→ Compliance Checks: Identify GST registrations across different states.

→ Financial Services: Perform tax registration verification for lending and underwriting.

Request Body Parameters:

→ business_pan_number (required): Valid Business PAN number in the format of 5 letters, 4 digits, and 1 letter (e.g., ABCDE1234F).

Headers

  • X-API-KEY
    stringrequired
    Your secret API key for the environment you are calling (Stage and Live use different keys).
  • X-API-APP-ID
    stringrequired
    The App ID issued together with the key.
  • Content-Type
    stringrequired
    application/json

Body parameters

application/json
  • consent
    stringrequired
    Required. The end user's consent to this verification. Send `Y`.
    minLength 1default Y
  • consent_text
    stringrequired
    Required. The consent statement shown to the end user. Send the default text from the sample.
    minLength 1default I hear by declare my consent agreeme…
  • request_id
    stringoptional
    Optional. Your own id to correlate this call in your logs. A unique id is generated if you leave it out.
    nullable
  • business_pan_number
    stringrequired
    Required. 10-character business PAN in the format AAAAA9999A (uppercase letters and digits only).
    length 10pattern ^[A-Z]{5}[0-9]{4}[A-Z]{1}$default ABCDE1234F
Sample request body
{ "consent": "Y", "consent_text": "I hear by declare my consent agreement for fetching my information via SignCare API", "business_pan_number": "ABCDE1234F" }

Responses

200OK
  • success
    booleanoptional
    No description.
  • statusCode
    integer (int32)optional
    No description.
    default 200
  • message
    stringoptional
    No description.
    nullabledefault XXXXX
  • data
    objectoptional
    Response model for PAN to GST lookup — list of GSTINs registered against a business PAN.
    2 fields
    • gstinList
      array<object>optional
      No description.
      nullable
      Each item: 3 fields
      • gstin
        stringoptional
        No description.
        nullabledefault 04AABFU9404N1Z5
      • stateCode
        stringoptional
        No description.
        nullabledefault Chandigarh
      • currentRegistrationStatus
        stringoptional
        No description.
        nullabledefault Active
    • businessPanNumber
      stringoptional
      No description.
      nullabledefault AABFU9404N
  • messages
    array<string>optional
    No description.
    nullable
  • request_id
    stringoptional
    No description.
    nullable
  • isBillable
    booleanoptional
    Whether this request was charged: true if it was, false if not. Errors always show false. Flows that finish later (ITR Fetch, SHCIL eStamp, DigiLocker, eSign) show false here, because the charge is made when the result is ready. eSign charges each signer when they complete signing. DigiLocker deducts the credit when the link is created and refunds it automatically if the link expires before the user completes it.
Example
{ "success": false, "statusCode": 200, "message": "XXXXX", "data": { "gstinList": [ { "gstin": "04AABFU9404N1Z5", "stateCode": "Chandigarh", "currentRegistrationStatus": "Active" } ], "businessPanNumber": "AABFU9404N" }, "messages": [ "string" ], "request_id": "string", "isBillable": false }
400Bad Request
  • data
    objectoptional
    No description.
  • messages
    array<string>optional
    No description.
    nullable
  • request_id
    stringoptional
    No description.
    nullable
  • success
    booleanoptional
    No description.
    default false
  • message
    stringoptional
    No description.
    nullabledefault XXXXX
  • isBillable
    booleanoptional
    No description.
  • statusCode
    integer (int32)optional
    No description.
    default 400
Example
{ "data": {}, "messages": [ "string" ], "request_id": "string", "success": false, "message": "XXXXX", "isBillable": false, "statusCode": 400 }
401Unauthorized
  • data
    objectoptional
    No description.
  • messages
    array<string>optional
    No description.
    nullable
  • request_id
    stringoptional
    No description.
    nullable
  • success
    booleanoptional
    No description.
    default false
  • message
    stringoptional
    No description.
    nullabledefault XXXXX
  • isBillable
    booleanoptional
    No description.
  • statusCode
    integer (int32)optional
    No description.
    default 401
Example
{ "data": {}, "messages": [ "string" ], "request_id": "string", "success": false, "message": "XXXXX", "isBillable": false, "statusCode": 401 }
500Internal Server Error
  • data
    objectoptional
    No description.
  • messages
    array<string>optional
    No description.
    nullable
  • request_id
    stringoptional
    No description.
    nullable
  • success
    booleanoptional
    No description.
    default false
  • message
    stringoptional
    No description.
    nullabledefault XXXXX
  • isBillable
    booleanoptional
    No description.
  • statusCode
    integer (int32)optional
    No description.
    default 500
Example
{ "data": {}, "messages": [ "string" ], "request_id": "string", "success": false, "message": "XXXXX", "isBillable": false, "statusCode": 500 }
Code samplescurl · Node.js · Python
Stage: uat-ext.signcare.io
curl -X POST 'https://uat-ext.signcare.io/api/v1/pan/pan-to-gst' \ -H 'X-API-KEY: YOUR_API_KEY' \ -H 'X-API-APP-ID: YOUR_APP_ID' \ -H 'Content-Type: application/json' \ -d '{ "consent": "Y", "consent_text": "I hear by declare my consent agreement for fetching my information via SignCare API", "business_pan_number": "ABCDE1234F" }'
POST

/api/v1/pan/to-msme

#

Retrieve MSME/Udyam details associated with a business PAN.

docs.signcare.io/core/api/pan/pan-verification/#post-api-v1-pan-to-msme

Queries official databases to retrieve registration and classification history of MSME/Udyam enterprises linked to the business PAN.

Key Benefits:

→ Automated Retrieval: Retrieve all registered MSME details using just the PAN.

→ Multi-dimensional Data: Fetch classification history, NIC codes, units, and certificates in one request.

→ Simplified Compliance: Validate enterprise classification (micro/small/medium) for statutory compliance.

Use Cases:

→ Vendor Verification: Confirm the registration and status of business partners.

→ Onboarding Automation: Extract registered names and addresses from official records.

Request Body Parameters:

→ pan (required): Valid Business PAN number in the format of 5 letters, 4 digits, and 1 letter (e.g., ABCDE1234F).

→ is_pdf_required (optional): Boolean, default false. Set to true to also receive the Udyam certificate as a Base64-encoded PDF in udyam_certificate_base64 when available.

Headers

  • X-API-KEY
    stringrequired
    Your secret API key for the environment you are calling (Stage and Live use different keys).
  • X-API-APP-ID
    stringrequired
    The App ID issued together with the key.
  • Content-Type
    stringrequired
    application/json

Body parameters

application/json
  • consent
    stringrequired
    Required. The end user's consent to this verification. Send `Y`.
    minLength 1default Y
  • consent_text
    stringrequired
    Required. The consent statement shown to the end user. Send the default text from the sample.
    minLength 1default I hear by declare my consent agreeme…
  • request_id
    stringoptional
    Optional. Your own id to correlate this call in your logs. A unique id is generated if you leave it out.
    nullable
  • pan
    stringrequired
    Required. 10-character business PAN in the format AAAAA9999A (uppercase letters and digits only).
    minLength 1pattern ^[A-Z]{5}[0-9]{4}[A-Z]{1}$default ABCDE1234F
  • is_pdf_required
    booleanoptional
    Optional. Boolean, default false. Set to true to also receive the Udyam certificate as a Base64-encoded PDF in udyam_certificate_base64 when it is available.
    default false
Sample request body
{ "consent": "Y", "consent_text": "I hear by declare my consent agreement for fetching my information via SignCare API", "pan": "ABCDE1234F", "is_pdf_required": false }

Responses

200OK
  • success
    booleanoptional
    No description.
  • statusCode
    integer (int32)optional
    No description.
    default 200
  • message
    stringoptional
    No description.
    nullabledefault XXXXX
  • data
    objectoptional
    No description.
    8 fields
    • udyam_number
      stringoptional
      No description.
      nullable
    • enterprise_data
      objectoptional
      No description.
      17 fields
      • document_id
        stringoptional
        No description.
        nullable
      • major_activity
        stringoptional
        No description.
        nullable
      • enterprise_type
        stringoptional
        No description.
        nullable
      • classification_year
        stringoptional
        No description.
        nullable
      • classification_date
        stringoptional
        No description.
        nullable
      • organization_type
        stringoptional
        No description.
        nullable
      • name
        stringoptional
        No description.
        nullable
      • mobile
        stringoptional
        No description.
        nullable
      • email
        stringoptional
        No description.
        nullable
      • address
        objectoptional
        No description.
        9 fields
        • door_no
          stringoptional
          No description.
          nullable
        • building
          stringoptional
          No description.
          nullable
        • area
          stringoptional
          No description.
          nullable
        • block
          stringoptional
          No description.
          nullable
        • street
          stringoptional
          No description.
          nullable
        • city
          stringoptional
          No description.
          nullable
        • district
          stringoptional
          No description.
          nullable
        • state
          stringoptional
          No description.
          nullable
        • pincode
          stringoptional
          No description.
          nullable
      • date_of_incorporation
        stringoptional
        No description.
        nullable
      • date_of_commencement
        stringoptional
        No description.
        nullable
      • date_of_udyam_registration
        stringoptional
        No description.
        nullable
      • dic
        stringoptional
        No description.
        nullable
      • msme_di
        stringoptional
        No description.
        nullable
      • social_category
        stringoptional
        No description.
        nullable
      • gender
        stringoptional
        No description.
        nullable
    • enterprise_type_data
      array<object>optional
      No description.
      nullable
      Each item: 3 fields
      • enterprise_type
        stringoptional
        No description.
        nullable
      • classification_year
        stringoptional
        No description.
        nullable
      • classification_date
        stringoptional
        No description.
        nullable
    • type_of_enterprise
      stringoptional
      No description.
      nullable
    • nic_data
      objectoptional
      No description.
      3 fields
      • nic_2_digit
        stringoptional
        No description.
        nullable
      • nic_4_digit
        stringoptional
        No description.
        nullable
      • nic_5_digit
        stringoptional
        No description.
        nullable
    • nic_data_list
      array<object>optional
      No description.
      nullable
      Each item: 5 fields
      • nic_2_digit
        stringoptional
        No description.
        nullable
      • nic_4_digit
        stringoptional
        No description.
        nullable
      • nic_5_digit
        stringoptional
        No description.
        nullable
      • activity_type
        stringoptional
        No description.
        nullable
      • date
        stringoptional
        No description.
        nullable
    • enterprise_units
      array<object>optional
      No description.
      nullable
      Each item: 2 fields
      • name
        stringoptional
        No description.
        nullable
      • address
        objectoptional
        No description.
        9 fields
        • door_no
          stringoptional
          No description.
          nullable
        • building
          stringoptional
          No description.
          nullable
        • area
          stringoptional
          No description.
          nullable
        • block
          stringoptional
          No description.
          nullable
        • street
          stringoptional
          No description.
          nullable
        • city
          stringoptional
          No description.
          nullable
        • district
          stringoptional
          No description.
          nullable
        • state
          stringoptional
          No description.
          nullable
        • pincode
          stringoptional
          No description.
          nullable
    • udyam_certificate_base64
      stringoptional
      No description.
      nullable
  • messages
    array<string>optional
    No description.
    nullable
  • request_id
    stringoptional
    No description.
    nullable
  • isBillable
    booleanoptional
    Whether this request was charged: true if it was, false if not. Errors always show false. Flows that finish later (ITR Fetch, SHCIL eStamp, DigiLocker, eSign) show false here, because the charge is made when the result is ready. eSign charges each signer when they complete signing. DigiLocker deducts the credit when the link is created and refunds it automatically if the link expires before the user completes it.
Example
{ "success": false, "statusCode": 200, "message": "XXXXX", "data": { "udyam_number": "string", "enterprise_data": { "document_id": "string", "major_activity": "string", "enterprise_type": "string", "classification_year": "string", "classification_date": "string", "organization_type": "string", "name": "string", "mobile": "string", "email": "string", "address": { "door_no": "string", "building": "string", "area": "string", "block": "string", "street": "string", "city": "string", "district": "string", "state": "string", "pincode": "string" }, "date_of_incorporation": "string", "date_of_commencement": "string", "date_of_udyam_registration": "string", "dic": "string", "msme_di": "string", "social_category": "string", "gender": "string" }, "enterprise_type_data": [ { "enterprise_type": "string", "classification_year": "string", "classification_date": "string" } ], "type_of_enterprise": "string", "nic_data": { "nic_2_digit": "string", "nic_4_digit": "string", "nic_5_digit": "string" }, "nic_data_list": [ { "nic_2_digit": "string", "nic_4_digit": "string", "nic_5_digit": "string", "activity_type": "string", "date": "string" } ], "enterprise_units": [ { "name": "string", "address": { "door_no": "string", "building": "string", "area": "string", "block": "string", "street": "string", "city": "string", "district": "string", "state": "string", "pincode": "string" } } ], "udyam_certificate_base64": "string" }, "messages": [ "string" ], "request_id": "string", "isBillable": false }
400Bad Request
  • data
    objectoptional
    No description.
  • messages
    array<string>optional
    No description.
    nullable
  • request_id
    stringoptional
    No description.
    nullable
  • success
    booleanoptional
    No description.
    default false
  • message
    stringoptional
    No description.
    nullabledefault XXXXX
  • isBillable
    booleanoptional
    No description.
  • statusCode
    integer (int32)optional
    No description.
    default 400
Example
{ "data": {}, "messages": [ "string" ], "request_id": "string", "success": false, "message": "XXXXX", "isBillable": false, "statusCode": 400 }
401Unauthorized
  • data
    objectoptional
    No description.
  • messages
    array<string>optional
    No description.
    nullable
  • request_id
    stringoptional
    No description.
    nullable
  • success
    booleanoptional
    No description.
    default false
  • message
    stringoptional
    No description.
    nullabledefault XXXXX
  • isBillable
    booleanoptional
    No description.
  • statusCode
    integer (int32)optional
    No description.
    default 401
Example
{ "data": {}, "messages": [ "string" ], "request_id": "string", "success": false, "message": "XXXXX", "isBillable": false, "statusCode": 401 }
500Internal Server Error
  • data
    objectoptional
    No description.
  • messages
    array<string>optional
    No description.
    nullable
  • request_id
    stringoptional
    No description.
    nullable
  • success
    booleanoptional
    No description.
    default false
  • message
    stringoptional
    No description.
    nullabledefault XXXXX
  • isBillable
    booleanoptional
    No description.
  • statusCode
    integer (int32)optional
    No description.
    default 500
Example
{ "data": {}, "messages": [ "string" ], "request_id": "string", "success": false, "message": "XXXXX", "isBillable": false, "statusCode": 500 }
Code samplescurl · Node.js · Python
Stage: uat-ext.signcare.io
curl -X POST 'https://uat-ext.signcare.io/api/v1/pan/to-msme' \ -H 'X-API-KEY: YOUR_API_KEY' \ -H 'X-API-APP-ID: YOUR_APP_ID' \ -H 'Content-Type: application/json' \ -d '{ "consent": "Y", "consent_text": "I hear by declare my consent agreement for fetching my information via SignCare API", "pan": "ABCDE1234F", "is_pdf_required": false }'