Two rails, one balance
A dual-rail wallet accepts deposits in fiat and in crypto and holds the result as a single balance the player can bet from. The rails differ in how value arrives and leaves; they should not differ in what the player sees once it has arrived.
That single-balance rule is the whole design. Everything difficult about the implementation comes from honouring it, and everything confusing about the alternative comes from abandoning it.
Why a bolted-on crypto wallet drifts
The quick version of this feature is a second wallet beside the first: fiat here, crypto there, a transfer button between them. It ships fast and then splits the product in two. Bonuses apply to one side, limits to the other, and the player has to think about which pocket their next bet comes out of.
It also splits reporting. Turnover, exposure and lifetime value now have to be assembled from two ledgers with different units, which is exactly the reconciliation work the single balance was supposed to avoid.
Pricing the conversion honestly
If the balance is denominated in one unit, every crypto deposit is a conversion, and a conversion needs a rate, a timestamp and a spread the player can see. Quote it at the moment of credit, record the rate used, and show it on the transaction rather than folding it silently into the amount.
Volatility between deposit and withdrawal is a real cost to somebody. Deciding explicitly whether the platform or the player carries it, and saying so, is better than discovering the answer during a dispute.
Settlement, refunds and reversals
Fiat rails reverse. Card payments can be charged back weeks later, and the ledger has to be able to unwind a credit that has already been played through. Crypto rails do not reverse, but they do reorganise, so a deposit credited at one confirmation is not final in the same sense as one credited at six.
Both cases argue for the same thing: credits carry a settlement state, and the wallet knows the difference between funds that have arrived and funds that are merely visible.
What the player should see
One balance, one history, and a clear label on each entry saying which rail it came in on and at what rate. Nothing about the underlying complexity needs to reach the lobby, but everything about the money's provenance should be reachable from the transaction list.
