Lowest-Cost Bulk GSTIN Verification at Scale
Verifying 10,000 GSTINs without paying for 10,000 calls - dedupe, local validation, cadence and the bulk credit rate.
The cheapest bulk GSTIN verification is not the one with the lowest rate — it is the one that makes the fewest paid calls. Rate negotiation moves the price by tens of percent; call elimination moves it by multiples, and most of the techniques cost nothing to implement. This post is the pipeline we would build for a 10,000-row vendor master, in the order that saves the most money first.
The five-stage pipeline that removes billable calls
- Normalise. Uppercase, strip spaces and stray punctuation. GSTINs pasted from invoices routinely arrive with a trailing space or a lowercase state code, and an un-normalised list inflates the distinct count for no reason.
- Dedupe. Take distinct values. A vendor master assembled over years usually carries the same GSTIN under several supplier records — different branches, renamed entities, duplicate onboarding.
- Validate offline. The GSTIN is a fixed 15-character structure: two-digit state code, ten-character PAN, entity number, a fixed letter, and a check digit. All of that is verifiable without a network call. See GSTIN format explained and validation vs verification.
- Filter by cadence. Drop rows already verified inside your acceptable freshness window, keyed by risk rather than by a single global TTL.
- Call the API, once per remaining GSTIN, through a queue. Only this stage costs money.
What each stage saves on a 10,000-row list
| Stage | Rows remaining | Cost at ₹0.40 |
|---|---|---|
| Raw list | 10,000 | ₹4,000 |
| After normalise + dedupe (~10% repeats) | 9,000 | ₹3,600 |
| After offline validation (~2% invalid) | 8,820 | ₹3,528 |
| After cadence filter on a monthly refresh (~15% already fresh) | 7,497 | ₹2,999 |
The percentages are illustrative — measure your own, because they vary enormously by how the list was assembled. The point is the shape: three free steps take a quarter off the bill, and they compound every time you run the batch. Model your own figures on the cost calculator.
Cadence: the lever most teams never pull
Once the one-off cleanup is done, your ongoing bill is set almost entirely by how often you re-verify. Registration records do not change minute to minute, so a uniform daily refresh of every supplier buys very little and costs 30× a monthly one.
A risk-tiered cadence works better: verify fresh at onboarding and immediately before any payment above your materiality threshold; re-verify active suppliers monthly; leave dormant records alone until they are next used. Layer an event-driven check on top — whenever an invoice arrives from a supplier you have not seen in a while. The monitoring pattern is in automated daily vendor GSTIN monitoring, and the broader cost programme in how to cut your GST verification API bill.
Buying into the bulk rate correctly
The discount applies to the purchase, not the calendar month. Two purchases of 1,500 credits are billed at ₹0.50 each — ₹1,500 for 3,000 credits — while one purchase of 3,000 credits is billed at ₹0.40, or ₹1,200. Same volume, ₹300 apart, for no reason other than how it was bought.
So: forecast the batch, add the steady-state usage you expect before the next top-up, and buy that in one block if it clears 2,500. Do not over-buy far beyond it, because purchased credits carry an expiry period and unused credits are non-refundable. Current tiers are on the pricing page.
Running the batch without tripping limits
Bulk here means calling the single lookup endpoint once per GSTIN from your own queue, not posting a file to a batch endpoint. That is more code than a file upload, and it buys three things worth having: per-row error handling, the ability to resume a partial run without re-paying for rows that already succeeded, and control over your own throughput.
- Rate-limit at the worker, not by sleeping inside a request handler.
- Treat 429 as expected; retry with exponential backoff and jitter rather than a tight loop.
- Persist every raw response keyed by GSTIN and timestamp, so a rerun is a resume.
- Keep a dead-letter list for rows that fail repeatedly and inspect it by hand — it is usually a data problem, not an API problem.
- If your throughput needs a higher ceiling, ask before the run rather than discovering the limit mid-batch.
Implementation detail, including worker sizing, is in the bulk GSTIN verification guide and bulk verification throughput; failure shapes are in the error codes guide.
Frequently asked questions
A note on accuracy. GST rules change often. This article reflects our understanding as of 15 September 2026 and is general information, not tax or legal advice. For the authoritative position, check gst.gov.in and cbic-gst.gov.in, or speak to a qualified tax professional about your specific situation.
Check a GSTIN right now, free
Five lookups a day, no account required. Status, filing history, e-invoicing and jurisdiction.
Free GST search toolBuild it into your product
One REST call, JSON back. Get an API key and 20 free verification credits in under a minute.
Start freeMore on pricing & cost
Browse every guide in the GST API blog.