';

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 nameRule DescriptionRule description using JSON nameNature of ruleRule Fail Message
valAmount of Total invoice value should not be less than 0.val >=0ErrorTotal Invoice/Credit note value should not be negative.
txvalAmount of  Taxable value should not be less than 0.txval>=0ErrorTotal Invoice/Credit note taxable value should not be negative.
iamtAmount of  IGST Amount should not be less than 0.iamt>=0ErrorTotal Invoice/Credit note IGST value should not be negative.
camtAmount of  CGST Amount should not be less than 0.camt>=0ErrorTotal Invoice/Credit note CGST value should not be negative.
samtAmount of  SGST Amount should not be less than 0.samt>=0ErrorTotal Invoice/Credit SGST note value should not be negative.
csamtAmount of  CESS  Amount should not be less than 0.csamt>=0ErrorTotal Invoice/Credit note CESS value should not be negative.
idtInvoice Date should not greater than return periodIf dty = RI/BS, idt <= fpErrorInvoice Date should not be greater than return period
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 2017If 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 periodIf 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 equal or  after the invoice dateIf 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 2017If dty = C/D/R, nt_dt >= 1st July 2017ErrorCredit/Debit note date should be on or after 1st July 2017.
dstif 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  ≠ RErrorFor amendment of B2CS Invoice type data is to be provided in Aggregate format.
ctinFor registered counterparty, gstin/uin of the counterparty should be present and it should be different from GSTIN of taxpayerIf inv_typ= B2B/SEWP/SEWOP/DE/CBW then ctin ≠ blank and ctin ≠ gstinErrorGSTIN/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 presentIf inv_typ= B2CL/B2CS/EXWP/EXWOP  then ctin = blankErrorIn case of export transactions or if counterparty is unregistered, GSTIN/UIN should not be present.
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_numFor Regular invoice or Bill of Supply, Note/voucher number should not be presentIf dty = RI/BS , nt_num = blankErrorNote/Voucher number is not required in case of a regular invoice or bill of supply.
nt_dtFor Credit note, debit note and refund voucher, Note/voucher date is mandatoryIf dty = C/D/R , nt_dt ≠ blankErrorNote/Voucher date is required in case of a credit note, debit note or refund voucher.
nt_dtFor Regular invoice or Bill of Supply, Note/voucher date should not be presentIf dty = RI/BS , nt_dt = blankErrorNote/Voucher date is not required in case of a regular invoice or bill of supply.
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 julyErrorInvoice 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 nameRule DescriptionRule description using JSON nameNature of ruleRule Fail Message
iamtAmount of IGST should be taxable value multiplied by rate of IGSTFor 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)
WarningAmount of IGST should be taxable value multiplied by rate of IGST.
camtAmount of CGST should be taxable value multiplied by rate of CGSTFor 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)
WarningAmount of CGST should be taxable value multiplied by rate of CGST.
samtAmount of SGST should be taxable value multiplied by rate of SGSTFor 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)
WarningAmount of SGST should be taxable value multiplied by rate of SGST.
idtInvoice Date should not be 18 months olderIf dty = RI/BS, idt not older than 18 monthsWarningInvoice Date should not be 18 months older
txvalAmount of taxable value should always be more than 0 in case of supplies other than free suppliesif txp = T/L/E/N, txval>0ErrorTaxable value should always be greater than 0.
sply_tyIf Invoice type is B2CL/SEWP/SEWOP/DE/EXWP/EXWOP/CBW, then supply type should always be interstateIf inv_typ = B2CL/SEWP/SEWOP/EXWP/EXWOP/CBW
then sply_ty = Inter
ErrorLarge Consumer (B2CL), Exports, SEZ exports and sales from custom bonded warehouse (CBW) are considered to be inter-state supplies.
sply_tyIf Invoice type is B2CL/SEWP/SEWOP/DE/EXWP/EXWOP, then supply type should always be interstateIf taxpayerType = SEZ, then sply_ty = InterErrorSupplies by a SEZ taxpayer are considered to be inter-state supplies.
ctpyType of counterparty needs to be Registered in case of B2B DE SEZ and CBW invoicesIf inv_typ= B2B/SEWP/SEWOP/DE/CBW, then ctpy = RErrorType 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 invoicesIf inv_typ= B2CL/B2CS/EXWP/EXWOP, then ctpy = UErrorType of counterparty should be unregistered in case of B2CL, B2CS and export invoices.
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 ≠ blankErrorWhether 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 ≠ blankErrorOriginal 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 presentIf dty = C/D/R and dst=R then ont_dt ≠ blankErrorOriginal 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 presentIf 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 type is “RI” and document status is revised, then original invoice number should be presentIf dty=RI and dst=R then oinum ≠ blankErrorOriginal invoice number 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 oinum = blankWarningOriginal invoice number is required only in case of a revised invoice.
oidtIf document type is “RI” and document status is revised,  then original invoice date should be presentIf  dty=RI and dst=R then oidt ≠ blankErrorOriginal 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.
valIf Document type is “RI” and  invoice type is “B2CL” then invoice value  should be more than 2.5 LakhsIf dty=RI, POS ≠ first two digits gstin and inv_typ=B2CL then val > 2.5 LakhErrorIn 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 LakhsIf dty=RI and inv_typ=B2CS and POS ≠ first two digits gstin, then val <= 2.5 LakhErrorIn case of interstate supplies to small customers (B2CS), invoice value should be less than or equal to 2.5 Lakhs.
posIf 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
ErrorPOS is mandatory.
If supply type is inter, then POS should not be same as the first two digits of GSTIN of the taxpayerIf taxpayerType ≠ SEZ, inv_typ = B2B/B2CS/B2CL/SEWP/SEWOP/DE and sply_ty = Inter, then POS ≠ first two digits gstinErrorIn 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 taxpayerIf inv_typ = B2B/B2CS/B2CL/DE and sply_ty = Intra, then POS = first two digits gstinErrorIn case of intra-state supply, the place of supply should be same as the location of supplier.
od_numIf tax is paid under provisional assessment, then Provisional assessment Order Number is requiredIf prs = Y, then od_num ≠ blankWarningProvisional assessment Order Number is required if tax is paid under provisional assessment.
od_dtIf tax is paid under provisional assessment, then Provisional assessment Order date is requiredIf prs = Y, then od_dt ≠ blankWarningProvisional assessment Order date is required if tax is paid under provisional assessment.
sbnumIf Invoice type is EXWP/EXWOP then Shipping Bill or Bill of Export Number is requiredIf inv_typ = EXWP/EXWOP and ty = G or blank , then sbnum ≠ blankWarningShipping 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 ≠ blankErrorShipping Bill Number is required if shipping Bill Date is present.
sbdtIf Invoice type is EXWP/EXWOP then Shipping Bill or Bill of Export Date is requiredIf inv_typ = EXWP/EXWOP and ty = G or blank , then sbdt ≠ blankWarningShipping 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 requiredIf inv_typ = EXWP/EXWOP and sbnum≠ blank then sbdt ≠ blankErrorShipping 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 dateif inv_typ = EXWP/EXWOP and sbdt is ≠ blank then sbdt >= idt and sbdt<= current dateErrorShipping bill date (sbdt) should be on or after invoice date (idt) and on or before current date.
sbpcodeIf Invoice type is EXWP/EXWOP then Shipping Bill Port Code is requiredIf inv_typ = EXWP/EXWOP and ty = G or blank , then sbpcode ≠ blankWarningShipping Bill Port Code is required in case of export of goods.
If Shipping Bill Number is not blank then port code is also requiredIf inv_typ = EXWP/EXWOP and sbnum≠ blank then sbpcode ≠ blankErrorShipping Bill Date is required if shipping Bill Number is present.
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 tax applicablity taxable , nil or exemptIf gt>50000000 in fp, hsn_sc  ≠ blank and hsn_sc>= 4 digits but hsn_sc <=8 digits if txp=T,L,EWarningHSN 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 exemptIf gt>15000000 and gt <=50000000 in fp, hsn_sc  ≠ blank and hsn_sc>= 2 digits but hsn_sc <=8 digits txp=T,L,EWarningHSN 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 exemptIf gt<=15000000 in fp, hsn_sc >=0 digits but hsn_sc <=8 digits
hsn_sc can be bank txp=T,L,E
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.
uqcIf type = G, then unit quantity code (UQC) is mandatoryIf type = G, then uqc ≠ 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 TIf sply_ty = Inter , txp = T or blank and inv_typ = B2B/B2CS/B2CL 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 exports without payment or Export without payment of dutyIf sply_ty = Inter and inv_typ = SEWOP/EXWOP then  irt >= 0ErrorIGST 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/CBWIf sply_ty = Inter and inv_typ = DE/EXWP/SEWP/CBW, then irt ≠ blank and irt >= 0ErrorIGST rate should be filled for taxable inter-state supply.
iamtIGST amount should be filled when supply type is inter-state and tax applicability is TIf sply_ty = Inter, txp = T or blank and inv_typ = B2B/B2CS/B2CL 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.
IGST amount should be zero when invoice type is SEZ exports without payment or Export without payment of dutyIf inv_typ = SEWOP/EXWOP then iamt = 0ErrorIGST 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/CBWIf sply_ty = Inter and inv_typ = DE/EXWP/SEWP/CBW, then iamt ≠ blank and iamt>= 0ErrorIGST amount should be filled for taxable inter-state supply.
crtCGST rate should be filled when supply type is intra-state and tax applicability is TIf sply_ty = Intra, txp = T or blank 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.
CGST rate should be same as SGST rateIf crt  ≠ blank or srt  ≠  blank or both crt and srt  ≠ blank,
then crt = srt
ErrorCGST rate should be same as SGST rate
camtCGST amount should be filled when supply type is intra-state and tax applicability is TIf sply_ty = Intra, txp = T or blank 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-state and tax applicability is TIf sply_ty = Intra, txp = T or blank 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 TIf sply_ty = Intra, txp = T or blank 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.
txpIf 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 tax applicability is Nil, Exempt and NonGST then tax rates and amounts should not be filledIf txp = L/E/N, then irt,iamt,crt,camt,srt,samt,csrt,csamt = blank or 0ErrorTax 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 filledIf txp = F, then txval,iamt,camt,samt,csamt = 0 or blankErrorThere 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 nameRule DescriptionRule description using JSON nameNature of ruleRule Fail Message
iamtAmount of IGST should be taxable value multiplied by rate of IGSTIf 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)
WarningAmount of IGST should be taxable value multiplied by rate of IGST.
camtAmount of CGST should be taxable value multiplied by rate of CGSTIf 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)
WarningAmount of CGST should be taxable value multiplied by rate of CGST.
samtAmount of SGST should be taxable value multiplied by rate of SGSTIf 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)
WarningAmount of SGST should be taxable value multiplied by rate of SGST.
sply_tySupplies for SEZ taxpayers are considered to be inter-state supplies.If taxpayerType = SEZ, then sply_ty = InterErrorSupplies by a SEZ taxpayer are considered to be inter-state supplies.
omonIf document status is revised then original month is requiredIf dst = R, then omon ≠ blankErrorInformation related to original month is required in case of revised document.
posIf supply type is inter, then POS should not be same as the first two digits of GSTIN of the taxpayerIf taxpayerType ≠ SEZ and sply_ty = Inter, then POS ≠ first two digits gstinErrorIn 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 taxpayerIf sply_ty = Intra, then POS = first two digits gstinErrorIn case of intra-state supply, the place of supply should be same as the location of supplier.
oposIf document  status is revised then Original place of supply is requiredif dst=R then opos≠ blankErrorOriginal place of supply is required in case of revised document status.
If document  status is Origianl then Original place of supply is not requiredif dst=O or Blank then opos= blankErrorOriginal place of supply is not required in case of original document status.
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 ≠  blankErrorIGST 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.
CGST rate should be same as SGST rateIf crt  ≠ blank or srt  ≠  blank or both crt and srt  ≠ blank,
then crt = srt
ErrorCGST rate should be same as SGST rate
camtCGST amount should be filled when supply type is intra-stateIf sply_ty = Intra, then camt ≠  blankErrorCGST 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 ≠  blankErrorSGST 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.

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: