Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.openfiskal.com/llms.txt

Use this file to discover all available pages before exploring further.

For the full error catalog and per-code retry guidance, see Errors.

Platform guarantees

OpenFiskal publishes these current platform targets for the fiscalization API:
AreaGuidance
Availability target99.9% monthly for production
Typical synchronous latencyp50 < 300 ms, p95 < 1200 ms for standard operation mutations
Client timeout guidance10s request timeout, 30s total retry budget for synchronous calls
Rate limiting500 requests/second per API key
429 behaviorReturns Retry-After in seconds and a stable rate_limit_exceeded error code

Idempotency rules

Send Idempotency-Key on every mutating operation request (POST /operations, PATCH /operations/{id}/complete, PATCH /operations/{id}/void). The following are Forward-looking platform rules. Clients should code against them, but server-side enforcement is not yet live (see Reserved codes):
  • retention window is at least 24 hours
  • uniqueness scope is endpoint plus merchant plus authenticated tenant
  • reusing a key with the same payload will return the original response
  • reusing a key with a different payload will return 409 idempotency_key_conflict

Concurrency rules

Operation mutation endpoints (PATCH /operations/{id}/complete, PATCH /operations/{id}/void) require If-Match with the latest operation ETag. Omit it and the API returns 428 precondition_required. Send a stale value and the API returns 412 precondition_failed; the expected and current versions are included in message (e.g. "Resource version mismatch. Expected 1, current is 2."). The If-Match header value must be a quoted positive integer (e.g. "1"); a malformed value returns 400 invalid_request.

Request tracing

Every response includes an X-Request-Id header (e.g. req_a1b2c3d4e5f60718293a). Persist it in your logs and attach it to support cases.

Next steps