GSTIN Validator

Paste a GST number and see, character by character, whether it is well-formed and whether its check digit adds up. Nothing leaves your browser, and there is no limit on how many you check.

Spaces, dashes and lowercase are cleaned up automatically. Validation updates as you type.

A valid GSTIN and a real GSTIN are different things

Validation catches typos. It does not catch fraud. The modulus-36 algorithm below is published by GSTN and implemented in dozens of open-source libraries, which means anyone building a fake invoice can generate a 15-character string that passes every test on this page — correct state code, plausible PAN, literal Z, perfect check digit. The number will still not exist in the GST register.

So treat structural validation as the cheap first filter it is. It costs nothing, runs offline, and rejects the mistyped numbers that make up most of what goes wrong in a vendor master. Everything after that — does this registration exist, whose name is on it, is it still active, has it been cancelled, does the trade name match the invoice — requires the government record.

What this validator can tell you

  • The number is 15 characters in the right shape
  • The state code is one the government issues
  • The check digit agrees with the first 14 characters
  • Which state, which PAN, which entity type
  • Which registration this is for that PAN in that state

What only a live lookup can tell you

  • Whether the registration exists at all
  • The legal name and trade name on record
  • Active, suspended or cancelled — and when
  • The registered places of business
  • Whether they actually file their returns
Look up a GSTIN free

The fraud pattern is worth reading about in full: how to check a fake GST number, and what a suspended GSTIN status actually means when you find one.

How the GSTIN check digit is calculated

The 15th character is a modulus-36 checksum over the first 14. Every character is worth its index in the set 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ, so 0 is 0, 9 is 9, A is 10 and Z is 35.

  1. 1

    Weight each character

    Walk the first 14 characters left to right. Characters in odd positions (the 1st, 3rd, 5th …) are multiplied by 1; characters in even positions (the 2nd, 4th, 6th …) are multiplied by 2.

  2. 2

    Fold each product back under 36

    For each product, divide by 36 and add the quotient and the remainder together. For a product of 44 that is 1 + 8 = 9. This is the modulus-36 analogue of the "add the digits" step in the Luhn algorithm.

  3. 3

    Sum and complement

    Add all 14 folded values. The check digit is the character at index (36 − (sum mod 36)) mod 36 in the same character set.

  4. 4

    Compare

    If that character equals the 15th character of the GSTIN, the checksum holds. If not, at least one of the first 15 characters is wrong — most often a transposed pair or a single mistyped character.

For the full anatomy of the number, including why the PAN sits inside it, read the GSTIN format explained and how many digits a GST number has.

Reading the 6th character: PAN holder type

Characters 3 to 12 of a GSTIN are the PAN of the registered entity, and the 4th character of a PAN — the 6th character of the GSTIN — encodes what kind of entity holds it. It is the one piece of business information you can read straight out of the number without a lookup.

Character Entity type Typical example
C Company A private limited or public limited company
P Individual / Proprietor A sole proprietorship registered in the owner’s own name
F Firm / Limited Liability Partnership A partnership firm or an LLP
H Hindu Undivided Family (HUF) A family business registered as an HUF
T Trust A charitable or private trust
A Association of Persons (AOP) A society, club or joint venture registered as an AOP
B Body of Individuals (BOI) A body of individuals without a formal association
G Government A government department or PSU registered for GST
L Local Authority A municipal corporation or panchayat
J Artificial Juridical Person A statutory body that is none of the above
K Krish (Trust under Wealth Tax Act) A legacy classification, rare in practice
PAN holder-type codes as they appear in the 6th character of a GSTIN.

Because the PAN is embedded, a GSTIN and a PAN are not independent identifiers — see the difference between a GST number and a PAN, or how to find every GSTIN issued against one PAN.

Validating more than one at a time

This page validates one number at a time because that is what most people need — a quick check on the GSTIN printed on an invoice sitting in front of them. If you are cleaning a vendor master with thousands of rows, do the structural check in your own code first (it is thirty lines in any language) and only spend a verification call on the numbers that survive it. That is exactly how our own API works: a malformed GSTIN is rejected before it ever reaches the government system, so it never costs you a credit.

Working in a spreadsheet instead? Verify GST numbers in Excel or in Google Sheets. For a whole file at once, see the bulk GSTIN verification guide.

Frequently asked questions

Three things, all offline. First, the shape: 15 characters made up of 2 state digits, a 10-character PAN, an entity code, a literal Z and a check digit. Second, that the state code is one the government actually issues. Third, that the 15th character matches the modulus-36 checksum computed from the first 14. If any of those fail, the number cannot be a real GSTIN. If all three pass, the number is well-formed — which is not the same as saying it exists.
No, and this is the single most important thing to understand about GSTIN validation. The check-digit algorithm is public, so anyone can construct a 15-character string that passes it — a fraudster inventing a GSTIN for a fake invoice will normally produce one that validates. Structural validation only proves the number is not a typo. To find out whether the registration exists, who holds it and whether it is still active, you need a lookup against the government register, which is what the free GST number search does.
Each of the first 14 characters is converted to a number using its position in the set 0-9 then A-Z, so 0 is 0, 9 is 9, A is 10 and Z is 35. Characters in odd positions (1st, 3rd, 5th and so on) are multiplied by 1; characters in even positions are multiplied by 2. For each product, you add the quotient and the remainder of dividing by 36 and accumulate the total. The check digit is the character at index (36 - (total mod 36)) mod 36 in that same set. It is a modulus-36 variant of the Luhn idea.
It is reserved. GSTN set the position aside for future use when the format was designed and has not assigned it a meaning yet, so every GSTIN issued under the current scheme carries a literal Z there. A number with anything else in position 14 is not a standard GSTIN, regardless of what the checksum says.
It counts registrations held against the same PAN within the same state. The first registration gets 1, the second 2, and the sequence continues through 9 and then A to Z. So 27AAACR5055K2Z... would be the second Maharashtra registration for PAN AAACR5055K. This is how a business with multiple verticals or branch registrations in one state is distinguished.
Partly. The 4th character of the embedded PAN — the 6th character of the GSTIN — encodes the PAN holder type: C for Company, P for Individual or Proprietor, F for Firm or LLP, T for Trust, H for Hindu Undivided Family, A for Association of Persons, and so on. That tells you the constitution of the entity but not its name, its status or its address.
No. The validation runs entirely in your browser in JavaScript — the state-code table, the PAN-type table and the checksum algorithm are all in the page. Nothing is submitted, logged or stored, and there is no usage limit. That is only possible because none of these checks need government data.