Skip to main content
Invoice-Converter.comInvoice-Converter
BlogPricing
Convert InvoiceConvert
ConvertConvert Invoice
⌘K
Documentation overview
  1. E-Invoicing Resources
  2. Developer API

Integration

External API V1 Documentation

Technical documentation package for partner IT review and feedback. This page summarizes the externally exposed API contract and rollout constraints.

Overview

The API accepts multipart uploads, returns JSON responses, and uses standard HTTP status codes and Bearer authentication. Submit a PDF invoice, wait for asynchronous processing, and then fetch the generated result.

Send a PDF invoice to a single endpoint and Invoice-Converter handles extraction, validation, and output generation. The result endpoint returns the generated file only after validation gates pass; otherwise it returns 422 VALIDATION_FAILED. Public operational endpoints are intentionally minimal and do not expose internal service topology.

Status: public beta

Base path: /api/v1. Last synchronized 2026-04-11.

Key capabilities

  • Single endpoint for PDF-to-XML conversion
  • AI-powered invoice data extraction
  • Automated EN 16931 and KoSIT validation
  • XRechnung, ZUGFeRD, UBL, and CII output formats
  • Async processing with polling - results in 5-15 seconds
  • Idempotent writes for safe retries

Delivery Artifacts

Download machine-readable integration artifacts for the Developer API.

OpenAPI JSON
Postman collection
API Playground

Quickstart

Three API calls complete a conversion. The convert endpoint is served at /api/v1 and requires authentication.

POST /api/v1/invoices:convert

live

Convert PDF to structured e-invoice

GET /api/v1/tasks/{task_id}

live

Poll task status

GET /api/v1/tasks/{task_id}/result

live

Download conversion result

Required request headers

  • Authorization: Bearer <api_key>

Auth rules

Use your API key as a Bearer token. Keys are provisioned in your account settings under Profile → API keys.

  • Keys are tenant-scoped and environment-scoped (`live` / `test`). Key prefix determines environment.
  • Provision or rotate keys under `Profile` → `API keys` in your account, or contact support.
  • Missing or invalid key returns `401`.
  • Calls via the website proxy (`/api/v1`) receive an `X-Correlation-ID` automatically when omitted.
  • Write calls require `Idempotency-Key`; keep this value stable across retries.
  • Use server-to-server integration from your backend. Browser-origin access is restricted in production.

Idempotency contract

  • Send an `Idempotency-Key` on every write call.
  • Idempotency keys must match `[A-Za-z0-9._:-]+` and be at most 200 chars.
  • If you provide your own key, the same key + identical payload returns the cached response.
  • Same key + different payload returns `409 IDEMPOTENCY_CONFLICT`.
  • Idempotency keys expire after `24 hours`.

Endpoint Reference

All endpoints are served through the website proxy at /api/v1. Upstream timeouts surface as 504 and other proxy connectivity failures as 502; correlation IDs propagate end-to-end for traceability. Trusted-host and origin controls are enforced in production deployments.

POST /api/v1/invoices:convert

live

Upload a PDF invoice and start asynchronous conversion. Returns a task_id for polling. Request: multipart/form-data. Response: 202 Accepted.

GET /api/v1/tasks/{task_id}

live

Poll the current status of a conversion task. Returns pending, processing, completed, or failed. When failed, the response includes an error field with the failure reason. Request: none (GET). Response: 200 OK.

GET /api/v1/tasks/{task_id}/result

live

Download the generated file (XML or PDF). Result syntax matches the original task format: XRECHNUNG/EN16931/UBL return UBL XML, CII/ZUGFERD return CII XML, and ZUGFERD + download=pdf returns a hybrid PDF/A-3. Repeated downloads may be served from cached generated artifacts. If blocking validation issues remain, this endpoint returns 422 VALIDATION_FAILED and no file body. Request: none (GET). Response: 200 OK.

Output format matrix

FormatSyntaxVersion / ProfileContent-TypeExtension
XRECHNUNGUBL 2.1 XMLXRechnung 3.0.2application/xml.xml
ZUGFERDCII XML (download=xml) / hybrid PDF/A-3 (download=pdf)ZUGFeRD 2.4 / Factur-X 1.08application/xml or application/pdf.xml / .pdf
EN16931UBL 2.1 XMLEN 16931application/xml.xml
UBLUBL 2.1 XMLOASIS UBL 2.1application/xml.xml
CIIUN/CEFACT CII XMLD16Bapplication/xml.xml

Changelog

Recent externally visible API changes.

2026-03-06

Made task-result downloads format-faithful for CII and ZUGFERD outputs. Added cached result artifact reuse for repeated XML/PDF downloads of the same task. Aligned polling quotas with endpoint-scoped weighted rate-limit buckets.

2026-02-23

Added clearer, consistent API error responses across all endpoints. Expanded convert options and documented XML/PDF download behavior for task results. Improved retry safety with stricter idempotency requirements and validation. Updated OpenAPI/Postman artifacts to match current API behavior.

2026-02-20

Simplified public health endpoint responses to status-focused output. Strengthened IndexNow submission validation and authentication checks. Hardened API access controls and request-limiting behavior in production.

Error Contract

CodeHTTPRetryableNotes
AUTHENTICATION_REQUIRED401NoMissing/empty bearer token
INVALID_API_KEY401NoAPI key not found/revoked/expired
IDEMPOTENCY_KEY_REQUIRED400NoWrite endpoint called without Idempotency-Key
INVALID_IDEMPOTENCY_KEY400NoIdempotency key has invalid format
IDEMPOTENCY_CONFLICT409NoSame key used with different request hash
IDEMPOTENCY_IN_PROGRESS409YesSafe to retry later with same key/payload
AUTH_SERVICE_UNAVAILABLE503YesAuth backend unavailable
RATE_LIMIT_SERVICE_UNAVAILABLE503YesRate-limit backend unavailable
RATE_LIMITED429YesRespect Retry-After and quota headers
BAD_REQUEST400NoInvalid JSON or invalid UUID path parameter
PAYLOAD_TOO_LARGE413NoOver upload size limit
INVALID_UPLOAD400NoUpload read/parsing failure
UPLOAD_FAILED4xx/5xxConditionalRetry only for transient 5xx cases
TASK_NOT_READY202YesPoll again for async completion
TASK_STATUS_FAILED4xx/5xxConditionalRetry if transient upstream/backend condition
TASK_RESULT_FAILED4xx/5xxConditionalRetry if transient upstream/backend condition
XML_GENERATION_FAILED500YesTransient XML generation failure or timeout
PDF_GENERATION_FAILED500YesTransient PDF generation failure or timeout
OUTPUT_PROFILE_REQUIRED422NoExplicit profile missing for a generic syntax format such as UBL or CII
OUTPUT_PROFILE_CONFLICT422NoProfile contradicts the selected output format or explicit variant
PROXY_ERROR502/504YesProxy/upstream failure (504 for timeout)

Rate & payload limits

Per-key rate limits and payload size constraints are enforced at the proxy layer. Denied requests do not consume quota. Proxy-header trust is fail-closed by default unless explicitly enabled for trusted infrastructure.

  • Endpoint-aware quotas are cost-weighted. Convert uses the baseline plan quota (default `30/min` and `500/hour`), while polling endpoints use lower weighted quotas.
  • Read effective limits from `X-RateLimit-Limit-Minute` and `X-RateLimit-Limit-Hour` on responses.
  • PDF upload max size: `20 MB`
  • JSON payload max size: `1 MB`
  • Rate-limit responses include `Retry-After`, `X-RateLimit-Limit-Minute`, and `X-RateLimit-Limit-Hour`.

Retry guidance

  • Use exponential backoff with jitter.
  • Retry only transient classes (`429`, `500`, `502`, `503`, `504`) using the same payload and idempotency key where possible.
  • Do not blindly retry validation or contract errors (`400`, `401`, `403`, `409`, `413`).

Task lifecycle & retention

  • Completed and failed tasks remain available for `10 minutes` after reaching terminal state.
  • Processing times out after `5 minutes` — stuck tasks are automatically marked `failed`.
  • Idempotency keys expire after `24 hours`.
  • Rate-limit counters reset on a rolling window.

Support model

  • Business-hours support.
  • Target first response: 1 business day.

Send Technical Feedback

Share implementation questions, risks, and required contract changes with our team.

Email technical feedback
Previous page
Trust & Security
Next page
API Playground
On this page
OverviewKey capabilitiesDelivery ArtifactsQuickstartRequired request headersAuth rulesIdempotency contractEndpoint ReferenceOutput format matrixChangelogError ContractRate & payload limitsRetry guidanceTask lifecycle & retentionSupport modelSend Technical Feedback

Invoice-Converter.com

Empowering businesses across Europe to effortlessly comply with XRechnung regulations. Join hundreds who've automated their invoice conversion process.

Start Converting

Features

Convert PDFs & create

  • PDF to XRechnung
  • PDF to UBL
  • PDF to XRechnung (CII)
  • PDF to ZUGFeRD
  • PDF to Factur-X
  • Create XRechnung
  • XRechnung to PDF

View & validate

  • XRechnung/XML Viewer
  • XRechnung Validator

Quick Links

  • Resources
  • Trust & Security Center
  • Developer API Documentation
  • Blog
  • About
  • Pricing
  • Free trial
  • Climate Contribution

Legal

  • Imprint
  • Privacy Policy
  • Data Processing Agreement
  • Terms & Conditions
  • Money-Back Guarantee

Get in Touch

contact@invoice-converter.com
© 2026 Invoice-Converter.com.Made with in Europe
GDPR Compliant
German Server