Skip to content
einvoicing.dev

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.

Problemapplication/problem+json
{  "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 answers200 with valid: false.
  • 402 is the Free plan's allowance, 429 is a rate limit. Paid plans are metered past their allowance and never see 402. A 429 carriesRetry-After, and waiting that long is the whole fix.
  • A 5xx is ours. 503 from 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.