- How UAE E-Invoicing Works
Document types
Read this page when your app builds the request body of a document, or when it gets an error about the document type. 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 an invoice or a credit note that your app submits, the taxpayer is the seller.
- Buyer: the business that receives the document.
- Document: an invoice or a credit note.
- Self-billed document: an invoice or a credit note that the buyer issues, under a self-billing agreement with the seller. On a self-billed document, the taxpayer is the buyer.
- FTA: the UAE Federal Tax Authority. Wafeq ASP reports each document to the FTA.
- Document type: the code that tells the FTA what kind of document it is. For example,
380is a tax invoice. - TRN: the VAT registration number of a business: 15 digits, ending in
03. A seller with a TRN is registered for VAT. - TIN: the 10-digit number that the FTA gives a business.
- VAT category: the code on each line that tells how VAT applies to the line. The codes are
S(standard-rated),Z(zero-rated),E(exempt) andO(out of scope). Refer to VAT on each line. - Legal registration: the registration that legally identifies a business or a person. It is a trade or commercial licence (
TL), an Emirates ID (EID), a passport (PAS) or a Cabinet decision (CD). - Special scenario: a type of sale that the UAE rules mark with a flag in
transaction_type_code. Refer to Special scenarios. - Summary invoice: a special scenario. The seller issues one tax invoice for several sales to the same buyer in the same calendar month.
- Deemed supply: a special scenario. The seller supplies goods or services without payment, and VAT treats this as a sale.
Two examples show how Wafeq ASP picks the document type:
Example 1: a seller with a TRN. A furniture trader is registered for VAT. It sells office chairs to a buyer at the standard rate. The invoice is a tax invoice (380). The trader also rents a staff apartment to the same buyer. Residential rent is exempt from VAT. All the lines of that invoice are exempt. Thus the invoice is a commercial invoice (480).
Example 2: a seller without a TRN. A small business is not registered for VAT. It has a TIN only, and it cannot charge VAT. Each invoice of this business is a commercial invoice (480). If a line of the invoice is standard-rated, Wafeq ASP refuses the invoice.
Each document that Wafeq ASP reports to the FTA has a document type. Your app does not choose the type. Your app chooses the endpoint: an invoice or a credit note. Then Wafeq ASP picks the type from two things:
- The TRN of the seller. Wafeq ASP takes it from the registered profile of the taxpayer, not from your request.
- The VAT category of each line.
The six document types
| Type | Name | What it is | Endpoint |
|---|---|---|---|
380 | Tax invoice | The usual invoice of a seller with a TRN. | POST /invoices |
480 | Commercial invoice | An invoice outside the scope of VAT. | POST /invoices |
381 | Tax credit note | A credit note for a tax invoice. | POST /credit-notes |
81 | Commercial credit note | A credit note for a commercial invoice. | POST /credit-notes |
389 | Self-billed invoice | An invoice that the buyer issues, under a self-billing agreement with the seller. | POST /self-billing/invoices |
261 | Self-billed credit note | A credit note for a self-billed invoice. | POST /self-billing/credit-notes |
"Commercial invoice" has two meaningsIn the UAE, a commercial invoice is an invoice outside the scope of VAT (480). It is different from a tax invoice (380). The international code list of these numbers gives 380 the name "Commercial invoice". When a UAE accountant says "commercial invoice", the accountant means 480.
How Wafeq ASP picks the type
Wafeq ASP uses this table for invoices:
| 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 |
| Has no TRN | One or more lines are standard-rated (S), reverse charge (AE) or margin scheme (N). | Refused: seller_without_trn_taxable_lines |
These rules apply to the other documents:
- Credit notes. Wafeq ASP uses the same table. The result is
381instead of380, and81instead of480. - Credit notes for an invoice that your app submitted through Wafeq ASP. Such a credit note refers to the invoice with
previous_document_id. It gets the type of that invoice:381for a380, and81for a480. Refer to Correct or cancel a document. - Self-billed documents. The type is always
389for an invoice and261for a credit note.
For more about the VAT categories, refer to VAT on each line.
What a commercial invoice or a commercial credit note needs
These rules apply to the types 480 and 81:
- The legal registration of the buyer is necessary. Send it in
customer.legal_registration. For a trade licence, send{"type": "TL", "id": "CN-7654321", "authority": "Dubai Economy and Tourism"}. Without it, Wafeq ASP refuses the document withbuyer_legal_registration_required. - The document cannot be a summary invoice or a deemed supply. If
transaction_type_codehas one of these flags, Wafeq ASP refuses the document withtransaction_flags_not_allowed. Refer to Special scenarios.
When the seller has no TRN, Wafeq ASP puts the TIN of the seller in the document. Your app sends nothing more for this.
Check the type before you submit
Send the request body to POST /invoices/validate, or to POST /credit-notes/validate for a credit note. Use the same body that your app will submit. Wafeq ASP keeps nothing, delivers nothing and reports nothing. The response gives the type in invoice_type_code. For example, the check of the second example below gives this response:
{
"valid": true,
"invoice_id": "INV-2026-0302",
"invoice_type_code": "480",
"profile_execution_id": "00000000",
"effective_recipient_id": "0235:1999200000",
"route": "delivery",
"errors": [],
"warnings": [],
"info": []
}After the submission, the response of POST /invoices also gives the type in invoice_type_code.
Do not send a document typeThe request has no field for the document type. If your app sends
invoice_type_code, Wafeq ASP ignores it. Wafeq ASP picks the type with the rules on this page.
Examples
These two invoices go to the same buyer. Only the lines are different. The seller has a TRN.
A tax invoice (380). The seller sells office chairs at the standard rate:
{
"invoice_number": "INV-2026-0301",
"issue_date": "2026-10-15",
"due_date": "2026-11-14",
"source_id": "erp-invoice-9301",
"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 }
]
}A commercial invoice (480). The same seller rents a staff apartment to the buyer. Residential rent is exempt from VAT. All the lines are exempt. Thus the type is 480:
{
"invoice_number": "INV-2026-0302",
"issue_date": "2026-10-15",
"due_date": "2026-11-14",
"source_id": "erp-invoice-9302",
"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": "Apartment 1203 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)"
}
]
}If the seller has no TRN, the second invoice is also a 480. But Wafeq ASP refuses the first invoice, because a seller without a TRN cannot charge VAT.
Common errors
The check gives these codes in errors. A submission gives them in status, with success: false.
seller_without_trn_taxable_lines
- Cause: the seller has no TRN, and a line is standard-rated (
S), reverse charge (AE) or margin scheme (N). - Action: a seller without a TRN cannot charge VAT. Give each line the category
E,OorZ.
buyer_legal_registration_required
- Cause: the document is a
480or an81, and it has no legal registration for the buyer. - Action: send
customer.legal_registration.
transaction_flags_not_allowed
- Cause: the document is a
480or an81, and it has the summary invoice flag or the deemed supply flag. - Action: remove the flag. A commercial invoice or a commercial credit note cannot have these two flags.
Updated about 17 hours ago