Gstr 2a - Json To Excel Converter Exclusive

Here’s a GSTR 2A JSON to Excel Converter with key features you can implement (in Python using pandas and openpyxl ):

✅ Features of the Converter 1. Upload JSON File

Accepts GSTR 2A JSON (from GST portal) Supports nested JSON structure (B2B, CDNR, etc.)

2. Parse & Flatten Data

Extracts:

Invoice-level details (No., Date, Value, Taxable Value) Supplier GSTIN, Name Place of Supply Rate-wise tax breakup (CGST, SGST, IGST, Cess)

3. Excel Output with Multiple Sheets | Sheet Name | Content | |------------|---------| | B2B | All B2B invoices | | CDNR | Credit/Debit Notes | | Summary | Period-wise totals | | Tax Breakup | Rate-wise tax summary | | Missing Invoices | GSTR 2A vs Books comparison (if you provide purchase register) | 4. Smart Features GSTR 2A - JSON to Excel Converter

✅ Auto-detect GSTIN (your vs supplier) ✅ Highlight mismatches (e.g., tax amount mismatch) ✅ Add filter & freeze panes in Excel ✅ Round off to 2 decimals ✅ Progress bar for large files

5. Comparison Mode (optional)

Upload your purchase register (Excel) + GSTR 2A JSON Get sheet showing: Here’s a GSTR 2A JSON to Excel Converter

Invoices in books but missing in GSTR 2A Invoices in GSTR 2A but missing in books Tax amount differences

🛠️ Sample Python Code (Core Logic) import json import pandas as pd from openpyxl import load_workbook from openpyxl.styles import Font, PatternFill, Alignment def gstr2a_json_to_excel(json_file, output_excel): with open(json_file, 'r', encoding='utf-8') as f: data = json.load(f) b2b_records = [] # Flatten B2B section for fp in data.get('fp', []): # fp = tax period for b2b in fp.get('b2b', []): for inv in b2b.get('inv', []): for item in inv.get('itms', []): itm_det = item.get('itm_det', {}) b2b_records.append({ 'Supplier GSTIN': b2b.get('ctin'), 'Invoice No': inv.get('inum'), 'Invoice Date': inv.get('idt'), 'Invoice Value': inv.get('val'), 'Taxable Value': itm_det.get('txval'), 'CGST': itm_det.get('iamt', 0), 'SGST': itm_det.get('samt', 0), 'IGST': itm_det.get('iamt', 0), 'Cess': itm_det.get('csamt', 0), 'Rate': itm_det.get('rt'), 'Place of Supply': inv.get('pos'), 'Reverse Charge': inv.get('rchrg') })