Skip to main content
Every error response uses the same envelope. Switch on code (machine-readable, stable), not on message (human-readable, may change).

Response shape

The trace identifier is returned only in the X-Request-Id response header (e.g. X-Request-Id: req_a1b2c3d4e5f60718293a). It is not embedded in the error body. Persist it in your client logs and attach it to support cases.

Retry guidance

The retryable field on each response reflects this rule: it is true for any 5xx, 429, or 412, and false otherwise.

Standard error codes

These codes map directly to HTTP status codes and apply to every endpoint across the Fiscalization, Reporting, and Hosted Receipts APIs unless noted.

Conflict (409) variants

All 409 responses share the envelope. The code field distinguishes the cause.

Validation errors (422)

Most 422 responses emit code: "validation_error", with the specific violation in message. A few conditions carry a dedicated code, called out below.

Operation shape

Amount and payment validation

The payment-status pairing carries a dedicated code rather than the generic validation_error:

Decimal precision

Fiscalization preconditions

Reporting API

Not-yet-implemented endpoints

Today the only path that can return HTTP 501 Not Implemented is the export endpoint, when a request lands for an export type that has no exporter registered. The body carries code: "not_implemented" and retryable: true. Because the public wire enum currently exposes only dsfinvk, this path is unreachable through normal use.

Reserved codes (not yet emitted)

The OpenAPI contract advertises these codes on relevant endpoints, but the runtime does not emit them yet. They are kept here so client switch statements can include them ahead of enforcement landing.

Idempotency and concurrency

Idempotency keys, retention windows, and concurrency rules (If-Match / ETag) are documented on the Limits page. The errors those rules emit (precondition_required, precondition_failed) are in the standard table above; idempotency_key_conflict is forward-looking — see Reserved codes.

Request tracing

Every response includes an X-Request-Id header. Persist it in your client logs and attach it to every support case — it is the fastest path to a root-cause answer.

Next steps