Verify GSTIN Checksum & State Codes (Modulo-36)
Anatomy of the 15-character GSTIN register
Every file format and statutory compliance rule has a deterministic structure underneath the user interface. When teams rely on manual spreadsheet edits or generic cloud converters, subtle structural details get lost: page coordinate boxes reset, check digits go unverified, or rounding rules drift by several hundred rupees across a financial year. Understanding the exact specification behind GSTIN Validator lets you verify every output before it enters an audit file or government portal.
The reference table below summarizes the core technical and statutory parameters enforced by the local engine:
| Parameter / Rule | Specification / Formula | Practical Audit Impact |
|---|---|---|
| Positions 1 to 2 | 2-digit Census State Code (01 Jammu & Kashmir to 38 Ladakh, 97 Other Territory) | Identifies place of registration for IGST vs CGST+SGST |
| Positions 3 to 12 | Embedded 10-character Income Tax PAN of the legal entity | Links GST registration directly to PAN holder type (4th char of PAN) |
| Position 13 | Entity Registration Number within the same state (1 to 9, then A to Z) | 1 for first registration, 2 for second vertical in same state |
| Position 14 & 15 | Char 14 = "Z" (default); Char 15 = Modulo-36 Checksum (0 to 9, A to Z) | Catches 100% of single-character typos and adjacent transpositions |
Because each rule above is evaluated directly in your browser tab using typed JavaScript arrays and WebAssembly workers, there is no server queue, no file-count cap, and zero external data retention. Every byte of the source document or ledger table is parsed inside volatile browser memory and released as soon as the tab closes.
How the Modulo-36 Luhn check digit (Character 15) is calculated
Running this workflow in GSTIN Validator & State Decoder takes four deterministic steps from raw input to verified output:
- Open GSTIN Validator and paste a single 15-character GSTIN or a multi-line batch of vendor GSTINs from your purchase register.
- The tool validates the 2-digit state code, the embedded 10-character PAN regex, and recomputes the Modulo-36 check digit.
- If a GSTIN fails the checksum, inspect the Expected Check Digit badge to see whether the 15th character was mistyped.
- Export the validated table as CSV to clean your ERP or Tally vendor master before filing GSTR-1.
When you process recurring monthly batches, keeping the input schema consistent across runs ensures that downstream checks in related guides such as decode pan card fourth character entity status, calculate tds under section 194c 194j 194h 194i, clean and normalize indian bank statement csv exports match to the exact rupee or byte. Before starting a large batch, verify that your source file is not locked by an unknown password and that column headers or page indices match the expected range.
Step-by-step: validating single or bulk GSTINs in ShiftTools
Verifying Checksum Character "M" on 27AABCU9603R1ZM
In the base-36 alphabet, digits 0 to 9 map to values 0 to 9 and letters A to Z map to values 10 to 35. Each of the first 14 positions is multiplied by an alternating weight factor (1 for odd positions, 2 for even positions). For each product P, we compute quotient Q = floor(P / 36) and remainder R = P mod 36, then sum (Q + R) across all 14 positions. Taking (36 − (Sum mod 36)) mod 36 yields the exact code point for the 15th character. For 27AABCU9603R1Z, the weighted sum modulo 36 leaves a complement of 22, which maps to 'M' (since A=10 ... M=22). If an accountant types 27AABCU9603R1ZN by mistake, the validator immediately flags that 'N' is invalid and 'M' is expected.
Base-36 Alphabet: 0..9 = 0..9, A=10, B=11, C=12 ... M=22 ... Z=35
Input (First 14): 2 7 A A B C U 9 6 0 3 R 1 Z
Weights: 1 2 1 2 1 2 1 2 1 2 1 2 1 2
Check Formula: (36 - (∑(floor((Vᵢ×Wᵢ)/36) + ((Vᵢ×Wᵢ) mod 36)) mod 36)) mod 36
Computed Char 15: 22 -> 'M' (VALID · State 27 = Maharashtra · Entity = Company)
You can reproduce this exact calculation at any time by pasting the sample values above into GSTIN Validator and comparing the generated summary row against your internal workpaper. Recording the input parameters alongside the output file creates a self-contained audit trail for statutory or peer review.
Worked example: computing the check digit for 27AABCU9603R1ZM
In production accounting and document engineering workflows, edge cases appear when inputs combine multiple conventions in a single batch. For example, a merged PDF bundle may mix portrait A4 text pages (/MediaBox 595.28 × 841.89 pt) with wide environment annexures, or a quarterly ledger export may combine April-to-September transactions with October-to-March entries after a mid-year threshold revision.
To prevent silent errors across those boundaries, always inspect the per-item diagnostic status before exporting the final file:
- Verify unit consistency: Confirm whether input figures represent monthly vs annual amounts, GST-exclusive vs GST-inclusive values, or 1-based physical page indices vs printed document numbers.
- Check boundary conditions: Pay close attention to exact threshold cutoffs, leap-year day counts, and page rotation multiples (0, 90, 180, 270 degrees) where off-by-one errors commonly occur in manual spreadsheets.
- Preserve audit trails: Save the exported summary CSV or processed PDF alongside the raw source file so any reviewer can trace the transformation step by step without re-keying data.
- Cross-check neighbour utilities: Pair GSTIN Validator with companion tools in the Accounting & Finance suite (decode pan card fourth character entity status, calculate tds under section 194c 194j 194h 194i, clean and normalize indian bank statement csv exports) when a task spans multiple stages.
Format & checksum validation vs live GST portal status
Offline Modulo-36 validation proves that a GSTIN is structurally valid, belongs to a real Indian state code, contains a valid PAN, and has zero transcription typos. It does not query the GSTN network to check whether the taxpayer's registration is currently Active, Suspended, or Cancelled, verify live filing status on the official GST portal for high-value new vendors.
By separating deterministic local computation from external portal lookups, your team eliminates manual formatting and calculation errors while keeping sensitive client files off third-party cloud servers.