GSTIN Verification
Business & KYBConfirm GST registration, legal name, emver type and filing compliance.
Verify a GSTIN against the GST network and receive the registration status, legal and trade names, emver constitution and registration date, plus a view of return-filing compliance. Everything a vendor or merchant onboarding desk needs in one call.
Endpoint
Request parameters
| Field | Type | Description |
|---|---|---|
g_s_t_i_n
required
|
string | GSTIN |
company_name
optional
|
string | Company name |
Example request
curl -X POST https://app.emver.io/api/sandbox/v1/gstin-verification \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{
"g_s_t_i_n": "string",
"company_name": "string"
}'
import requests
response = requests.post(
"https://app.emver.io/api/sandbox/v1/gstin-verification",
headers={
"Authorization": "Bearer YOUR_API_KEY",
"Accept": "application/json",
},
json={
"g_s_t_i_n": "string",
"company_name": "string"
},
timeout=60,
)
response.raise_for_status()
data = response.json()
const response = await fetch("https://app.emver.io/api/sandbox/v1/gstin-verification", {
method: "POST",
headers: {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
"Accept": "application/json",
},
body: JSON.stringify({
"g_s_t_i_n": "string",
"company_name": "string"
}),
});
const data = await response.json();
$response = Http::withToken('YOUR_API_KEY')
->acceptJson()
->post('https://app.emver.io/api/sandbox/v1/gstin-verification', {
"g_s_t_i_n": "string",
"company_name": "string"
});
$data = $response->json();
Replace YOUR_API_KEY and the placeholder values. Use the switch above to see production URLs.
Response
Structure · 200
{
"status": INTEGER,
"message": STRING,
"data": {
"registration_status": STRING,
"legal_name": STRING,
"trade_name": STRING,
"business_type__constitution": STRING,
"date_of_registration": STRING,
"return_filing_compliance": STRING
}
}
Example · 200
{
"status": 200,
"message": "string",
"data": {
"registration_status": "string",
"legal_name": "string",
"trade_name": "string",
"business_type__constitution": "string",
"date_of_registration": "string",
"return_filing_compliance": "string"
}
}
Error · 4xx / 5xx
{
"status": INTEGER,
"message": STRING
}
See Errors & status codes for what each status means and which calls are billed.
About this API
A GST number on an invoice proves nothing until it is checked. The GSTIN Verification API confirms the registration is active, tells you exactly who it belongs to, and reveals whether the emver is filing returns on time, the single most useful early indicator of a healthy counterparty.
Supply an expected company name and the API compares it with the registered legal and trade names, so mismatched or borrowed GSTINs are flagged before a purchase order is raised.
Typical uses
- Vendor onboarding. Validate every new supplier's GST registration before master-data creation.
- Marketplace seller KYB. Confirm seller registration and emver type at sign-up.
- Invoice validation. Verify the GSTIN on incoming invoices to protect input tax credit.
- Business lending. Registration and filing status as underwriting signals for MSME credit.
Questions
- What does filing compliance show?
- A summary of whether recent GST returns have been filed, which helps procurement and credit teams gauge how well run the emver is.
- Can I find all GSTINs for a company?
- Yes. Use the GSTIN by PAN API to list every registration held against the company's PAN across states.
- Is this enough for vendor due diligence?
- It is the essential first step. For a complete picture, pair it with the MCA company lookup, directorship lookup and bank account verification, all available on the same API key.