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:
-
Company Transaction Information — Retrieve company profile, registered address, financial data (profit/loss, turnover), and audit information using the Corporate Identification Number (CIN).
-
Directors by CIN — Fetch all directors and their association status (Active/Resigned) for a company using its CIN.
-
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.
Retrieve company transaction information (financials, address, status) by CIN.
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-KEYstringrequiredYour secret API key for the environment you are calling (Stage and Live use different keys).
- X-API-APP-IDstringrequiredThe App ID issued together with the key.
- Content-Typestringrequiredapplication/json
Body parameters
application/json- cinstringrequiredRequired. 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_idstringoptionalOptional. Your own unique ID to track this request. A UUID is generated if omitted.nullable
Sample request body
Responses
200OK
- successbooleanoptionalNo description.
- statusCodeinteger (int32)optionalNo description.default 200
- messagestringoptionalNo description.nullabledefault XXXXX
- dataobjectoptionalNo description.
1 field
- dataarray<object>optionalNo description.nullable
Each item: 23 fields
- companyNamestringoptionalNo description.nullable
- incorporationDatestringoptionalNo description.nullable
- companyStatusstringoptionalNo description.nullable
- addressTypestringoptionalNo description.nullable
- addressLine1stringoptionalNo description.nullable
- addressLine2stringoptionalNo description.nullable
- areastringoptionalNo description.nullable
- citystringoptionalNo description.nullable
- districtstringoptionalNo description.nullable
- statestringoptionalNo description.nullable
- countrystringoptionalNo description.nullable
- pincodestringoptionalNo description.nullable
- emailAddressstringoptionalNo description.nullable
- contactNumberstringoptionalNo description.nullable
- financialYearstringoptionalNo description.nullable
- profitLossstringoptionalNo description.nullable
- turnoverstringoptionalNo description.nullable
- financialRangestringoptionalNo description.nullable
- isAuditStatusApplicablestringoptionalNo description.nullable
- auditStatusstringoptionalNo description.nullable
- typestringoptionalNo description.nullable
- cinstringoptionalNo description.nullable
- rocNamestringoptionalNo description.nullable
- messagesarray<string>optionalNo description.nullable
- request_idstringoptionalNo description.nullable
- isBillablebooleanoptionalWhether 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.
400Bad Request
- dataobjectoptionalNo description.
- messagesarray<string>optionalNo description.nullable
- request_idstringoptionalNo description.nullable
- successbooleanoptionalNo description.default false
- messagestringoptionalNo description.nullabledefault XXXXX
- isBillablebooleanoptionalNo description.
- statusCodeinteger (int32)optionalNo description.default 400
401Unauthorized
- dataobjectoptionalNo description.
- messagesarray<string>optionalNo description.nullable
- request_idstringoptionalNo description.nullable
- successbooleanoptionalNo description.default false
- messagestringoptionalNo description.nullabledefault XXXXX
- isBillablebooleanoptionalNo description.
- statusCodeinteger (int32)optionalNo description.default 401
500Internal Server Error
- dataobjectoptionalNo description.
- messagesarray<string>optionalNo description.nullable
- request_idstringoptionalNo description.nullable
- successbooleanoptionalNo description.default false
- messagestringoptionalNo description.nullabledefault XXXXX
- isBillablebooleanoptionalNo description.
- statusCodeinteger (int32)optionalNo description.default 500
Code samplescurl · Node.js · Python
Retrieve director details for a company 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-KEYstringrequiredYour secret API key for the environment you are calling (Stage and Live use different keys).
- X-API-APP-IDstringrequiredThe App ID issued together with the key.
- Content-Typestringrequiredapplication/json
Body parameters
application/json- cinstringrequiredRequired. 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_idstringoptionalOptional. Your own unique ID to track this request. A UUID is generated if omitted.nullable
Sample request body
Responses
200OK
- successbooleanoptionalNo description.
- statusCodeinteger (int32)optionalNo description.default 200
- messagestringoptionalNo description.nullabledefault XXXXX
- dataobjectoptionalNo description.
1 field
- dataarray<object>optionalNo description.nullable
Each item: 12 fields
- companyNamestringoptionalNo description.nullable
- firstNamestringoptionalNo description.nullable
- middleNamestringoptionalNo description.nullable
- lastNamestringoptionalNo description.nullable
- fatherFirstNamestringoptionalNo description.nullable
- fatherMidNamestringoptionalNo description.nullable
- fatherLastNamestringoptionalNo description.nullable
- associationStatusstringoptionalNo description.nullable
- dinstringoptionalNo description.nullable
- dobstringoptionalNo description.nullable
- dinStatusstringoptionalNo description.nullable
- cinstringoptionalNo description.nullable
- messagesarray<string>optionalNo description.nullable
- request_idstringoptionalNo description.nullable
- isBillablebooleanoptionalWhether 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.
400Bad Request
- dataobjectoptionalNo description.
- messagesarray<string>optionalNo description.nullable
- request_idstringoptionalNo description.nullable
- successbooleanoptionalNo description.default false
- messagestringoptionalNo description.nullabledefault XXXXX
- isBillablebooleanoptionalNo description.
- statusCodeinteger (int32)optionalNo description.default 400
401Unauthorized
- dataobjectoptionalNo description.
- messagesarray<string>optionalNo description.nullable
- request_idstringoptionalNo description.nullable
- successbooleanoptionalNo description.default false
- messagestringoptionalNo description.nullabledefault XXXXX
- isBillablebooleanoptionalNo description.
- statusCodeinteger (int32)optionalNo description.default 401
500Internal Server Error
- dataobjectoptionalNo description.
- messagesarray<string>optionalNo description.nullable
- request_idstringoptionalNo description.nullable
- successbooleanoptionalNo description.default false
- messagestringoptionalNo description.nullabledefault XXXXX
- isBillablebooleanoptionalNo description.
- statusCodeinteger (int32)optionalNo description.default 500
Code samplescurl · Node.js · Python
Retrieve director information by DIN (Director Identification Number).
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-KEYstringrequiredYour secret API key for the environment you are calling (Stage and Live use different keys).
- X-API-APP-IDstringrequiredThe App ID issued together with the key.
- Content-Typestringrequiredapplication/json
Body parameters
application/json- dinstringrequiredRequired. 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_idstringoptionalOptional. Your own unique ID to track this request. A UUID is generated if omitted.nullable
Sample request body
Responses
200OK
- successbooleanoptionalNo description.
- statusCodeinteger (int32)optionalNo description.default 200
- messagestringoptionalNo description.nullabledefault XXXXX
- dataobjectoptionalNo description.
1 field
- dataarray<object>optionalNo description.nullable
Each item: 8 fields
- firstNamestringoptionalNo description.nullable
- middleNamestringoptionalNo description.nullable
- lastNamestringoptionalNo description.nullable
- fatherFirstNamestringoptionalNo description.nullable
- fatherMiddleNamestringoptionalNo description.nullable
- fatherLastNamestringoptionalNo description.nullable
- dobstringoptionalNo description.nullable
- dinStatusstringoptionalNo description.nullable
- messagesarray<string>optionalNo description.nullable
- request_idstringoptionalNo description.nullable
- isBillablebooleanoptionalWhether 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.
400Bad Request
- dataobjectoptionalNo description.
- messagesarray<string>optionalNo description.nullable
- request_idstringoptionalNo description.nullable
- successbooleanoptionalNo description.default false
- messagestringoptionalNo description.nullabledefault XXXXX
- isBillablebooleanoptionalNo description.
- statusCodeinteger (int32)optionalNo description.default 400
401Unauthorized
- dataobjectoptionalNo description.
- messagesarray<string>optionalNo description.nullable
- request_idstringoptionalNo description.nullable
- successbooleanoptionalNo description.default false
- messagestringoptionalNo description.nullabledefault XXXXX
- isBillablebooleanoptionalNo description.
- statusCodeinteger (int32)optionalNo description.default 401
500Internal Server Error
- dataobjectoptionalNo description.
- messagesarray<string>optionalNo description.nullable
- request_idstringoptionalNo description.nullable
- successbooleanoptionalNo description.default false
- messagestringoptionalNo description.nullabledefault XXXXX
- isBillablebooleanoptionalNo description.
- statusCodeinteger (int32)optionalNo description.default 500