Every team adds retries before they add idempotency keys. Which means for a while, your "resilience" is just a machine that charges people twice under load.
We've inherited this in payment flows more than once. Where does your system dedupe — the client, the gateway, or nowhere yet?