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. |