';

GSTR 2 Structural and Business Rules

You are here:
Estimated Reading Time: 25 Minutes

Regular transactions and CDN

Structural rules are as follows:

Parameter nameRule DescriptionRule description using JSON nameNature of ruleRule Fail Message
valAmount of Total invoice value
should not be less than 0.
 val >=0ErrorTotal Invoice/Note Amt should not be negative.
txvalAmount of Taxable value
should not be less than 0.
txval>=0ErrorTotal Taxable Amt should not be negative.
iamtIGST Tax Amount should
not be less than 0.
iamt>=0ErrorIGST Tax Amt should not be negative.
camtCGST Tax Amount should
not be less than 0.
camt>=0ErrorCGST Tax Amt should not be negative.
samtSGST Tax Amount should
not be less than 0.
samt>=0ErrorSGST Tax Amt should not be negative.
csamtCESS  Tax Amount should
not be less than 0.
csamt>=0ErrorCESS Tax Amt should not be negative.
tx_iIGST ITC Amount should
not be less than 0.
tx_i>=0ErrorIGST ITC Amt should not be negative.
tx_cCGST ITC Amount should
not be less than 0.
tx_c>=0ErrorCGST ITC Amt should not be negative.
tx_sSGST ITC Amount should
not be less than 0.
tx_s>=0ErrorSGST ITC Amt should not be negative.
tx_csCESS  ITC Amount should
not be less than 0.
tx_cs>=0ErrorCESS ITC Amt should not be negative.
idtInvoice Date should not
greater than return period
If dty = RI/BS, idt <= fpErrorInvoice Date should not be greater than return period.
idtInvoice Date should not
be 18 months older
If dty = RI/BS, idt not older than 18 monthsErrorInvoice Date should not be 18 months older.
idtInvoice Date should be on
or after the date of
registration.
If dty = RI/BS, idt  >= Registration dateErrorInvoice Date should be on or after the date of registration.
idtInvoice Date should be on
or after 1st July 2017
If dty  = RI/BS, idt >= 1st July 2017ErrorInvoice Date should be on or after 1st July 2017
nt_dtCredit/Debit note date should
not be greater then the
return period
If dty = C/D/R, nt_dt <= fpErrorCredit/Debit note date should not be greater then the return period.
nt_dtCredit/Debit note Date
should be on or after
the invoice date
If dty = C/D/R, nt_dt >= idtErrorCredit/Debit note Date should be on or after the invoice date.
nt_dtCredit/Debit note date should
be on or after the date
of registration.
If dty  = C/D/R, nt_dt >= Registration dateErrorCredit/Debit note date should be on or after the date of registration.
nt_dtCredit/Debit note date
should be on or after
1st July 2017
If dty = C/D/R, nt_dt >= 1st July 2017ErrorCredit/Debit note date should be on or after 1st July 2017.
sbdtBill of entry date should
not be greater than
return period.
If dty = IMG, sbdt <= fpErrorBill of entry date should not be greater than return period.
dtyIf Invoice type is IMG, then \
dty always = RI
inv_typ = IMG then dty = RI or BSErrorIn case of import of goods, credit note or debit note is not acceptable.
nt_numFor Credit note, debit note and refund voucher, Note/voucher number is mandatoryIf dty = C/D/R, nt_num ≠ blankErrorNote/Voucher number is required in case of a credit note, debit note or refund voucher.
nt_dtFor Credit note, debit note and refund voucher, Note/voucher date is mandatoryIf dty  = C/D/R, nt_num ≠ blankErrorNote/Voucher date is required in case of a credit note, debit note or refund voucher.
inumIf 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 ≠ blankErrorInvoice number is required in case of all invoices except for import of goods.
reflnumIn case of credit debit note, the reference invoice number should be presentIf dty = C/D/R, reflnum ≠ blankErrorInvoice number is required in case of all invoices except for import of goods.
inumIf invoice type is IMG,
then invoice number is
not required
If inv_typ = IMG, then inum = blankErrorInvoice number is not required for import of goods.
idtIf 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
ErrorInvoice date is required in case of all invoices except for import of goods.
refldtIn case of credit debit note, the reference
invoice date should
be present
If dty = C/D/R, refIdt≠ blankErrorInvoice date is required in case of all invoices except for import of goods.
idtIf invoice type is IMG,
then invoice date is
not is required
If inv_typ = IMG, then idt blankErrorInvoice date is not required for import of goods.
idtFor 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 julyErrorIf credit/debit note is related to Pre GST then Invoice date should be before 1st July.
idtFor 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 julyErrorIf credit/debit note is not related to Pre-GST invoice then Invoice date should be on or after 1st July.
sbnumFor import of goods Bill of Entry Number is requiredIf inv_typ = IMG, then sbnum ≠ blankErrorBill of Entry number is required in case of import of goods.
sbdtFor imports of goods
Bill of Entry date
is required
If inv_typ = IMG, then sbdt≠ blankErrorBill of Entry date is required in case of import of goods.
sbpcodeFor imports of goods
port code
is required
If inv_typ = IMG, then sbpcode ≠ blankErrorPort code is required in case of import of goods.
posIf Invoice type is B2B/RCM/SEWP/SEWOP/DE, then POS is mandatory.If inv_typ = B2B/RCM/SEWP/SEWOP/DE/IMS
then pos ≠ blank
ErrorPOS is mandatory.

Business rules are as follows:

Parameter nameRule DescriptionRule description using JSON nameNature of ruleRule Fail Message
iamtAmount of IGST should be taxable value multiplied by rate of IGSTiamt= txval*irt
(Rounding off range -1  to +1)
WarningAmount of IGST should be taxable value multiplied by rate of IGST.
camtAmount of CGST should be taxable value multiplied by rate of CGSTcamt=txval*crt
(Rounding off range -1  to +1)
WarningAmount of CGST should be taxable value multiplied by rate of CGST.
samtAmount of SGST should be taxable value multiplied by rate of SGSTsamt=txval*srt
(Rounding off range -1  to +1)
WarningAmount of SGST should be taxable value multiplied by rate of SGST.
txvalAmount of taxable value should always be
more than 0.
txval>0WarningTaxable value should always be greater than 0.
inv_typFor composite dealers, invoice type
should always be B2B
If rtpy = CD, then inv_typ = B2BErrorFor composite dealers, invoice type should always be B2B as these are registered dealers.
sply_tyIf invoice type is SEWP/SEWOP/DE/IMS/IMG, then supply type should always be interstateIf inv_typ = SEWP/SEWOP/DE/IMS/IMG, then sply_ty = InterErrorImports, 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 interstateIf rtpy = SEZ, then sply_ty = InterErrorSupplies 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 = InterErrorWhen 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 = IntraWarningIn case of intra-state supply, the place of supply should be same as the location of supplier.
ctpyType of counter-party needs to be
Registered in case if
gstin of counter-party
is provided.
If ctin ≠ blank, then ctpy = RWarningType 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 = UWarningType of counter-party needs to be unregistered in case if gstin of counter-party is not provided.
rtpyType of registered counter-party is mandatory in case if counter-party is registered.If inv_typ= B2B, then rtpy ≠ blankWarningType 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 blankWarningType 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 ≠  CDErrorRegistered 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 SEZIf inv_typ= IMG and ctpy = R, then rtpy = SEZErrorIn 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 filledIf rtpy = CD, then irt, iamt,crt,camt,srt,samt,csrt,csamt = blank or 0WarningTax rates and amounts should not be present for purchases from composition dealers.
ctinFor registered counter-party, gstin/uin of the counter-party should be present and it should be different from GSTIN of taxpayerIf inv_typ= B2B/SEWP/SEWOP/DE then ctin ≠ blank and ctin ≠ gstinErrorGSTIN/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 presentIf inv_typ= IMS/RCM/B2BUR then ctin= blankErrorIn case of import of services or if counter-party is unregistered, GSTIN/uin should not be present.
ctinFor 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 ≠ gstinErrorGSTIN/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 presentIf inv_typ= IMG and rtpy ≠ SEZ then ctin = blankErrorIn case of import of goods from other than SEZ, GSTIN/UIN should not be present
rsnFor Credit note, debit note and refund voucher, reason for issuance of note/voucher is requiredIf dty = C/D/R, rsn ≠ blankWarningReason for issuance of note/voucher is required in case of a credit note, debit note or refund voucher.
p_gstInformation is required whether credit note,
debit note or refund voucher
is related
to pre-GST
regime.
If dty = C/D/R, p_gst ≠ blankWarningWhether credit note, debit note or refund voucher is related to pre-GST regime is required
ont_numIf document status is revised, then original note/voucher number should be presentIf dty= C/D/R and dst=R then ont_num ≠ blankWarningOriginal 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 presentIf dty= C/D/R and dst=O or blank then ont_num = blankWarningOriginal note/voucher number is required only in case of a revised note/voucher.
ont_dtIf document status is revised, then original note/voucher date
should be present
If dty = C/D/R and dst=R then ont_dt ≠ blankWarningOriginal 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 = blankWarningOriginal note/voucher date is required only in case of a revised note/voucher.
oinumIf 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 ≠ blankWarningOriginal 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 = blankWarningOriginal invoice number is required only in case of a revised invoice.
oidtIf 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 ≠ blankWarningOriginal invoice date is required in case of a revised invoice.
If document status is original, then original invoice number should not be presentIf dst=O or blank then oidt = blankWarningOriginal invoice date is required only in case of a revised invoice
hsn_scHSN 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 croreIf gt>50000000 in fp, hsn_sc  ≠ blank and hsn_sc>= 4 digits but hsn_sc <=8 digitsWarningHSN 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 digitsWarningHSN 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
WarningHSN code is not mandatory but should not exceed 8 digits if gross turnover in previous financial year is less than Rs 1.5 crore.
descIn case if HSN is not provided, description is mandatoryIf hsn_sc = blank, then desc ≠ blankWarningIn case if HSN is not provided, description is mandatory.
ugcIf type = G, then unit quantity code (UQC) is mandatoryIf type = G, then ugc ≠ blankWarningIn case of supply of goods, unit quantity code of the goods sold is mandatory.
qtyIf type = G, then total Quantity is mandatoryIf type = G, then qty ≠ blankWarningIn case of supply of goods, quantity of the goods sold is mandatory.
irtIGST 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 >=0ErrorIGST rate should be filled for taxable inter-state supply.
IGST rate should not be filled when supply type is intra-stateIf sply_ty = Intra then irt = blank or 0ErrorIGST rate should not be filled for intra-state supply.
IGST rate should be zero when invoice type is SEZ imports without paymentIf inv_typ = SEWOP then irt = 0ErrorIGST rate should be zero when invoice type is SEZ imports without payment
iamtIGST 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 >= 0ErrorIGST 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 0ErrorIGST 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 = 0ErrorIGST amount should be zero when invoice type is SEZ imports without payment.
crtCGST 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 >= 0ErrorCGST rate should be filled for taxable intra-state supply.
CGST rate should not be filled when supply type is inter-stateIf sply_ty = Inter, then crt = blank or 0ErrorCGST rate should not be filled for inter-state supply.
camtCGST 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 >= 0ErrorCGST 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 0ErrorCGST amount should not be filled for inter-state supply.
srtSGST 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 >= 0ErrorSGST rate should be filled for taxable intra-state supply.
SGST rate should not be filled when supply type is inter-stateIf sply_ty = Inter, then srt = blank or 0ErrorSGST rate should not be filled for inter-state supply.
samtSGST 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 >= 0ErrorSGST 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 0ErrorSGST amount should not be filled for inter-state supply.
elgIn case of import of services, the eligibility should
always be
either is/no
If invtyp = IMS, then elg = is/noErrorIn 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/noErrorIn 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 = noErrorEligibility 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 = noWarningEligibility 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 = noWarningEligibility 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 = noWarningIf POS is different than the gstin of taxpayer, then eligibility for ITC should always be None.
tx_iIf 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 <= iamtWarningTotal 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 = 0WarningTotal 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 = 0WarningTotal 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 0WarningIGST ITC amount should not be filled for intra-state supply.
tx_cIf 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 <= camtWarningTotal 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 = 0WarningTotal 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 = 0WarningTotal 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 0WarningCGST ITC amount should not be filled for inter-state supply.
tx_sIf 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 <= samtWarningTotal 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 = 0WarningTotal 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 = 0WarningTotal 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 0WarningSGST ITC amount should not be filled for inter-state supply.
tx_csIf 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 <= csamtWarningTotal 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 = 0WarningTotal 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 0WarningTotal tax available as CESS ITC should be blank or 0 as there is no CESS amount.
txpIf 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 0WarningTax rates and amounts should not be present for Nil exempt and Non-GST supplies.
If document type is “BS” then tax applicability cannot be TIf dty = BS then txp ≠ T or blankErrorBill 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 TIf invtyp = B2BUR then txp ≠ T or blankErrorIn case of unregistered counter-party for B2BUR invoice type, tax applicability cannot be Taxable
If invoice type is “RCM” then tax applicability always as TIf invtyp = RCM then txp = TErrorIn case of unregistered counter-party for RCM invoice type, tax applicability shall always be Taxable

ISD Invoice Data

Structural rules are as follows:

Parameter nameRule DescriptionRule description using JSON nameNature of ruleRule Fail Message
inumIf document type is ISD Invoice,then
ISD Invoice Number is required
If dty = ISD RI, then inum ≠ blankErrorISD invoice number is required in case of ISD invoice.
idtIf document type is ISD Invoice, then ISD Invoice date
is required
If dty = ISD RI, then idt ≠ blankErrorISD invoice date is required in case of ISD invoice.
nt_numIf document type is ISD Credit
Note, then ISD Credit
Note Number
is required
If dty = ISD CN, then nt_num ≠ blankErrorISD credit note number is required in case of ISD credit note.
nt_dtIf document type is ISD Credit
Note, then ISD Credit Note date
is required
If dty = ISD CN, then nt_dt ≠ blankErrorISD credit note date is required in case of ISD credit note.

Business rules are as follows:

Parameter nameRule DescriptionRule description using JSON nameNature of ruleRule Fail Message
GSTIN_ISDGSTIN of ISD
should be present and it should
be different from GSTIN
of taxpayer
GSTIN_ISD must have data and GSTIN_ISD ≠ gstinErrorGSTIN of ISD is mandatory and it should be different from GSTIN of taxpayer.
ig_crIf 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 0WarningISD credit for CGST and SGST is not present, so IGST should not be blank.
cg_crIf 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 0WarningISD credit for IGST is not present, so CGST should not be blank.
sg_crIf 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 0WarningISD credit for IGST is not present, so SGST should not be blank.
tx_iIf 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_crErrorAmount of eligible IGST ITC should be present and should be less than or equal to ISD credit received as IGST amount.
tx_iIf 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 = blankErrorAmount of eligible IGST ITC should not be present as there is not ISD credit received as IGST amount.
tx_cIf 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_crErrorAmount of eligible CGST ITC should be present and should be less than or equal to ISD credit received as CGST amount.
tx_cIf 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 = blankErrorAmount of eligible CGST ITC should not be present as there is not ISD credit received as CGST amount.
tx_sIf 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_crErrorAmount of eligible SGST ITC should be present and should be less than or equal to ISD credit received as SGST amount.
tx_sIf 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 = blankErrorAmount of eligible SGST ITC should not be present as there is not ISD credit received as SGST amount.
tx_csIf 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 <= csamtErrorAmount of eligible CESS ITC should be present and should be less than or equal to ISD credit received as CESS amount.
tx_csIf 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 = blankErrorAmount 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 nameRule DescriptionRule description using JSON nameNature of ruleRule Fail Message
ad_amtGross Advance Paid/Adjusted Amount should not be
less than 0.
ad_amt >=0ErrorTotal Amount of Gross Advance Paid/Adjusted should not be negative.
iamtIGST Tax Amount should not be less than 0.iamt>=0ErrorIGST Amt should not be negative.
camtCGST Tax Amount should not
be less than 0.
camt>=0ErrorCGST Amt should not be negative.
samtSGST Tax Amount should not
be less than 0.
samt>=0ErrorSGST Amt should not be negative.
csamtCESS Tax Amount should not
be less than 0.
csamt>=0ErrorCESS Amt should not be negative.
doc_dtDocument Date should not be greater than return period.If dty = PV, doc_dt <= fpErrorDocument Date should not be greater than return period.
doc_dtDocument Date should be on
or after the date of registration.
If dty = PV, doc_dt > = Registration dateErrorDocument Date should be on or after the date of registration.
doc_dtDocument Date should be on
or after 1st July 2017
If dty = PV, doc_dt >= 1st July 2017ErrorDocument Date should be on or after 1st July 2017
idtInvoice Date should not greater than return periodIf dty = TP, idt <= fpErrorInvoice Date should not be greater than return period.
idtInvoice Date should not be 18 months olderIf dty = TP, idt not older than 18 monthsErrorInvoice Date should not be 18 months older.
idtInvoice Date should be on or after the date of registration.If dty = TP, idt >= Registration dateErrorInvoice Date should be on or after the date of registration.
idtInvoice Date should be on or after 1st July 2017If dty = TP, idt >= 1st July 2017ErrorInvoice Date should be on or after 1st July 2017
doc_numFor payment
voucher, document number is mandatory
If dty = PV, then doc_num ≠ blankErrorIn case of advance paid, payment voucher number should be present.
doc_dtFor payment
voucher,
document date is mandatory
If dty = PV, then doc_dt ≠ blankErrorIn case of advance paid, payment voucher date should be present.
inumFor tax paid adjustment,
invoice number is mandatory
If dty = TP, then inum ≠ blankErrorIn case of tax paid adjusted against advance payment, invoice number should be present.
idtFor tax paid adjustment,
invoice date is mandatory
If dty = TP, then idt ≠ blankErrorIn case of tax paid adjusted against advance payment, invoice date should be present.

Business rules are as follows:

Parameter nameRule DescriptionRule description using JSON nameNature of ruleRule Fail Message
iamtAmount of IGST should be taxable value multiplied by rate of IGSTiamt= ad_amt*irt
(Rounding off range -1  to +1)
WarningAmount of IGST should be taxable value multiplied by rate of IGST.
camtAmount of CGST should be taxable value multiplied by rate of CGSTcamt=ad_amt*crt
(Rounding off range -1  to +1)
WarningAmount of CGST should be taxable value multiplied by rate of CGST.
samtAmount of SGST should be taxable value multiplied
by rate of SGST
samt=ad_amt*srt
(Rounding off range -1  to +1)
WarningAmount of SGST should be taxable value multiplied by rate of SGST.
ad_amtAdvance amount should always
be greater than 0.
ad_amt > 0ErrorAdvance amount should always be greater than 0.
irtIGST rate should be filled when supply type is inter-stateIf sply_ty = Inter then irt > 0ErrorIGST rate should be filled for taxable inter-state supply.
IGST rate should not be filled when supply type is intra-stateIf sply_ty =Intra then irt = blank or 0ErrorIGST rate should not be filled for intra-state supply.
iamtIGST amount should be filled when supply type is inter-stateIf sply_ty = Inter then iamt > 0ErrorIGST amount should be filled for taxable inter-state supply.
IGST amount should not be filled when supply type is intra-stateIf sply_ty =Intra then iamt = blank or 0ErrorIGST amount should not be filled for intra-state supply.
crtCGST rate should be filled when supply type is intra-stateIf sply_ty =Intra then crt > 0ErrorCGST 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 0ErrorCGST rate should not be filled for inter-state supply.
camtCGST amount should be filled when supply type is intra-stateIf sply_ty =Intra then camt > 0ErrorCGST 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 0ErrorCGST amount should not be filled for inter-state supply.
srtSGST rate should
be filled when supply type is intra-state
If sply_ty =Intra then srt > 0ErrorSGST rate should be filled for taxable intra-state supply.
SGST rate should not be filled when supply type is inter-stateIf sply_ty = Inter then srt = blank or 0ErrorSGST rate should not be filled for inter-state supply.
samtSGST amount should be filled when supply type is intra-stateIf sply_ty =Intra then samt > 0ErrorSGST amount should be filled for taxable intra-state supply.
SGST amount should not be filled when supply type is inter-stateIf sply_ty = Inter then samt = blank or 0ErrorSGST amount should not be filled for inter-state supply.

Advance Paid and Tax Paid Aggregate Data

Structural rules are as follows:

Parameter nameRule DescriptionRule description using JSON nameNature of ruleRule Fail Message
ad_amtGross Advance Paid/Adjusted Amount should not be less than 0.ad_amt >=0ErrorTotal Amount of Gross Advance Paid/Adjusted should not be negative.
iamtIGST Tax Amount should not be less than 0.iamt>=0ErrorIGST Amt should not be negative.
camtCGST Tax Amount should not be less than 0.camt>=0ErrorCGST Amt should not be negative.
samtSGST Tax Amount should not be less than 0.samt>=0ErrorSGST Amt should not be negative.
csamtCESS  Tax Amount should not be less than 0.csamt>=0ErrorCESS Amt should not be negative.

Business rules are as follows:

Parameter nameRule DescriptionRule description using JSON nameNature of ruleRule Fail Message
iamtAmount of IGST should be taxable value multiplied by rate of IGSTiamt= ad_amt*irt
(Rounding off range -1  to +1)
WarningAmount of IGST should be taxable value multiplied by rate of IGST.
camtAmount of CGST should be taxable value multiplied by rate of CGSTcamt=ad_amt*crt
(Rounding off
range -1
to +1)
WarningAmount of CGST should be taxable value multiplied by rate of CGST.
samtAmount of SGST should be taxable value multiplied by rate of SGSTsamt=ad_amt*srt
(Rounding off
range -1
to +1)
WarningAmount of SGST should be taxable value multiplied by rate of SGST.
ad_amtAdvance amount should always be greater than 0.ad_amt > 0ErrorAdvance amount should always be greater than 0.
irtIGST rate should be filled when supply type is inter-stateIf sply_ty = inter
then irt > 0
ErrorIGST rate should be filled for taxable inter-state supply.
IGST rate should not be filled when supply type is intra-stateIf sply_ty = intra
then irt = blank
or 0
ErrorIGST rate should not be filled for intra-state supply.
iamtIGST amount should be filled when supply type is inter-stateIf sply_ty = inter
then iamt > 0
ErrorIGST amount should be filled for taxable inter-state supply.
IGST amount should not be filled when supply type is intra-stateIf sply_ty = intra then iamt = blank or 0ErrorIGST amount should not be filled for intra-state supply.
crtCGST rate should be filled when supply type is intra-stateIf sply_ty =Intra then crt > 0ErrorCGST rate should be filled for taxable intra-state supply.
CGST rate should not be filled when supply type is inter-stateIf sply_ty = inter then crt = blank or 0ErrorCGST rate should not be filled for inter-state supply.
camtCGST amount should be filled when supply type is intra-stateIf sply_ty =Intra then camt > 0ErrorCGST amount should be filled for taxable intra-state supply.
CGST amount should not be filled when supply type is inter-stateIf sply_ty = inter then camt = blank or 0ErrorCGST amount should not be filled for inter-state supply.
srtSGST rate should be filled when supply type is intra-stateIf sply_ty =Intra then srt > 0ErrorSGST rate should be filled for taxable intra-state supply.
SGST rate should not be filled when supply type is inter-stateIf sply_ty = inter then srt = blank or 0ErrorSGST rate should not be filled for inter-state supply.
samtSGST amount should be filled when supply type is intra-stateIf sply_ty =Intra then samt > 0ErrorSGST amount should be filled for taxable intra-state supply.
SGST amount should not be filled when supply type is inter-stateIf sply_ty = inter then samt = blank or 0ErrorSGST amount should not be filled for inter-state supply.

Composite/Unregistered/Nil rated Aggregated Data

Structural rules are as follows:

Parameter nameRule DescriptionRule description using JSON nameNature of ruleRule Fail Message
rtpyType of registered counter-party is mandatory in case if counter-party is registered.If ctpy = R, then rtpy ≠ blankErrorType 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-partyIf ctpy = U, then rtpy = RD or blankErrorType of registered counter-party shall always be Regular dealer or blank in case of unregistered counter-party.
txpIf type of registered counter-party is CD, then tax applicability will always be E.If rtpy = CD, then txp = EErrorIn case of composite dealer, tax applicability will always be E.

ITC Reversal Data

Structural rules are as follows:

Parameter nameRule DescriptionRule description using JSON nameNature of ruleRule Fail Message
iamtIGST 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 blankErrorIGST ITC reversal amount cannot be negative for ITC reversal codes other than “Other”
camtCGST 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 blankErrorCGST ITC reversal amount cannot be negative for ITC reversal codes other than “Other”
samtSGST 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 blankErrorSGST ITC reversal amount cannot be negative for ITC reversal codes other than “Other”
csamtCess 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 blankErrorCess ITC reversal amount cannot be negative for ITC reversal codes other than “Other”

HSN Summary

Business rules are as follow:

Parameter nameRule DescriptionRule description using JSON nameNature of ruleRule Fail Message
hsn_scHSN 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 digitsWarningHSN 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 digitsWarningHSN 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 croreIf gt<=15000000 in fp, hsn_sc >=0 digits but hsn_sc <=8 digits
hsn_sc can be bank
WarningHSN code is not mandatory but should not exceed 8 digits if gross turnover in previous financial year is less than Rs 1.5 crore.
descIn case if HSN is not provided, description is mandatoryIf hsn_sc = blank,
then desc ≠ blank
ErrorIn case if HSN is not provided, description is mandatory.
uqcIf type = G, then unit quantity code (UQC) is mandatoryIf type = G, then uqc ≠ blankErrorIn case of supply of goods, unit quantity code of the goods sold is mandatory.
qtyIf type = G, then total Quantity is mandatoryIf type = G, then qty ≠ blankErrorIn case of supply of goods, quantity of the goods sold is mandatory.