Blog/GST & ITC
Not every state is a state

UTGST is not SGST with a different label you can ignore.

Union Territory suppliers print UTGST, or they still print SGST from an old template. Intra vs IGST still has to match the GSTIN prefixes. Our check puts UTGST in the intra bucket. Confirm which code is which on the portal.

You buy steel fittings from a supplier in Chandigarh. Code 04. The invoice carries CGST and UTGST. Your Tally company does not have a UTGST ledger because you have never bought from a UT before. The import fails with "ledger not found." You add a CGST ledger, rename it UTGST, and re-import. It works. The books are wrong because you used the wrong CGST rate. Nobody catches it until the CA asks why UTGST shows up in your CGST report.

The regime post used Maharashtra vs Delhi because that is the usual factory story. This page is the UT footnote that still breaks Tally ledgers. CGST is the Centre's half. The other half is SGST in a state and UTGST in a Union Territory. IGST is still the cross-border one. Read levy on CBIC. Do not file from a mnemonic.

What our code does

check_tax_regime treats any non-zero CGST, SGST, or UTGST as the intra pair. Non-zero IGST is the inter pair. Both pairs at once is a conflict. Seller state vs POS (or buyer GSTIN) still has to match that pair. UTGST is not a third regime we special-case beyond that bucket.

Intra paper vs inter paperUTGST in the intra bucket
Same UT / same state

CGST + UTGST (or SGST)

IGST here fails the check.

Different codes

IGST

CGST+UTGST here fails. Same as CGST+SGST would.

Codes in our helper, not a gazette

validators/gstin.py names, among others, 04 Chandigarh, 07 Delhi, 26 Dadra and Nagar Haveli and Daman and Diu, 25 as legacy Daman and Diu, 31 Lakshadweep, 34 Puducherry, 35 Andaman and Nicobar, 38 Ladakh. Delhi is a UT that many people still think of as a "state" in speech. The file is a checksum helper. Mergers happen (25 into 26). If the portal disagrees with this list the week you care, the portal wins. We keep 25 so old invoices do not fail format.

I will not paste a complete UT political list as current law. GSTN's state-code table is the one that matters for a GSTIN. Look it up.

Templates that still say SGST

A Puducherry supplier using a Maharashtra Excel template will print SGST on intra-UT paper. Arithmetic may close. The label is wrong for books that expect a UTGST ledger. Our check may still pass if CGST+SGST is the intra pair and prefixes match. Passing is not "the ledger name is correct." Tally needs the UTGST ledger if that is how you account. Create it before import.

OCR may read UTGST as SGST or as IGST. Review the crop. Do not auto-fix labels to make the CSV pretty.

Place of supply

Same fallback as POS vs GSTIN: printed POS state if extracted, else buyer prefix. A Chandigarh buyer GSTIN (04) and a Punjab seller (03) is inter: IGST. Intra Chandigarh: CGST+UTGST. We do not geocode "Chandigarh" in an address line.

Tally

If you buy from UTs, the company needs UTGST ledgers the way it needs SGST ledgers. Import will fail or post to the wrong tax if the file says UTGST and the ledger does not exist. That is the same class of miss as CGST 9% vs file 18% in the import post. We export amounts that closed. We do not create ledgers in their company.

Sources
  • CBIC
    cbic-gst.gov.in

    Levy of CGST, SGST, UTGST, IGST.

  • GST portal
    gst.gov.in

    State/UT codes on a GSTIN.

  • EntryLedger
    cross_field.check_tax_regime · gstin.STATE_NAMES

    UTGST in the intra bucket. Helper names, not a gazette.

Frequently asked questions
Is UTGST the same as SGST?+

No. Replacement tax in UTs. Intra = CGST plus UTGST. Inter = IGST.

Do you treat UTGST as its own regime?+

Only as part of the intra pair versus IGST. No separate UT product.

Is Delhi a UT in the GSTIN?+

Code 07 in our helper. Confirm on the portal if you are writing a return, not a blog.

Intra is still intra when the other half is UTGST

Upload a scan. If prefixes match and only IGST is filled, it should not auto-export.