The only API that turns raw retail data into EU-compliant documents with built-in intelligence. One call. < 500ms.
This sandbox uses a demo key. Get your own for production.
Generate a document to see the preview
Your brand. Your rules. Our engine.
Digital receipt with QR code, multi-payment, NF525 hash.
B2B invoice with Factur-X, IBAN, payment terms.
Shipping document with tracking, signature zones.
Deterministic engine. No hallucinations. No latency.
Detects incorrect VAT rates before sealing.
Line items = subtotal = total. Always.
Validates Factur-X / NF525 format before delivery.
POST /v1/documents/validate
{
"valid": true,
"checksRun": 10,
"checksPassed": 10,
"validationTimeMs": 47,
"checks": [
{ "code": "VAT_COHERENCE", "passed": true },
{ "code": "TOTAL_MATCH", "passed": true },
{ "code": "COMPLIANCE_NF525", "passed": true }
]
}
You're not a compliance expert. You don't need to be.
Generate EU-compliant hybrid invoices with one API call. PDF/A-3 + CII XML embedded. ZUGFeRD 2.4 compatible.
All French businesses must receive e-invoices by Sept 2026. Doxnex generates Factur-X that any PDP can process.
Sequential numbering + SHA-256 hash chain for POS receipts. French fiscal compliance built-in.
Peppol BIS Billing 3.0 UBL format for Oman's Fawtara program. PDF + UBL XML. August 2026 ready.
For businesses without ERP. Create compliant invoices directly from your browser.
All plans include: SSL, CDN, 99.9% uptime, EU hosting
OpenAPI 3.1 · SDKs coming soon · Postman collection
curl -X POST https://api.doxnex.io/api/v1/documents/generate \
-H "X-Doxnex-Api-Key: dx_live_your_key" \
-H "Content-Type: application/json" \
-d '{
"template": "receipt-premium",
"type": "receipt",
"locale": "fr-FR",
"data": {
"store_name": "Boulangerie Dupont",
"items": [{ "name": "Baguette", "quantity": 2, "unit_price": 1.30, "total": 2.60 }],
"total_ttc": 2.60
}
}'
import requests
response = requests.post(
"https://api.doxnex.io/api/v1/documents/generate",
headers={
"X-Doxnex-Api-Key": "dx_live_your_key",
"Content-Type": "application/json"
},
json={
"template": "receipt-premium",
"type": "receipt",
"locale": "fr-FR",
"data": {
"store_name": "Boulangerie Dupont",
"items": [{"name": "Baguette", "quantity": 2, "unit_price": 1.30, "total": 2.60}],
"total_ttc": 2.60
}
}
)
print(response.json())
const response = await fetch(
"https://api.doxnex.io/api/v1/documents/generate",
{
method: "POST",
headers: {
"X-Doxnex-Api-Key": "dx_live_your_key",
"Content-Type": "application/json"
},
body: JSON.stringify({
template: "receipt-premium",
type: "receipt",
locale: "fr-FR",
data: {
store_name: "Boulangerie Dupont",
items: [{ name: "Baguette", quantity: 2, unit_price: 1.30, total: 2.60 }],
total_ttc: 2.60
}
})
}
);
const result = await response.json();
console.log(result);
HttpClient client = HttpClient.newHttpClient();
String body = """
{ "template": "receipt-premium", "type": "receipt",
"locale": "fr-FR", "data": {
"store_name": "Boulangerie Dupont",
"items": [{"name":"Baguette","quantity":2,"unit_price":1.30,"total":2.60}],
"total_ttc": 2.60 }}""";
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.doxnex.io/api/v1/documents/generate"))
.header("X-Doxnex-Api-Key", "dx_live_your_key")
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(body))
.build();
HttpResponse<String> response = client.send(request,
HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());