InvoiceReady.ie

OpenAPI-first developer guide

Irish eInvoice validation API documentation

The browser checker and external clients use the same API. No account or API key is currently required. The base URL is https://e-invoices.verens.com/api/v1.

Quick start: XML

curl https://e-invoices.verens.com/api/v1/validate \
  -H 'Content-Type: application/xml' \
  --data-binary @invoice.xml

Quick start: canonical JSON

curl https://e-invoices.verens.com/api/v1/validate \
  -H 'Content-Type: application/json' \
  --data-binary @invoice.json

Browser JavaScript

const response = await fetch('https://e-invoices.verens.com/api/v1/validate', {
  method: 'POST',
  headers: {'Content-Type': 'application/xml'},
  body: xml
});
const report = await response.json();
if (!response.ok) throw new Error(report.error.message);

PHP

<?php
$ch = curl_init('https://e-invoices.verens.com/api/v1/validate');
curl_setopt_array($ch, [CURLOPT_POST => true, CURLOPT_HTTPHEADER => ['Content-Type: application/xml'], CURLOPT_POSTFIELDS => file_get_contents('invoice.xml'), CURLOPT_RETURNTRANSFER => true]);
$report = json_decode(curl_exec($ch), true, flags: JSON_THROW_ON_ERROR);

Endpoints

Response and HTTP behaviour

A completed validation returns 200, including an invoice with rule errors. Request errors use 400, 413, 415, 422 or 429 and the stable shape {"error":{"code":"…","message":"…","request_id":"…"}}. Unexpected or unavailable services use 500/503.

Limits, CORS and privacy

Validation is limited to 60 requests per source per hour and 2.0 MiB per document. Public v1 endpoints support cross-origin browser use and OPTIONS preflight. Invoice bodies and values are never persisted or logged; result metadata and findings are retained for 90 days.

Test with a published sample

curl https://e-invoices.verens.com/api/v1/samples
curl https://e-invoices.verens.com/api/v1/samples/json-arithmetic

The OpenAPI 3.1 contract is authoritative for request and response schemas. Also review coverage boundaries.