Comparison 8 min read

Looking for a Surepass GST API Alternative

How to evaluate a replacement for a GST verification API - the eight questions that decide it, the migration steps, and why published pricing matters.

Written and reviewed by the GSTIN API team Last reviewed

Surepass is a well-known Indian verification API provider, and if you landed here you are probably already using one of these APIs and something made you look around — a renewal, an invoice that grew, a field you keep fetching from somewhere else, a latency spike on a screen a customer stares at. This post is not our opinion of a rival. It is the evaluation you run yourself: eight questions, how to test each one against any provider including us, a blank scorecard, and a migration plan that does not require a leap of faith.

Start with the thing that made you look

Write down, in one sentence, what actually prompted this. It is nearly always one of five things: the bill stopped being forecastable, a field you need is missing or costs a second call, p95 latency broke a user-facing screen, a support ticket went unanswered during an incident, or a renewal date arrived and somebody asked whether this was still the right choice.

That sentence is your pass mark. If you skip it, you will end up comparing feature lists, and feature lists are the least predictive thing on a vendor page. A provider that fixes your specific problem and scores mediocre elsewhere is the right switch; a provider that scores well everywhere except your specific problem is a lateral move that costs you a week.

Everything below is framed as something you ask or measure, not something we assert. We have not audited any competitor's live service, so we do not describe one. If you want the wider market picture first — the categories of provider, what a GSP is and is not, and the criteria that separate them — read how to choose a GST verification API provider, which is the fuller comparison this post sits alongside.

Questions one to three: what a call really costs

1. What does one call cost, and what is the effective cost per useful verification? The headline rate is the beginning of the calculation, not the end. Take everything that will leave your bank account in a year — per-call spend, monthly minimums you will not consume, credits that expire unused — and divide it by the number of calls that returned an answer you could act on. Calls that failed format validation, duplicate lookups and partial records you had to supplement all come out of the denominator.

How to test it. Pull last quarter's real call volume from your logs, including the failures, and run it through each provider's published or quoted rate card. Do not use their example volume. The method is worked through in full in GST API cost per verification, and the traps that inflate the numerator are catalogued in the hidden costs of a cheap GST API.

2. Is filing history returned in the same call as registration details? This is the question that most often doubles a price quietly. If your workflow needs GSTR-1 and GSTR-3B filing periods alongside legal name and status — and most vendor-onboarding and input-tax-credit workflows do — then an API that returns registration details alone is charging you twice for one decision.

How to test it. Send one request for a GSTIN you know files regularly and read the raw response. Count the calls needed to populate every field your database actually stores.

3. Is the pricing published, or only available after a sales call? Published pricing is not a moral virtue, but it is an operational one: you can forecast, you can compare without booking calendar time, and the number does not depend on how well you negotiate. Unpublished pricing is a cost you pay in weeks.

How to test it. Try to get from a cold start to a working API key without speaking to anyone. If you cannot, ask for a written per-verification rate at your forecast annual volume, with the minimum commitment and the credit expiry stated in the same email.

Questions four to eight: the engineering ones

4. Where does the data come from, and how fresh is it? Ask how long a taxpayer record is cached and what invalidates it. Then verify the answer instead of trusting it.

How to test it. Pick a GSTIN whose status you know changed recently — a supplier you know was cancelled or suspended, or one you watched migrate — and query it. A stale "Active" on a cancelled registration is the single most expensive wrong answer this category of API can give you. The sourcing question is unpacked in where GST API data comes from.

5. What is the p95 latency at your real concurrency? A marketing number measured with one request at a time in an empty hour tells you nothing about a batch run at 4pm.

How to test it. Fire your actual concurrency — if your reconciliation job runs 20 requests in parallel, run 20 — for ten minutes, and record p50, p95 and p99 separately. Judge the p95, because that is the one your users feel. Benchmarks and a method are in GST API uptime and latency benchmarks.

6. Is there a published uptime SLA and a status page? An SLA with a number and a remedy is a commitment. "High availability" is a mood. A public status page with incident history tells you how a provider behaves on a bad day, which is the only day that matters.

How to test it. Find the status page without asking. Read the last six months of incidents. If there is no history, ask what the longest outage of the past year was and how customers were told.

7. What does the error taxonomy look like? You need to distinguish, from the response alone and without a human reading it, between "this GSTIN does not exist", "this GSTIN is malformed", "you are rate limited", and "the upstream source is down". Those four need four different behaviours in your code: reject the vendor, fix the input, back off, retry later.

How to test it. Deliberately send a malformed GSTIN, a well-formed but unregistered one, and a burst that exceeds the documented rate limit. Then check your balance: find out which of those was billed. Being charged for a provider's own 5xx is a real cost with a real rate. See the GST API error codes guide.

8. What does bulk actually look like? There is a large difference between a queued batch endpoint that accepts a file of GSTINs and returns a job you poll, and a documentation page that suggests you write a loop. The loop is yours to operate: retries, backoff, partial failure, resumption.

How to test it. Submit 5,000 GSTINs the way you would in production and see what you had to build. The patterns are in the bulk GSTIN verification guide.

A scorecard you fill in yourself

Print this, put your current provider in column A and the candidate in column B, and fill it in from tests rather than from vendor pages. Score each row 0 to 3. The blank cells are the point of the table.

QuestionWhy it mattersProvider AProvider B
Effective cost per useful verificationAbsorbs minimums, expiry and wasted calls into one comparable number
Filing history in the same callA second call to complete one decision doubles the real unit price
Pricing published on the siteDetermines whether you can forecast and compare without sales cycles
Data source and freshnessA stale status is a wrong payment and a blocked input tax credit
p95 latency at your concurrencyThe number your users actually feel during a batch run
Published uptime SLA and status pageTells you what happens on the bad day, and what the remedy is
Error taxonomy and billing on errorsDecides whether your code can branch correctly, and what failures cost
Queued bulk endpointEither the provider operates the batch machinery, or you do
Blank scoring matrix for comparing two GST verification API providers on the eight deciding questions.

The parallel run that settles it

Before you change production, run both providers against the same 200 GSTINs from your own data and diff the responses field by field. Choose the sample deliberately: include cancelled and suspended registrations, a few composition dealers, some recently amended records, and a handful you know are invalid. A sample of clean, active GSTINs makes every provider look identical.


import fs from 'node:fs';

const gstins = fs.readFileSync('sample-200.txt', 'utf8').trim().split('\n');
const fields = ['legalName', 'tradeName', 'status', 'registrationDate', 'taxpayerType', 'lastFiledPeriod'];

const fetchFrom = async (provider, gstin) => {
  const started = performance.now();
  const res = await fetch(provider.url(gstin), { headers: provider.headers });
  const body = res.ok ? provider.normalise(await res.json()) : null;
  return { ok: res.ok, status: res.status, body, ms: performance.now() - started };
};

const report = [];

for (const gstin of gstins) {
  const [a, b] = await Promise.all([fetchFrom(current, gstin), fetchFrom(candidate, gstin)]);
  const differences = fields.filter((f) => (a.body?.[f] ?? null) !== (b.body?.[f] ?? null));

  if (differences.length || a.ok !== b.ok) {
    report.push({ gstin, differences, aStatus: a.status, bStatus: b.status });
  }
  report.push({ gstin, aMs: Math.round(a.ms), bMs: Math.round(b.ms) });
}

fs.writeFileSync('diff-report.json', JSON.stringify(report, null, 2));

Read the report for three things in order. Disagreements on status come first: check those GSTINs on the government portal the same day and record which provider matched. Disagreements on filing history come second, because a missing or lagging period silently changes a supplier risk score. Field coverage comes third — note every field one returns and the other does not, and decide whether you actually store it.

The loop above already records per-call timings, so sort them and read p95 off the same run that produced your correctness data — one test, two answers, both measured from your own infrastructure under identical network conditions rather than from a vendor's datacentre.

Cutting over without a bad fortnight

The code change is usually a day. The confidence is the rest. A migration that has never gone badly looks like this:

  1. Normalise first. If you store raw vendor JSON, add a mapping layer to your own field names before you migrate rather than during it. Every future switch then costs an adapter, not a schema change.
  2. Parallel run for a week. Same 200 GSTINs, daily, responses stored. Watch the disagreement rate on status and filing history settle or grow.
  3. Cut over behind a feature flag, percentage-based if you can. Start at 5%, sit there for a day, then move.
  4. Keep the old key alive and funded for a fortnight. A rollback that needs a purchase order is not a rollback.
  5. Alert on the disagreement rate, not just on errors. The failure mode you care about is a confident wrong answer, and it returns HTTP 200.
  6. Cancel deliberately. Note the notice period, export anything you need, and check whether unused balance is refundable before the renewal date, not after.

The same sequence works whichever direction you are moving, including away from us. If you are weighing a different incumbent, the sister post on evaluating a Karza alternative uses the identical checklist.

Where we fit, and how to check us

We build one of these APIs, so treat this as a disclosed interest and run the eight questions against us exactly as you would against anyone else. Our answers, in the same order:

  • Price. ₹0.50 per verification pay-as-you-go, ₹0.40 once a single credit purchase crosses 2,500 credits. No subscription, no minimum spend, no contract. Purchased credits do not expire, so the expiry term in the cost formula is zero. Published on the pricing page, not behind a call.
  • Scope per call. Registration details and GSTR filing history come back in a single response, so the denominator in your cost formula is not halved.
  • Freshness. Test it with a GSTIN you know changed recently. That is the only evidence worth having, from us or anyone.
  • Latency. p95 under 350ms. Measure it yourself with the loop above at your own concurrency.
  • Uptime. A published SLA with a stated remedy, not a number in a footer.
  • Errors. Documented codes that separate a non-existent GSTIN from a malformed one from an upstream failure, none of which are guesswork on your side.
  • Bulk. A queued endpoint, POST /api/bulk/jobs, accepting up to 10,000 GSTINs per job, so you are not writing the loop.
  • Trying it. 20 free credits when you verify your email, expiring 30 days after issue, plus five free lookups a day on the public search tool with no signup at all. You can create a key and run the checklist above without speaking to us.

Where we are not the answer: if your annual volume is in the millions, a negotiated enterprise contract elsewhere may beat ₹0.40 on unit price, and if you need filing, e-way bills or e-invoicing rather than verification, you need a GSP and not us, and the checklist above will tell you so quickly.

Frequently asked questions

It is worth switching when the thing that prompted you is structural rather than momentary — a price you cannot forecast, a field you keep having to fetch elsewhere, or latency that breaks a user-facing screen. It is not worth switching over a single bad afternoon, because migration costs you a week of engineering attention whatever the destination. Run the eight questions against your current provider first; if it answers all eight well, the problem is probably somewhere else in your pipeline.
Convert both to effective cost per useful verification: everything you will pay in a year, including minimums and credits that expire unused, divided by the number of calls that returned an answer you could act on. That single number absorbs subscription floors, tier thresholds and the extra call some APIs need to return filing history. The full arithmetic is in our guide to cost per verification.
That is not automatically disqualifying, but treat it as a cost in itself: you cannot forecast, you cannot budget, and you cannot compare without spending calendar time. Ask for a written per-verification rate at your forecast annual volume, with the minimum commitment and the credit expiry stated in the same email. If the rate only exists inside a contract, model the contract value divided by your realistic volume, not theirs.
Two hundred of your own GSTINs is usually enough to surface the disagreements that matter, provided you choose them deliberately rather than taking the first two hundred rows of your vendor master. Include cancelled, suspended and recently amended registrations, a few composition dealers, and at least a handful you know are invalid. A sample of clean, active, large-company GSTINs will make every provider look identical.
Do not assume the newer provider is wrong. Check that GSTIN on the government portal yourself on the same day, record which response matched, and keep a running tally across the parallel run. A disagreement rate is far more informative than any single case, and a provider that is consistently late on status changes will show up within a fortnight.
For a single integration behind one service boundary, the code change is usually a day and the confidence is the other nine. Budget a week of parallel running, a cutover behind a feature flag, and a fortnight where the old key stays live and funded so you can roll back without a purchase order. Teams that skip the parallel run are the ones who discover a field mapping problem in production.
Usually not, if you were already normalising the response into your own shape rather than storing the vendor payload verbatim. If you were storing raw JSON, add a mapping layer before you migrate rather than during it, so the diff you run in the parallel test compares your fields rather than two vendors' field names. That mapping layer is also what makes the next switch cheap.

A note on accuracy. GST rules change often. This article reflects our understanding as of 21 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 tool

Build it into your product

One REST call, JSON back. Get an API key and 20 free verification credits in under a minute.

Start free