GSTR 1 Structural and Business Rules

You are here:
Estimated Reading Time: 14 Minutes

Regular transactions including Export 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/Credit note value should not be negative.
txval Amount of  Taxable value should not be less than 0. txval>=0 Error Total Invoice/Credit note taxable value should not be negative.
iamt Amount of  IGST Amount should not be less than 0. iamt>=0 Error Total Invoice/Credit note IGST value should not be negative.
camt Amount of  CGST Amount should not be less than 0. camt>=0 Error Total Invoice/Credit note CGST value should not be negative.
samt Amount of  SGST Amount should not be less than 0. samt>=0 Error Total Invoice/Credit SGST note value should not be negative.
csamt Amount of  CESS  Amount should not be less than 0. csamt>=0 Error Total Invoice/Credit note CESS value 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 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 equal 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.
dst if Invoice type is B2CS and Document status in not null then document status should not be R. if inv_typ=B2CS and dst ≠ blank, then dst  ≠ R Error For amendment of B2CS Invoice type data is to be provided in Aggregate format.
ctin For registered counterparty, gstin/uin of the counterparty should be present and it should be different from GSTIN of taxpayer If inv_typ= B2B/SEWP/SEWOP/DE/CBW then ctin ≠ blank and ctin ≠ gstin Error GSTIN/UIN is required for registered B2B/SEZ counterparty/Deemed exports/Sales from custom bonded warehouse and it should not be same as GSTIN of taxpayer.
For export transactions or for unregistered counterparty, gstin/uin of the counterparty should not be present If inv_typ= B2CL/B2CS/EXWP/EXWOP  then ctin = blank Error In case of export transactions or if counterparty is unregistered, GSTIN/UIN should not be present.
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_num For Regular invoice or Bill of Supply, Note/voucher number should not be present If dty = RI/BS , nt_num = blank Error Note/Voucher number is not required in case of a regular invoice or bill of supply.
nt_dt For Credit note, debit note and refund voucher, Note/voucher date is mandatory If dty = C/D/R , nt_dt ≠ blank Error Note/Voucher date is required in case of a credit note, debit note or refund voucher.
nt_dt For Regular invoice or Bill of Supply, Note/voucher date should not be present If dty = RI/BS , nt_dt = blank Error Note/Voucher date is not required in case of a regular invoice or bill of supply.
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 Invoice date should be on or after 1st July 2017 when the credit/debit note does not pertain to pre-GST.

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 For inv_typ = B2B/B2CL/ B2CS/ SEWP/DE/EXWP
If (Difference Percent) omon = blank, then
iamt= txval*irtIf (Difference Percent) omon ≠ blank , then
iamt= txval*irt*omonRound off till two decimals (i.e if value 0.2550 an more then 0.26 and if 0.2549 or less then 0.25)
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 For inv_typ = B2B/B2CL/ B2CS/ SEWP/DE/EXWP
If (Difference Percent) omon = blank, then
camt=txval*crt
If (Difference Percent) omon ≠ blank , then
samt= txval*crt*omonRound off till two decimals (i.e if value 0.2550 an more then 0.26 and if 0.2549 or less then 0.25)
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 For inv_typ = B2B/B2CL/ B2CS/ SEWP/DE/EXWP
If (Difference Percent) omon = blank, then
samt=txval*srt
If (Difference Percent) omon ≠ blank , then
samt= txval*srt*omonRound off till two decimals (i.e if value 0.2550 an more then 0.26 and if 0.2549 or less then 0.25)
Warning Amount of SGST should be taxable value multiplied by rate of SGST.
idt Invoice Date should not be 18 months older If dty = RI/BS, idt not older than 18 months Warning Invoice Date should not be 18 months older
txval Amount of taxable value should always be more than 0 in case of supplies other than free supplies if txp = T/L/E/N, txval>0 Error Taxable value should always be greater than 0.
sply_ty If Invoice type is B2CL/SEWP/SEWOP/DE/EXWP/EXWOP/CBW, then supply type should always be interstate If inv_typ = B2CL/SEWP/SEWOP/EXWP/EXWOP/CBW
then sply_ty = Inter
Error Large Consumer (B2CL), Exports, SEZ exports and sales from custom bonded warehouse (CBW) are considered to be inter-state supplies.
sply_ty If Invoice type is B2CL/SEWP/SEWOP/DE/EXWP/EXWOP, then supply type should always be interstate If taxpayerType = SEZ, then sply_ty = Inter Error Supplies by a SEZ taxpayer are considered to be inter-state supplies.
ctpy Type of counterparty needs to be Registered in case of B2B DE SEZ and CBW invoices If inv_typ= B2B/SEWP/SEWOP/DE/CBW, then ctpy = R Error Type of counterparty should be registered in case of B2B DE SEZ and CBW invoice.
Type of counterparty needs to be unregistered in case of B2CL, B2CS and export invoices If inv_typ= B2CL/B2CS/EXWP/EXWOP, then ctpy = U Error Type of counterparty should be unregistered in case of B2CL, B2CS and export invoices.
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 Error 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 Error 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 Error 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 type is “RI” and document status is revised, then original invoice number should be present If dty=RI and dst=R then oinum ≠ blank Error 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 type is “RI” and document status is revised,  then original invoice date should be present If  dty=RI and dst=R then oidt ≠ blank Error 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.
val If Document type is “RI” and  invoice type is “B2CL” then invoice value  should be more than 2.5 Lakhs If dty=RI, POS ≠ first two digits gstin and inv_typ=B2CL then val > 2.5 Lakh Error In case of interstate supplies to large customers (B2CL), invoice value should be greater than 2.5 Lakhs.
If invoice type is “B2CS” and supply type is Inter then invoice value should not be more than 2.5 Lakhs If dty=RI and inv_typ=B2CS and POS ≠ first two digits gstin, then val <= 2.5 Lakh Error In case of interstate supplies to small customers (B2CS), invoice value should be less than or equal to 2.5 Lakhs.
pos If Invoice type is B2B/B2CS/B2CL/SEWP/SEWOP/DE/CBW, then POS is mandatory. If inv_typ = B2B/B2CS/B2CL/SEWP/SEWOP/DE/CBW
then pos ≠ blank
Error POS is mandatory.
If supply type is inter, then POS should not be same as the first two digits of GSTIN of the taxpayer If taxpayerType ≠ SEZ, inv_typ = B2B/B2CS/B2CL/SEWP/SEWOP/DE and sply_ty = Inter, then POS ≠ first two digits gstin Error In case of inter-state supply, the place of supply should be different from the location of supplier.
If supply type is intra, then POS should be same as the first two digits of GSTIN of the taxpayer If inv_typ = B2B/B2CS/B2CL/DE and sply_ty = Intra, then POS = first two digits gstin Error In case of intra-state supply, the place of supply should be same as the location of supplier.
od_num If tax is paid under provisional assessment, then Provisional assessment Order Number is required If prs = Y, then od_num ≠ blank Warning Provisional assessment Order Number is required if tax is paid under provisional assessment.
od_dt If tax is paid under provisional assessment, then Provisional assessment Order date is required If prs = Y, then od_dt ≠ blank Warning Provisional assessment Order date is required if tax is paid under provisional assessment.
sbnum If Invoice type is EXWP/EXWOP then Shipping Bill or Bill of Export Number is required If inv_typ = EXWP/EXWOP and ty = G or blank , then sbnum ≠ blank Warning Shipping Bill or Bill of Export Number is required in case of export of goods.
If Shipping Bill Date is not blank then shipping Bill Number is also required. If inv_typ = EXWP/EXWOP and sbdt ≠ blank then sbnum ≠ blank Error Shipping Bill Number is required if shipping Bill Date is present.
sbdt If Invoice type is EXWP/EXWOP then Shipping Bill or Bill of Export Date is required If inv_typ = EXWP/EXWOP and ty = G or blank , then sbdt ≠ blank Warning Shipping Bill or Bill of Export Date is required in case of export of goods.
If Shipping Bill Number is not blank then shipping Bill Date is also required If inv_typ = EXWP/EXWOP and sbnum≠ blank then sbdt ≠ blank Error Shipping Bill Date is required if shipping Bill Number is present.
If Shipping bill number is not blank then shipping bill date is equal and more than invoice date and shipping bill number should be before or on current date if inv_typ = EXWP/EXWOP and sbdt is ≠ blank then sbdt >= idt and sbdt<= current date Error Shipping bill date (sbdt) should be on or after invoice date (idt) and on or before current date.
sbpcode If Invoice type is EXWP/EXWOP then Shipping Bill Port Code is required If inv_typ = EXWP/EXWOP and ty = G or blank , then sbpcode ≠ blank Warning Shipping Bill Port Code is required in case of export of goods.
If Shipping Bill Number is not blank then port code is also required If inv_typ = EXWP/EXWOP and sbnum≠ blank then sbpcode ≠ blank Error Shipping Bill Date is required if shipping Bill Number is present.
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 tax applicablity taxable , nil or exempt If gt>50000000 in fp, hsn_sc  ≠ blank and hsn_sc>= 4 digits but hsn_sc <=8 digits if txp=T,L,E 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 tax applicablity taxable , nil or exempt If gt>15000000 and gt <=50000000 in fp, hsn_sc  ≠ blank and hsn_sc>= 2 digits but hsn_sc <=8 digits txp=T,L,E 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 tax applicablity taxable , nil or exempt If gt<=15000000 in fp, hsn_sc >=0 digits but hsn_sc <=8 digits
hsn_sc can be bank txp=T,L,E
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.
uqc If type = G, then unit quantity code (UQC) is mandatory If type = G, then uqc ≠ 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 If sply_ty = Inter , txp = T or blank and inv_typ = B2B/B2CS/B2CL 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 exports without payment or Export without payment of duty If sply_ty = Inter and inv_typ = SEWOP/EXWOP then  irt >= 0 Error IGST rate should be filled for SEZ exports without payment or Export without payment of duty.
IGST rate should be filled when supply type is inter-state and invoice type is DE/SEWP/EXWP/CBW If sply_ty = Inter and inv_typ = DE/EXWP/SEWP/CBW, then irt ≠ blank and irt >= 0 Error IGST rate should be filled for taxable inter-state supply.
iamt IGST amount should be filled when supply type is inter-state and tax applicability is T If sply_ty = Inter, txp = T or blank and inv_typ = B2B/B2CS/B2CL 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 exports without payment or Export without payment of duty If inv_typ = SEWOP/EXWOP then iamt = 0 Error IGST amount should be zero when invoice type is SEZ exports without payment or Export without payment of duty.
IGST amount should be filled when supply type is inter-state and invoice type is DE/SEWP/EXWP/CBW If sply_ty = Inter and inv_typ = DE/EXWP/SEWP/CBW, then iamt ≠ blank and iamt>= 0 Error IGST amount should be filled for taxable inter-state supply.
crt CGST rate should be filled when supply type is intra-state and tax applicability is T If sply_ty = Intra, txp = T or blank 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.
CGST rate should be same as SGST rate If crt  ≠ blank or srt  ≠  blank or both crt and srt  ≠ blank,
then crt = srt
Error CGST rate should be same as SGST rate
camt CGST amount should be filled when supply type is intra-state and tax applicability is T If sply_ty = Intra, txp = T or blank 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 If sply_ty = Intra, txp = T or blank 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 If sply_ty = Intra, txp = T or blank 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.
txp 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 tax applicability is Nil, Exempt and NonGST 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 Error Tax rates and amounts should not be present for Nil exempt and Non-gst supplies.
If tax applicability is Free supplies, then taxable value and tax amounts should not be filled If txp = F, then txval,iamt,camt,samt,csamt = 0 or blank Error There should be no taxable value and tax amounts for free supplies

B2CS Aggregated Data Business Rules

Following are the business rules for B2CS aggregated data:

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 If diff_percent = blank, then
iamt= txval*irtIf diff_percent ≠ blank , then
iamt= txval*irt*diff_percentRound off till two decimals (i.e if value 0.2550 an more then 0.26 and if 0.2549 or less then 0.25)
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 If diff_percent = blank, then
camt=txval*crt
If diff_percent ≠ blank , then
camt= txval*crt*diff_percentRound off till two decimals (i.e if value 0.2550 an more then 0.26 and if 0.2549 or less then 0.25)
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 If diff_percent = blank, then
samt=txval*srt
If diff_percent ≠ blank , then
samt= txval*srt*diff_percentRound off till two decimals (i.e if value 0.2550 an more then 0.26 and if 0.2549 or less then 0.25)
Warning Amount of SGST should be taxable value multiplied by rate of SGST.
sply_ty Supplies for SEZ taxpayers are considered to be inter-state supplies. If taxpayerType = SEZ, then sply_ty = Inter Error Supplies by a SEZ taxpayer are considered to be inter-state supplies.
omon If document status is revised then original month is required If dst = R, then omon ≠ blank Error Information related to original month is required in case of revised document.
pos If supply type is inter, then POS should not be same as the first two digits of GSTIN of the taxpayer If taxpayerType ≠ SEZ and sply_ty = Inter, then POS ≠ first two digits gstin Error In case of inter-state supply, the place of supply should be different from the location of supplier.
If supply type is intra, then POS should be same as the first two digits of GSTIN of the taxpayer If sply_ty = Intra, then POS = first two digits gstin Error In case of intra-state supply, the place of supply should be same as the location of supplier.
opos If document  status is revised then Original place of supply is required if dst=R then opos≠ blank Error Original place of supply is required in case of revised document status.
If document  status is Origianl then Original place of supply is not required if dst=O or Blank then opos= blank Error Original place of supply is not required in case of original document status.
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 ≠  blank 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.
CGST rate should be same as SGST rate If crt  ≠ blank or srt  ≠  blank or both crt and srt  ≠ blank,
then crt = srt
Error CGST rate should be same as SGST rate
camt CGST amount should be filled when supply type is intra-state If sply_ty = Intra, then camt ≠  blank 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 ≠  blank 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.

Nil Exempt Non-GST Aggregate Data Rules

Following are business rules for Nil/Exempt/Non-GST aggregated data:

Advance Received and Tax Paid Line Item Data Rules

Structural rules are as follows:

Advance Received and Tax Paid Aggregated Data

Structural rules are as follows:

Business rules are as follows:

HSN Summary

Business rules are as follows:

Document Details

Business rule is as follow:

Search GSTIN