Application

ERP prerequisites

Set these up in your own accounting system before you send anything. Almost all of it is on the customer record and is a one-time job per customer — but until it is done, that customer's invoices cannot be filed, because a buyer with no tax number and no address cannot be identified to the FTA.

Do this once, per customer, before you invoice them

The platform reads your buyers out of the ERP. It never asks you to re-enter them here, which is the point of connecting a system you already use — but it also means an empty field in your ERP is an empty field on the invoice.

Every path below can be changed. The PINT Mapping page in the dashboard lets you point any field at a different source in your own data. The paths are the defaults, not a fixed contract — so if your TRN lives somewhere else entirely, repoint it rather than move your data.

Each system also has its own page in the sidebar, with a button that copies that system's checklist as plain text — that is what to send a client who is setting themselves up.

QuickBooks

QuickBooks has no tax-number field on a customer, so one has to be created. This is the single most common reason a QuickBooks invoice is rejected here.

  • Create a custom field named “Tax ID number” on the customer

    Customer details → Custom fields → add a field named Tax ID number, then enter that customer's 15-digit TRN in it. Repeat for every customer you invoice.

    Read from CustomerInfo.CustomField[0].StringValue

    If it is missing: “The Customer Tax Number (TRN) is missing from the custom field. Please add a custom field on the QuickBooks customer details page named “Tax ID number” and enter the customer’s TRN in that field.”

  • Keep it as the FIRST custom field

    The default mapping reads custom field number one. If the TRN sits in your second or third custom field, either reorder them or repoint buyer_tax_id on the PINT Mapping page — both work, but one of the two has to be done.

    Read from CustomField[0] — position matters, the field name is not searched for

  • Fill in the customer's billing address

    Street, city, state and country. Country is mandatory; for a UAE buyer the state is the emirate.

    Read from CustomerInfo.BillAddr.Line1 / .City / .CountrySubDivisionCode / .Country

    If it is missing: “Customer Address Country is missing.”

  • Give every invoice a number no other invoice has used

    QuickBooks only auto-increments the number while custom transaction numbers are off. Turn them on — many accounts do, to keep their own numbering — and the field is typed by hand on every invoice, which is where repeats come from. Switch on Settings → Sales → Sales form content → “Warn if duplicate invoice number is used” so QuickBooks catches it before we do. Unlike the rest of this list, this one is per invoice, not per customer.

    Read from DocNumber

    If it repeats: The invoice is rejected with 409 and the invoice already holding that number is returned with the error. Nothing is filed until the number is changed.

  • Apply tax on the invoice, not just on the total

    Each line needs a tax code, and the invoice needs its tax detail — that is where the taxable base comes from. An invoice with no tax detail has no net amount to report.

    Read from TxnTaxDetail.TaxLine[0].TaxLineDetail.NetAmountTaxable, Line[].SalesItemLineDetail.TaxCodeRef

Open the QuickBooks page

Xero

Xero already has the fields. The work is making sure they are filled in, on the right address type.

  • Enter the customer's tax number on the contact

    Contact → Financial details → Tax Number. 15 digits for a UAE buyer.

    Read from Contact.TaxNumber

    If it is missing: “Contact TaxNumber (TRN) is missing.” / “…must be 15 characters long.”

  • Use the STREET address, not only the postal one

    A Xero contact holds two addresses. The platform reads the street address, so a contact with only a PO Box filled in reads as having no address at all.

    Read from Contact.Addresses[STREET].AddressLine1 / .City / .Region / .Country

    If it is missing: “Contact Address Country is missing.”

  • Give every line an item and a tax rate

    The line's item name and tax rate are both read. A free-text line with no item can still be sent, but you have to repoint the item name to the line description on the PINT Mapping page.

    Read from LineItems[].Item.Name, LineItems[].Description, LineItems[].TaxType

Open the Xero page

Zoho Books

Zoho's UAE edition carries the TRN natively; the gap is usually the billing address.

  • Enter the customer's Tax Registration Number

    Customer → Other details → Tax Registration Number. 15 digits for a UAE buyer.

    Read from tax_reg_no

    If it is missing: “Contact TaxNumber (TRN) is missing.”

  • Complete the billing address

    Street, city, state and country on the customer's billing address — not the shipping one.

    Read from billing_address.address / .city / .state / .country

  • Set a unit on each line

    Zoho's unit label is translated to the standard code the FTA expects. An unrecognised label falls back to “each”, so set it deliberately where the unit matters.

    Read from line_items[].unit

Open the Zoho Books page

Odoo

Odoo calls the tax number “Tax ID” and keeps it on the contact, not on the invoice.

  • Fill in Tax ID on the customer contact

    Contact → Sales & Purchase → Tax ID. 15 digits for a UAE buyer.

    Read from partner.vat

  • Complete the contact address

    Street, city, state and country. The country must be set on the contact, not inherited.

    Read from partner.street / .city / .state / .country_code

  • Keep line labels and taxes populated

    The line label is used as both the item name and its description — it auto-fills from the product, and holds your own text on a free-text line. The line's tax is read by name.

    Read from line_items[].name, line_items[].tax_name, line_items[].uom_name

Open the Odoo page

Wafeq

Wafeq contacts have no separate state field, so the city is what carries the emirate.

  • Enter the contact's Tax Registration Number

    Contact → Tax registration number. 15 digits for a UAE buyer.

    Read from contact.tax_registration_number

  • Fill in address, city and country on the contact

    For a UAE buyer put the emirate in the city field — that is the field the platform reads for the emirate, because Wafeq has no state field and the district field is usually blank.

    Read from contact.address / .city / .country

  • Nothing to do about the net total

    Wafeq publishes only the tax-inclusive amount, so the platform derives the net from the lines itself. Mentioned only so the figures look familiar when you compare them.

    Read from net_amount — derived, not read

Open the Wafeq page

Naqood

Naqood publishes the same shape as Xero, with one difference on the invoice lines.

  • Enter the customer's tax number on the contact

    Contact → Tax Number. 15 digits for a UAE buyer.

    Read from Contact.TaxNumber

  • Fill in the street address on the contact

    Address line, city, region and country.

    Read from Contact.Addresses[STREET].AddressLine1 / .City / .Region / .Country

  • Write a description on every line

    Naqood exposes one label per line, so it becomes both the item name and the description. A line with no description has neither.

    Read from LineItems[].Description

Open the Naqood page

What is the same for all of them

A UAE buyer's TRN is 15 digits. Fourteen or sixteen is rejected — the length is checked, not just the presence.

A buyer outside the UAE has no UAE TRN and is not expected to. Put its own national tax number in the same field and the platform builds its Peppol address from that, under its country's scheme. If the buyer is on the Peppol network under an identifier of its own, that is better still. Leave the field empty and nothing fails: a buyer outside the UAE is never refused for a missing tax number, and is addressed by the export placeholder instead.

Some countries publish a company-register or e-invoicing identifier rather than a tax number — Denmark, Sweden, Norway, Finland, Singapore and others — so no address can be built from a tax number alone. Those invoices are still filed: the buyer is addressed by the FTA's export placeholder, which means the document reaches the authority but is not delivered to the buyer over the network. Supplying a real participant id, where the buyer has one, is what turns that into a delivery.

The country is mandatory on every buyer, and for a UAE buyer the emirate is what the FTA reads as the region.