Back to API Docs

Quickstart Guide

Validate your first e-invoice in 60 seconds - no signup required

Interactive Quickstart

Validate an Invoice in 60 Seconds

No signup required. Get a test key and validate a real invoice right now.

1
2
3

Step 1: Get a Test Key

Click the button below to instantly generate a test API key. No signup required.

Test keys are limited to 10 requests and expire in 1 hour.

Developer Tools

Integrate Invoice Navigator into your workflow with our ready-to-use tools.

Detailed Integration Guide
1

Get your API key

Sign up for a free account to get your API key instantly. No credit card required.

Get Free API Key

Already have an account? View your API keys

2

Install the SDK (optional)

Use our official SDK for the best developer experience, or call the REST API directly.

TypeScript / JavaScript

npm install @invoice-navigator/sdk

Python

pip install invoice-navigator
3

Validate your first invoice

Send an invoice XML to the validation endpoint and get instant results.

TSTypeScript

import { InvoiceNavigator } from '@invoice-navigator/sdk'
import { readFileSync } from 'fs'

// Initialize the client
const client = new InvoiceNavigator({
  apiKey: process.env.INVOICE_NAV_API_KEY
})

// Read your invoice XML
const invoiceXml = readFileSync('invoice.xml', 'utf-8')

// Validate the invoice (SDK returns unwrapped data)
const result = await client.validate({ xml: invoiceXml })

if (result.isValid) {
  console.log('Invoice is valid!')
  console.log('Format:', result.format)
  console.log('Ref:', result.validationRef)
} else {
  console.log('Validation failed:')
  result.errors.forEach(err => {
    console.log(`  [${err.code}] ${err.message}`)
  })
}

PYPython

from invoice_navigator import InvoiceNavigator
import os

# Initialize the client
client = InvoiceNavigator(
    api_key=os.environ["INVOICE_NAV_API_KEY"]
)

# Read your invoice XML
with open("invoice.xml", "r") as f:
    invoice_xml = f.read()

# Validate the invoice (SDK returns unwrapped data)
result = client.validate(xml=invoice_xml)

if result.is_valid:
    print("Invoice is valid!")
    print(f"Format: {result.format}")
    print(f"Ref: {result.validation_ref}")
else:
    print("Validation failed:")
    for err in result.errors:
        print(f"  [{err.code}] {err.message}")

cURL (REST API)

curl -X POST https://api.invoicenavigator.eu/v1/validate \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"xml": "'"$(cat invoice.xml)"'"}'
4

Handle the response

The API returns a structured response with validation status, detected format, and any errors.

{
  "success": true,
  "data": {
    "validationRef": "val_abc123xyz",
    "isValid": true,
    "format": "ubl",
    "formatVersion": "2.1",
    "rulesetsApplied": [
      { "id": "en16931", "version": "1.3.11", "pinned": false },
      { "id": "de-xrechnung", "version": "3.0.2", "pinned": false }
    ],
    "errors": [],
    "warnings": [],
    "metadata": {
      "invoiceNumber": "INV-2025-001",
      "issueDate": "2025-01-10",
      "currency": "EUR",
      "totalAmount": "1250.00"
    }
  },
  "meta": {
    "validationRef": "val_abc123xyz",
    "processingTimeMs": 87
  }
}

See the Validation API reference for the complete response schema.

5

Generate an Evidence Pack (optional)

For audit trails, generate a cryptographically signed Evidence Pack after validation.

// After successful validation
const evidencePack = await client.evidencePack({
  validationRef: result.id
})

console.log('Evidence Pack ID:', evidencePack.id)
console.log('Certificate URL:', evidencePack.certificateUrl)
console.log('PDF Download:', evidencePack.pdfUrl)

Evidence Packs are available on Pro plans and above. View pricing

You're all set!

You've successfully validated your first invoice. Explore more API endpoints or check out the full documentation.

Next Steps

Need help?

Check out our developer documentation or contact our team for support.