Skip to main content
·Brock

Adding Cash Matches: Two Wallets, PayPal, and the Hard Stuff

Cash matches are live. Here's how the dual wallet system works, why I went with PayPal, and the fraud and payout challenges I'm still working through.

paymentsarchitecture

Cash matches just went live on GotNext this week. Players can now wager real money on 1v1 matches. Getting here took longer than I expected, and not because of the code. The hard part is everything around the code.

Two Wallets, Two Purposes

GotNext has two separate wallets: a credit wallet and a cash wallet. They serve different purposes and I wanted to keep them completely separate.

The credit wallet is for tournament entries. Credits are the platform currency you use to enter tournaments. They can be purchased, earned through promotions, or awarded as bonuses. One credit equals one dollar.

The cash wallet is for cash matches. When you want to wager on a 1v1, you deposit real money into your cash wallet via PayPal and use that balance to enter wager matches. The winner takes the pot (minus a small platform fee).

Keeping these separate was a deliberate choice. Tournament entries and cash match wagers are fundamentally different things with different flows, different risk profiles, and different payout considerations. Mixing them into a single balance would have made the accounting and edge case handling way more complicated.

Deposits with PayPal

For cash wallet deposits, I'm using PayPal. It's what the community is already familiar with, and for a platform where most users are console gamers, PayPal is the path of least resistance. Almost everyone already has an account.

Stripe handles tournament hosting fees separately (organizers pay a fee to create hosted tournaments), but for the player-facing cash wallet, PayPal made the most sense.

Payouts Are Manual (For Now)

This is the part I want to be upfront about. Right now, payouts are manual. When a player requests a withdrawal from their cash wallet, I process it myself.

It's not scalable, and I know that. But I made a deliberate choice to launch cash matches with manual payouts rather than wait until I had a fully automated system. The alternative was delaying the feature for months while I built and tested automated payouts, and the community has been asking for cash matches since day one.

I've been talking with multiple companies that provide automated payouts as a service. There are several options out there for platforms that need to send money to individuals, each with different fee structures, compliance handling, and integration complexity. I'm evaluating a few of them now and plan to integrate one once I've done proper due diligence. Sending people's money is not something I want to rush.

Fraud Detection

The other thing I started working on before launching cash matches is a fraud detection system. When real money is involved, people will try to game the system. Collusion (two friends intentionally losing to each other to transfer funds), multi-accounting, and deposit chargebacks are all real threats.

I'm building detection for suspicious patterns: accounts that only play against each other, unusual win/loss patterns between the same players, rapid deposits followed by immediate withdrawal requests, and new accounts that go straight to high-wager matches.

It's not a solved problem. I'm layering on detection rules as I learn what actual abuse patterns look like on the platform. The transaction log tracks every movement in both wallets, so I have a full audit trail to work with.

The Hard Parts

The trickiest part of building a payment system for competitive gaming isn't the payment processing itself. It's the edge cases:

  • What happens when a match is disputed? Cash is held in escrow until the dispute is resolved.
  • What if a player disconnects mid-match? The system needs rules for how to handle this, and both players need to agree or go to dispute.
  • Chargebacks. If someone deposits via PayPal and then disputes the charge, we need to handle that gracefully without letting them keep a balance they didn't pay for.
  • Minimum balances and withdrawal limits. You need guardrails to prevent abuse.

Each of these scenarios required careful thought about state machines, transaction logs, and audit trails. Every wallet movement is logged. Every match result that involves money has a full paper trail.

Lessons So Far

If you're building anything that handles money: start with the sad paths. Don't just build the happy path where everything works perfectly. Build the dispute flow first. Build the refund flow first. Build the "what if the server crashes mid-transaction" flow first. The happy path is easy. The edge cases are where platforms fail.

Cash matches being live is a huge milestone for GotNext. The next priority is getting automated payouts integrated so I can stop processing withdrawals by hand.

    Adding Cash Matches: Two Wallets, PayPal, and the Hard Stuff | GotNext.gg