';

GSTR 2 Structural and Business Rules

You are here:
Estimated Reading Time: 25 Minutes

Regular transactions and CDN

Structural rules are as follows:

Parameter name Rule Description Rule description using JSON name Nature of rule Rule Fail Message
val Amount of Total invoice value
should not be less than 0.
 val >=0 Error Total Invoice/Note Amt should not be negative.
txval Amount of Taxable value
should not be less than 0.
txval>=0 Error Total Taxable Amt should not be negative.
iamt IGST Tax Amount should
not be less than 0.
iamt>=0 Error IGST Tax Amt should not be negative.
camt CGST Tax Amount should
not be less than 0.
camt>=0 Error CGST Tax Amt should not be negative.
samt SGST Tax Amount should
not be less than 0.
samt>=0 Error SGST Tax Amt should not be negative.
csamt CESS  Tax Amount should
not be less than 0.
csamt>=0 Error CESS Tax Amt should not be negative.
tx_i IGST ITC Amount should
not be less than 0.
tx_i>=0 Error IGST ITC Amt should not be negative.
tx_c CGST ITC Amount should
not be less than 0.
tx_c>=0 Error CGST ITC Amt should not be negative.
tx_s SGST ITC Amount should
not be less than 0.
tx_s>=0 Error SGST ITC Amt should not be negative.
tx_cs CESS  ITC Amount should
not be less than 0.
tx_cs>=0 Error CESS ITC Amt should not be negative.
idt Invoice Date should not
greater than return period
If dty = RI/BS, idt <= fp Error Invoice Date should not be greater than return period.
idt Invoice Date should not
be 18 months older
If dty = RI/BS, idt not older than 18 months Error Invoice Date should not be 18 months older.
idt Invoice Date should be on
or after the date of
registration.
If dty = RI/BS, idt  >= Registration date Error Invoice Date should be on or after the date of registration.
idt Invoice Date should be on
or after 1st July 2017
If dty  = RI/BS, idt >= 1st July 2017 Error Invoice Date should be on or after 1st July 2017
nt_dt Credit/Debit note date should
not be greater then the
return period
If dty = C/D/R, nt_dt <= fp Error Credit/Debit note date should not be greater then the return period.
nt_dt Credit/Debit note Date
should be on or after
the invoice date
If dty = C/D/R, nt_dt >= idt Error Credit/Debit note Date should be on or after the invoice date.
nt_dt Credit/Debit note date should
be on or after the date
of registration.
If dty  = C/D/R, nt_dt >= Registration date Error Credit/Debit note date should be on or after the date of registration.
nt_dt Credit/Debit note date
should be on or after
1st July 2017
If dty = C/D/R, nt_dt >= 1st July 2017 Error Credit/Debit note date should be on or after 1st July 2017.
sbdt Bill of entry date should
not be greater than
return period.
If dty = IMG, sbdt <= fp Error Bill of entry date should not be greater than return period.
dty If Invoice type is IMG, then \
dty always = RI
inv_typ = IMG then dty = RI or BS Error In case of import of goods, credit note or debit note is not acceptable.
nt_num For Credit note, debit note and refund voucher, Note/voucher number is mandatory If dty = C/D/R, nt_num ≠ blank Error Note/Voucher number is required in case of a credit note, debit note or refund voucher.
nt_dt For Credit note, debit note and refund voucher, Note/voucher date is mandatory If dty  = C/D/R, nt_num ≠ blank Error Note/Voucher date is required in case of a credit note, debit note or refund voucher.
inum If invoice type is B2B/SEWP/SEWOP/IMS/RCM/
B2BUR/DE, then invoice
number is required
If inv_typ = B2B/SEWP/SEWOP/IMS/RCM/B2BUR/DE, then inum ≠ blank Error Invoice number is required in case of all invoices except for import of goods.
reflnum In case of credit debit note, the reference invoice number should be present If dty = C/D/R, reflnum ≠ blank Error Invoice number is required in case of all invoices except for import of goods.
inum If invoice type is IMG,
then invoice number is
not required
If inv_typ = IMG, then inum = blank Error Invoice number is not required for import of goods.
idt If invoice type is B2B/SEWP/SEWOP/IMS/
RCM/B2BUR/DE,
then invoice date
is required
If inv_typ = B2B/SEWP/SEWOP/IMS/RCM/
B2BUR/DE,
then idt ≠ blank
Error Invoice date is required in case of all invoices except for import of goods.
refldt In case of credit debit note, the reference
invoice date should
be present
If dty = C/D/R, refIdt≠ blank Error Invoice date is required in case of all invoices except for import of goods.
idt If invoice type is IMG,
then invoice date is
not is required
If inv_typ = IMG, then idt blank Error Invoice date is not required for import of goods.
idt For Credit note, debit note if pre-GST regime is yes then invoice value should be before 1st july. If dty = C/D and p_gst=Y then idt<1st july Error If credit/debit note is related to Pre GST then Invoice date should be before 1st July.
idt For Credit note, debit note if pre-GST regime is No then invoice value should be on or after 1st july. If dty = C/D and p_gst=N then idt>=1st july Error If credit/debit note is not related to Pre-GST invoice then Invoice date should be on or after 1st July.
sbnum For import of goods Bill of Entry Number is required If inv_typ = IMG, then sbnum ≠ blank Error Bill of Entry number is required in case of import of goods.
sbdt For imports of goods
Bill of Entry date
is required
If inv_typ = IMG, then sbdt≠ blank Error Bill of Entry date is required in case of import of goods.
sbpcode For imports of goods
port code
is required
If inv_typ = IMG, then sbpcode ≠ blank Error Port code is required in case of import of goods.
pos If Invoice type is B2B/RCM/SEWP/SEWOP/DE, then POS is mandatory. If inv_typ = B2B/RCM/SEWP/SEWOP/DE/IMS
then pos ≠ blank
Error POS is mandatory.

Business rules are as follows:

Parameter name Rule Description Rule description using JSON name Nature of rule Rule Fail Message
iamt Amount of IGST should be taxable value multiplied by rate of IGST iamt= txval*irt
(Rounding off range -1  to +1)
Warning Amount of IGST should be taxable value multiplied by rate of IGST.
camt Amount of CGST should be taxable value multiplied by rate of CGST camt=txval*crt
(Rounding off range -1  to +1)
Warning Amount of CGST should be taxable value multiplied by rate of CGST.
samt Amount of SGST should be taxable value multiplied by rate of SGST samt=txval*srt
(Rounding off range -1  to +1)
Warning Amount of SGST should be taxable value multiplied by rate of SGST.
txval Amount of taxable value should always be
more than 0.
txval>0 Warning Taxable value should always be greater than 0.
inv_typ For composite dealers, invoice type
should always be B2B
If rtpy = CD, then inv_typ = B2B Error For composite dealers, invoice type should always be B2B as these are registered dealers.
sply_ty If invoice type is SEWP/SEWOP/DE/IMS/IMG, then supply type should always be interstate If inv_typ = SEWP/SEWOP/DE/IMS/IMG, then sply_ty = Inter Error Imports, SEZ and deemed imports are considered to be inter-state supplies.
If type of registered counter-party is SEZ then supply type should always be interstate If rtpy = SEZ, then sply_ty = Inter Error Supplies received from SEZ are considered to be inter-state supplies.
If POS is different than
the first two digits of
GSTIN
of the supplier,
the supply type
should always be inter
If inv_typ = B2B and POS ≠ first two digits ctin, then sply_ty = Inter Error When place of supply is different from the location of supplier, then it should be an interstate supply.
If supply type is intra,
then POS should be same as the first two digits of GSTIN
of the supplier
If inv_typ = B2B and POS = first two digits ctin, then sply_ty = Intra Warning In case of intra-state supply, the place of supply should be same as the location of supplier.
ctpy Type of counter-party needs to be
Registered in case if
gstin of counter-party
is provided.
If ctin ≠ blank, then ctpy = R Warning Type of counter-party needs to be Registered in case if gstin of counter-party is provided.
Type of counter-party needs to be
unregistered in case if
gstin of
counter-party is not provided.
If ctin = blank, then ctpy = U Warning Type of counter-party needs to be unregistered in case if gstin of counter-party is not provided.
rtpy Type of registered counter-party is mandatory in case if counter-party is registered. If inv_typ= B2B, then rtpy ≠ blank Warning Type of registered counter-party is mandatory in case if counter-party is registered.
Type of registered counter-party shall always be regular dealer or blank
in case of unregistered counter-party
If  = U, then rtpy = RD or blank Warning Type of registered counter-party shall always be regular dealer or blank in case of unregistered counter-party.
Registered counter-party cannot be
composite dealer in
case of SEZ and
Deemed Export supplies
If inv_typ= SEWP/SEWOP/DE, then rtpy ≠  CD Error Registered counter-party cannot be composite dealer in case of SEZ and Deemed Export supplies.
In case of import of goods from SEZ, the type of registered counter-party should be SEZ If inv_typ= IMG and ctpy = R, then rtpy = SEZ Error In case of import of goods from SEZ, the type of registered counter-party should be SEZ.
If type of registered counter-party is CD then tax rates and amounts should not be filled If rtpy = CD, then irt, iamt,crt,camt,srt,samt,csrt,csamt = blank or 0 Warning Tax rates and amounts should not be present for purchases from composition dealers.
ctin For registered counter-party, gstin/uin of the counter-party should be present and it should be different from GSTIN of taxpayer If inv_typ= B2B/SEWP/SEWOP/DE then ctin ≠ blank and ctin ≠ gstin Error GSTIN/uin is required for registered counter-party in case of B2B, SEZ and Deemed Export transactions.
For import of services or for unregistered counter-party, gstin/uin of the counter-party should not be present If inv_typ= IMS/RCM/B2BUR then ctin= blank Error In case of import of services or if counter-party is unregistered, GSTIN/uin should not be present.
ctin For import of goods
from SEZ, gstin/uin
of the counter-party
should be present
If inv_typ= IMG and rtpy = SEZ then ctin ≠ blank and ctin ≠ gstin Error GSTIN/uin is required for import of goods from SEZ
For import of goods from other than SEZ, gstin/uin of the counter-party should be present If inv_typ= IMG and rtpy ≠ SEZ then ctin = blank Error In case of import of goods from other than SEZ, GSTIN/UIN should not be present
rsn For Credit note, debit note and refund voucher, reason for issuance of note/voucher is required If dty = C/D/R, rsn ≠ blank Warning Reason for issuance of note/voucher is required in case of a credit note, debit note or refund voucher.
p_gst Information is required whether credit note,
debit note or refund voucher
is related
to pre-GST
regime.
If dty = C/D/R, p_gst ≠ blank Warning Whether credit note, debit note or refund voucher is related to pre-GST regime is required
ont_num If document status is revised, then original note/voucher number should be present If dty= C/D/R and dst=R then ont_num ≠ blank Warning Original note/voucher number is required in case of a revised note/voucher.
If document status is original, then original note/voucher number should not be present If dty= C/D/R and dst=O or blank then ont_num = blank Warning Original note/voucher number is required only in case of a revised note/voucher.
ont_dt If document status is revised, then original note/voucher date
should be present
If dty = C/D/R and dst=R then ont_dt ≠ blank Warning Original note/voucher date is required in case of a revised note/voucher.
If document status is original, then original note/voucher date
should not be present
If dty = C/D/R and dst=O or blank then ont_dt = blank Warning Original note/voucher date is required only in case of a revised note/voucher.
oinum If document status is revised, then original invoice number should
be present
If If inv_typ = B2B/SEWP/SEWOP/IMS/RCM/B2BUR/DE and dst=R then oinum ≠ blank Warning Original invoice number is required in case of a revised invoice.
If document status is original, then original invoice number should
not be present
If dst=O or blank then oinum = blank Warning Original invoice number is required only in case of a revised invoice.
oidt If document status is revised, then original
invoice date
should be present
If If inv_typ = B2B/SEWP/SEWOP/IMS/RCM/B2BUR/DE and dst=R then oidt ≠ blank Warning Original invoice date is required in case of a revised invoice.
If document status is original, then original invoice number should not be present If dst=O or blank then oidt = blank Warning Original invoice date is required only in case of a revised invoice
hsn_sc HSN code should be minimum of 4 digit  but should not exceed 8 digits if gross turnover in previous financial year is greater than Rs 5 crore If gt>50000000 in fp, hsn_sc  ≠ blank and hsn_sc>= 4 digits but hsn_sc <=8 digits Warning HSN should be minimum length 4 digits and maximum length 8 digits if gross turnover in previous financial period is greater than Rs 5 crore.
HSN code should be minimum of 2 digit but should not exceed 8 digits
if gross turnover in previous financial year is equal to or
greater than
Rs 1.5 crore and
less than 5 crore
If gt>15000000 and gt <=50000000 in fp, hsn_sc  ≠ blank and hsn_sc>= 2 digits but hsn_sc <=8 digits Warning HSN should be minimum length 2 digits and maximum length 8 digits if gross turnover in previous financial year is equal to or greater than Rs 1.5 crore and less than 5 crore.
HSN code is not mandatory but should not
exceed 8 digits if
gross turnover in previous financial year
is less than Rs 1.5 crore
If gt<=15000000 in fp, hsn_sc >=0 digits but hsn_sc <=8 digits
hsn_sc can be bank
Warning HSN code is not mandatory but should not exceed 8 digits if gross turnover in previous financial year is less than Rs 1.5 crore.
desc In case if HSN is not provided, description is mandatory If hsn_sc = blank, then desc ≠ blank Warning In case if HSN is not provided, description is mandatory.
ugc If type = G, then unit quantity code (UQC) is mandatory If type = G, then ugc ≠ blank Warning In case of supply of goods, unit quantity code of the goods sold is mandatory.
qty If type = G, then total Quantity is mandatory If type = G, then qty ≠ blank Warning In case of supply of goods, quantity of the goods sold is mandatory.
irt IGST rate should be filled when supply type is inter-state and tax applicability
is T and type of
registered dealer is
not composite dealer
If sply_ty = Inter, txp = T or blank and inv_typ = B2B/B2BUR/SEWP/DE/IMG/IMS and rtpy  ≠ CD, then irt >=0 Error IGST rate should be filled for taxable inter-state supply.
IGST rate should not be filled when supply type is intra-state If sply_ty = Intra then irt = blank or 0 Error IGST rate should not be filled for intra-state supply.
IGST rate should be zero when invoice type is SEZ imports without payment If inv_typ = SEWOP then irt = 0 Error IGST rate should be zero when invoice type is SEZ imports without payment
iamt IGST amount should be filled when supply type is inter-state and tax applicability is T and type
of registered dealer is not composite dealer
If sply_ty = Inter, txp = T or blank and inv_typ = B2B/B2BUR/SEWP/DE/IMG/IMS  and rtpy  ≠ CD, then iamt >= 0 Error IGST amount should be filled for taxable inter-state supply.
IGST amount should not
be filled when supply
type is intra-state
If sply_ty = Intra then iamt = blank or 0 Error IGST amount should not be filled for intra-state supply.
IGST amount should be zero when invoice
type is SEZ imports
without payment
If inv_typ = SEWOP then iamt = 0 Error IGST amount should be zero when invoice type is SEZ imports without payment.
crt CGST rate should be filled when supply type is intra-state and tax applicability
is T and type of registered dealer is not composite dealer
If sply_ty = Intra, txp = T or blank and rtpy ≠ CD, then crt >= 0 Error CGST rate should be filled for taxable intra-state supply.
CGST rate should not be filled when supply type is inter-state If sply_ty = Inter, then crt = blank or 0 Error CGST rate should not be filled for inter-state supply.
camt CGST amount should be filled when supply type is intra-state and tax applicability is T and type
of registered dealer is not composite dealer
If sply_ty = Intra, txp = T or blank and rtpy  ≠ CD, then camt >= 0 Error CGST amount should be filled for taxable intra-state supply.
CGST amount should not
be filled when supply type is inter-state
If sply_ty = Inter, then camt = blank or 0 Error CGST amount should not be filled for inter-state supply.
srt SGST rate should be filled when supply type is intra-state and tax applicability
is T and type of registered dealer is not composite dealer
If sply_ty = Intra, txp = T or blank and rtpy  ≠ CD, then srt >= 0 Error SGST rate should be filled for taxable intra-state supply.
SGST rate should not be filled when supply type is inter-state If sply_ty = Inter, then srt = blank or 0 Error SGST rate should not be filled for inter-state supply.
samt SGST amount should be filled when supply
type is intra-state
and tax applicability
is T and type
of registered dealer
is
not composite dealer
If sply_ty = Intra, txp = T or blank and rtpy  ≠ CD, then samt >= 0 Error SGST amount should be filled for taxable intra-state supply.
SGST amount should not
be filled when supply type is inter-state
If sply_ty = Inter, then samt = blank or 0 Error SGST amount should not be filled for inter-state supply.
elg In case of import of services, the eligibility should
always be
either is/no
If invtyp = IMS, then elg = is/no Error In case of import of services, the eligibility should always be either is/no
In case of import of goods, the eligibility should
always be either ip/cp/no
If invtyp= IMG, then elg = ip/cp/no Error In case of import of goods, the eligibility should always be either ip/cp/no
In case where IGST tax amount is
blank, then eligibility
for ITC should
always be None
If sply_ty = Inter and iamt = 0 or blank, then elg = no Error Eligibility for ITC should always be None for non-taxable supply transactions.
In case where CGST
and SGST tax amount is blank, then
eligibility for
ITC should always
be None
If sply_ty = Intra and camt = 0 or blank and samt = 0 or blank, then elg = no Warning Eligibility for ITC should always be None for non-taxable supply transactions.
In case of SEWP and SEWOP invoice types, Eligibility of
ITC should always
be none
If invtyp = SEWP/SEWOP, then elg = no Warning Eligibility should be none and ITC amounts should not be present as SEZ taxpayer cannot claim ITC on purchase made other than by way of import i.e when invoice type is SEWP and SEWOP.
If POS is different than
the gstin of taxpayer,
then eligibility for ITC should always be None
If invtyp = B2B/DE/IMS/RCM and POS ≠  first two digits of gstin then elg = no Warning If POS is different than the gstin of taxpayer, then eligibility for ITC should always be None.
tx_i If IGST amount
is present and
eligibility is other
than None, then total
tax available as
ITC IGST should be
less than or equal to
IGST Amount
If sply_ty = Inter and iamt ≠ blank or 0 and elg ≠ no, then tx_i ≠ blank and tx_i <= iamt Warning Total tax available as IGST ITC should be present and should be less than or equal to IGST amount.
If IGST amount
is present and eligibility
for ITC is none ,
then total tax
available as
ITC IGST should
be “0”
If  sply_ty = Inter and iamt ≠ blank or 0 and elg = no, then tx_i ≠ blank and tx_i = 0 Warning Total tax available as IGST ITC should be 0 as eligibility is None.
If IGST amount is
not present, then
total tax available
as ITC IGST
should be 0″
If sply_ty = Inter and iamt = blank or 0, then tx_i = 0 Warning Total tax available as IGST ITC should be 0 as IGST tax amount is blank or 0.
IGST ITC amount
should not be filled
for intra-state
supply.
If sply_ty = Intra then tx_i = blank or 0 Warning IGST ITC amount should not be filled for intra-state supply.
tx_c If CGST amount is
present and
eligibility
is other
than None,
then total
tax available as ITC
CGST should be
less than or equal
to CGST Amount
If sply_ty = Intra and camt ≠ blank or 0 and elg ≠ no, then tx_c ≠ blank and tx_c <= camt Warning Total tax available as CGST ITC should be present and should be less than or equal to CGST amount.
If CGST amount
is present and
eligibility
for ITC is none,
then total tax
available as
ITC CGST should be
blank or “0”
If  sply_ty = Intra and camt ≠ blank or 0 and elg = no, then tx_c ≠ blank and tx_c = 0 Warning Total tax available as CGST ITC should be blank or 0 as eligibility is None.
If CGST amount is not present, then total tax available as ITC CGST should be blank or “0” If sply_ty = Intra and camt = blank or 0, then tx_c = 0 Warning Total tax available as CGST ITC should be 0 as CGST tax amount is blank or 0.
CGST ITC amount s
hould not be filled for
inter-state supply.
If sply_ty = Intra then tx_c = blank or 0 Warning CGST ITC amount should not be filled for inter-state supply.
tx_s If SGST amount is
present and eligibility is other
than None, then total
tax available as ITC
SGST should be less
than or equal to SGST Amount
If sply_ty = Intra and samt ≠ blank or 0 and elg ≠ no, then tx_s ≠ blank and tx_s <= samt Warning Total tax available as SGST ITC should be present and should be less than or equal to SGST amount.
If SGST amount is
present and eligibility for ITC is none , then total
tax available as ITC
SGST should be blank or “0”
If  sply_ty = Intra and samt ≠ blank or 0 and elg = no, then tx_s ≠ blank and tx_s = 0 Warning Total tax available as SGST ITC should be blank or 0 as eligibility is None.
If SGST amount is not present, then total tax available as ITC SGST should be blank or “0” If sply_ty = Intra and samt = blank or 0, then tx_s = 0 Warning Total tax available as SGST ITC should be 0 as SGST tax amount is blank or 0.
SGST ITC amount should not be filled for inter-state supply. If sply_ty = Inter then tx_s = blank or 0 Warning SGST ITC amount should not be filled for inter-state supply.
tx_cs If CESS amount is
present and eligibility is other
than None, then total
tax available as ITC CESS should be less than
or equal to CESS Amount
If csamt ≠ blank or 0 and elg ≠ no and tx_cs ≠ blank or 0, then tx_cs <= csamt Warning Total tax available as CESS ITC should be less than or equal to CESS amount.
If CESS amount is
present and eligibility
for ITC is none, then total
tax available as ITC
CESS should be blank or “0”
If csamt ≠ blank or 0 and elg = no, then tx_cs = 0 Warning Total tax available as CESS ITC should be 0 as eligibility is None.
If CESS amount is not present, then total tax available as ITC
CESS should be blank
or “0”
If csamt = blank or 0, then tx_cs = blank or 0 Warning Total tax available as CESS ITC should be blank or 0 as there is no CESS amount.
txp If tax applicability is Nil, Exempt and Non-GST
then tax rates and
amounts should not be filled
If txp = L/E/N, then irt, iamt,crt,camt,srt,samt,csrt,csamt = blank or 0 Warning Tax rates and amounts should not be present for Nil exempt and Non-GST supplies.
If document type is “BS” then tax applicability cannot be T If dty = BS then txp ≠ T or blank Error Bill of supply cannot be raised in case if even a single line item is taxable.
If invoice type is “B2BUR” then tax applicability cannot be T If invtyp = B2BUR then txp ≠ T or blank Error In case of unregistered counter-party for B2BUR invoice type, tax applicability cannot be Taxable
If invoice type is “RCM” then tax applicability always as T If invtyp = RCM then txp = T Error In case of unregistered counter-party for RCM invoice type, tax applicability shall always be Taxable

ISD Invoice Data

Structural rules are as follows:

Parameter name Rule Description Rule description using JSON name Nature of rule Rule Fail Message
inum If document type is ISD Invoice,then
ISD Invoice Number is required
If dty = ISD RI, then inum ≠ blank Error ISD invoice number is required in case of ISD invoice.
idt If document type is ISD Invoice, then ISD Invoice date
is required
If dty = ISD RI, then idt ≠ blank Error ISD invoice date is required in case of ISD invoice.
nt_num If document type is ISD Credit
Note, then ISD Credit
Note Number
is required
If dty = ISD CN, then nt_num ≠ blank Error ISD credit note number is required in case of ISD credit note.
nt_dt If document type is ISD Credit
Note, then ISD Credit Note date
is required
If dty = ISD CN, then nt_dt ≠ blank Error ISD credit note date is required in case of ISD credit note.

Business rules are as follows:

Parameter name Rule Description Rule description using JSON name Nature of rule Rule Fail Message
GSTIN_ISD GSTIN of ISD
should be present and it should
be different from GSTIN
of taxpayer
GSTIN_ISD must have data and GSTIN_ISD ≠ gstin Error GSTIN of ISD is mandatory and it should be different from GSTIN of taxpayer.
ig_cr If ISD Credit for CGST and SGST
is not present,
then ISD credit
for IGST has to
be present
If cg_cr = blank or 0 and sg_cr = blank or 0 , then ig_cr ≠ blank or 0 Warning ISD credit for CGST and SGST is not present, so IGST should not be blank.
cg_cr If ISD Credit for IGST is not
present, then
ISD credit for
CGST has to be present
If ig_cr = blank or 0 , then cg_cr ≠ blank or 0 Warning ISD credit for IGST is not present, so CGST should not be blank.
sg_cr If ISD Credit
for IGST is not
present, then
ISD credit for
SGST has to be present
If ig_cr = blank or 0 , then sg_cr ≠ blank or 0 Warning ISD credit for IGST is not present, so SGST should not be blank.
tx_i If amount of ISD credit received
as IGST is present, then amount of eligible ITC IGST should be less
than or equal to
ISD credit received as IGST
If ig_cr ≠ blank, then tx_i ≠ blank and tx_i <= ig_cr Error Amount of eligible IGST ITC should be present and should be less than or equal to ISD credit received as IGST amount.
tx_i If amount of ISD credit received as IGST is not
present, then amount of eligible ITC IGST should
be blank.
If ig_cr = blank, then tx_i = blank Error Amount of eligible IGST ITC should not be present as there is not ISD credit received as IGST amount.
tx_c If amount of ISD credit received as CGST is present, then amount of eligible ITC CGST should be less
than or equal to
ISD credit
received as CGST
If cg_cr ≠ blank or 0 , then tx_c <= cg_cr Error Amount of eligible CGST ITC should be present and should be less than or equal to ISD credit received as CGST amount.
tx_c If amount of ISD credit received as CGST is not
present, then amount of eligible ITC CGST should
be blank.
If cg_cr = blank, then tx_c = blank Error Amount of eligible CGST ITC should not be present as there is not ISD credit received as CGST amount.
tx_s If amount of ISD credit received as SGST is present, then amount of eligible ITC SGST should be less
than or equal to
ISD credit
received as
SGST
If sg_cr ≠ blank or 0 , then tx_s <= sg_cr Error Amount of eligible SGST ITC should be present and should be less than or equal to ISD credit received as SGST amount.
tx_s If amount of ISD credit received as SGST is not present, then amount of eligible ITC SGST should be blank. If sg_cr = blank, then tx_s = blank Error Amount of eligible SGST ITC should not be present as there is not ISD credit received as SGST amount.
tx_cs If amount of ISD credit received as CESS is present, then amount of eligible ITC CESS should be less
than or equal
to ISD credit
received as CESS
If csamt ≠ blank or 0 , then tx_cs <= csamt Error Amount of eligible CESS ITC should be present and should be less than or equal to ISD credit received as CESS amount.
tx_cs If amount of ISD credit received as CESS is not present, then amount of eligible ITC CESS should be blank. If csamt = blank, then tx_cs = blank Error Amount of eligible CESS ITC should not be present as there is not ISD credit received as CESS amount.

Advance Paid and Tax Paid Line Item Data

Structural rules are as follows:

Parameter name Rule Description Rule description using JSON name Nature of rule Rule Fail Message
ad_amt Gross Advance Paid/Adjusted Amount should not be
less than 0.
ad_amt >=0 Error Total Amount of Gross Advance Paid/Adjusted should not be negative.
iamt IGST Tax Amount should not be less than 0. iamt>=0 Error IGST Amt should not be negative.
camt CGST Tax Amount should not
be less than 0.
camt>=0 Error CGST Amt should not be negative.
samt SGST Tax Amount should not
be less than 0.
samt>=0 Error SGST Amt should not be negative.
csamt CESS Tax Amount should not
be less than 0.
csamt>=0 Error CESS Amt should not be negative.
doc_dt Document Date should not be greater than return period. If dty = PV, doc_dt <= fp Error Document Date should not be greater than return period.
doc_dt Document Date should be on
or after the date of registration.
If dty = PV, doc_dt > = Registration date Error Document Date should be on or after the date of registration.
doc_dt Document Date should be on
or after 1st July 2017
If dty = PV, doc_dt >= 1st July 2017 Error Document Date should be on or after 1st July 2017
idt Invoice Date should not greater than return period If dty = TP, idt <= fp Error Invoice Date should not be greater than return period.
idt Invoice Date should not be 18 months older If dty = TP, idt not older than 18 months Error Invoice Date should not be 18 months older.
idt Invoice Date should be on or after the date of registration. If dty = TP, idt >= Registration date Error Invoice Date should be on or after the date of registration.
idt Invoice Date should be on or after 1st July 2017 If dty = TP, idt >= 1st July 2017 Error Invoice Date should be on or after 1st July 2017
doc_num For payment
voucher, document number is mandatory
If dty = PV, then doc_num ≠ blank Error In case of advance paid, payment voucher number should be present.
doc_dt For payment
voucher,
document date is mandatory
If dty = PV, then doc_dt ≠ blank Error In case of advance paid, payment voucher date should be present.
inum For tax paid adjustment,
invoice number is mandatory
If dty = TP, then inum ≠ blank Error In case of tax paid adjusted against advance payment, invoice number should be present.
idt For tax paid adjustment,
invoice date is mandatory
If dty = TP, then idt ≠ blank Error In case of tax paid adjusted against advance payment, invoice date should be present.

Business rules are as follows:

Parameter name Rule Description Rule description using JSON name Nature of rule Rule Fail Message
iamt Amount of IGST should be taxable value multiplied by rate of IGST iamt= ad_amt*irt
(Rounding off range -1  to +1)
Warning Amount of IGST should be taxable value multiplied by rate of IGST.
camt Amount of CGST should be taxable value multiplied by rate of CGST camt=ad_amt*crt
(Rounding off range -1  to +1)
Warning Amount of CGST should be taxable value multiplied by rate of CGST.
samt Amount of SGST should be taxable value multiplied
by rate of SGST
samt=ad_amt*srt
(Rounding off range -1  to +1)
Warning Amount of SGST should be taxable value multiplied by rate of SGST.
ad_amt Advance amount should always
be greater than 0.
ad_amt > 0 Error Advance amount should always be greater than 0.
irt IGST rate should be filled when supply type is inter-state If sply_ty = Inter then irt > 0 Error IGST rate should be filled for taxable inter-state supply.
IGST rate should not be filled when supply type is intra-state If sply_ty =Intra then irt = blank or 0 Error IGST rate should not be filled for intra-state supply.
iamt IGST amount should be filled when supply type is inter-state If sply_ty = Inter then iamt > 0 Error IGST amount should be filled for taxable inter-state supply.
IGST amount should not be filled when supply type is intra-state If sply_ty =Intra then iamt = blank or 0 Error IGST amount should not be filled for intra-state supply.
crt CGST rate should be filled when supply type is intra-state If sply_ty =Intra then crt > 0 Error CGST rate should be filled for taxable intra-state supply.
CGST rate should
not be filled when supply type
is inter-state
If sply_ty = Inter then crt = blank or 0 Error CGST rate should not be filled for inter-state supply.
camt CGST amount should be filled when supply type is intra-state If sply_ty =Intra then camt > 0 Error CGST amount should be filled for taxable intra-state supply.
CGST amount should not be filled
when supply type
is inter-state
If sply_ty = Inter then camt = blank or 0 Error CGST amount should not be filled for inter-state supply.
srt SGST rate should
be filled when supply type is intra-state
If sply_ty =Intra then srt > 0 Error SGST rate should be filled for taxable intra-state supply.
SGST rate should not be filled when supply type is inter-state If sply_ty = Inter then srt = blank or 0 Error SGST rate should not be filled for inter-state supply.
samt SGST amount should be filled when supply type is intra-state If sply_ty =Intra then samt > 0 Error SGST amount should be filled for taxable intra-state supply.
SGST amount should not be filled when supply type is inter-state If sply_ty = Inter then samt = blank or 0 Error SGST amount should not be filled for inter-state supply.

Advance Paid and Tax Paid Aggregate Data

Structural rules are as follows:

Parameter name Rule Description Rule description using JSON name Nature of rule Rule Fail Message
ad_amt Gross Advance Paid/Adjusted Amount should not be less than 0. ad_amt >=0 Error Total Amount of Gross Advance Paid/Adjusted should not be negative.
iamt IGST Tax Amount should not be less than 0. iamt>=0 Error IGST Amt should not be negative.
camt CGST Tax Amount should not be less than 0. camt>=0 Error CGST Amt should not be negative.
samt SGST Tax Amount should not be less than 0. samt>=0 Error SGST Amt should not be negative.
csamt CESS  Tax Amount should not be less than 0. csamt>=0 Error CESS Amt should not be negative.

Business rules are as follows:

Parameter name Rule Description Rule description using JSON name Nature of rule Rule Fail Message
iamt Amount of IGST should be taxable value multiplied by rate of IGST iamt= ad_amt*irt
(Rounding off range -1  to +1)
Warning Amount of IGST should be taxable value multiplied by rate of IGST.
camt Amount of CGST should be taxable value multiplied by rate of CGST camt=ad_amt*crt
(Rounding off
range -1
to +1)
Warning Amount of CGST should be taxable value multiplied by rate of CGST.
samt Amount of SGST should be taxable value multiplied by rate of SGST samt=ad_amt*srt
(Rounding off
range -1
to +1)
Warning Amount of SGST should be taxable value multiplied by rate of SGST.
ad_amt Advance amount should always be greater than 0. ad_amt > 0 Error Advance amount should always be greater than 0.
irt IGST rate should be filled when supply type is inter-state If sply_ty = inter
then irt > 0
Error IGST rate should be filled for taxable inter-state supply.
IGST rate should not be filled when supply type is intra-state If sply_ty = intra
then irt = blank
or 0
Error IGST rate should not be filled for intra-state supply.
iamt IGST amount should be filled when supply type is inter-state If sply_ty = inter
then iamt > 0
Error IGST amount should be filled for taxable inter-state supply.
IGST amount should not be filled when supply type is intra-state If sply_ty = intra then iamt = blank or 0 Error IGST amount should not be filled for intra-state supply.
crt CGST rate should be filled when supply type is intra-state If sply_ty =Intra then crt > 0 Error CGST rate should be filled for taxable intra-state supply.
CGST rate should not be filled when supply type is inter-state If sply_ty = inter then crt = blank or 0 Error CGST rate should not be filled for inter-state supply.
camt CGST amount should be filled when supply type is intra-state If sply_ty =Intra then camt > 0 Error CGST amount should be filled for taxable intra-state supply.
CGST amount should not be filled when supply type is inter-state If sply_ty = inter then camt = blank or 0 Error CGST amount should not be filled for inter-state supply.
srt SGST rate should be filled when supply type is intra-state If sply_ty =Intra then srt > 0 Error SGST rate should be filled for taxable intra-state supply.
SGST rate should not be filled when supply type is inter-state If sply_ty = inter then srt = blank or 0 Error SGST rate should not be filled for inter-state supply.
samt SGST amount should be filled when supply type is intra-state If sply_ty =Intra then samt > 0 Error SGST amount should be filled for taxable intra-state supply.
SGST amount should not be filled when supply type is inter-state If sply_ty = inter then samt = blank or 0 Error SGST amount should not be filled for inter-state supply.

Composite/Unregistered/Nil rated Aggregated Data

Structural rules are as follows:

Parameter name Rule Description Rule description using JSON name Nature of rule Rule Fail Message
rtpy Type of registered counter-party is mandatory in case if counter-party is registered. If ctpy = R, then rtpy ≠ blank Error Type of registered counter-party is mandatory in case if counter-party is registered.
Type of registered counter-party shall always be Regular dealer or blank in case of unregistered counter-party If ctpy = U, then rtpy = RD or blank Error Type of registered counter-party shall always be Regular dealer or blank in case of unregistered counter-party.
txp If type of registered counter-party is CD, then tax applicability will always be E. If rtpy = CD, then txp = E Error In case of composite dealer, tax applicability will always be E.

ITC Reversal Data

Structural rules are as follows:

Parameter name Rule Description Rule description using JSON name Nature of rule Rule Fail Message
iamt IGST ITC reversal amount cannot be negative for ITC reversal codes other than “Other” If rev_code = rule2_2, rule7_1_m, rule8_1_h, rule7_2_a, rule7_2_b, revitc, then iamt >=0 or blank Error IGST ITC reversal amount cannot be negative for ITC reversal codes other than “Other”
camt CGST ITC reversal amount cannot be negative for ITC reversal codes other than “Other” If rev_code = rule2_2, rule7_1_m, rule8_1_h, rule7_2_a, rule7_2_b, revitc, then camt >=0 or blank Error CGST ITC reversal amount cannot be negative for ITC reversal codes other than “Other”
samt SGST ITC reversal amount cannot be negative for ITC reversal codes other than “Other” If rev_code = rule2_2, rule7_1_m, rule8_1_h, rule7_2_a, rule7_2_b, revitc, then samt >=0 or blank Error SGST ITC reversal amount cannot be negative for ITC reversal codes other than “Other”
csamt Cess ITC reversal amount cannot be negative for ITC reversal codes other than “Other” If rev_code = rule2_2, rule7_1_m, rule8_1_h, rule7_2_a, rule7_2_b, revitc, then csamt >=0 or blank Error Cess ITC reversal amount cannot be negative for ITC reversal codes other than “Other”

HSN Summary

Business rules are as follow:

Parameter name Rule Description Rule description using JSON name Nature of rule Rule Fail Message
hsn_sc HSN code should be minimum of 4 digit but should not exceed
8 digits if gross
turnover in previous financial year is greater than Rs 5 crore
If gt>50000000 in fp, hsn_sc  ≠ blank and hsn_sc>= 4 digits but hsn_sc <=8 digits Warning HSN should be minimum length 4 digits and maximum length 8 digits if gross turnover in previous financial period is greater than Rs 5 crore.
HSN code should be minimum of 2 digit but should not exceed 8 digits if gross turnover in previous financial year is equal to or
greater than Rs 1.5 crore and less
than 5 crore
If gt>15000000 and gt <=50000000 in fp, hsn_sc  ≠ blank and hsn_sc>= 2 digits but hsn_sc <=8 digits Warning HSN should be minimum length 2 digits and maximum length 8 digits if gross turnover in previous financial year is equal to or greater than Rs 1.5 crore and less than 5 crore.
HSN code is not mandatory but should not exceed 8 digits if gross turnover in previous financial year is less than Rs 1.5 crore If gt<=15000000 in fp, hsn_sc >=0 digits but hsn_sc <=8 digits
hsn_sc can be bank
Warning HSN code is not mandatory but should not exceed 8 digits if gross turnover in previous financial year is less than Rs 1.5 crore.
desc In case if HSN is not provided, description is mandatory If hsn_sc = blank,
then desc ≠ blank
Error In case if HSN is not provided, description is mandatory.
uqc If type = G, then unit quantity code (UQC) is mandatory If type = G, then uqc ≠ blank Error In case of supply of goods, unit quantity code of the goods sold is mandatory.
qty If type = G, then total Quantity is mandatory If type = G, then qty ≠ blank Error In case of supply of goods, quantity of the goods sold is mandatory.