Core principle
For financial operations (/sale, /refund), treat transport failures as "state unknown" until proven otherwise.
- Do not assume failure on timeout.
- Use the same
documentExtIDfor retries of the same business operation. - Always send and persist your own unique
documentExtIDper operation.
Practical default for /sale and /refund: resend the same request with the same documentExtID.
The server-side idempotency logic will either return an existing result or continue processing the same operation.