einvoicecheck.ae
Free tool · no signup

Free UAE e-invoice validator

Paste an invoice in the browser and get the same deterministic error list the API returns: TRN format, required tax fields, total arithmetic, VAT category and rate consistency, code-list membership.

E-invoicing in the UAE breaks at the file, not at the filing. Your accredited service provider will transmit whatever you hand it - but it will reject a document whose TRN is the wrong length, whose VAT category does not match its rate, or whose totals are off by a fil. Paste the invoice below and see those errors now, before the deadline is on top of you.

Paste your invoice

Canonical JSON, or a UBL 2.1 / PINT AE XML document. Nothing is stored: the document is validated in memory and discarded with the request.

Preflight only - read this before you trust the green badge

A pass here means the file is structurally and arithmetically clean against the rules this engine checks. It does not make an invoice "compliant", it does not submit anything, and it is not an FTA accreditation. This tool is not FTA-accredited, does not transmit legal e-invoices, does not replace an accredited service provider, and provides no statutory archival. If the engine does not check a rule, this page does not claim it does.

Need this on every invoice? One API call.

The browser tool is the single-shot version of POST /v1/validate. Same rule engine, same normalized errors (path, rule, severity, message, fix) - authenticated with an x-api-key header and with no 20-per-hour browser cap.

curl -X POST https://api.einvoicecheck.ae/v1/validate \
  -H "x-api-key: $EINVOICECHECK_API_KEY" \
  -H "content-type: application/json" \
  --data-binary @invoice.json
// Same engine, same errors - just automated.
const res = await fetch("https://api.einvoicecheck.ae/v1/validate", {
  method: "POST",
  headers: {
    "x-api-key": process.env.EINVOICECHECK_API_KEY,
    "content-type": "application/json",
  },
  body: JSON.stringify(invoice), // or { document: "<Invoice>...</Invoice>" } for UBL/PINT AE XML
});

const { valid, invoiceType, schemaVersion, errors } = await res.json();
if (!valid) {
  for (const e of errors) {
    console.error(`[${e.severity}] ${e.path} ${e.rule}: ${e.message}`);
  }
  process.exit(1); // fail the build before the file reaches your ASP
}

What this checks

  • Invoice type detection (tax invoice / credit note) and profile version.
  • UAE TRN format on supplier and customer.
  • Mandatory business terms (number, issue date, currency, parties, lines).
  • Currency and code-list membership.
  • VAT category and rate consistency.
  • Line-item arithmetic, tax breakdown, and document totals that must reconcile.

That is the whole list. The engine does not do XSD/Schematron conformance, registration lookups against the FTA, or transmission - so this page does not claim any of them.

Want the error list emailed, plus launch access?

Optional - the tool above works without it. Waitlist members get an API key on the free trial at launch.

No card details, no payment, no spam. One email when keys are issued.

What this is not

einvoicecheck.ae is a preflight validator. It is not FTA-accredited, it does not transmit legal e-invoices, it does not replace an accredited service provider, and it does not provide statutory archival.