REST · OpenAPI · EN 16931

Invoicing for your product,
as an API

Not an XML converter. A billing back end: sequential numbering, an immutable archive with a checksum, corrections and credit notes, and German and Austrian e-invoicing that comes with it. Billing for your own customers works too, one workspace each.

8 Document types, each linked to the one it came from
SHA-512 Checksum over every finalized PDF in the archive
1 : 1 One isolated workspace per client of yours, on request

What you get that a converter has no place for

  • Numbering — named number ranges per document type, with reset periods. The number is assigned when the document is finalized, never before.
  • An archive that holds — the finalized PDF is stored and hashed with SHA-512. Later renders never replace it; the archived file is the document.
  • The rest of the paperwork — quote, order, purchase order, delivery note, invoice, partial invoice, correction and credit note, each linked to what it came from.
  • A dry run — every document type has a preview endpoint that runs the finalizing code in memory and writes nothing.
  • EN 16931 output — ZUGFeRD 2.x, Factur-X, XRechnung in CII and UBL.

One key, or one workspace per client

Building one product? Create an account, generate a key, start. Everything above works from the first request.

Billing on behalf of your own customers? Then each of them needs a separate workspace with its own company details, templates and number ranges, and you need one key that reaches all of them. Write to us and we will set it up: a test workspace to build against, provisioning for your clients, and an invoice instead of a card payment. support@timelane.app

The dry run, in one request

The preview endpoint shares its code path with finalizing, so what you see is what you would get. It assigns no number, stores nothing, and marks the result as a preview.

POST /api/v1/invoices/preview
Authorization: Bearer qsp_…

{
  "customerId": 42,
  "items": [
    { "description": "Consulting, June", "quantity": 12, "unitPrice": 140.00 }
  ]
}

The full list of endpoints, fields and error shapes is in the API reference.

Try the output before you write any code

The public validator checks any ZUGFeRD, Factur-X or XRechnung file against the official EN 16931 rules. No sign-up, and the file is held in memory only.

Pricing

API access comes with the Pro plan. Create your account, upgrade, and generate a key in the settings; see the plans for current prices.

Start with a preview request

Create an account, generate a key, and call the preview endpoint. Nothing is written until you finalize a document.

Ein unbehandelter Fehler ist aufgetreten. Neu laden 🗙