API errors

Invalid request body

The JSON body of your request does not match the documented schema. The invoice was not processed — validation never started.

Error type
https://normbill.com/docs/errors/invalid-request
HTTP status
400

Common causes

  • A required field is missing (for example invoice.number, invoice.issue_date, seller.address.country or lines[].unit_price).
  • A field has the wrong type (a number sent as a string, a date not in YYYY-MM-DD format).
  • An unknown field was sent — the request schema is strict and rejects keys it does not know.
  • A size ceiling was exceeded: an invoice may carry at most 1,000 lines, and the XML sent to /v1/invoices/validate or /v1/invoices/parse at most 1 MiB measured in UTF-8 bytes (ä/ö/ü/ß/€ take 2–3 bytes each, so a 1 MiB ceiling is fewer than 1,048,576 characters for German text). Both ceilings are part of the published schema, so the SDKs and the browser playground reject the document before it is sent.
  • The body is not valid JSON, or the Content-Type header is missing.

How to fix it

  • Read the errors array in the response: each entry carries the JSON path of the offending field and a message.
  • Compare your payload against the request schema in the API reference (https://api.normbill.com/docs) or the example on the docs start page.
  • Field names are snake_case (unit_price, issue_date, buyer_reference) — camelCase variants are rejected as unknown keys.

The error response format

Every non-2xx response from the API is an RFC 9457 problem-details body (application/problem+json) with at least type, title, status and detail. The type URL links back to this reference.

All error slugs: invalid-request, bad-request, payload-too-large, unauthorized, validation-failed, unparseable-document, plan-limit, quota-exceeded, rate-limited, overage-cap-reached, validate-fair-use, generate-failure-fair-use, idempotency-key-invalid, idempotency-key-reuse, idempotency-conflict, pdf-unavailable, validator-unavailable, not-ready. Still stuck? Email support@normbill.com or start at the docs overview.

Spotted something?

Bug, missing feature, wrong validation result — tell us. The page you're on is attached automatically; email optional.