Build GSTR-3B JSON (Summary Return)
Skill: Convert summary GST figures into the GSTR-3B JSON
Region: India Category: Tax — GST returns Does: Takes a period's summary GST figures and maps them onto the GSTR-3B JSON in the GST offline-utility format — Table 3.1 (outward + inward reverse-charge supplies), Table 3.2 (inter-state to unregistered/composition/UIN), Table 4 (eligible ITC), Table 5 (exempt/nil/non-GST inward), and Table 6.1 (tax payment) — for upload to the GST portal (or filing via GSP/API). System: GST portal (gst.gov.in) — Returns, GSTR-3B
GSTR-3B is the self-assessed summary return reconciling output tax and input tax credit (ITC) and discharging the net liability. It is filed monthly (turnover > ₹5 crore or opted-in) or quarterly under QRMP. From recent changes the liability (Table 3) is auto-drafted from GSTR-1/IFF and the ITC (Table 4) from the auto-generated GSTR-2B — reconcile rather than re-key. The JSON top level carries
gstin,ret_period(MMYYYY). Table structure and code lists change between releases — generate against the current GSTR-3B offline-tool schema and validate on the portal before filing.
When this applies
- A registered regular taxpayer discharging GST liability for the period (monthly, or quarterly under QRMP).
- Due 20th of the following month (monthly); 22nd/24th after quarter-end (QRMP, staggered by state).
- Tax is paid by debiting the electronic cash and credit ledgers; the return cannot be filed until the liability in Table 6.1 is fully discharged.
Input data required
| Table | Reports |
|---|---|
sup_details (3.1) |
(a) outward taxable (other than zero/nil/exempt), (b) zero-rated, (c) nil/exempt, (d) inward reverse charge, (e) non-GST outward — taxable value + IGST/CGST/SGST/Cess |
inter_sup (3.2) |
of 3.1, inter-state supplies to unregistered, composition, and UIN holders, by POS |
itc_elg (4) |
ITC available (import, reverse charge, ISD, all-other), ITC reversed, net ITC, ineligible |
inward_sup (5) |
composition/exempt/nil-rated and non-GST inward supplies (inter/intra split) |
tx_pmt (6.1) |
tax payable per head, paid through ITC vs cash, interest and late fee |
Document structure (offline-utility JSON)
{
"gstin": "29AABCU9603R1ZM",
"ret_period": "052025",
"sup_details": {
"osup_det": { "txval","iamt","camt","samt","csamt" }, // 3.1(a) outward taxable
"osup_zero": { "txval","iamt","csamt" }, // 3.1(b) zero-rated
"osup_nil_exmp":{ "txval" }, // 3.1(c) nil/exempt
"isup_rev": { "txval","iamt","camt","samt","csamt" }, // 3.1(d) inward reverse charge
"osup_nongst": { "txval" } // 3.1(e) non-GST
},
"inter_sup": { "unreg_details":[ {"pos","txval","iamt"} ], "comp_details":[...], "uin_details":[...] },
"itc_elg": {
"itc_avl":[ {"ty":"IMPG"|"IMPS"|"ISRC"|"ISD"|"OTH","iamt","camt","samt","csamt"} ],
"itc_rev":[ {"ty":"RUL"|"OTH","iamt","camt","samt","csamt"} ],
"itc_net":{ "iamt","camt","samt","csamt" },
"itc_inelg":[ {"ty":"RUL"|"OTH","iamt","camt","samt","csamt"} ]
},
"inward_sup": { "isup_details":[ {"ty":"GST"|"NONGST","inter","intra"} ] },
"tx_pmt": { "txpd":[ {"sgst":{...},"cgst":{...},"igst":{...},"cess":{...}} ] }
}
Key rules: iamt=IGST, camt=CGST, samt=SGST, csamt=Cess. Inter-state outward carries IGST; intra-state carries CGST+SGST. ITC type IMPG=import of goods, IMPS=import of services, ISRC=inward reverse charge, ISD=Input Service Distributor, OTH=all other ITC.
Calculation rules
- Output tax (Table 3.1) is the sum of period output IGST/CGST/SGST/Cess.
- Net ITC = ITC available (4A) − ITC reversed (4B); cross-utilisation order is IGST credit first against IGST, then CGST/SGST, per the set-off rules.
- Net cash payable per head = output liability − ITC set off for that head; the shortfall is paid from the cash ledger.
- Interest at the notified rate applies to delayed/short payment; late fee applies for late filing.
- Table 3.2 figures are a subset of Table 3.1 (inter-state to unregistered/composition/UIN) and must not exceed them.
Worked example (monthly, outline)
{
"gstin": "29AABCU9603R1ZM",
"ret_period": "052025",
"sup_details": {
"osup_det": { "txval": 1500000.00, "iamt": 90000.00, "camt": 90000.00, "samt": 90000.00, "csamt": 0.00 },
"osup_zero": { "txval": 0.00, "iamt": 0.00, "csamt": 0.00 },
"osup_nil_exmp": { "txval": 0.00 },
"isup_rev": { "txval": 50000.00, "iamt": 9000.00, "camt": 0.00, "samt": 0.00, "csamt": 0.00 },
"osup_nongst": { "txval": 0.00 }
},
"inter_sup": {
"unreg_details": [ { "pos": "27", "txval": 200000.00, "iamt": 36000.00 } ]
},
"itc_elg": {
"itc_avl": [
{ "ty": "ISRC", "iamt": 9000.00, "camt": 0.00, "samt": 0.00, "csamt": 0.00 },
{ "ty": "OTH", "iamt": 30000.00, "camt": 60000.00, "samt": 60000.00, "csamt": 0.00 }
],
"itc_rev": [ { "ty": "OTH", "iamt": 0.00, "camt": 0.00, "samt": 0.00, "csamt": 0.00 } ],
"itc_net": { "iamt": 39000.00, "camt": 60000.00, "samt": 60000.00, "csamt": 0.00 },
"itc_inelg": [ { "ty": "OTH", "iamt": 0.00, "camt": 0.00, "samt": 0.00, "csamt": 0.00 } ]
},
"tx_pmt": {
"txpd": [ {
"igst": { "tx": 99000.00, "citc": 39000.00, "cgst_itc": 0.00, "sgst_itc": 0.00, "csamt_itc": 0.00, "csh": 60000.00, "intr": 0.00, "fee": 0.00 },
"cgst": { "tx": 90000.00, "citc": 60000.00, "csh": 30000.00, "intr": 0.00, "fee": 0.00 },
"sgst": { "tx": 90000.00, "citc": 60000.00, "csh": 30000.00, "intr": 0.00, "fee": 0.00 },
"cess": { "tx": 0.00, "citc": 0.00, "csh": 0.00, "intr": 0.00, "fee": 0.00 }
} ]
}
}
Upload via the offline tool or GSP/API; the portal validates, offsets the liability against the ledgers, and enables filing once paid.
Validation checklist
- Current GSTR-3B offline-tool version / schema used;
gstinandret_period(MMYYYY) correct - Table 3.1 outward heads complete; inter-state vs intra-state tax split correct (IGST vs CGST+SGST)
- Inward reverse charge 3.1(d) reported (and the matching ITC claimed under
ISRC) - Table 3.2 inter-state to unregistered/composition/UIN is a subset of 3.1 and does not exceed it
- Table 4 ITC reconciled to GSTR-2B; reversals (Rule 42/43, etc.) in 4B; ineligible separated
- Set-off order correct (IGST credit first); net cash per head computed in Table 6.1
- Liability fully discharged (cash + credit) before filing; interest/late fee added if late
- Filed by the due date (20th monthly / 22nd–24th QRMP); reconciles with GSTR-1
Last updated: 2026-06-04 — confirm the active schema version, field codes, and portal/API requirements against the current GSTN (gst.gov.in) specifications before use.