/
Structural and Business Rules

We’re excited to announce that the latest information is now available on our new site, the Ginesys One Wiki!. Visit the site for up-to-date resources and insights. We look forward to continuing to support you there!

Structural and Business Rules

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.

tax val

Amount of  Taxable value should not be less than 0.

taxval>=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:

 

Related content