How to Send E-Invoices from an Excel File in the Wafeq E-Invoicing ASP Portal (UAE)

In this guide, you’ll learn how to send e-invoices from an Excel file in the Wafeq e-invoicing ASP portal: downloading the template, filling it in, importing the file, fixing anything the portal flags, and approving what’s ready to send.

Before you start, make sure your organization is set up and at least one taxpayer is connected. Refer to:

 Wafeq E-Invoicing ASP Portal: Getting Started and Connecting Businesses (UAE).

Tip: Try your first file in Sandbox. Nothing reaches your customer or the FTA, and you can test the whole process for free.

How a File Import Works

  • Each row in your file is one line of an invoice. Rows with the same taxpayer_id and invoice number become one invoice.
  • The portal saves the invoices as drafts, validates each one against the UAE rules, and looks up every customer on the Peppol network.
  • Nothing is sent until you approve it. When you do, each invoice goes to the customer’s provider.

You can import Invoices, Credit Notes, Self-Billed Invoices and Self-Billed Credit Notes. Each file can have up to 50,000 rows, 5,000 documents and 25 MiB.

Note: Only organization owners and admins can import files.

Step 1: Open a New Import

  1. In the left menu, click "Files". This page lists every file you’ve imported.
  2. Click "New import".
Files page with the New import button

 

  1. In "Document type", choose what the file contains.
  2. In "Dates in your file", keep "Detect unambiguous dates" if your file uses real Excel dates. If your dates are text such as 03/04/2026, choose Day first or Month first.
  3. Click "Download Excel template".
New import page with Document type, Dates in your file and Download Excel template

 

Document type options: Invoices, Credit Notes, Self-Billed Invoices, Self-Billed Credit Notes

 

Step 2: Fill In the Excel Template

The template has four sheets:

  • Import: The only sheet that is imported. Fill it in and keep the column headers unchanged.
  • Instructions: The rules for filling in the file.
  • Examples: Sample rows. This sheet is never imported.
  • Dropdown values: The codes you can choose from, such as emirates, tax categories and exemption reasons.

Every column header has a note explaining what goes in it. Fill in the Import sheet as follows:

  1. taxpayer_id: Start every row with the Taxpayer ID of the business issuing the invoice. You’ll find it on the taxpayer’s page under "Taxpayers" (it starts with txpay_).
  2. Invoice details: Enter invoice_number, issue_date, currency and due_date (required for invoices). If the currency isn’t AED, also enter currency_exchange_rate.
  3. Customer details: Enter customer_name, customer_vat, address, city, country and emirate (for example, DXB). In customer_id, enter the customer’s Peppol ID in the format 0235: followed by the customer’s 10-digit TIN (for example, 0235:1234567890). Leave it blank if the customer has no TIN.
  4. Line details: Describe what you sold in line_description, then enter line_quantity and line_unit_price.
  5. Tax: Choose line_tax_category from the dropdown (S standard rate, Z zero-rated, E exempt, O outside scope, AE reverse charge). Enter line_tax_percent as a plain number: 5 for 5%, not 0.05. For E and O lines, add an exemption reason code or text.
  6. More than one line: Add a new row for each extra line and repeat the same taxpayer_id and invoice_number. Complete the invoice and customer details on the first row only.

Note: Most invoices leave the special scenario columns (free_zone, margin_scheme, disclosed_agent_billing) blank. Choose Yes only when one applies. Credit notes must reference the original invoice. Export, e-commerce, summary, deemed supply and continuous supply invoices need fields that are available only through the API.

Tip: You don’t choose the invoice type. The portal issues a tax invoice, or a commercial invoice when the seller has no TRN or every line is exempt or outside scope.

Step 3: Upload the File and Check the Preview

Back on the "New import" page, drop your file in the upload area or click it to browse. Your browser checks the file before anything is uploaded. If a row has a problem, the portal names the row to fix.

Upload area showing a row error: Missing/invalid due_date

 

Fix the row in Excel, then choose the file again. When the basic checks pass, the preview lists each invoice with its taxpayer, dates, currency and number of lines.

Preview showing 4 rows, 3 documents and Basic checks passed

 

Step 4: Save Drafts and Validate

Click "Save drafts and validate". The file is saved, each invoice is validated, and its customer is looked up on the Peppol network in the background. You can leave this page and come back later from "Files".

When validation finishes, check the "Peppol network", "Status" and "Details" columns:

  • Draft · Ready to send: The invoice is valid and the customer was found on Peppol.
  • Invalid draft: Something in the file must be corrected. The "Details" column explains what.
  • Recipient not found: The customer isn’t registered on the Peppol network, so the invoice can’t be delivered yet. Check the customer’s identifier, or retry after the customer registers.
  • Lookup retry scheduled: The Peppol lookup is temporarily unavailable. The portal retries automatically.
Validated file showing Ready to send, Recipient not found and Lookup retry scheduled

 

Click "Download errors" to get every problem in a spreadsheet. To start over, select the drafts and click "Discard drafts", fix your file, and import it again.

Invalid drafts with a customer.id error and the Download errors button

 

Step 5: Approve and Send

  1. Select the invoices that are ready, or click "Select all ready".
  2. Click "Approve and send".
Ready invoice selected and the Approve and send button

 

Each invoice goes to its customer’s provider. When delivery succeeds, its status changes to "Received by access point". Click "View delivery" for details.

Invoice status Received by access point with View delivery link

 

Important: An invoice that is in flight or accepted can’t be recalled. To correct an invoice that was sent, issue a credit note.

 

The sent invoices also appear under Sales > "Invoices" with every other invoice the taxpayer issued, including their delivery and FTA reporting status.

Sales Invoices list showing the imported invoice

 

Note: In Sandbox, the "Tax report" column shows "Disabled in Sandbox" because nothing is reported to the FTA.

Frequently Asked Questions

Can I import a CSV file instead of Excel?
Yes. The upload area accepts CSV or Excel files. We recommend the Excel template because it includes dropdowns and notes for every column.

Does importing a file use document credits?
In Live, each successfully processed document uses one credit from your document wallet. Imports in Sandbox are free.

Can one file contain invoices for several taxpayers?
Yes. Enter the correct taxpayer_id on every row.

Was this article helpful?

0 out of 0 found this helpful

Have more questions? Submit a request

Comments

0 comments

Please sign in to leave a comment.