https://api.invoicenavigator.eu/apiQuick Links
Composite Endpoint (Recommended)
/v2/validate-and-fixValidate, remediate via hybrid pipeline, revalidate, and generate evidence — all in one call. Full flow tracking with HATEOAS links.
View documentationGranular: Validation
/v1/validateValidate a single invoice XML against EN16931 and country-specific rules.
View documentation/v1/validate/batchValidate multiple invoices in a single request (up to 100).
View documentationEvidence Packs
/v1/evidence-packGenerate a cryptographically signed Evidence Pack for a validated invoice.
/v1/evidence-pack/batchGenerate Evidence Packs for multiple validations in a single request.
/v1/evidence-packsList all Evidence Packs for your workspace with pagination.
/v1/evidence-pack/{id}Get Evidence Pack details including metadata and verification status.
/v1/evidence-pack/{id}/downloadDownload the Evidence Pack PDF certificate.
/v1/verify/{id}Verify the authenticity of an Evidence Pack by its ID (public endpoint).
Granular: Remediation Engine
/v1/fixer/categorizeCategorize validation errors by remediation type (auto, input-required, blocked).
View documentation/v1/fixer/fixApply controlled auto-remediation to an invoice. Returns remediated XML and change log.
View documentation/v1/fixer/fix-with-inputApply remediations that require user-provided values (seller name, dates, etc.).
View documentation/v1/fixer/evidence-packGenerate an Evidence Pack ZIP for a completed remediation.
View documentationFormat Conversion
/v1/convertConvert invoices between formats (UBL, CII, XRechnung, Factur-X, Peppol BIS).
Compliance Data
/v1/countriesList all EU countries with their e-invoicing status and requirements.
/v1/countries/{code}Get detailed compliance information for a specific country.
/v1/rules/{country}Get validation rules and CIUS requirements for a country.
/v1/deadlinesGet upcoming compliance deadlines across all EU countries.
/v1/requirementsGet trade lane requirements (what format to use for a seller/buyer combination).
/v1/changesGet regulatory changes since a given date. Supports filtering by country and type.
/v1/rules/upcomingGet upcoming rule changes and deprecations with effective dates.
Intelligence
/v1/errorsList all error codes with explanations and remediation suggestions.
/v1/errors/{ruleId}Get detailed information about a specific error code.
/v1/compliance-scoreCalculate a compliance readiness score for a business.
/v1/facts/{country}Get regulatory facts and citations for a country (for AI/RAG use cases).
/v1/facts/searchSearch regulatory facts by keyword.
Authentication
All API requests (except public endpoints) require authentication via API key.
curl -X POST https://api.invoicenavigator.eu/api/v1/validate \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"xml": "<Invoice>...</Invoice>"}'Learn more about authenticationPOST /v2/validate-and-fix
One call to validate, remediate, revalidate, and generate audit evidence. Runs the full hybrid pipeline with quota tracking and HATEOAS links for follow-up actions.
/v2/validate-and-fixRequest Body
{
"xml": "<Invoice xmlns=\"urn:oasis:...\">..</Invoice>",
"fileName": "INV-2026-0847.xml",
"remediation_policy": "safe",
"generate_evidence_pack": true
}Parameters
xml(required) — Invoice XML string (UBL or CII)fileName— Original filename for audit trailremediation_policy—"safe"(default) or"none"(validate only, no fixes)generate_evidence_pack— Generate evidence pack inline (default: false)autoFix— Alias:falseis equivalent toremediation_policy: "none"
Response
{
"success": true,
"data": {
"validationRef": "VAL-1740744832000-8F2A3B",
"originalValid": false,
"fixedValid": true,
"engine": "hybrid",
"fixesApplied": 2,
"fixSummary": {
"totalIssues": 3,
"autoFixable": 2,
"needsInput": 1,
"blocked": 0,
"canAutoFixAll": false
},
"remainingIssues": [],
"metadata": {
"invoiceNumber": "INV-2026-001",
"currency": "EUR",
"totalAmount": "1250.00"
},
"flowId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"evidencePackUrl": "/api/v1/evidence-pack?validationRef=VAL-1740744832000-8F2A3B",
"_links": {
"self": "/api/v2/validate-and-fix",
"fixWithInput": "/api/v1/fixer/fix-with-input?flow_id=a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"evidencePack": "/api/v1/evidence-pack?validationRef=VAL-1740744832000-8F2A3B"
}
},
"_meta": {
"validationRef": "VAL-1740744832000-8F2A3B",
"processingTimeMs": 187
}
}Response Fields
originalValid— Whether the invoice passed validation before remediationfixedValid— Whether the invoice passes after remediation (only present when fixes were attempted)engine— Which remediation engine was used:"orchestrator","safe-fixer", or"hybrid"fixSummary— Breakdown of issues by fix type (auto, input-required, blocked)flowId— Flow tracking ID for follow-up calls (e.g. fix-with-input)_links— HATEOAS links for next actions
Request & Response Format
Request Format
All endpoints accept Content-Type: application/json. Invoice XML is sent as a string in the "xml" field of the JSON body — not as raw XML.
POST /api/v1/validate HTTP/1.1
Host: api.invoicenavigator.eu
Authorization: Bearer sk_live_...
Content-Type: application/json
{
"xml": "<Invoice xmlns=\"urn:oasis:...\">..</Invoice>"
}Common mistake: Do not send raw XML with Content-Type: application/xml. The API expects JSON with the XML content as a string value.
Response Envelope
All API responses use a consistent envelope structure. The success field indicates the outcome, and metadata is always available in _meta.
Success response
{
"success": true,
"data": { ... },
"_meta": {
"processingTimeMs": 187,
"validationRef": "VAL-..."
}
}Error response
{
"success": false,
"error": {
"code": "ERROR_CODE",
"message": "Human-readable description"
}
}Check the success field to determine whether the request succeeded. Error codes are documented in the Authentication and individual endpoint sections.
Endpoint Details
Detailed request/response documentation for key endpoints.
/v1/evidence-pack/batchBusiness+Generate multiple Evidence Packs as a ZIP bundle. Useful for batch compliance certification.
Request Body
{
"validationRefs": ["VAL-1740744832000-ABC123", "VAL-1740744832000-DEF456", "VAL-1740744832000-GHI789"]
}Response
{
"success": true,
"data": {
"downloadUrl": "https://api.invoicenavigator.eu/downloads/batch_xyz.zip",
"expiresAt": "2026-01-10T00:00:00Z",
"count": 3
}
}/v1/evidence-pack/{id}Starter+Retrieve Evidence Pack metadata including verification URLs and expiration dates.
Response
{
"success": true,
"data": {
"evidencePackId": "EP-REF-XYZ789",
"validationRef": "VAL-1740744832000-ABC123",
"createdAt": "2026-01-09T12:00:00Z",
"expiresAt": "2027-01-09T12:00:00Z",
"downloadUrl": "https://api.invoicenavigator.eu/api/v1/evidence-pack/EP-REF-XYZ789/download",
"verifyUrl": "https://www.invoicenavigator.eu/verify/EP-REF-XYZ789",
"invoiceMetadata": {
"invoiceNumber": "INV-2026-000142"
},
"isValid": true
}
}/v1/evidence-pack/{id}/downloadStarter+Download the Evidence Pack as a signed PDF certificate.
Response
Content-Type: application/pdf Content-Disposition: attachment; filename="evidence-pack-EP-REF-XYZ789.pdf" [Binary PDF data]
/v1/evidence-packsStarter+List all Evidence Packs for your workspace with pagination and date filtering.
Query Parameters
page- Page number (default: 1)limit- Items per page (default: 20, max: 100)from- Filter from date (ISO 8601)to- Filter to date (ISO 8601)
Response
{
"success": true,
"data": {
"evidencePacks": [
{
"evidencePackId": "EP-REF-XYZ789",
"validationRef": "VAL-1740744832000-ABC123",
"createdAt": "2026-01-09T12:00:00Z",
"invoiceMetadata": {
"invoiceNumber": "INV-2026-000142"
},
"isValid": true
}
],
"total": 156,
"page": 1,
"limit": 20
}
}/v1/rules/upcomingPublicGet upcoming ruleset changes and deprecations. Useful for planning system updates.
Response
{
"success": true,
"data": {
"upcoming": [
{
"ruleset": "xrechnung",
"currentVersion": "3.0.2",
"upcomingVersion": "3.0.3",
"expectedDate": "2026-04-01",
"breakingChanges": false,
"changelog": "Minor bug fixes and clarifications"
}
],
"deprecations": [
{
"ruleset": "peppol-bis",
"version": "3.0.15",
"deprecationDate": "2026-03-01",
"replacementVersion": "3.0.17"
}
]
}
}Remediation Engine
Controlled auto-remediation for e-invoice validation errors. The engine categorizes errors, applies safe fixes with financial field blocking, and generates cryptographic evidence at every step. Included on all paid plans.
5-Minute Integration
Use /v2/validate-and-fix for the full pipeline in one call, or follow these granular steps:
- 1Validate — Run invoice against 1,300+ rules
- 2Categorize — Classify errors as auto-fixable, input-required, or blocked
- 3Remediate — Apply controlled fixes with financial field blocking
- 4Evidence Pack — Generate cryptographic audit trail
- 5Monitor — Track quota and usage
Most pipeline integrations only need steps 1-3.
/v1/fixer/categorizeCategorize validation errors by remediation type: auto (safe to remediate automatically), input (needs user-provided data), or blocked (financial fields that cannot be changed).
Request
{
"error_codes": ["BR-CO-10", "BR-16", "BR-S-08"]
}Response
{
"success": true,
"data": {
"categorized": {
"auto": ["BR-CO-10"],
"input": ["BR-16"],
"blocked": ["BR-S-08"]
},
"stats": {
"auto": 1,
"input": 1,
"blocked": 1
}
},
"_meta": {
"duration_ms": 45
}
}/v1/fixer/fixApply controlled auto-remediation to an invoice. Financial fields are blocked by default. Returns the remediated XML and a detailed change log.
Request
{
"xml": "<Invoice xmlns=\"urn:oasis:...\">..</Invoice>",
"error_codes": ["BR-CO-10", "BR-16"]
}Response
{
"success": true,
"data": {
"fixed_xml": "<Invoice>...</Invoice>",
"applied_fixes": [
{
"error_code": "BR-CO-10",
"success": true,
"operation": "recalculate",
"target_xpath": "/Invoice/TaxTotal/TaxAmount",
"before_value": "100.00",
"after_value": "119.00",
"confidence": 1.0
}
],
"failed_fixes": [],
"remaining_errors": {
"needsInput": [
{
"error_code": "BR-16",
"reason": "Seller name cannot be derived"
}
],
"blocked": [],
"unknown": []
},
"is_compliant": false,
"is_billable": true
},
"_meta": {
"flow_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"duration_ms": 245
}
}/v1/fixer/fix-with-inputApply remediations that require user-provided values. Must be called with an existing flow_id from the /fix endpoint.
Request
{
"xml": "<Invoice>...</Invoice>",
"values": {
"seller_name": "ACME Corporation GmbH"
},
"skipped": ["BR-17"],
"error_codes": ["BR-16"],
"flow_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
}Response
{
"success": true,
"data": {
"fixed_xml": "<Invoice>...</Invoice>",
"applied_fixes": [...],
"failed_fixes": [],
"remaining_errors": ["BR-17"],
"stats": {
"applied": 1,
"failed": 0,
"skipped": 1
},
"is_compliant": false,
"is_billable": true
},
"_meta": {
"flow_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"duration_ms": 120
}
}/v1/fixer/evidence-packGenerate an Evidence Pack for a completed remediation. Returns a ZIP containing original XML, remediated XML, change report, validation results, and cryptographic metadata.
Request
{
"original_xml": "<Invoice>...</Invoice>",
"fixed_xml": "<Invoice>...</Invoice>",
"file_name": "invoice-2024-001.xml",
"applied_fixes": [...],
"remaining_errors": [...],
"validation_before": {...},
"validation_after": {...},
"flow_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
}Response
Content-Type: application/zip Content-Disposition: attachment; filename="evidence-pack-EP-REF-XYZ.zip" X-Pack-ID: EP-REF-XYZ789 [ZIP containing: original_invoice.xml, fixed_invoice.xml, change_report.txt, metadata.json, validation_before.json, validation_after.json, change_events.json]
/v1/fixer/evidence-pack/{id}Retrieve Evidence Pack metadata by ID.
Response
{
"success": true,
"data": {
"pack_id": "EP-REF-XYZ789",
"created_at": "2026-01-15T12:00:00Z",
"original_filename": "invoice-2024-001.xml",
"original_hash": "sha256:abc123...",
"fixed_hash": "sha256:def456...",
"detected_format": "ubl",
"fixes_applied": 3,
"fixes_user_input": 1,
"fixes_skipped": 0,
"final_status": "compliant"
}
}/v1/fixer/usageGet your current usage and quota for the billing period.
Response
{
"success": true,
"data": {
"period": {
"start": "2026-01-01T00:00:00Z",
"end": "2026-02-01T00:00:00Z"
},
"usage": {
"flows_used": 42,
"flows_limit": 100,
"flows_remaining": 58,
"percentage": 42
},
"subscription": {
"tier": "pro",
"status": "active",
"plan_name": "Pro",
"evidence_pack": "full"
},
"tier": "pro",
"resets_at": "2026-02-01T00:00:00Z"
}
}Authentication
All Remediation endpoints require a Bearer token in the Authorization header:
curl -X POST https://api.invoicenavigator.eu/api/v1/fixer/fix \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"xml": "...", "error_codes": ["BR-CO-10"]}'Getting your API key: Sign up for any plan, navigate to Dashboard → API, and generate your key instantly.
Response Codes
| Code | Meaning |
|---|---|
200 | Success |
400 | Invalid XML or missing required fields |
401 | Missing or invalid API key |
402 | Quota exceeded (upgrade plan or wait for reset) |
403 | Feature not available for your tier |
422 | No fixable errors found in provided error_codes |
429 | Rate limit exceeded |
500 | Internal server error |
Rate Limits
| Plan | Monthly invoices | Overage |
|---|---|---|
| Free Trial | 100 total (lifetime) | Upgrade required |
| Starter | 1,000 | €50 per 1,000 |
| Pro | 5,000 | €50 per 1,000 |
| Scale | 25,000 | €50 per 1,000 |
Rate limit headers (X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset) are included in all API responses. Free trial quota does not reset — it is a lifetime total of 100 invoices.
Ready to integrate?
Start with 100 free invoices — full engine access, no credit card required. Production plans from €249/mo.
Get API Access