When an HTTP request to top up or void wallet credits times out or drops before the response is received, retrying the request creates a duplicate transaction. Since there's no way to safely retry, this can lead to repeat top ups.
Adding Idempotency-Key header support to POST /wallet_transactions and the void endpoint (the same mechanism already used for event ingestion) would allow clients to retry safely with no risk of duplication.