Caps & Idempotency
The three guards on every reversal: the amount cap, reversal_code, and the no-reversal-of-reversals rule — and the codes that guard bonuses and penalties
Reversals move real value, so three guards stand in front of every one. All are automatic — nothing your staff or systems must remember.
1. Never More Than the Original
A transaction can only ever be reversed up to its own size. Partial refunds add up: refund 100 twice against a 200-point redemption, and a third attempt is refused. A fully reversed transaction refuses everything.
2. Accidental Repeats Are Ignored
Every reversal carries your refund reference. Submitting the same one again — a double-clicked button, a replayed message — is recognized and ignored. A refund can never happen twice.
The same guard protects manual operations: every bonus, penalty and adjustment carries an operation code of yours, and a repeated code is answered “already done” instead of applied again.
3. Reversals Cannot Be Reversed
A reversal is a correction, not a transaction of its own — so it can never be targeted by another reversal. Made a wrong correction? Reverse the original again in the other direction; the never-more-than-the-original guard keeps everything bounded.
What Reversals Do to the Lifetime Story
What happened | How the totals read afterwards |
|---|---|
Clean undo of an earning | Lifetime earned goes down — as if it never happened |
Clean undo of a redemption | Lifetime spent goes down — as if it never happened |
Points taken back | Lifetime reversed goes up |
Points refunded | Lifetime reversed goes down — refunds offset take-backs |
The books survive everything
Last updated on