Idempotency-Key, X-Request-Id, and webhook retry and deduplication behavior.
HTTP errors and error responses
401or another auth failure means the request does not have a usable bearer token. Typical causes are a missing, invalid, or revoked token.403means the token or company does not have permission for the operation.404means the resource does not exist in the current company context.429means the company exceeded the Fintoro API rate limit.422means the request payload or query parameters failed validation.500means an unexpected internal error.503means a temporary service or dependency outage.
/api/public/* are returned as JSON even when the request omits Accept: application/json. This also applies to route-level 404 responses and unexpected internal errors. Successful download endpoints that return PDF or other binary content are not affected and continue to return their original Content-Type.
Rate limiting
- Fintoro API uses a default limit of
120 requests per minute per company. - The limit is evaluated at the company level, not per token. Multiple tokens issued for the same company therefore share one rate-limit budget.
- All throttled endpoints return the
X-RateLimit-LimitandX-RateLimit-Remainingheaders even on successful responses. - When the limit is exceeded, the API returns
429 Too Many Requests; that response includes the sameX-RateLimit-LimitandX-RateLimit-Remainingheaders and additionally addsRetry-AfterandX-RateLimit-Reset. - If your integration needs a higher limit, we also offer custom enterprise terms and limits. Contact us at info@fintoro.sk.
Idempotency-Key and safe retries
On create operations, we recommend sendingIdempotency-Key when the endpoint supports it. If you repeat the same create request with the same key and the same payload, the backend returns the original result instead of creating a duplicate.
Idempotency-Key with a different payload, the endpoint rejects the request. Check the exact status code and error payload in the documentation for that endpoint.
Without Idempotency-Key, automatic retries of write requests are risky because a timeout or network failure may still happen after the backend already committed the write. Treat retries after 500 and 503 as safe only when you use Idempotency-Key and want to avoid duplicate writes.
X-Request-Id and diagnostics
Fintoro returnsX-Request-Id, which you should store in your integration logs. When investigating an incident, support case, or audit trail, this identifier makes request lookup and correlation with our internal logs significantly faster.
Webhook retries and deduplication
If you use webhooks, assume an at-least-once delivery model:- a non-
2xxresponse, timeout, or network failure triggers a retry, - the same
webhook-idcan arrive more than once, - the receiver must deduplicate and safely process a redelivered event.
- persisting
webhook-idbefore downstream processing, - returning
2xxonly after the request has been accepted and your own internal job has been queued, - returning non-
2xxonly when you want Fintoro to retry the delivery.
Implementation checklist
- generate the
Idempotency-Keyso it stays stable for one business attempt to create a resource, - do not mix production and sandbox tokens or their request logs,
- use the validation response details to fix the request before sending it again,
- respect
Retry-Afterand the rate-limit headers on429responses instead of aggressive retry loops, - store
X-Request-Idfor support, audits, and incident handling, - make your webhook receiver idempotent and deduplicate by
webhook-id.

