The endpoint runs. It is private, so you cannot call it yet. The validator is deployed and answering, and the acceptance suite was run against the deployed endpoint on 6 September 2026. What is not done is the public listing and the one-off price write, so no prices are attached and nobody is being charged. The try-it box below tells you the same thing rather than faking a result.

Not legal or tax advice. Technical validation against the published rule sets. Transmission to a tax authority or to a certified platform is outside this service, and so is deciding what your business is required to do.

Four operations, priced per document

Valid or not, with the rule id, in one HTTP call.

Validate and generate EN 16931 e-invoices over HTTP: EN 16931 core and XRechnung, in UBL and CII, plus Factur-X and ZUGFeRD PDFs. One error shape whichever profile the document is in, and the version of every rule set used echoed back in the answer.

The operations

Four calls, priced per document.

No monthly fee, no start fee, no seat. You are charged for a document that was parsed, and for nothing else.

Most of the volume
POST /validate
$0.02per document
XML, or a Factur-X or ZUGFeRD PDF

Answer: valid or not, against the published rule set, with the rule id, the severity and the location of every failure.

  • EN 16931 core and XRechnung, in both the UBL and the CII syntax, plus Factur-X and ZUGFeRD PDFs
  • One error shape whichever profile the document turns out to be in
  • The version of every rule set used, echoed in the response
  • Embedded XML extracted and checked when you send a PDF
POST /generate
$0.05per document

A canonical invoice JSON in, XML out, in the profile you asked for. The output is validated before it is returned, and invalid output is never returned.

  • Fields map one to one onto the EN 16931 business terms
  • UBL and CII syntaxes
  • Refuses to return a document that does not pass, and hands back the errors instead
POST /generate-pdf
$0.08per document

The same input, returned as a PDF a human can read with the machine-readable invoice embedded inside it.

  • Factur-X and ZUGFeRD, with the XML embedded
  • A visual rendering for the recipient who still wants to look at an invoice
POST /extract
$0.02per document

The other direction: an XML or a Factur-X PDF in, the canonical JSON out, for the receiving side.

  • Round trips with generate, so what you put in comes back out
  • Reads the embedded XML out of a PDF

Per document, metered, no monthly fee and no start fee. These are the intended list prices for the four operations. No prices are attached to the endpoint yet, so nothing is being charged to anyone today. Bulk use through an accounting practice is invoiced by NeuraScale in euro instead of metered here.

The profiles

One error shape, whichever rule set applies.

You do not pick a profile. The validator reads the customizationId out of the document, matches it to a scenario, and names the scenario it used in the answer.

EN 16931 core

The European standard itself, in UBL and CII. The base every national profile is built on.

XRechnung 3.0

The German profile, in UBL and CII, run through the KoSIT validator with the official XRechnung configuration. Its rule set is republished twice a year and the version used is echoed in every answer.

Factur-X and ZUGFeRD

The hybrid: a PDF a person can read with the machine-readable invoice embedded inside it. The French and German name for the same thing.

The answer

A rule id, a severity and a location. Not a score.

A number out of ten tells a developer nothing about what to change. Every failure comes back with the identifier of the rule that produced it, so it can be looked up in the published rule set, and the rule set versions come back with it so an answer can be reproduced later.

{
  "valid": false,
  "profile": "EN16931 XRechnung (UBL Invoice)",
  "syntax": "ubl",
  "source": "xml",
  "durationMs": 164,
  "errors": [
    {
      "ruleId": "BR-CO-16",
      "severity": "error",
      "message": "[BR-CO-16]-Amount due for payment (BT-115) = Invoice total amount with VAT (BT-112) -Paid amount (BT-113) +Rounding amount (BT-114).",
      "xpath": "/Q{urn:oasis:names:...:Invoice-2}Invoice[1]/...LegalMonetaryTotal[1]",
      "step": "val-sch.1"
    }
  ],
  "warnings": [],
  "notices": [],
  "validatorVersions": {
    "kositValidator": "1.6.3",
    "xrechnungConfiguration": "xrechnung-3.0.2 release 2026-08-31",
    "mustang": "2.26.0"
  }
}

A real answer, with the xpath shortened to fit. Those version strings are the ones pinned in the running build: KoSIT validator 1.6.3, the XRechnung 3.0.2 configuration released 2026-08-31, Mustang 2.26.0. Each artifact is checked against its sha256 at build time, so a silently replaced release asset fails the build rather than quietly changing a verdict. One thing worth knowing before you integrate: valid is the validator's own verdict, not one we compute, and a handful of rules are classified as warnings and still make the report reject the document. When that happens you get valid false with an empty errors array and the reason in warnings.

Measured, not projected

Numbers off the deployed endpoint, on one day.

Every row below was measured on 6 September 2026 against the running validator, and where a row is a range that range is the whole spread rather than the best of it. They are one day's numbers on one connection, not a service level, and they are here because a docs page with no numbers on it is asking you to take its word.

Validator time, ordinary invoice
32 to 101 ms

The Schematron pass itself, excluding the network.

XML round trip from Egypt, warm, p95
2.89 s at concurrency 1, ten sequential calls

Median 1.98 s over those ten calls, on a residential connection to the deployed endpoint. Standby is capped at four requests per run here, so this is not a p95 under load and no concurrent load test was run.

PDF round trip
generate-pdf 18.6 to 54.4 s

Because every Mustang action starts a fresh JVM, and generate-pdf runs three of them. Give a PDF call a 90 s timeout, and do not put one behind a form that expects an answer in a second. 54.4 s was the deployed endpoint, 18.6 s and 24.2 s the same build locally. Validating a Factur-X PDF measured 18.9 to 24.1 s on a batch run.

Cold start of the validator
6.7 to 69.7 s over three Standby observations, 2026-09-06

A JVM boot at 2048 MB, paid once by the first caller after an idle period. Two batch runs the same day booted in 15.7 and 23.7 seconds. It is a distribution rather than a number, which is why the range is here instead of the best of it.

Acceptance suite
48 of 48 in the built image (0.1.2)

The Standby suite was last run on 0.1.1 at 42 of 43, the one miss a 504 on gateway scale-up, and has not been re-run against 0.1.2.

Platform cost per document
about $0.002

A six document run on build 0.1.2 cost $0.011379 in platform usage. An earlier nine document run on 0.1.1 cost $0.009405.

Not connected yet

Try it, and see the honest answer.

The box below is wired to the real route, and the route is wired to the real validator. What is missing is one thing: a demo access token, which only the account owner can issue. Until it exists the route says so and the box prints that answer instead of a fake result. The day the token is set, the same box starts returning real validation output and nothing else on this page changes. Capped at 20 documents a day per address.

No profile to pick. The validator reads the profile out of the document and tells you which one it matched. UBL or CII XML, or a Factur-X or ZUGFeRD PDF as base64.

Invoices carry personal data. Nothing you paste is stored, and today nothing leaves this page at all, because this box has no validator token behind it yet. Use a test document rather than a real one anyway.

A warm validator answers in about two seconds, but the first call after an idle period can take up to a minute while the validator starts. The box counts the wait out rather than leaving a spinner sitting there.

Out of scope, on purpose

What this deliberately does not do.

  • Transmission. Sending a document to a tax authority or through a certified national platform is outside this service.
  • Acting as a certified platform or a network access point.
  • Peppol BIS Billing 3.0. The rule set in this build is XRechnung and EN 16931 core. Peppol needs a second Schematron set and is planned, not shipped.
  • The Polish and Spanish national formats.
  • Digital signatures and long-term archiving.
  • Tax advice of any kind.
If you are an accountant, not a developer

You probably want the service, not the endpoint.

A practice does not want an API. It wants its clients moved off spreadsheets and templates without changing the tool anyone works in, one client at a time, at a price it can quote. That is a different page and it is open today.

E-invoicing onboarding for accounting practices

Where this stops, in one paragraph.

Technical validation against the published rule sets. Not tax or legal advice. Transmission to a tax authority or to a certified platform is outside this service.

France is the case where that matters most, so it is worth saying before you build against this rather than after. Only a registered platform, a plateforme de dematerialisation partenaire, may transmit an invoice in France. NeuraScale is not one and will not become one. You need a platform account of your own, contracted directly with that provider. This endpoint produces and checks the document; getting it to the other side is the platform's job.

FAQ

What a developer asks before writing the integration.

Not yet, and the reason is a listing rather than an engineering one. The validator is deployed and answering: the acceptance suite ran against the deployed endpoint on 6 September 2026. It is private while the public listing and the one-off price write are finished, so there is no credential to hand you. Send a document to omar@neurascale.org in the meantime and it is put through the same validator by hand, with the same rule ids in the answer, within a working day.
Private until the listing is done

Send a document and get the same answer by hand in the meantime.

The validator runs; the public credentials do not exist yet. A document sent to omar@neurascale.org goes through the same validator, comes back with the same rule ids, within a working day, and you get told when the endpoint opens. Not legal or tax advice.

18–24h reply · Cairo + EU hours · honest scoping