Industry guide
UAE E-Invoicing for Construction
Construction billing does not look like a generic B2B invoice. Retention holdbacks, mobilisation advances, monthly IPCs, subcontractor variations and JV clearances all need specific PINT-AE handling. This guide walks each scenario and shows exactly which PINT-AE fields carry the load — plus how TrustBill's watch-folder agent + PINT-AE conversion handles them without changing your accounting tool.
Why construction is different from generic B2B
A standard B2B invoice under PINT-AE is one document: seller, buyer, lines, VAT, total. Construction rarely works this way. On a live project you'll be issuing IPC-style invoices monthly with cumulative and current-period values, deducting retention on-top, releasing prior retention, applying advance-payment recovery, adding variations approved since the last IPC, and often netting the whole thing against a subcontractor's variation credit note.
PINT-AE handles all of this — but only if the invoice is built correctly. The three most common construction failures under PINT-AE validation are: (1) retention encoded as a discount instead of an allowance with a defined recovery term, (2) advance-payment recovery netted without an explicit reference to the earlier advance invoice UUID, and (3) JV-partner clearances issued as a plain credit note without the JV agreement number in the reference field.
TrustBill's construction workflow is designed to catch these before they submit. Every IPC-shaped invoice runs through a construction-aware validation layer that flags missing retention terms, missing advance-recovery references, and JV clearances without the correct reference, before the XML ever reaches the accredited ASP path.
Construction invoice scenarios → PINT-AE mapping
A field-by-field crib sheet for the seven billing patterns UAE construction teams issue most often. Every entry cites the specific PINT-AE / UBL 2.1 field or code that carries the value.
| Billing scenario | PINT-AE / UBL 2.1 field | Common failure mode |
|---|---|---|
| Retention (5–10% withheld from IPC value) | cac:AllowanceCharge with ChargeIndicator=false, AllowanceChargeReason="Retention", AllowanceChargeReasonCode | Do not encode as a discount; retention is a payment-terms allowance held against future release. |
| Retention release (paid back on final completion) | cac:AllowanceCharge with ChargeIndicator=true referencing the original IPC UUID in cac:DocumentReference | Explicit reference is the difference between a validated release and a rejected duplicate charge. |
| Mobilisation / advance payment received | cbc:PrepaidAmount at the header level; supported by an advance-payment invoice with cbc:InvoiceTypeCode="386" | Advance-invoice type 386 unlocks the recovery pattern in later IPCs. |
| Advance recovery in a later IPC | cac:AllowanceCharge with reference to the advance invoice's UUID in cac:DocumentReference/cbc:ID | Missing the UUID is the #1 validation failure on advance recovery under PINT-AE. |
| Progress / IPC billing (current + cumulative) | cbc:InvoiceTypeCode="388"; use cbc:Note or the extension namespace for cumulative-to-date totals | Cumulative values are not a PINT-AE core field; keep them out of totals or FTA will reject the sum. |
| Variation order approved and billed | New cac:InvoiceLine with cbc:ID referencing the VO number, or added to the current IPC as a separate line group | VO reference must survive from ERP to XML; do not merge with base-scope lines. |
| Subcontractor certification (main con → subcon) | Standard PINT-AE invoice with cac:AdditionalDocumentReference pointing to the sub-agreement | The subcon issues the invoice; the main con adds the certification reference as an incoming-invoice note. |
| JV partner clearance / share adjustment | cac:DocumentReference/cbc:ID = JV agreement number; cbc:InvoiceTypeCode="381" for credit notes | PINT-AE has no dedicated JV type — the agreement reference is what makes the clearance auditable. |
Deep dives per scenario
The scenarios above are the crib sheet; the detail below is what your finance team actually implements. Each block covers the ERP-side hook, the PINT-AE mapping, and the two or three edge cases that fail validation.
Retention (5–10% withheld from IPC value)
UAE construction contracts almost universally include a retention clause — commonly 5% on private-sector work and 10% on public. That's held against the running IPC values until practical or final completion, then released. Under PINT-AE, retention is an allowance (not a discount) with a defined recovery term.
ERP mapping: your ERP must emit the retention deduction as its own line-level or header-level allowance, not as a negative invoice line. TrustBill's PINT-AE conversion reads the allowance code from your ERP's tax-and-charges table and maps it to cac:AllowanceCharge with ChargeIndicator=false and an AllowanceChargeReasonCode that identifies retention rather than a rebate or promotional discount.
Edge cases: (1) split retention (part released at practical completion, part at defect-liability end) — encode each release as its own AllowanceCharge with ChargeIndicator=true; (2) retention on VAT-exempt supplies — retention still applies but the AllowanceCharge shares the exempt tax category with the parent line, not the standard 5% category.
Mobilisation / advance payment invoicing
A mobilisation advance is typically 10–20% of contract value paid at the start against a bank guarantee. Under PINT-AE, the advance is invoiced as a stand-alone document with cbc:InvoiceTypeCode="386" (advance payment invoice) — not the standard 388 commercial invoice code.
The advance-invoice UUID must be captured by your ERP because every later IPC that recovers a slice of the advance references it. Missing this reference is the most common construction PINT-AE validation failure — the FTA validator flags it as an unlinked allowance and rejects the document.
TrustBill's watch-folder agent handles this end-to-end: when it detects an advance invoice, it stores the returned UUID against the project; when subsequent IPCs come through with an advance-recovery allowance, it injects the UUID into cac:DocumentReference automatically. Your ERP does not need to know about UUID mapping.
Interim Payment Certificates (IPCs)
IPCs are the workhorse of construction billing — monthly (or milestone-based) invoices showing work-in-place, cumulative certified value, retention deducted, advance-recovery deducted, VAT, and net payable. PINT-AE handles IPCs as standard commercial invoices (cbc:InvoiceTypeCode="388") with the retention and advance-recovery encoded as allowances.
The one thing PINT-AE does not have is a native field for cumulative-to-date values. UAE main contractors typically want that value visible on the printed invoice for the client's engineer's certificate; encoding it in a cac:PaymentTerms note or a project-level extension is fine, but do not include it in cbc:TaxTotal or cbc:LegalMonetaryTotal — the FTA validator will fail the invoice because the totals will not reconcile to the line values.
TrustBill's construction template renders the cumulative-vs-current split on the human-readable PDF while keeping the XML totals compliant. The engineer's certificate reference (typically an alphanumeric IPC number issued by the client's consultant) is stored in cbc:BuyerReference so it survives the round-trip through the FTA network and appears on the buyer's copy.
Subcontractor certification and payment
In UAE construction the main contractor typically 'certifies' a subcontractor's work before releasing payment. The subcontractor issues the invoice; the main contractor's certification is an internal control, not a document that goes on the Peppol network.
PINT-AE treatment: the subcontractor's invoice is a standard commercial invoice referencing the sub-agreement via cac:AdditionalDocumentReference. The main contractor's certification is recorded on the incoming-invoice side as a note or an internal approval workflow — it does not change the XML. When the main contractor later invoices the client, the subcontractor scope shows up as a line or a set of lines but the sub's separate invoice remains the source of truth for the sub-scope value.
TrustBill's multi-tenant model handles this by letting the main-contractor tenant and the subcontractor tenant see each other's issued documents (with permission) so the certification flow does not require re-keying invoice data.
Joint venture clearances
Joint ventures are common on large UAE projects — the JV entity holds the head contract with the client, while member firms invoice the JV for their share of the work. Clearance credit notes rebalance member firms' quarterly or completion-milestone shares.
PINT-AE handling: JV clearances are standard credit notes (cbc:InvoiceTypeCode="381") with the JV agreement number in cac:AdditionalDocumentReference. There is no dedicated JV type in PINT-AE — the agreement number is what makes the audit trail work when the FTA reviews inter-party balancing entries.
Edge case: some JV constitutions issue clearance documents as journal-only entries that never reach the ledger as an invoice. Those stay outside PINT-AE entirely. TrustBill's construction workflow flags JV-marked line items in your ERP so they are excluded from PINT-AE submission unless a clearance credit note is explicitly generated.
Frequently asked questions
Does the FTA e-invoicing mandate apply to construction?+
Yes. VAT-registered construction companies are in scope of the UAE FTA e-invoicing mandate. Wave 1 (revenue ≥ AED 50M) must appoint an ASP by 30 October 2026 and go live by 1 January 2027; Wave 2 (< AED 50M) appoints by 31 March 2027 and goes live by 1 July 2027. Construction is not an exempt sector — the sector-specific complexity is in how invoices are shaped, not in whether they apply.
How does retention appear in PINT-AE XML?+
As a cac:AllowanceCharge with ChargeIndicator=false, an AllowanceChargeReasonCode identifying retention, and — for release — a subsequent AllowanceCharge with ChargeIndicator=true referencing the original IPC UUID. Do not encode retention as a negative line or as a generic discount; the FTA validator will accept it structurally but the tax authority's downstream reconciliation will treat it as a rebate.
Do I need to change my ERP to invoice under the mandate?+
Usually no. TrustBill's watch-folder agent reads invoice exports from your existing ERP (Focus, Tally, Sage, SAP Business One, Odoo, etc.) and converts them to compliant PINT-AE XML on the way out. What matters is that the ERP emits retention, advance recovery and variation references as their own fields rather than baking them into total-only lines.
How does the JV partner arrangement affect who is on the invoice?+
The JV entity holds the head contract and invoices the client. Member firms invoice the JV for their share. Under PINT-AE, all three (JV-to-client, member-to-JV, and JV-to-member clearances) are separate invoices with their own seller/buyer/UUIDs. The JV agreement number goes in cac:AdditionalDocumentReference on every document so the audit trail links them.
Do variation orders (VOs) need their own invoice?+
Not usually. Approved VOs are typically added to the next IPC as separate line items (or a separate line group) with the VO number in cbc:ID or cac:AdditionalDocumentReference. Only issue a separate invoice for a VO when the contract mandates it (some GCC public-sector contracts do).
Related
Turn on UAE FTA e-invoicing for your construction billing
TrustBill's watch-folder agent + construction-aware PINT-AE mapping picks up your IPCs, retention, advances and JV clearances exactly as your ERP emits them — no template changes, no re-keying. Free tier: 50 invoices/month.