- How UAE E-Invoicing Works
VAT on each line
Read this page when your app builds the lines of a document, or when it gets an error about VAT on a line. For the steps to submit a document, refer to Submit a document.
This page uses these terms:
- Taxpayer: a business from which your organization has an active grant. On each invoice and credit note that your app submits, the taxpayer is the seller.
- Document: an invoice or a credit note.
- Line: one item in
line_items. A line is one product or service, with its quantity and its price. - VAT category: the code that tells how VAT applies to a line, in
tax_category. - VAT rate: the percentage of VAT on a line, in
tax_percent. - Exemption reason code: the code of the law article that makes a line exempt from VAT, in
tax_exemption_reason_code. - TRN: the VAT registration number of a business: 15 digits, ending in
03. A seller with a TRN is registered for VAT. - Document type: the code that tells the UAE Federal Tax Authority (FTA) what kind of document it is. For example,
380is a tax invoice. Refer to Document types.
Example. A trader with a TRN sells 10 office chairs at 450 each. The sale is standard-rated. The line has the VAT category S and the VAT rate 5. Wafeq ASP calculates the VAT of the line: 5% of 4,500, which is 225.
Each line of a document tells how VAT applies to it. It has a VAT category and a VAT rate. An exempt line also gives the reason for the exemption. Your app sends only these VAT details. Wafeq ASP calculates the VAT amounts and the totals. Wafeq ASP also uses the VAT categories to pick the document type.
The VAT categories
| Category | tax_category | Meaning | Example | tax_percent |
|---|---|---|---|---|
| Standard-rated | S | VAT at the standard rate. | A sale of office chairs. | 5 |
| Zero-rated | Z | The supply is taxable, at 0%. | An export of goods to a country outside the GCC (the Gulf Cooperation Council states). International transport. Some healthcare and education. | 0 |
| Exempt | E | No VAT, because the law exempts this kind of supply. The line must give the exemption reason code. | The rent of a residential apartment. | 0 |
| Out of scope | O | The line is not a supply for VAT. | A payment that is not for goods or services, for example compensation for damages. | 0 |
| Reverse charge | AE | The buyer pays the VAT, not the seller. The line shows no VAT. Only for some goods. Refer to Reverse charge. | A sale of smartphones to a retailer with a TRN. | 0 |
| Margin scheme | N | Standard rate additional VAT. The seller pays VAT on its profit margin, outside the document. The line shows no VAT. | A sale of a used vehicle under the profit margin scheme. | 5 |
Zero-rated lines and exempt lines both have no VAT. But they are different. A zero-rated supply is taxable, at 0%. An exempt supply is not taxable. Your user decides which category applies to a sale. The API does not decide it.
Use N only on a document with the margin scheme flag. Each line of that document must have N. Refer to Special scenarios.
Always sendtax_categoryandtax_percent
tax_percenthas the default value5, for all categories. Send0on each zero-rated, exempt, out-of-scope and reverse-charge line. If you do not, Wafeq ASP calculates VAT on the line, and the document fails the check.tax_categoryhas the default valueS.
Exemption reasons
An exempt line (E) must have the exemption reason code in tax_exemption_reason_code. You can also send the reason in words, in tax_exemption_reason.
tax_exemption_reason_code | Exempt supply |
|---|---|
DL8.46.1 | Some financial services |
DL8.46.2 | Supply of residential units (lease or sale) |
DL8.46.3 | Bare land |
DL8.46.4 | Local passenger transport |
The codes refer to Article 46 of the UAE VAT law (Federal Decree-Law No. 8 of 2017). This article lists the exempt supplies.
Reverse charge
Example. A distributor with a TRN sells 40 smartphones to a retailer with a TRN. The retailer resells the phones. The distributor issues a tax invoice with no VAT on the phones. The retailer pays this VAT in its own VAT return.
With reverse charge, the buyer pays the VAT, not the seller. In the UAE, reverse charge applies to sales of some goods between two businesses with a TRN. Your user decides if a sale is under reverse charge.
A reverse-charge line (AE) needs these fields:
tax_percent: 0. The line shows no VAT.reverse_charge_goods_type: the type of goods, from the table below.gtin: the GTIN of the item. GTIN is the Global Trade Item Number of GS1, the number under the barcode of a product. It has 8, 12, 13 or 14 digits.
reverse_charge_goods_type | Goods |
|---|---|
DL8.48.8.1 | Gold and diamonds |
DL8.48.8.2 | Electronic devices |
DL8.48.3.1 | Crude oil or refined oil |
DL8.48.3.2 | Natural gas, processed or not processed |
DL8.48.3.3 | Pure hydrocarbons |
Wafeq ASP accepts AE only on a line with one of these goods types. The document must also contain:
- The VAT TRN of the buyer, in
customer.vat_number. - A seller with a VAT TRN. A seller without a TRN cannot issue a reverse-charge line.
The UAE e-invoicing guidelines tell the seller to state on the invoice why reverse charge applies. Put this text in notes.
A document can have reverse-charge lines and lines with other categories. A document with the margin scheme flag cannot have reverse-charge lines.
Example:
{
"invoice_number": "INV-2026-0410",
"issue_date": "2026-10-15",
"due_date": "2026-11-14",
"source_id": "erp-invoice-9410",
"notes": "Reverse charge: the buyer accounts for the VAT on the smartphones.",
"customer": {
"id": "0235:1999200000",
"name": "Gulf Fresh Foods LLC",
"vat_number": "199920000000003",
"address": { "street": "Warehouse 7, Al Quoz Industrial 3", "city": "Dubai", "country": "AE", "country_subentity": "DXB" }
},
"line_items": [
{ "description": "Smartphone, 128 GB", "quantity": 40, "unit_price": 1800, "tax_category": "AE", "tax_percent": 0, "reverse_charge_goods_type": "DL8.48.8.2", "gtin": "9520123456788" },
{ "description": "Phone case", "quantity": 40, "unit_price": 25, "tax_category": "S", "tax_percent": 5 }
]
}Wafeq ASP calculates VAT only on the phone cases: 5% of 1,000, which is 50.
How the lines decide the document type
| The seller | The lines | Document type |
|---|---|---|
| Has a TRN | One or more lines are standard-rated (S), zero-rated (Z), reverse charge (AE) or margin scheme (N). | 380 tax invoice |
| Has a TRN | All lines are exempt (E) or out of scope (O). | 480 commercial invoice |
| Has no TRN | All lines are exempt (E), out of scope (O) or zero-rated (Z). | 480 commercial invoice |
A seller without a TRN cannot charge VAT. Wafeq ASP refuses a standard-rated, reverse-charge or margin scheme line from such a seller. For all the rules, refer to Document types.
Line amounts
The amount of a line without VAT is quantity × unit_price. To send a different amount, put it in line_extension_amount. Send it when your system rounds the line amounts. Then the totals that Wafeq ASP calculates agree with the totals in your books:
{ "description": "Cable, per metre", "quantity": 3.333, "unit_price": 1.15, "line_extension_amount": 3.83, "tax_category": "S", "tax_percent": 5 }Example
This invoice has a standard-rated line, a zero-rated line and an exempt line. The seller has a TRN, and one line is standard-rated. Thus the invoice is a tax invoice (380):
{
"invoice_number": "INV-2026-0303",
"issue_date": "2026-10-15",
"due_date": "2026-11-14",
"source_id": "erp-invoice-9303",
"customer": {
"id": "0235:1999200000",
"name": "Gulf Fresh Foods LLC",
"vat_number": "199920000000003",
"legal_registration": { "type": "TL", "id": "CN-7654321", "authority": "Dubai Economy and Tourism" },
"address": { "street": "Warehouse 7, Al Quoz Industrial 3", "city": "Dubai", "country": "AE", "country_subentity": "DXB" }
},
"line_items": [
{ "description": "Office chairs", "quantity": 10, "unit_price": 450, "tax_category": "S", "tax_percent": 5 },
{ "description": "International freight, Jebel Ali to Muscat", "quantity": 1, "unit_price": 1200, "tax_category": "Z", "tax_percent": 0 },
{
"description": "Staff apartment rent, October",
"quantity": 1,
"unit_price": 8000,
"tax_category": "E",
"tax_percent": 0,
"tax_exemption_reason_code": "DL8.46.2",
"tax_exemption_reason": "Supply of residential units (lease or sale)"
}
]
}Common errors
The check (POST /invoices/validate) gives these codes in errors. A submission gives the SCH: codes in validation_errors. A code that starts with SCH: names an official UAE rule. To read these codes, refer to Submit a document.
SCH:ibr-167-ae
- Cause: an exempt line has no exemption reason code.
- Action: send
tax_exemption_reason_codeon eachEline.
SCH:aligned-ibrp-e-09, SCH:aligned-ibrp-o-09 or SCH:aligned-ibrp-z-05
- Cause: an exempt, out-of-scope or zero-rated line has a VAT rate that is not 0. Usually, the line has no
tax_percent, and the default value5applies. A zero-rated line also gives other codes. - Action: send
tax_percent: 0on the line.
SCH:ibr-190-ae
- Cause: a standard-rated line has a VAT rate that is not 5.
- Action: send
tax_percent: 5on eachSline.
422: reverse_charge_goods_type is required on a reverse-charge (AE) line
- Cause: an
AEline has no goods type. - Action: send
reverse_charge_goods_typeon eachAEline.
422: gtin is required on a reverse-charge (AE) line
- Cause: an
AEline has no GTIN. - Action: send
gtinon eachAEline.
422: gtin must be a GTIN: 8, 12, 13 or 14 digits with a valid check digit
- Cause: the value is not a GTIN.
- Action: send the GTIN from the barcode of the item.
422: reverse_charge_goods_type is allowed only on a reverse-charge (AE) line
- Cause: a line has a goods type, but its category is not
AE. Usually, the line has notax_category, and the default valueSapplies. - Action: send
tax_category: "AE", or remove the goods type.
SCH:ibr-162-ae and SCH:aligned-ibrp-ae-09-ae
- Cause: an
AEline has a VAT rate that is not 0. Usually, the line has notax_percent, and the default value5applies. - Action: send
tax_percent: 0on eachAEline.
SCH:ibr-103-ae
- Cause: a document with an
AEline has no VAT TRN of the buyer. - Action: send the VAT TRN of the buyer in
customer.vat_number. A buyer without a TRN cannot buy under reverse charge.
seller_without_trn_taxable_lines
- Cause: the seller has no TRN, and a line is standard-rated, reverse charge or margin scheme. A submission gives this code in
status. - Action: a seller without a TRN cannot charge VAT. Give each line the category
E,OorZ.
Updated about 17 hours ago