MCA Company Information

3 endpoints · Core API

What is it?

The MCA Company Information API provides direct access to the Ministry of Corporate Affairs (MCA) database for company and director verification. It covers three distinct lookups:

  1. Company Transaction Information — Retrieve company profile, registered address, financial data (profit/loss, turnover), and audit information using the Corporate Identification Number (CIN).

  2. Directors by CIN — Fetch all directors and their association status (Active/Resigned) for a company using its CIN.

  3. Director by DIN — Retrieve personal details of a director using their 8-digit Director Identification Number (DIN), including name, father's name, DOB, and DIN status.

Benefits

  • Verify company registration, status, and financial standing
  • Identify and authenticate company directors and their current association
  • Confirm DIN status and director identity for due diligence
  • Government-authoritative data directly from the MCA registry

What you can do

Verify companies and their directors for KYC, vendor onboarding, credit underwriting, legal due diligence, regulatory compliance, and fraud prevention workflows.

POST

/api/v1/mca/company-info

#

Retrieve company transaction information (financials, address, status) by CIN.

docs.signcare.io/core/api/company-info/mca-company-information/#post-api-v1-mca-company-info

Fetches company details from the Ministry of Corporate Affairs (MCA) database. Returns company profile, registered address, financial data (profit/loss, turnover), and audit information for the specified CIN.

Request Parameters:

→ cin (required): 21-character Corporate Identification Number (e.g. U01100AP2018PTC107442). The format is not validated by SignCare; an unknown CIN returns an empty list.

→ request_id (optional): Your own unique ID to track this request. A UUID is generated if omitted.

Response: List of company records (may include multiple rows for different financial years / record types). Each record includes companyName, incorporationDate, companyStatus, address, emailAddress, financialRange, profitLoss, turnover, auditStatus, type (Company / Balance Sheet), cin, rocName. Empty list if CIN not found in MCA system.

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
  • cin
    stringrequired
    Required. 21-character Corporate Identification Number (CIN), for example U01100AP2018PTC107442. The format is not checked by SignCare; an unknown CIN returns an empty result.
    nullable
  • request_id
    stringoptional
    Optional. Your own unique ID to track this request. A UUID is generated if omitted.
    nullable
Sample request body
{ "cin": "string", "request_id": "string" }

Responses

200OK
  • success
    booleanoptional
    No description.
  • statusCode
    integer (int32)optional
    No description.
    default 200
  • message
    stringoptional
    No description.
    nullabledefault XXXXX
  • data
    objectoptional
    No description.
    1 field
    • data
      array<object>optional
      No description.
      nullable
      Each item: 23 fields
      • companyName
        stringoptional
        No description.
        nullable
      • incorporationDate
        stringoptional
        No description.
        nullable
      • companyStatus
        stringoptional
        No description.
        nullable
      • addressType
        stringoptional
        No description.
        nullable
      • addressLine1
        stringoptional
        No description.
        nullable
      • addressLine2
        stringoptional
        No description.
        nullable
      • area
        stringoptional
        No description.
        nullable
      • city
        stringoptional
        No description.
        nullable
      • district
        stringoptional
        No description.
        nullable
      • state
        stringoptional
        No description.
        nullable
      • country
        stringoptional
        No description.
        nullable
      • pincode
        stringoptional
        No description.
        nullable
      • emailAddress
        stringoptional
        No description.
        nullable
      • contactNumber
        stringoptional
        No description.
        nullable
      • financialYear
        stringoptional
        No description.
        nullable
      • profitLoss
        stringoptional
        No description.
        nullable
      • turnover
        stringoptional
        No description.
        nullable
      • financialRange
        stringoptional
        No description.
        nullable
      • isAuditStatusApplicable
        stringoptional
        No description.
        nullable
      • auditStatus
        stringoptional
        No description.
        nullable
      • type
        stringoptional
        No description.
        nullable
      • cin
        stringoptional
        No description.
        nullable
      • rocName
        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": { "data": [ { "companyName": "string", "incorporationDate": "string", "companyStatus": "string", "addressType": "string", "addressLine1": "string", "addressLine2": "string", "area": "string", "city": "string", "district": "string", "state": "string", "country": "string", "pincode": "string", "emailAddress": "string", "contactNumber": "string", "financialYear": "string", "profitLoss": "string", "turnover": "string", "financialRange": "string", "isAuditStatusApplicable": "string", "auditStatus": "string", "type": "string", "cin": "string", "rocName": "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/mca/company-info' \ -H 'X-API-KEY: YOUR_API_KEY' \ -H 'X-API-APP-ID: YOUR_APP_ID' \ -H 'Content-Type: application/json' \ -d '{ "cin": "string", "request_id": "string" }'
POST

/api/v1/mca/directors-by-cin

#

Retrieve director details for a company by CIN.

docs.signcare.io/core/api/company-info/mca-company-information/#post-api-v1-mca-directors-by-cin

Fetches all directors associated with a company from the Ministry of Corporate Affairs (MCA) database.

Request Parameters:

→ cin (required): 21-character Corporate Identification Number (e.g. U01100AP2018PTC107442). The format is not validated by SignCare; an unknown CIN returns an empty list.

→ request_id (optional): Your own unique ID to track this request. A UUID is generated if omitted.

Response: List of director records. Each record includes: companyName, firstName, middleName, lastName, fatherFirstName, fatherMidName, fatherLastName, associationStatus (Active/Resigned), din, dob, dinStatus (Approved/Deactivated), cin. Empty list if CIN not found.

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
  • cin
    stringrequired
    Required. 21-character Corporate Identification Number (CIN), for example U01100AP2018PTC107442. The format is not checked by SignCare; an unknown CIN returns an empty result.
    nullable
  • request_id
    stringoptional
    Optional. Your own unique ID to track this request. A UUID is generated if omitted.
    nullable
Sample request body
{ "cin": "string", "request_id": "string" }

Responses

200OK
  • success
    booleanoptional
    No description.
  • statusCode
    integer (int32)optional
    No description.
    default 200
  • message
    stringoptional
    No description.
    nullabledefault XXXXX
  • data
    objectoptional
    No description.
    1 field
    • data
      array<object>optional
      No description.
      nullable
      Each item: 12 fields
      • companyName
        stringoptional
        No description.
        nullable
      • firstName
        stringoptional
        No description.
        nullable
      • middleName
        stringoptional
        No description.
        nullable
      • lastName
        stringoptional
        No description.
        nullable
      • fatherFirstName
        stringoptional
        No description.
        nullable
      • fatherMidName
        stringoptional
        No description.
        nullable
      • fatherLastName
        stringoptional
        No description.
        nullable
      • associationStatus
        stringoptional
        No description.
        nullable
      • din
        stringoptional
        No description.
        nullable
      • dob
        stringoptional
        No description.
        nullable
      • dinStatus
        stringoptional
        No description.
        nullable
      • cin
        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": { "data": [ { "companyName": "string", "firstName": "string", "middleName": "string", "lastName": "string", "fatherFirstName": "string", "fatherMidName": "string", "fatherLastName": "string", "associationStatus": "string", "din": "string", "dob": "string", "dinStatus": "string", "cin": "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/mca/directors-by-cin' \ -H 'X-API-KEY: YOUR_API_KEY' \ -H 'X-API-APP-ID: YOUR_APP_ID' \ -H 'Content-Type: application/json' \ -d '{ "cin": "string", "request_id": "string" }'
POST

/api/v1/mca/director-by-din

#

Retrieve director information by DIN (Director Identification Number).

docs.signcare.io/core/api/company-info/mca-company-information/#post-api-v1-mca-director-by-din

Fetches personal details of a director from the Ministry of Corporate Affairs (MCA) database using their DIN.

Request Parameters:

→ din (required): 8-digit Director Identification Number (e.g. 09597232). The format is not validated by SignCare; an unknown DIN returns an empty list.

→ request_id (optional): Your own unique ID to track this request. A UUID is generated if omitted.

Response: List of director records. Each record includes: firstName, middleName, lastName, fatherFirstName, fatherMiddleName, fatherLastName, dob (DD/MM/YYYY), dinStatus (Approved/Deactivated). Empty list if DIN not found.

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
  • din
    stringrequired
    Required. 8-digit Director Identification Number (DIN), for example 09597232. The format is not checked by SignCare; an unknown DIN returns an empty result.
    nullable
  • request_id
    stringoptional
    Optional. Your own unique ID to track this request. A UUID is generated if omitted.
    nullable
Sample request body
{ "din": "string", "request_id": "string" }

Responses

200OK
  • success
    booleanoptional
    No description.
  • statusCode
    integer (int32)optional
    No description.
    default 200
  • message
    stringoptional
    No description.
    nullabledefault XXXXX
  • data
    objectoptional
    No description.
    1 field
    • data
      array<object>optional
      No description.
      nullable
      Each item: 8 fields
      • firstName
        stringoptional
        No description.
        nullable
      • middleName
        stringoptional
        No description.
        nullable
      • lastName
        stringoptional
        No description.
        nullable
      • fatherFirstName
        stringoptional
        No description.
        nullable
      • fatherMiddleName
        stringoptional
        No description.
        nullable
      • fatherLastName
        stringoptional
        No description.
        nullable
      • dob
        stringoptional
        No description.
        nullable
      • dinStatus
        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": { "data": [ { "firstName": "string", "middleName": "string", "lastName": "string", "fatherFirstName": "string", "fatherMiddleName": "string", "fatherLastName": "string", "dob": "string", "dinStatus": "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/mca/director-by-din' \ -H 'X-API-KEY: YOUR_API_KEY' \ -H 'X-API-APP-ID: YOUR_APP_ID' \ -H 'Content-Type: application/json' \ -d '{ "din": "string", "request_id": "string" }'