Back to API Docs

API Reference

Complete reference for all Invoice Navigator API endpoints.

Base URL: https://api.invoicenavigator.eu
Auth: Bearer token in Authorization header
Format: JSON request/response

Validation

POST/v1/validate
Pro

Validate a single invoice XML against EN16931 and country-specific rules.

View documentation
POST/v1/validate/batch
Pro

Validate multiple invoices in a single request (up to 100).

View documentation

Evidence Packs

POST/v1/evidence-pack
Business

Generate a cryptographically signed Evidence Pack for a validated invoice.

POST/v1/evidence-pack/batch
Business

Generate Evidence Packs for multiple validations in a single request.

GET/v1/evidence-packs
Business

List all Evidence Packs for your workspace with pagination.

GET/v1/evidence-pack/{id}
Business

Get Evidence Pack details including metadata and verification status.

GET/v1/evidence-pack/{id}/download
Business

Download the Evidence Pack PDF certificate.

GET/v1/verify/{id}
Free

Verify the authenticity of an Evidence Pack by its ID (public endpoint).

Fixer (Invoice Correction)

POST/v1/fixer/categorize
Pro

Categorize validation errors by fix type (auto, input-required, blocked).

View documentation
POST/v1/fixer/fix
Pro

Apply automatic fixes to an invoice. Returns fixed XML and change log.

View documentation
POST/v1/fixer/fix-with-input
Pro

Apply fixes that require user-provided values (seller name, dates, etc.).

View documentation
POST/v1/fixer/evidence-pack
Pro

Generate an Evidence Pack ZIP for a completed fix.

View documentation
GET/v1/fixer/evidence-pack/{id}
Pro

Retrieve Evidence Pack metadata by ID.

View documentation
GET/v1/fixer/usage
Pro

Get current Fix usage and quota for the billing period.

View documentation

Format Conversion

POST/v1/convert
Pro

Convert invoices between formats (UBL, CII, XRechnung, Factur-X, Peppol BIS).

Compliance Data

GET/v1/countries
Pro

List all EU countries with their e-invoicing status and requirements.

GET/v1/countries/{code}
Pro

Get detailed compliance information for a specific country.

GET/v1/rules/{country}
Free

Get validation rules and CIUS requirements for a country.

GET/v1/deadlines
Free

Get upcoming compliance deadlines across all EU countries.

GET/v1/requirements
Pro

Get trade lane requirements (what format to use for a seller/buyer combination).

GET/v1/changes
Business

Get regulatory changes since a given date. Supports filtering by country and type.

GET/v1/rules/upcoming
Free

Get upcoming rule changes and deprecations with effective dates.

Intelligence

GET/v1/errors
Pro

List all error codes with explanations and fix suggestions.

GET/v1/errors/{ruleId}
Pro

Get detailed information about a specific error code.

POST/v1/compliance-score
Business

Calculate a compliance readiness score for a business.

GET/v1/facts/{country}
Free

Get regulatory facts and citations for a country (for AI/RAG use cases).

GET/v1/facts/search
Free

Search regulatory facts by keyword.

Authentication

All API requests (except public endpoints) require authentication via API key.

curl -X POST https://api.invoicenavigator.eu/v1/validate \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"xml": "<Invoice>...</Invoice>"}'
Learn more about authentication

Endpoint Details

Detailed request/response documentation for key endpoints.

POST/v1/evidence-pack/batchBusiness

Generate multiple Evidence Packs as a ZIP bundle. Useful for batch compliance certification.

Request Body

{
  "validationRefs": ["val_abc123", "val_def456", "val_ghi789"]
}

Response

{
  "success": true,
  "data": {
    "downloadUrl": "https://api.invoicenavigator.eu/downloads/batch_xyz.zip",
    "expiresAt": "2026-01-10T00:00:00Z",
    "count": 3
  }
}
GET/v1/evidence-pack/{id}Business

Retrieve Evidence Pack metadata including verification URLs and expiration dates.

Response

{
  "success": true,
  "data": {
    "evidencePackId": "ep_xyz789",
    "validationRef": "val_abc123",
    "createdAt": "2026-01-09T12:00:00Z",
    "expiresAt": "2027-01-09T12:00:00Z",
    "downloadUrl": "https://api.invoicenavigator.eu/v1/evidence-pack/ep_xyz789/download",
    "verifyUrl": "https://www.invoicenavigator.eu/verify/ep_xyz789",
    "invoiceMetadata": {
      "invoiceNumber": "INV-2026-000142"
    },
    "isValid": true
  }
}
GET/v1/evidence-pack/{id}/downloadBusiness

Download the Evidence Pack as a signed PDF certificate.

Response

Content-Type: application/pdf
Content-Disposition: attachment; filename="evidence-pack-ep_xyz789.pdf"

[Binary PDF data]
GET/v1/evidence-packsBusiness

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_xyz789",
        "validationRef": "val_abc123",
        "createdAt": "2026-01-09T12:00:00Z",
        "invoiceMetadata": {
          "invoiceNumber": "INV-2026-000142"
        },
        "isValid": true
      }
    ],
    "total": 156,
    "page": 1,
    "limit": 20
  }
}
GET/v1/rules/upcomingFree

Get 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"
      }
    ]
  }
}

Fixer API (Invoice Correction)

Pro+ Required

Programmatically fix e-invoice validation errors. All Fixer endpoints require a Pro tier subscription or higher.

5-Minute Integration

The Fixer API mirrors the UI workflow:

  1. 1Validate (free) - Get list of errors
  2. 2Categorize - See which errors are auto-fixable
  3. 3Fix - Apply automatic corrections
  4. 4Evidence Pack - Generate audit trail
  5. 5Check Usage - Monitor your quota

Most integrations only need steps 1-3.

POST/v1/fixer/categorize

Categorize validation errors by fix type: auto (can be fixed automatically), input (needs user data), or blocked (cannot be fixed).

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
  }
}
POST/v1/fixer/fix

Apply automatic fixes to an invoice. Returns the fixed 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": "flow_abc123",
    "duration_ms": 245
  }
}
POST/v1/fixer/fix-with-input

Apply fixes 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": "flow_abc123"
}

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": "flow_abc123",
    "duration_ms": 120
  }
}
POST/v1/fixer/evidence-pack

Generate an Evidence Pack for a completed fix. Free tier returns JSON metadata; Pro+ returns a ZIP file.

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": "flow_abc123"
}

Response (Pro+ tier)

Content-Type: application/zip
Content-Disposition: attachment; filename="evidence-pack-ep_xyz.zip"
X-Pack-ID: ep_xyz789

[ZIP containing: original_invoice.xml, fixed_invoice.xml,
 change_report.txt, metadata.json, validation_before.json,
 validation_after.json, change_events.json]
GET/v1/fixer/evidence-pack/{id}

Retrieve Evidence Pack metadata by ID. Pro+ tier only.

Response

{
  "success": true,
  "data": {
    "pack_id": "ep_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"
  }
}
GET/v1/fixer/usage

Get your current Fix 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 Fixer endpoints require a Bearer token in the Authorization header:

curl -X POST https://api.invoicenavigator.eu/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 in to your Invoice Navigator account, go to Settings, API Keys, click “Create API Key”. Keys are scoped to your workspace.

Response Codes

CodeMeaning
200Success
400Invalid XML or missing required fields
401Missing or invalid API key
402Quota exceeded (upgrade plan or wait for reset)
403Feature not available for your tier
422No fixable errors found in provided error_codes
429Rate limit exceeded
500Internal server error

Rate Limits

TierMonthly API calls
Free
Pro5,000
Business25,000
EnterpriseUnlimited

Rate limit headers (X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset) are included in all API responses.

Ready to get started?

API access is available on Pro (5,000 calls/mo) and Business (25,000 calls/mo) plans.

View Plans & Pricing