FinchContext
Run with

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


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


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


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.