Use Idempotency-Key on value-moving partner requests so retries do not create duplicate money movement.

Required on

POST /api/v1/wallets/verify-withdrawal
POST /api/v1/swaps
POST /api/v1/swaps/{id}/confirm
POST /api/v1/payment-links
POST /api/v1/payment-links/{id}/expire
Idempotency-Key: payout-20260710-0001
Use a unique key per attempted operation. If a request times out, retry with the same key and the same request details. Rivo returns the original saved response for a repeated key.

How it maps to flows

FlowEndpointKey recommendation
Confirm withdrawal or payoutPOST /api/v1/wallets/verify-withdrawalUse a key tied to the preview transactionId.
Create swapPOST /api/v1/swapsUse a key tied to your internal swap attempt ID.
Confirm swapPOST /api/v1/swaps/{id}/confirmUse a key tied to the swap transaction ID.
Create payment linkPOST /api/v1/payment-linksUse a key tied to your internal checkout, invoice, ticket, or top-up attempt ID.
Expire payment linkPOST /api/v1/payment-links/{id}/expireUse a key tied to the payment link ID and expire attempt.
Do not reuse the same idempotency key for different operations.