e-Faktura API
v1 Guides MK Get started

e-Faktura API

Errors

Every error is application/problem+json (RFC 9457) except POST /v1/oauth/token, which uses plain OAuth 2.0 error JSON.

{
  "type": "https://developer.merot.com/efaktura/errors#validation_failed",
  "title": "Validation failed",
  "status": 422,
  "detail": "One or more fields failed UJP validation.",
  "instance": "req_01J9Z5C6D7E8F9G0H1J2K3",
  "code": "validation_failed",
  "errors": [
    { "path": "lines[2].taxIndicator", "message": "Unknown tax indicator for document type 100.", "codebook": "tax-indicators" }
  ]
}

instance is the request id — also echoed in the X-Request-Id response header; include it when contacting support.

Codes

CodeStatusMeaning
unauthenticated401Missing, malformed or expired credentials.
key_revoked401The API key has been revoked.
insufficient_scope403The key/token lacks a required scope.
company_not_allowed403The company isn’t in this key’s allow-list.
environment_mismatch403A sandbox key touched a production resource, or vice versa.
production_not_enabled403The account has no active production plan yet.
company_required400X-Company-Id is required (the principal has more than one company).
idempotency_key_required400A write is missing its Idempotency-Key header.
idempotency_conflict409The same key was reused with a different request body.
idempotency_in_progress409A request with this key is still being processed.
client_reference_conflict409The same clientReference was reused with a different body.
period_closed409Storno/correction blocked — the annual account is filed for that year.
decision_deadline_passed409The inbox accept/reject deadline has passed.
signature_expired410The signing request expired before a signature arrived.
signature_invalid / payload_mismatch / certificate_mismatch422The submitted signature failed verification.
validation_failed422Field-level validation errors, or totals_mismatch for a totals mismatch.
pdf_not_ready409The document hasn’t settled at UJP yet.
rate_limited429Too many requests — see Rate limits.
not_found404No such resource for this company.
ujp_unavailable503The synchronous UJP registry pre-flight (on company creation) timed out.

UJP-sourced errors

Where a validation error comes directly from a UJP codebook rule, errors[].codebook names the codebook, so you can look the value up yourself — Merot never renames or reinterprets UJP’s own codes.