Skip to content
Finovel
Blog

Retrying API calls without being charged twice

Networks fail at the worst moment. Here is how idempotency keys make a retry safe.

Finovel team · 1 November 2026

Your server sends a verification request. The connection drops before the answer comes back. Did the check run? Were you charged? Should you try again?

Without help, there is no safe answer: retrying might pay for the same check twice, and not retrying might leave a customer stuck.

Send a key with each request

Add an Idempotency-Key header that identifies the piece of work, such as an order or application number.

Idempotency-Key: application-48213-pan

Then retry as often as you need:

  • Same key, same body: you get the stored response. No new check runs and nothing more is charged. Stored responses are kept for 24 hours.
  • Same key, different body: you get a 409 error, because that is almost always a bug.
  • The last attempt failed or your balance was low: the key is released, so a retry runs again.

How charging stays exact

Before a production call, the price is held in your wallet. When the result arrives, the hold is either captured or released in one step, along with the request's final state. Each request can settle only once, so a retry cannot charge twice, and errors are never charged.

If a request is ever left unfinished, it is marked as unknown and its hold is released without charging you.

You can read the details in the docs.

Tell us what you need to verify

We will reply with the right APIs and a price for your volumes.