GSTIN Format & Checksum Checker

Catch GSTIN transcription mistakes before copying supplier details into an invoice. Paste one number or a batch for a local structural check.

Which registrations are supported

A regular PAN-based GSTIN contains a two-digit state code, ten-character PAN, registration sequence character, Z and a checksum character. Input is trimmed and uppercased. Special registrations such as non-resident formats may follow a different structure and are reported as unsupported rather than labelled fake.

What the check character does

The final character is a base-36 Luhn check over the preceding 14 positions. Alternating multipliers of 2 and 1 are applied from the right; base-36 digit sums determine the complement. This detects many copying errors, but a mathematically valid sequence is not evidence of an existing business.

Read the batch results

Paste GSTINs separated by newlines, spaces, commas or semicolons. Every entry retains its own result: unsupported format, unrecognised state code, checksum mismatch or local pass. The example 27AAPFU0939F1ZV passes the local checksum. The report shows Maharashtra and its embedded PAN without fetching a taxpayer record.

Follow up on the official portal

Use the GST portal’s Search Taxpayer service to confirm legal name and active or cancelled status. Local checksum success does not validate invoices or determine input-tax-credit entitlement. PAN values are displayed only as extracted characters and are not authenticated.

Technical references: ICAI: structure of GSTIN · GSTIN format and checksum reference

GSTIN Format & Checksum Checker FAQs

No. GSTIN Format & Checksum Checker is an offline typo check. Only a current authoritative record can establish whether the registration exists and is active.
Numbers outside the regular PAN-based pattern receive an unsupported / invalid-format result. They are not rewritten or declared fraudulent, because this checker intentionally covers the ordinary registration structure only.
GSTIN Format & Checksum Checker provides this sample: { "title": "GSTIN format and checksum report", "summary": [ [ "Numbers checked", 1 ], [ "Passed local checks", 1 ], [ "Need review", 0 ] ], "columns": [ "GSTIN", "Local result", "State / territory", "Embedded PAN" ], "rows": [ [ "27AAPFU0939F1ZV", "Format and checksum pass", "Maharashtra", "AAPFU0939F" ] ], "notes": "Regular PAN-based GSTINs…. Use the sample button to reproduce it, then replace the inputs with your own values.