A lawyer or compliance officer asked "who exactly are we signing with?" needs an answer that survives scrutiny, not a screenshot in an email thread. The answer has to say what was checked, against what source, when, by whom, and what the result was. That is a record-keeping problem as much as a verification problem, and it is the reason legal and compliance teams use verification APIs differently from product teams. A product team wants a fast yes or no inside a user journey. A legal team wants a defensible entry in a matter file.
This page is for law firms, in-house legal departments, company secretarial practices and compliance teams in India. It maps StampMitra's verification and e-Stamp endpoints to the stages of a legal matter, shows how to build an evidence pack that can be reproduced later, and sets out where an API result helps and where it does not. StampMitra is a private LegalTech platform operated by Bani Global Industries LLP. It is not a law firm, a regulator or a government agency, and nothing here is legal advice. Your professional obligations, your engagement terms and the law that applies to your work decide how you use any tool.
Key takeaways
- A legal workflow cares about the record. For each check, keep what you asked, what the source returned, the time, the transaction id, who reviewed it and what you decided.
- Verification helps with "who is the counterparty and is it in good standing". It does not tell you whether a signatory has authority, whether a contract is enforceable, or whether a person is sanctioned or politically exposed.
- For companies, the CIN response lists directors with DIN, name and designation. Comparing the signatory with that list is a useful first test of authority, and a document such as a board resolution or authority letter remains the proper evidence.
- Treat e-stamping as part of the execution step. Duty comes from the calculation endpoint, orders carry your matter reference, and the issued certificate belongs in the matter file as a stored copy.
- Design for confidentiality. Use the minimum identifiers, keep them out of general logs, and decide with your client what they are told about the tools you use.
- Build evidence integrity into the pack: timestamps, hashes of stored files, reviewer sign-off and a clear rule for what a later reader may rely on.
valid: falseandfound: falseare completed, billable answers. Do not loop them. Retry only 429 and 502.- A typical matter's checks cost a few rupees at the published rates; the arithmetic for three volumes is below.
Where verification fits in a legal matter
Legal work follows a lifecycle, and verification belongs at specific points in it. The table maps the stages to checks and shows who normally owns each.
| Stage | Question | Check | Typical owner |
|---|---|---|---|
| Intake | Who is the client and who is the other side? | PAN with name for individuals, PAN and registry checks for entities | Paralegal or intake associate |
| Counterparty review | Is the counterparty real and active? | verify/gstin, verify/cin, verify/udyam, pan-to-gstin | Associate |
| Authority review | Can the signatory bind the entity? | CIN directors list, then documents | Associate, partner sign-off |
| Drafting | Are names, addresses and identifiers correct in the draft? | Verified values feed the draft | Associate |
| Execution | Is the instrument stamped as required? | Duty calculation and e-Stamp order | Paralegal or operations |
| Payment flows | Is a payee account genuine? | verify/bank-account | Operations, finance |
| Closing | What goes into the file? | Evidence pack | Associate |
| Retention | How long and where? | Your retention schedule | Records or compliance |
The earlier a check happens, the cheaper a mistake is. A wrong legal name found at intake costs a correction. The same error found after execution can cost a re-stamped, re-signed instrument.
What a verification result can and cannot support
An honest list prevents misuse. A verification result can support statements such as: "On this date, the PAN supplied returned a valid record whose name matched the counterparty's declared legal name with the following score." Or: "On this date, the GSTIN supplied was active and its legal name was X." Or: "On this date, the company's registry status was active and its directors included the person who signed."
It cannot support statements such as: "The signatory was authorised." That requires a document and a legal judgement. Or: "The counterparty is solvent." Nothing here measures solvency. Or: "The counterparty is not sanctioned or politically exposed." These endpoints do not screen against sanctions or exposure lists. Or: "The person in front of us is the person on the document." The endpoints do not perform face matching or live identification, and they do not offer Aadhaar-based verification. Write your evidence-pack template so that it states what was checked and nothing more.
The matter file and the evidence pack
Define the evidence pack once, as a template, and make every matter use it. A good pack has seven parts.
- Matter header. Matter reference, client, counterparty, date opened, responsible lawyer, reviewer.
- Declaration. What the client or counterparty told you: names, identifiers, entity type, address, signatory.
- Checks run. For each check: the endpoint, the time (UTC), the transaction id (
referenceId), the environment of the key, and the identifiers you sent in masked form. - Results. The response fields you relied on, copied as received, and a stored copy of the raw response in an access-controlled store.
- Findings. What agreed, what did not, and the rule or reasoning you applied to each difference.
- Decision and sign-off. Who decided, on what basis, when, and who reviewed.
- Attachments. Authority documents, resolutions, correspondence that resolved a finding, and the stored e-Stamp certificate where relevant.
The test of a good pack is whether a lawyer who was not involved can read it a year later and see what was done and why. Keep the template short enough that people complete it.
The workflow, step by step
- Open the matter and capture the declaration. Record names exactly as given, identifiers, entity type, registered address and signatory. Decision: no declaration, no checks.
- Run local format checks. Patterns for PAN, GSTIN, CIN and Udyam; for a GSTIN, that the PAN inside it equals the PAN declared. Decision: correct the declaration or continue.
- Verify the individual or entity PAN.
POST /v1/verify/panwithpanand the declared legal name. Readvalid,type,registeredName,nameMatchScore. Decision: invalid stops; a type that contradicts the declared entity type goes to review. - Verify the registration.
POST /v1/verify/gstinfor a GST-registered counterparty,POST /v1/verify/cinfor a company,POST /v1/verify/udyamif an MSME claim matters to the contract. Read the status fields. Decision: inactive stops the matter until resolved or documented. - Check the signatory. For a company, compare the signatory's name with the
directorslist from the CIN response, and verify the signatory's own PAN with their name. Decision: a signatory who is not a listed director needs an authority document before execution. - Review and sign off. A second person reviews findings above a severity you set. Decision: proceed, request documents or decline.
- Execute and stamp. Calculate duty, create the order with the matter reference, attach parties, pay, and fetch the certificate. Decision: stamp only when the text is final.
- Store and close. Save the evidence pack and the certificate bytes, and set the retention class.
Sample request and response: checking a signatory's PAN
The signatory check is the one most often skipped and most often regretted. The request carries the PAN and the name as it appears on the draft:
curl -X POST "https://api-b2b.stampmitra.in/v1/verify/pan" \
-H "Authorization: Bearer $STAMPMITRA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"pan":"ABCDE1234F","name":"Rahul Kumar"}'{
"referenceId": "SMV-20260927-8F42K7",
"pan": "ABCDE1234F",
"type": "Individual",
"valid": true,
"registeredName": "RAHUL KUMAR",
"fatherName": "SURESH KUMAR",
"panStatus": "VALID",
"panStatusCode": "E",
"panStatusDescription": "Existing and valid PAN",
"nameMatchResult": "MATCH",
"nameMatchScore": "100",
"aadhaarSeedingStatus": "y",
"aadhaarSeedingStatusDescription": "Aadhaar linked",
"lastUpdatedAt": "2023-04-01",
"message": "PAN is Valid"
}| Field | Meaning | What the legal team does with it |
|---|---|---|
referenceId | StampMitra's transaction id | Put it in the evidence pack against this check |
valid and panStatus | Whether the PAN exists and its status | false or a status other than valid stops the matter until resolved |
type | Holder type, such as individual | Must agree with the declared kind of party |
registeredName | Name on the PAN record | Compare with the name that will appear in the instrument |
nameMatchScore, nameMatchResult | Comparison of the supplied name with the record | Apply the matter's threshold; a middling score needs a documented reason, such as an alias or a changed name |
lastUpdatedAt | Date of the last record update | Note it; do not treat it as the verification date |
fatherName | Relationship name on the record | Personal data not needed in most matters; keep out of general views |
| Other fields, including the seeding fields | Present in the response | Not relied on for any purpose in this workflow; leave them out of the evidence pack unless your policy requires them |
The response includes fields that this workflow does not use. Store what you need for the decision and nothing else, because every extra personal field in a matter file is a field you must protect and later delete.
The Python function below builds an evidence-pack entry from a response, with masking and a hash of the raw response so that later tampering is detectable.
import hashlib
import json
from datetime import datetime, timezone
def mask(value: str, keep: int = 2) -> str:
return value[:keep] + "*" * max(0, len(value) - keep - 1) + value[-1:]
def evidence_entry(matter_ref: str, endpoint: str, sent: dict, response: dict, decided_by: str, decision: str) -> dict:
raw = json.dumps(response, sort_keys=True, separators=(",", ":"))
return {
"matter": matter_ref,
"endpoint": endpoint,
"checkedAtUtc": datetime.now(timezone.utc).isoformat(),
"referenceId": response.get("referenceId"),
"sent": {k: (mask(str(v)) if k in ("pan", "gstin", "cin", "accountNumber") else v) for k, v in sent.items()},
"relied_on": {k: response.get(k) for k in ("valid", "type", "registeredName", "nameMatchScore", "panStatus")},
"rawResponseSha256": hashlib.sha256(raw.encode()).hexdigest(),
"decision": decision,
"decidedBy": decided_by,
}The stamping step
Many instruments need to be stamped, and some of the most common legal documents are the ones that pass through your practice every day: rental and leave-and-licence agreements, affidavits, indemnity bonds, sale agreements and similar. The e-Stamp endpoints let you do this inside your matter workflow. List the services you are entitled to, resolve the state and article through the lookups, calculate duty with POST /v1/estamp/duty/calculate, create an order with POST /v1/orders using your matter reference as the externalOrderId, attach parties, pay through a payment intent, and fetch the certificate once the order completes.
Three points suit a legal practice. First, the duty and the article are matters of law that vary by state and change; the API calculates, and a lawyer decides the article. Second, stamp when the text is final and the parties are verified, since a stamped instrument cannot be quietly edited. Third, treat the certificate as part of the matter file: download it, store the bytes, record the document id and a checksum, and never rely on a temporary link. The e-stamp order flow guide walks through each endpoint, and the rental agreement e-stamping page covers the operating model for high volumes. Registration, where a state or the nature of the instrument requires it, is a separate legal step this API does not perform.
Decision table: valid, mismatch, inactive, not found
| Outcome | Individual PAN | Entity registration (GSTIN or CIN) | Bank account for payments | Evidence-pack note |
|---|---|---|---|---|
| Valid and consistent | Record; proceed | Record status and names; proceed | Allow payments to the account | Entry with referenceId and masked inputs |
| Valid, name mismatch | Review; ask for the document that explains an alias or a changed name | Review; legal, trade and draft names often differ | Hold; ask for proof the account is the party's | Record the reason and who accepted it |
| Inactive, cancelled or struck off | Stop; the PAN status explains why | Stop; do not execute with an entity that is not active without a documented decision from the responsible lawyer | Do not pay; ask for another account | Record the status and the decision |
Not found or valid: false | One correction, then stop | One correction, then request documents | One correction, then hold | Record both attempts |
| Call failed | Pending; retry | Pending; retry | Pending | Note the outage and the retry |
Confidentiality, privilege and minimisation
Legal work is confidential, and sending identifiers to a third-party service raises questions your profession already has rules about. Settle them before you deploy.
Decide with your client, in the engagement terms or in a notice, that you use verification tools and what data goes to them. Send the minimum: a PAN and a name, not a whole file. Do not include privileged content in any request, and none of these endpoints needs it. Keep verification data out of general-purpose logs and chat channels, and confine access to the people working on the matter. Understand the data-processing position of the provider: StampMitra publishes a data processing addendum and a retention and deletion schedule that your counsel should read before you rely on the service for client matters.
Where your professional rules or your client's contract impose stricter confidentiality duties, those win over convenience. If a client forbids third-party processing of a particular category of data, honour that and do the check manually.
Due diligence at volume
Some matters involve checking many counterparties at once: an acquisition with hundreds of customer contracts, a vendor consolidation, a portfolio review. The approach is the same as for a single matter, with batch mechanics added.
Build a register of counterparties with their identifiers, deduplicate by PAN, and group by entity type. Run the free local checks first. Run the paid checks in a batch within your plan's rate limit (the documented error example is 60 requests per 60 seconds; read your own limit from the dashboard and the pricing page), save each result keyed by counterparty and check so that a restart skips completed work, and stop on a 402 wallet error. Produce a summary by finding code, with counts, and a list of counterparties needing review. Keep the raw responses in the evidence store, and keep the summary in the matter file. Remember that the results are a snapshot at the time of the checks; if the transaction closes weeks later, decide whether to refresh the critical ones before closing.
A worked matter, from intake to closing
Take a hypothetical services agreement between your client, a mid-sized company, and a supplier that is a private limited company. The matter opens on Monday with the supplier's name, PAN, GSTIN and CIN, and the name of the manager who will sign for it.
On intake the paralegal records the declaration and runs the local checks. The PAN inside the GSTIN equals the declared PAN, and the CIN has the expected shape. Three paid checks follow: the PAN with the supplier's legal name, the GSTIN, and the CIN. The PAN returns a valid record of company type with a strong name score. The GSTIN is active and its legal name agrees. The CIN shows an active company whose directors include two people. The signing manager is not one of them.
The finding is straightforward: the signatory is not a listed director. The associate does not treat it as a problem with the supplier; she treats it as a missing document. The supplier is asked for the board resolution or authority letter that empowers the manager for this agreement. It arrives on Wednesday. The associate reads it, notes the scope and any limit on value, files it in the pack and records that authority was established by document.
The partner reviews the pack on Thursday. The review takes minutes, because the pack shows what was checked, when, with which transaction ids, and what each finding led to. On Friday the draft is finalised using the verified legal name, the instrument is stamped through the e-Stamp flow with the matter reference as the order reference, and the certificate is downloaded and stored with its checksum. The pack closes with the retention class set.
Six months later the client asks whether the supplier was in good standing when the contract was signed. The associate opens the pack and answers from it. The answer is precise because the record is: on that date, the registry status was active and the directors were those listed. The associate does not say more than the record shows, and does not claim the supplier remained in good standing afterwards, which the pack cannot show.
What else compliance needs beyond identity checks
Compliance officers are often asked to attest to checks that this kind of API does not cover, and it helps to be clear about the gaps so that nobody assumes coverage that is not there.
Sanctions and watch-list screening, adverse-media checks and politically exposed person screening need dedicated sources and processes. The verification endpoints here return registry facts about identifiers. Beneficial ownership analysis needs documents and judgement. Source-of-funds and source-of-wealth reviews are inquiries into a person's affairs, not registry lookups. Transaction monitoring is an ongoing analysis of behaviour. Regulatory reporting duties, for entities that have them, come from the relevant regulator's rules.
None of that makes identity and registry checks less useful. It means they are one layer in a set of controls, and your policy should say which layer covers which risk. A simple table in your compliance manual, listing each risk, the control that addresses it and the owner, will show where verification sits and where something else must stand in.
If you are a regulated entity, remember that your regulator, not a vendor, decides what is sufficient for your customer due diligence. Treat an API result as evidence that your policy may use, and have your compliance officer record how it is used.
Five scenarios from a legal-operations desk
These are hypothetical cases.
The struck-off counterparty
An associate checks a company before a services agreement. The CIN response shows the company status as not active. The matter pauses, the associate reports to the partner, and the client is told that the counterparty is not in good standing on the registry. Nothing is signed.
The signatory who is not a director
A manager signs on behalf of a private company. The directors list does not include their name. The associate asks for the authority letter, attaches it to the pack, and records that authority was established by document, not by registry.
The changed name
A party's PAN shows a name different from the draft because of a change after marriage. The name score is middling. The associate collects the document, records the reason in the pack and corrects the draft to use the verified name with the former name noted as an alias.
The duplicate matter
Two associates open matters for the same counterparty in one week. Deduplication by a keyed hash of the PAN flags it, the second associate reuses the first matter's evidence within the freshness window set by policy, and a note records the reuse.
The outage on closing day
The registry call returns 502 on the morning of execution. The matter stays pending, the paralegal retries with backoff, and the partner decides whether to proceed on the earlier check, with a recorded note, or to wait. The decision is the partner's and is written down.
Review rules a legal team can copy
These are suggestions for your practice to adapt.
- No execution without a recorded counterparty check for matters above a value or risk level you set.
- Signatory authority by document. The directors list is a prompt, never the authority itself.
- Second-person review for any finding above a severity, and for any decision to proceed despite an inactive status.
- Partner sign-off for exceptions to the pack, and for matters involving entities with a history of status problems.
- Evidence pack is mandatory. No matter closes without the template completed.
- Fresh enough. A check older than your freshness window is repeated before execution.
- No privileged content in requests. Identifiers only.
- No reliance beyond the check. Do not describe a result as showing more than it does.
Operating model
Give each role a clear part. Paralegals and intake staff run the standard checks and complete the pack. Associates review findings, judge authority and prepare drafts. Partners or responsible lawyers sign off exceptions and decide when to proceed. Operations staff handle stamping and payments. Compliance or records staff own retention and the audit of the packs. Engineering, if you have it, owns the keys, the wallet alerts and the platform queue.
Run a weekly review of findings by code and of exceptions, to improve the template and the rules. Run a sample audit of closed matters each quarter, checking that packs are complete and that referenced transaction ids resolve to the stored results.
What to store and for how long
Keep the evidence pack, the raw responses in an access-controlled store, the hashes, the authority documents and the stamped certificate. Keep personal identifiers masked in anything that circulates, and keep unmasked values only in the store that needs them. Delete according to the retention class.
Retention for legal records depends on your professional record-keeping obligations, your engagement terms, limitation periods, tax rules, the client's requirements and data-protection law. We cannot give you the periods. Take the question to your counsel or the responsible partner, write the answer into a schedule, and automate it. StampMitra's own handling is in its retention and deletion schedule. You can also use GET /v1/logs to review your account's request logs and GET /v1/usage/summary for usage totals; log retention depends on your plan and is described on the pricing page.
What it costs: three matter volumes
Pay-as-you-go prices are ₹5 per call for PAN, GSTIN, CIN, Udyam and the cross-lookups, and ₹5 per order as the e-Stamp API fee. Growth and Scale lower these rates and add a monthly plan fee. All figures exclude GST at 18 percent. The e-Stamp figures exclude the statutory stamp duty and the state procurement fee, which are the same on every plan and are quoted before an order, and duty-calculation calls are metered against your wallet, so confirm their pricing with support before you model quote volume; the tables do not include them.
The cost of one matter's counterparty checks (two PAN checks and one registry check), and the same with one e-Stamp order:
| Plan | Cost of one matter's checks before GST |
|---|---|
| Pay as you go | ₹15 |
| Growth | ₹12 |
| Scale | ₹10.50 |
| Plan | Cost of one matter with checks and one e-Stamp order before GST |
|---|---|
| Pay as you go | ₹20 |
| Growth | ₹16 |
| Scale | ₹13.50 |
For the monthly models, assume every matter gets three standard checks and 60 percent of matters need an e-Stamp order. At 100 matters a month: 300 standard calls and 60 orders.
| Plan | Usage charges | Plan fee | Subtotal | GST at 18% | Total for the month |
|---|---|---|---|---|---|
| Pay as you go | ₹1,800 | ₹0 | ₹1,800 | ₹324 | ₹2,124 |
| Growth | ₹1,440 | ₹999 | ₹2,439 | ₹439.02 | ₹2,878.02 |
| Scale | ₹1,230 | ₹4,999 | ₹6,229 | ₹1,121.22 | ₹7,350.22 |
At 1,000 matters a month: 3,000 standard calls and 600 orders.
| Plan | Usage charges | Plan fee | Subtotal | GST at 18% | Total for the month |
|---|---|---|---|---|---|
| Pay as you go | ₹18,000 | ₹0 | ₹18,000 | ₹3,240 | ₹21,240 |
| Growth | ₹14,400 | ₹999 | ₹15,399 | ₹2,771.82 | ₹18,170.82 |
| Scale | ₹12,300 | ₹4,999 | ₹17,299 | ₹3,113.82 | ₹20,412.82 |
At 10,000 matters a month, as a very large legal-services operation might see: 30,000 standard calls and 6,000 orders.
| Plan | Usage charges | Plan fee | Subtotal | GST at 18% | Total for the month |
|---|---|---|---|---|---|
| Pay as you go | ₹1,80,000 | ₹0 | ₹1,80,000 | ₹32,400 | ₹2,12,400 |
| Growth | ₹1,44,000 | ₹999 | ₹1,44,999 | ₹26,099.82 | ₹1,71,098.82 |
| Scale | ₹1,23,000 | ₹4,999 | ₹1,27,999 | ₹23,039.82 | ₹1,51,038.82 |
Reading the tables: at 100 matters a month pay as you go is cheapest because the plan fees outweigh the lower rates; at 1,000 Growth is cheapest; at 10,000 Scale is, and the spend is above the level at which StampMitra suggests an enterprise arrangement, which you can raise on the contact page. The tables assume GST applies to the plan fee as well; confirm on an invoice. Usage is recorded after a successful response, so calls that fail with an error are not charged, although valid: false is a successful, charged answer. Compare the figures with the cost of one re-stamped or re-signed instrument, and with associate time spent on manual checks, using your own numbers; we do not quote an industry figure.
Rollout: sandbox, pilot, production
Sandbox. Build the pack template, the finding rules and the stamping step on sandbox keys, where responses are sample data and the wallet is not debited. The sandbox responder returns a valid result for the PAN SNDBX0000A and an invalid one for SNDBX9999F; for GSTIN 09SNDBX0000A1Z5 is valid and active and 09SNDBX9999F1Z5 is not valid and cancelled. Other inputs give stable but arbitrary outcomes, so do not assert on them. Confirm the current test values in the dashboard. Test every row of the decision table, the evidence-entry builder, the batch restart and the 402, 429 and 502 paths.
Pilot. Request production access, which needs your organisation's KYC approval and the per-product application. Run one practice group's new matters through the workflow while the old process continues in parallel for a few weeks. Compare the packs, and let partners review a sample.
Production. Widen by practice group. Run the quarterly pack audit from the first quarter. Alert on wallet balance, and keep the sandbox versus production keys guide for scopes and the IP allowlist.
Metrics worth watching
- Share of matters with a complete evidence pack at closing, which should be all of them.
- Findings by code, and the share that led to a document request.
- Time from matter opening to cleared counterparty review.
- Exceptions: matters executed despite an unresolved finding, with the sign-off recorded. This should be rare and fully documented.
- Packs that failed the quarterly audit, and why.
- Refresh rate: matters where a check was repeated because it had aged.
- Calls per matter, which exposes duplicates and retry loops.
- Stamped instruments with a stored certificate, against the number of orders placed.
Mistakes that weaken a legal verification process
- Treating a registry result as proof of authority. It is a first filter.
- Keeping screenshots instead of records. Capture transaction ids and stored responses.
- Copying whole responses into matter files. Keep only the fields you rely on.
- Skipping the freshness rule. A check from months ago is not today's position.
- Sending more than identifiers. Never include privileged content.
- Stamping before the text is final. Duty is paid up front.
- Saving a temporary download link as the record. Save the bytes.
- Describing results as showing more than they do. State what was checked and nothing more.
- No audit of the packs. A template nobody checks decays.
API reference at a glance
PAN
POST /v1/verify/panRequest parameters
| Field | Type | Description |
|---|---|---|
Authorizationrequired | header | Bearer <api-key> (e.g. sk_test_... in sandbox, sk_live_... in production). The x-api-key header is also accepted. |
panrequired | string | PAN, format ABCDE1234F. |
name | string | Name to match against records (max 256 chars). |
POST /v1/verify/pan{
"referenceId": "SMV-20260927-8F42K7",
"pan": "ABCDE1234F",
"type": "Individual",
"valid": true,
"registeredName": "RAHUL KUMAR",
"fatherName": "SURESH KUMAR",
"panStatus": "VALID",
"panStatusCode": "E",
"panStatusDescription": "Existing and valid PAN",
"nameMatchResult": "MATCH",
"nameMatchScore": "100",
"aadhaarSeedingStatus": "y",
"aadhaarSeedingStatusDescription": "Aadhaar linked",
"lastUpdatedAt": "2023-04-01",
"message": "PAN is Valid"
}POST /v1/verify/panPAN: ₹5 per successful call, pay-as-you-go (lower on Growth and Scale).
Company CIN
POST /v1/verify/cinRequest parameters
| Field | Type | Description |
|---|---|---|
Authorizationrequired | header | Bearer <api-key> (e.g. sk_test_... in sandbox, sk_live_... in production). The x-api-key header is also accepted. |
cinrequired | string | Corporate Identification Number (21 characters) or LLPIN, for example U74999DL2015PTC284009. |
POST /v1/verify/cin{
"referenceId": "SMV-20260927-6R38Y3",
"verificationId": "VRF-6C2N9V4HQ7ZE",
"valid": true,
"status": "VALID",
"cin": "U72900KA2015PTC082988",
"companyName": "COMPANY NAME",
"registrationNumber": 82987,
"incorporationDate": "2015-09-23",
"cinStatus": "ACTIVE",
"email": "[email protected]",
"incorporationCountry": "INDIA",
"directorDetails": [
{
"din": "07168822",
"name": "Frank Kelvin",
"dob": "1997-07-21",
"designation": "DIRECTOR",
"address": "ST BED KORAMANGALA, BANGALORE, KARNATAKA, INDIA, 566634"
},
{
"din": "07168826",
"name": "John Doe",
"dob": "1997-02-07",
"designation": "DIRECTOR",
"address": "GAUTAM NAGAR, NOIDA, UTTAR PRADESH, INDIA, 211361"
}
],
"companyStatus": "ACTIVE",
"directors": [
{
"din": "07168822",
"name": "Frank Kelvin",
"designation": "DIRECTOR"
},
{
"din": "07168826",
"name": "John Doe",
"designation": "DIRECTOR"
}
]
}POST /v1/verify/cinCompany CIN: ₹5 per successful call, pay-as-you-go (lower on Growth and Scale).
e-Stamp Order Creation
POST /v1/ordersRequest parameters
| Field | Type | Description |
|---|---|---|
Authorizationrequired | header | Bearer <api-key> (e.g. sk_test_... in sandbox, sk_live_... in production). The x-api-key header is also accepted. |
Idempotency-Key | header | Optional idempotency key (1 to 255 characters), kept for 24 hours. The same key and the same request replays the stored response; the same key with a different request is 422 IDEMPOTENCY_KEY_REUSED; the same key while the first request is still running is 409 IDEMPOTENCY_IN_PROGRESS (see Retry-After). |
externalOrderIdrequired | string | Your own reference for this order. |
externalCustomerIdrequired | string | Your own reference for the customer. |
serviceCoderequired | string | The entitled service to order (e.g. an estamp.* code). |
details | object | Free-form service-specific payload (e-Stamp field shape is not finalized). |
POST /v1/orders{
"externalOrderId": "ord_ext_123",
"createdAt": "2026-10-15T09:41:07.000Z",
"serviceCode": "estamp.instrument.rent_agreement"
}POST /v1/orderse-Stamp Order Creation: ₹5 API fee per successful call, pay-as-you-go (lower on Growth and Scale).
Frequently asked questions
What can a verification result support in a legal matter?
It supports narrow factual statements: on a given date a PAN was valid and matched a declared name with a given score, a GSTIN was active, or a company's registry status was active and listed certain directors. It does not establish authority, solvency, sanctions status or identity of the person present.
Does a match with the CIN directors list prove a signatory's authority?
No. It is a first filter showing that the person is listed as a director in the registry. Authority comes from the articles, a board resolution, a power of attorney or a delegation, possibly limited by amount or type of transaction, so obtain and file the document.
What should an evidence pack contain?
A matter header, the declaration, the checks run with endpoint, UTC time, transaction id and masked inputs, the response fields relied on with a stored raw copy, the findings and reasoning, the decision and sign-off, and attachments such as authority documents and the stored e-Stamp certificate.
How do we keep client confidentiality when using a verification API?
Agree the use of tools with the client, send only identifiers such as a PAN and a name, never privileged content, keep verification data out of general logs and chat, restrict access to the matter team, and have counsel read the provider's data processing terms and retention schedule.
When should an instrument be stamped?
When the text is final and the parties are verified, because duty is paid up front and a stamped instrument cannot be quietly edited. The duty comes from the calculation endpoint, a lawyer chooses the article, and the issued certificate is downloaded and stored in the matter file.
Do these endpoints screen for sanctions or politically exposed persons?
No. They confirm what registries say about a PAN, GSTIN, CIN, Udyam registration or bank account. Sanctions, adverse media and politically exposed person screening need other controls, and they do not offer Aadhaar-based verification or live identification.
How do we run due diligence on hundreds of counterparties?
Build a counterparty register, deduplicate by PAN, run free local checks first, run paid checks in a batch within the rate limit with results saved per counterparty and check, stop on a 402 wallet error, and summarise findings by code with a review list.
How old can a check be before execution?
Set a freshness window in policy, based on the risk of the matter and how quickly statuses change, and repeat the critical checks when a matter closes later than the window. Each result is a snapshot at the time of the call, not a standing guarantee.
What does verification cost per matter?
Three standard checks, two PAN checks and one registry check, cost three standard calls at your plan's rate, and an e-Stamp order adds the per-order API fee, before stamp duty and the state procurement fee. The page shows the arithmetic per plan before 18 percent GST.
How long should evidence packs be kept?
That depends on professional record-keeping obligations, engagement terms, limitation periods, tax rules, the client's requirements and data-protection law. Ask your counsel or responsible partner for the periods, write them into a retention schedule and automate deletion or archival.
Sources
- StampMitra verification and e-Stamp API reference, pricing page and sandbox documentation on developer.stampmitra.in (read 2026-10-29).
- PAN, GSTIN and CIN structure and the meaning of the directors list are described from general knowledge and the API reference, and were not re-checked against official portals for this page in 2026; confirm before building strict rules on them.
- Professional and ethical obligations on confidentiality, record-keeping and use of third-party tools depend on your professional body and engagement terms: general topic only, not independently verified for this page; confirm with your regulator or counsel.
- The Digital Personal Data Protection Act, 2023, India Code: https://www.indiacode.nic.in/handle/123456789/22037?view_type=browse (located 2026-10-16 in this site's KYC guide; confirm the current status of the rules against the official text).
- StampMitra Developer Data Retention and Deletion Schedule and Data Processing Addendum.