InvoiceKit

The rule sets are a permanent job. That job is the product.

Everything on this site stays free: the validator, the converters, the rule reference, and the MIT Go library they are built from. Cloning that library and running your own validator is a real option, and anyone who tells you otherwise is selling you something.

What is not free is keeping it right. EN 16931 errata, UN/CEFACT codelists that move several times a year, PEPPOL BIS versions, and a national profile per country you sell into — each one needing a release and the conformance fixtures to prove nothing regressed. That is a fraction of a permanent role, and the failure mode is being quietly wrong on a Tuesday until a customer’s filing is rejected. This page is about hiring someone else for that rota: us.

Not open for business yet. There is no checkout behind this page and no API key to hand out this month. What it does today is find out who wants this and at what price; the numbers below are the ones we are testing, and they are what we would charge when the metering layer is built.

Who this is for

It is not for one invoice. For that, the free checker above is the right tool and we mean that.

What you would be buying

The same engine, in four shapes
CapabilityWhat it means in practice
Rule sets kept current EN 16931 v1.3.17 and its codelists, XRechnung CIUS 2.6.0 (XRechnung 3.0.2), Peppol BIS Billing 3.0 release 3.0.21, Factur-X PEF. We track Brussels; you read the changelog.
Remediation, not just rejection Findings keyed to the exact node with an XPath, phrased for an end user, plus the fix: CII↔UBL conversion, generate-from-model, Factur-X embedded into a PDF. “No” is free; “no, and here is the corrected document” is the billable part.
PDF and XML audited together PDF/A-3 conformance, the attachment, the XML inside it, and the disagreement between what the PDF shows and what its embedded XML claims — a compliance exposure most tools never look at.
One verdict, everywhere Browser, CLI, container and API are the same build. Every report names the engine version and the rule set version, so your QA and our support line are arguing about the same bytes.
Fast enough to run before Save Pure Go, no JVM, no cold start: a few megabytes and milliseconds per document, which is what makes a synchronous pre-save check inside your own UI viable.
A verdict you can show afterwards Document hash, rule set, codelist version and engine version stored as a record — an audit trail for an accountant or an inspection, retained only if you ask for it.
Handling EU infrastructure, no-retention by default, batch throughput, and a support line that answers to your developers rather than to your ticket queue.

Prices we are testing

Volume is priced per document, not per seat — a validator that charges per developer punishes the integration work instead of the invoice count. Enter your monthly volume and the calculator works out which tier you land in and what it costs per thousand documents.

Monthly, euros, exclusive of VAT
PlanPer monthIncludesNotes
Trial key€01,000 documents Rate limited, community support, nothing stored. This is what the API starts with.
Team€14925,000 documents Rule sets current within five working days, 90-day verdict evidence, email support.
Business€599150,000 documents 99.9% availability, named remediation help, 12-month evidence, priority on new profiles.
Self-hostfrom €2,500 / yearyour own network The same binary, no invoice leaving your infrastructure, support included. Quoted per site.
Pick a volume to see the tier and the effective price.

Volumes above 150,000 documents a month are quoted: €2.50 per extra thousand documents, falling to €1.00 per thousand above a million. Below 1,000 documents a month, use the free pages.

Design partners

Ten vendors, half the prices above for twelve months, and the profile you need next — a CIUS, a buyer-specific extension, a legacy mapping — built in the order the queue asks for it. In exchange: your volume, your edge cases, and permission to say you use us. No money moves until the metering layer exists, which is the honest state of things.

How to ask for it

There is no sales inbox yet, and inventing one would be worse than admitting it. The front door is the issue tracker on the engine repository, which is public and answered by the person who wrote the engine:

Open an evaluation key request — volume, syntax, rule sets, and when it has to work. An issue is a real record: it is dated, it is public, and it cannot quietly disappear into a mailbox.

If you would rather read the code first, that is the point of it being MIT: invoicekit.go for the library and the einv CLI, invoicekit.ts for the same engine as WebAssembly with types, and static binaries if you want it in a pipeline before talking to anyone.

How the answer would reach you

An HTTP endpoint, an API key and a monthly document counter — developer-led, so the free key and the rate limits do the evaluating before any conversation does. The same engine in a container image for anyone who wants the binary but not the network call, and the identical report shape in both, so a test written against one works against the other:

POST /v1/validate            Authorization: Bearer ik_live_…
Content-Type: application/xml

<the invoice, unsaved by default>

200 {
  "syntax": "cii",
  "valid": false,
  "findings": [
    { "id": "BR-06", "flag": "fatal",
      "message": "[BR-06]-An Invoice shall contain the Seller name (BT-27).",
      "context": "/rsm:CrossIndustryInvoice" }
  ],
  "fatal": 1, "warn": 0, "internal": 0, "schema": [],
  "engine": "0.2.2"
}

Add ?cius=xrechnung or ?profile=peppol to the same call and a wider rule book runs against the same bytes, each finding naming the rule set it came from. GET /v1/rulesets answers which upstream release of every rule set a build carries, which is the question to ask before believing any validator's verdict.

The report shape is what the engine produces today — the free checker on this site runs that same code in your browser, and a go build of the service answers it over one core. The key, the counter and the checkout around it are what is not built. Publishing the contract before the paywall exists is deliberate: argue with the shape now, not after.

Frequently asked

Is the API open for business?

Not yet. The validator, converter and PDF auditor on this site are live and free; the metering, keys and checkout behind them are not built, and there is no payment account to take money through. The prices on this page are the ones we are testing, and the honest way to test them is to publish them.

Why pay when the library is MIT and the rule sets come from the European Commission?

You should not be paying for the artefacts — anyone can download them, including our competitors. You are paying for the standing obligation: codelist releases several times a year, PEPPOL BIS versions, national profiles, errata, and the conformance fixtures that prove a release did not break a rule. Plus something an MIT licence cannot give you: a support line and an engine version to cite when a customer’s document is rejected.

What does one document cost to run?

Four minutes of one core. The engine validates about 480 documents a second — 2.1 ms a document, measured in the repository over the official CEF corpus, with the benchmark and the command beside it — so a hundred thousand documents a month is a fraction of a day's CPU on a machine you already have, and the same engine behind the API answered 290 sequential requests at a median of 2.2 ms and a 95th percentile of 3.1 ms on that one core. The per-document price is not a compute charge: it pays for the rule sets being current and the verdict being reproducible a year later, neither of which more CPU buys.

Do you keep my invoices?

No. The default is no retention: the document is validated and discarded, and the only record is a counter. Verdict evidence — document hash, rule set, codelist and engine version, never the document itself — is stored only if you turn it on, for the period your plan states.

How fast do you ship a new rule set version?

Within five working days of a European Commission or Peppol release on the Team plan and above, with the conformance run in the changelog so you can see nothing else moved. If a version lands before a deadline you have, that is the conversation to have early.

Can we run it ourselves instead of calling you?

Yes — the self-host licence is the same binary, priced above the API tiers because you are taking on the deployment while we keep the rule sets current and answer support. Some vendors will not send invoices off their network at all, and arguing with that is a waste of everyone’s afternoon.

What does a finding actually look like?

The rule id as the European Commission publishes it, the severity from the artefacts rather than our preference, the published wording, and the exact node it fired on as an XPath — enough for a developer to fix it and enough for a customer to understand it. The rule reference shows every id the engine can report.