Validator API
Everything the web form does is available as a simple HTTP API, so your accounting system, ERP, Zoho Books extension or integration layer can check an invoice before it is sent to an Accredited Service Provider. No SDK, no sign-up: send the XML, get JSON back.
Endpoints
POST /api/validate | Validate one UBL 2.1 Invoice or CreditNote (multipart field file). Optional query version=1.0.3 or ruleset=<id>. Returns the full result. |
GET /api/rulesets | Rule sets bundled in this validator and which one is active. |
GET /api/rules | The rule catalogue with plain-English explanation and fix per rule (?stage=ae for UAE rules only); /api/rules/{id} for one rule. |
GET /api/terms | Business-term names (IBT/BTAE ids → names). |
GET /api/transaction-types/{code} | Decode an 8-digit ProfileExecutionID (BTAE-02) into its transaction-type flags. |
Open the interactive reference (OpenAPI)
Example
# validate a file and read the verdict
curl -s -F "file=@invoice.xml" https://validator.etd.me/api/validate
{
"status": "FAIL",
"ruleset_id": "pint-ae-billing-1.0.3",
"fatal_count": 2,
"warning_count": 0,
"meta": { "doc_type": "Invoice", "document_id": "INV-2026-001",
"currency": "AED", "payable_amount": "11175.50", ... },
"findings": [
{
"rule_id": "ibr-154-ae",
"flag": "fatal",
"stage": "ae",
"message": "Invoice transaction type code (BTAE-02) MUST be 8 digits ...",
"location": "/Invoice/ProfileExecutionID",
"plain": "The transaction-type code must be exactly 8 characters of 0/1.",
"fix": "Set cbc:ProfileExecutionID to e.g. 00000000 for a standard invoice.",
"category": "document",
"terms": ["BTAE-02"]
}
],
"result_id": "c05727961f38",
"result_url": "https://validator.etd.me/r/c05727961f38"
}
status is PASS, FAIL or ERROR (the file could not be parsed). result_url opens the same human-readable page the web form produces, including the PDF report — handy to show to the person who has to fix the invoice.
Limits and fair use
- Files up to 5 MB; 10 validations per hour per IP address.
- Documents sent through the API are validated in memory and not stored; only the result and technical metadata are kept (see the privacy notice).
- Results reflect the published PINT-AE rules at the time of the call (currently PINT-AE Billing 1.0.3). A PASS is not acceptance by the FTA, MoF or an ASP.
Need more?
Higher limits, an API key for production use, a Zoho Books / Zoho Inventory extension that validates invoices as they are created, or help connecting your system to an Accredited Service Provider — talk to ETD.