Generate. Validate. Seal. Deliver.

The only API that turns raw retail data into EU-compliant documents with built-in intelligence. One call. < 500ms.

  • Sub-500ms generation
  • 🛡 Factur-X + Peppol UBL compliant
  • 🇪🇺 8 languages incl. Arabic RTL
  • 🎨 White-label design system
Factur-X LIVE NF525 compliant < 300ms 99.9% uptime

See it. Believe it.

This sandbox uses a demo key. Get your own for production.

Your Company (Issuer)

📎
Drop your logo here (PNG/JPEG, max 300KB)

Products

Options

Leave empty to auto-generate a sequential number
🔍 Powered by GEOREFER — AZMORIS Data Platform
Autocomplete addresses from 26M BAN entries. Validate SIRET against 16.8M SIRENE records. Always up to date.
Learn more about GEOREFER →
PDF Preview

Generate a document to see the preview

Beautiful documents. Every time.

Your brand. Your rules. Our engine.

Receipt template preview

E-Receipt

Digital receipt with QR code, multi-payment, NF525 hash.

Multi-tenant White-label NF525
Invoice template preview

Invoice

B2B invoice with Factur-X, IBAN, payment terms.

Factur-X EU-ready ZUGFeRD
Delivery note template preview

Delivery Note

Shipping document with tracking, signature zones.

Tracking Signatures EDI

Documents with a brain.

Deterministic engine. No hallucinations. No latency.

🔎

VAT Coherence

Detects incorrect VAT rates before sealing.

Total Verification

Line items = subtotal = total. Always.

🛡

Compliance Check

Validates Factur-X / NF525 format before delivery.

0
< 100ms validation time
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 }
  ]
}
FACTUR-X LIVE
PEPPOL UBL LIVE

EU-ready. Not EU-someday.

You're not a compliance expert. You don't need to be.

📄

Factur-X BASIC & EN 16931

Generate EU-compliant hybrid invoices with one API call. PDF/A-3 + CII XML embedded. ZUGFeRD 2.4 compatible.

🇫🇷

France Sept 2026

All French businesses must receive e-invoices by Sept 2026. Doxnex generates Factur-X that any PDP can process.

🔒

NF525 Hash Chain

Sequential numbering + SHA-256 hash chain for POS receipts. French fiscal compliance built-in.

🇴🇲

Peppol UBL — Oman Fawtara

Peppol BIS Billing 3.0 UBL format for Oman's Fawtara program. PDF + UBL XML. August 2026 ready.

🇮🇹 Italy: 2024 🇩🇪 Germany: 2025 🇫🇷 France: Sept 2026 🇴🇲 Oman: Aug 2026 🇪🇺 EU ViDA: 2030

Simple, transparent pricing.

Developer
€39 /mo
500 documents/month
  • 4 document types (invoice, credit note, debit note, prepayment)
  • Factur-X + Peppol UBL
  • 8 languages incl. Arabic bilingual
  • Multi-currency (EUR, OMR, USD)
  • Community support
Get Started
Startup
€99 /mo
5,000 documents/month
  • Everything in Developer +
  • Webhooks HMAC
  • Custom logo
  • Email support
Get Started
Most Popular
Business
€249 /mo
50,000 documents/month
  • Everything in Startup +
  • 10-year archiving
  • SLA 99.5%
  • Priority support
Get Started
Scale
€499 /mo
Unlimited documents
  • Everything in Business +
  • SLA 99.9%
  • Dedicated support
  • Multi-tenant / white-label
Get Started
COMING SOON

Web Invoicing Portal

For businesses without ERP. Create compliant invoices directly from your browser.

Solo
€19/mo
50 documents
Pro
€49/mo
500 documents

All plans include: SSL, CDN, 99.9% uptime, EU hosting

Developer-first. Always.

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());