Multiple Tax Exemption Reason Codes For The Same Tax Category

Hello,
In case the invoice has multiple invoice lines with the same tax category (different from the standard rate “S”), but with different exemption reason codes (for example, one line has “VATEX-SA-EDU” and other line has “VATEX-SA-32”), how to handle it in the XML?
The XML implementation standards ensure that each tax category under <cac:TaxTotal> with category other than “S” must have <cbc:TaxExemptionReasonCode> and <cbc:TaxExemptionReason>. So how to list all reason codes for the same tax category?
I’ve tried to repeat the same tax category under <cac:TaxTotal> for each exemption reason, and the XML validator didn’t raise any error. This is how I done it:

<cac:TaxTotal>
	<cbc:TaxAmount currencyID="SAR">0.00</cbc:TaxAmount>
</cac:TaxTotal>
<cac:TaxTotal>
	<cbc:TaxAmount currencyID="SAR">0.00</cbc:TaxAmount>
	<cac:TaxSubtotal>
		<cbc:TaxableAmount currencyID="SAR">500.00</cbc:TaxableAmount>
		<cbc:TaxAmount currencyID="SAR">0.00</cbc:TaxAmount>
		<cac:TaxCategory>
			<cbc:ID>Z</cbc:ID>
			<cbc:Percent>0</cbc:Percent>
			<cbc:TaxExemptionReasonCode>VATEX-SA-32</cbc:TaxExemptionReasonCode>
			<cbc:TaxExemptionReason>SSSS</cbc:TaxExemptionReason>
			<cac:TaxScheme>
				<cbc:ID>VAT</cbc:ID>
			</cac:TaxScheme>
		</cac:TaxCategory>
	</cac:TaxSubtotal>
	<cac:TaxSubtotal>
		<cbc:TaxableAmount currencyID="SAR">500.00</cbc:TaxableAmount>
		<cbc:TaxAmount currencyID="SAR">0.00</cbc:TaxAmount>
		<cac:TaxCategory>
			<cbc:ID>Z</cbc:ID>
			<cbc:Percent>0</cbc:Percent>
			<cbc:TaxExemptionReasonCode>VATEX-SA-32</cbc:TaxExemptionReasonCode>
			<cbc:TaxExemptionReason>SSSS</cbc:TaxExemptionReason>
			<cac:TaxScheme>
				<cbc:ID>VAT</cbc:ID>
			</cac:TaxScheme>
		</cac:TaxCategory>
	</cac:TaxSubtotal>
</cac:TaxTotal>
<cac:LegalMonetaryTotal>
	<cbc:LineExtensionAmount currencyID="SAR">600.00</cbc:LineExtensionAmount>
	<cbc:TaxExclusiveAmount currencyID="SAR">500.00</cbc:TaxExclusiveAmount>
	<cbc:TaxInclusiveAmount currencyID="SAR">500.00</cbc:TaxInclusiveAmount>
	<cbc:AllowanceTotalAmount currencyID="SAR">100</cbc:AllowanceTotalAmount>
	<cbc:PayableAmount currencyID="SAR">500.00</cbc:PayableAmount>
</cac:LegalMonetaryTotal>
<cac:InvoiceLine>
	<cbc:ID>90</cbc:ID>
	<cbc:InvoicedQuantity unitCode="PCE">2</cbc:InvoicedQuantity>
	<cbc:LineExtensionAmount currencyID="SAR">300.00</cbc:LineExtensionAmount>
	<cac:AllowanceCharge>
		<cbc:ChargeIndicator>false</cbc:ChargeIndicator>
		<cbc:AllowanceChargeReason>discount</cbc:AllowanceChargeReason>
		<cbc:Amount currencyID="SAR">200</cbc:Amount>
	</cac:AllowanceCharge>
	<cac:TaxTotal>
		<cbc:TaxAmount currencyID="SAR">0.00</cbc:TaxAmount>
		<cbc:RoundingAmount currencyID="SAR">300.00</cbc:RoundingAmount>
	</cac:TaxTotal>
	<cac:Item>
		<cbc:Name>Cola</cbc:Name>
		<cac:ClassifiedTaxCategory>
			<cbc:ID>Z</cbc:ID>
			<cbc:Percent>0</cbc:Percent>
			<cbc:TaxExemptionReasonCode>VATEX-SA-33</cbc:TaxExemptionReasonCode>
			<cbc:TaxExemptionReason>SSSS</cbc:TaxExemptionReason>
			<cac:TaxScheme>
				<cbc:ID>VAT</cbc:ID>
			</cac:TaxScheme>
		</cac:ClassifiedTaxCategory>
	</cac:Item>
	<cac:Price>
		<cbc:PriceAmount currencyID="SAR">250.00</cbc:PriceAmount>
		<cac:AllowanceCharge>
			<cbc:ChargeIndicator>false</cbc:ChargeIndicator>
			<cbc:AllowanceChargeReason>discount</cbc:AllowanceChargeReason>
			<cbc:Amount currencyID="SAR">50</cbc:Amount>
			<cbc:BaseAmount currencyID="SAR">300</cbc:BaseAmount>
		</cac:AllowanceCharge>
	</cac:Price>
</cac:InvoiceLine>
<cac:InvoiceLine>
	<cbc:ID>91</cbc:ID>
	<cbc:InvoicedQuantity unitCode="PCE">2</cbc:InvoicedQuantity>
	<cbc:LineExtensionAmount currencyID="SAR">300.00</cbc:LineExtensionAmount>
	<cac:AllowanceCharge>
		<cbc:ChargeIndicator>false</cbc:ChargeIndicator>
		<cbc:AllowanceChargeReason>discount</cbc:AllowanceChargeReason>
		<cbc:Amount currencyID="SAR">200</cbc:Amount>
	</cac:AllowanceCharge>
	<cac:TaxTotal>
		<cbc:TaxAmount currencyID="SAR">0.00</cbc:TaxAmount>
		<cbc:RoundingAmount currencyID="SAR">300.00</cbc:RoundingAmount>
	</cac:TaxTotal>
	<cac:Item>
		<cbc:Name>Cola</cbc:Name>
		<cac:ClassifiedTaxCategory>
			<cbc:ID>Z</cbc:ID>
			<cbc:Percent>0</cbc:Percent>
			<cbc:TaxExemptionReasonCode>VATEX-SA-32</cbc:TaxExemptionReasonCode>
			<cbc:TaxExemptionReason>SSSS</cbc:TaxExemptionReason>
			<cac:TaxScheme>
				<cbc:ID>VAT</cbc:ID>
			</cac:TaxScheme>
		</cac:ClassifiedTaxCategory>
	</cac:Item>
	<cac:Price>
		<cbc:PriceAmount currencyID="SAR">250.00</cbc:PriceAmount>
		<cac:AllowanceCharge>
			<cbc:ChargeIndicator>false</cbc:ChargeIndicator>
			<cbc:AllowanceChargeReason>discount</cbc:AllowanceChargeReason>
			<cbc:Amount currencyID="SAR">50</cbc:Amount>
			<cbc:BaseAmount currencyID="SAR">300</cbc:BaseAmount>
		</cac:AllowanceCharge>
	</cac:Price>
</cac:InvoiceLine>

Is this complied with ZATCA regulations or s there any other solution?

@samijneidy Could you please give a real scenario where you have multiple exemptions reason codes? VATEX-SA-EDU is for zero rating “Private education service to Saudi citizens” and VATEX-SA-32 is zero rating “Export of Goods”. It is a hypothetical scenario.

1 Like

There is no real world scenario, but we are redesigning our system to meet zatca specifications so we stopped at this particular case.

But since it is not a use case, we will ignore it.

Thank you for the help!