Docs · How it works
Errors
Every error is application/problem+json (RFC 9457). Branch on type, which is stable and is a link to a page explaining it.
{ "type": "https://www.einvoicing.dev/problems/allowance-exhausted", "title": "The Free plan's monthly allowance is used up.", "status": 402, "detail": "…"}Never branch on title or detail: they are prose written for a human reading a log, and they change. type does not.
The distinctions worth knowing
- 400 means the body did not parse; 422 means it parsed and was wrong. The first is a bug in how you built the request, the second is a fact about the document.
- An invalid invoice is not an error at all. Validation answers
200withvalid: false. - 402 is the Free plan's allowance, 429 is a rate limit. Paid plans are metered past their allowance and never see
402. A429carriesRetry-After, and waiting that long is the whole fix. - A 5xx is ours.
503from validation means the validator is unavailable, not that your document is bad; retry it.
Every type
There are 24, each with a page saying what it means and what to do. The problems reference lists them all; every operation's page lists the ones it can answer with.
All problem types
Every error the API can return, with what to do about each.
API reference
Which errors belong to which operation.