You are on page 1of 9

All about JSON of e-Invoice,

Format, Use, and Software


changes
Updated on Feb 03, 2020 - 02:53:14 PM
A GST taxpayer often encounters JSON file and JSON errors while filing GST returns.
The use of JSON file is going to be more frequent with the e-invoicing system coming
into effect from 1 April 2020. Invoice JSON and e-Invoice JSON are different from each
other.

What is a JSON file?


It is a JAVA-based computer file. It is an open-standard file format which uses human-
readable text to transmit data objects consisting of attribute-value pairs and array data
types. It is in an easy to read and write format.
The JSON format is often used for transmitting structured data between a server and
web application. Thus, it serves as an alternative to XML.

E-Invoice JSON Objects


Below are the e-invoice JSON objects:
 

Sr.No Section Contents

1 Header Contains Tax Scheme, Version, Invoice Reference No., etc.

2 Transaction Contains Transaction Category and Type

3 Document Contains Document Type, Number, Date, etc.

4 Seller Contains Seller GSTIN, Trade Name, Address, etc.

5 Buyer Contains Buyer GSTIN, Trade Name, Address, etc.


6 Dispatch Contains Dispatch GSTIN, Trade Name, Address, etc.

7 Ship To Contains Ship to GSTIN, Trade Name, Address, etc.

8 Item Contains Details of Line Items

9 Document Contains all Total Values of the Document

10 Payment Contains Payment Details and Conditions

11 Reference Contains References Related to Invoice

JSON validations and error log or


report
Some of the major areas where JSON validations come up are:
 

1 Generation of IRN Only the following documents are considered for IRN generation:

 Invoice
 Debit note
 Credit note

2 Category of transactions E-invoice request should be made only for below category of transactions:

 Business-to-Business(B2B) invoices
 Business-to-Government (B2G) invoices
 Business-to-Export invoices
 Reverse Charges invoices
 Supplies through e-commerce operator

3 Reverse Charge It is allowed only for B2B invoice


4 Request for the IRN/e-  It can be made only by the supplier or e-commerce operator on behalf
Invoice supplier
 Duplicate IRN requests are not considered
 IRN can be regenerated for cancelled e-invoice
 IRN can be generated on a combination of supplier GSTIN, FY, docu
type and number.

5 Number of Items Maximum number of items should not exceed 1,000, which later has been inc
to 10,000

Where is the JSON file used under


GST?
The JSON file is used under GST for submitting invoice information on various
government GST portals. It includes filing of GST returns and generation of e-way bills.
In its latest application,  it will be used for generating an e-invoice.

Purpose and uses of JSON file


JSON syntax is very easy to use and is one of the best tools for sharing data of any size
because it stores data in arrays and makes data transfer easier and faster. Thus, a
JSON file is used for uploading invoice data for GST return filing in GSTR-1 and
generation of e-way bill. Under the e-invoicing system, the seller will have to upload the
JSON invoice data onto the IRP. Thereafter, the IRP shall send back the signed JSON
to the seller. 

How to extract invoices into JSON


format and approaches followed?
A taxpayer has to raise a normal invoice on his accounting software by providing all the
necessary details as per e-invoice schema such as billing name and address, GSTIN of
the supplier, transaction value, tax amount, etc. After creating an invoice the taxpayer
must report this with IRP by uploading in JSON file. Let us understand the invoice
extraction options and routes available to upload invoice data with IRP. Ultimately by
either of the options or routes, a JSON file will be uploaded on IRP.  
Invoice Extraction Options:

1. Download invoices in excel format (.csv or .xlsx) in case of using third-party


applications (ASP)/GSP. These applications will convert data into JSON files for
uploading on the IRP.
2. Get an API integration done to extract the JSON of invoices directly from the
billing/ERP system.

Routes to approach IRP:


1. By using Third-Party Applications (ASP): 
The advantage of using third-party applications is that bulk uploading of JSONs will be
taken care of by the applications themselves on behalf of the users. The option is
favourable for the category of taxpayers having an aggregate turnover between Rs.100
crore and Rs.500 crore. JSON validation will be done.
2. By using ASP that is also a GSP:
The advantage of opting this route would help in achieving scalability and also benefit
from archiving. The government has released APIs to GSPs along with those taxpayers
with aggregate turnover over Rs.500 crore. Taxpayers, using GSPs interface, will get an
API User name and password. The GSPs will validate the data before submitting to
IRP, as per the JSON Schema and business rules.

Source: GSTN

3. Direct Interaction with IRP via API:


 
This option is currently made available to taxpayers with aggregate turnover over
Rs.500 crore. Taxpayers, using direct APIs, will get Client ID, ClientSecret, an API user
name and password.
By using convertors/tools available online, a taxpayer can also convert an invoice into
JSON by using converters available online but this method takes time as the taxpayer
has to upload one invoice at a time.

Sample format of JSON


The government has released two types of e-invoice format. One is only with mandatory
fields and the other one is with both mandatory and optional fields. Below is the
template with only mandatory fields:
There are two types of JSON that deal with e-invoicing. One is Request JSON and the
second one is Response JSON. A taxpayer uploads his details into IRP
through Request JSON and the IRP, in turn, provides validation errors, status and other
information through Response JSON. 
The JSON format of an Invoice is given below:

{
“TaxSch”:”GST”,
“Version”:”1.0”,
“Irn”:””,
"TranDtls": {
"Catg": "B2B",
"RegRev": "RG",
"Typ": "REG",
"EcmTrnSel": false,
"EcmTrn": "N",
"EcmGstin": null
},
"DocDtls": {
"Typ": "INV",
"No": "sadsd",
"Dt": "2019-11-25",
"OrgInvNo": null
},
"ExpDtls": {
"ExpCat": null,
"WthPay": null,
"ShipBNo": null,
"ShipBDt": "2019-11-25",
"Port": null,
"InvForCur": 0,
"ForCur": "BDT",
"CntCode": "BD"
},
"SellerDtls": {
"Gstin": "37BZNPM9430M1kl",
"TrdNm": "TAN TEST NIC",
"Bno": "TEST2",
"Bnm": "TEST1",
"Flno": "3RD FLOOR",
"Loc": "GANDHINAGAR",
"Dst": null,
"Pin": 518001,
"Stcd": 37,
"Ph": null,
"Em": null
},
"BuyerDtls": {
"Gstin": "37BZNPM9430M1kl",
"TrdNm": "TAN TEST NIC",
"Bno": "TEST2",
"Bnm": "TEST1",
"Flno": "3RD FLOOR",
"Loc": "GANDHINAGAR",
"Dst": null,
"Pin": 518001,
"Stcd": 37,
"Ph": null,
"Em": null
},
"DispDtls": {
"Gstin": "37BZNPM9430M1kl",
"TrdNm": "TAN TEST NIC",
"Bno": "TEST2",
"Bnm": "TEST1",
"Flno": "3RD FLOOR",
"Loc": "GANDHINAGAR",
"Dst": null,
"Pin": 518001,
"Stcd": 37,
"Ph": null,
"Em": null
},
"ShipDtls": {
"Gstin": "37BZNPM9430M1kl",
"TrdNm": "TAN TEST NIC",
"Bno": "TEST2",
"Bnm": "TEST1",
"Flno": "3RD FLOOR",
"Loc": "GANDHINAGAR",
"Dst": null,
"Pin": 518001,
"Stcd": 37,
"Ph": null,
"Em": null
},
"ValDtls": {
"AssVal": 100.00,
"CgstVal": 1.50,
"SgstVal": 1.50,
"IgstVal": 0.00,
"CesVal": 15.00,
"StCesVal": 36.00,
"CesNonAdVal": 0.00,
"Disc": 0, "OthChrg": 0,
"TotInvVal": 154.00,
},
"RefDtls": {
"InvRmk": null,
"InvStDt": "2019
-11
-25",
"InvEndDt": "2019
-11
-25",
"PrecInvNo": null,
"PrecInvDt": "2019
-11
-25",
"RecAdvRef": null,
"TendRef": null,
"ContrRef": null,
"ExtRef": null,
"ProjRef": null,
"PORef": null
},
"PayDtls": {
"Nam": null,
"Mode": null,
"FinInsBr": null,
"PayTerm": null,
"PayInstr": null,
"CrTrn": null,
"DirDr": null,
"CrDay": null,
"BalAmt": null,
"PayDueDt": null,
"AcctDet": null
},
"ItemsList":”Item” [{
"PrdNm": "dfasf",
"PrdDesc": "dfdfsdf",
"HsnCd": "10",
“BarCde”:””,
"Qty": 10,
“FreeQty”:0,
"Unit": "bag",
"UnitPrice": 10,
"TotAmt": 0,
"CgstRt": 1.500,
"SgstRt": 0,
"IgstRt": 0,
"CesRt": 15.000,
"CesNonAdVal": 0,
"StateCes": 36.000,
"TotItemVal": 100,
"Discount": 0,
"OthChrg": 0,
“AssAmt”:0
}]
}

You might also like