Seamless Wallet API
Instant Play. Zero Player Transfers.
The modern gold standard for high-converting online casinos, sportsbooks, and crypto platforms. Player balances remain 100% centralized on your database. Every spin, bet, win, and rollback is processed via sub-45ms HMAC-signed webhook callbacks in real time.
Seamless Wallet Real-Time Lifecycle
How player spins execute across 260+ game studios in sub-45ms without moving a single cent out of your central ledger.
Player Initiates Spin
Player clicks spin in slot (e.g. Fortune Tiger or Aviator). Game client sends wager to studio server.
HMAC Signed Webhook
NoviSoft Gateway authenticates provider request, generates HMAC signature, and pings operator callback URL.
Atomic Balance Update
Operator verifies signature, debits bet amount in central database, and returns updated balance under 45ms.
Win Payout / Rollback
If round yields a payout, gateway instantly issues a Credit callback. Network blips trigger atomic Rollback.
Seamless Wallet vs. Fund Transfer Wallet
Key operational differences evaluated across performance, security, UX, and compliance.
| Architecture Metric | ⚡ Seamless Wallet (Single Wallet) | 🔄 Fund Transfer Wallet (Sub-Wallets) |
|---|---|---|
| Player Balance Custody | 100% on Operator Central DB | Transferred into Studio Carrier Sub-Ledgers |
| Player Experience (UX) | Zero Transfer Friction (Instant Play across all studios) | Requires credit transfer before entering game lobby |
| API Latency SLA | Sub-45ms Real-Time Webhooks | Sub-120ms REST API Transfer Calls |
| Network Failure Handling | Automated Atomic Rollbacks & Idempotency Keys | Isolated to sub-wallet; Core balance immune to studio drops |
| Server Infrastructure Burden | Operator server must handle high concurrent webhook TPS | Minimal webhook load; Operator calls endpoints only on deposit/withdraw |
| Agent & Credit Network Fit | Ideal for B2C Casinos & Direct Deposit Brands | Superior for 4-Tier Master/Senior Credit-Agent hierarchies |
| Cryptocurrency / Multi-Currency | Native dynamic conversion (USDT, BTC, EUR, BRL, INR) | Fixed currency conversion at deposit time |
| Security & Encryption | HMAC-SHA256 + IP Whitelist Mandatory | HMAC-SHA256 + IP Whitelist Mandatory |
Seamless Wallet Webhook Server (PHP, Node, Python, cURL)
Production-ready boilerplate handling HMAC verification, balance mutations, and response codes.
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\User;
class SeamlessWalletWebhookController extends Controller
{
public function handle(Request $request)
{
$operatorCode = config('services.gsc.operator_code');
$secretKey = config('services.gsc.secret_key');
// 1. Verify HMAC-SHA256 Signature
$method = $request->input('method'); // e.g. getbalance, changebalance, rollback
$requestTime = $request->input('request_time');
$expectedSign = md5($operatorCode . $requestTime . $method . $secretKey);
if (strtolower($request->input('sign')) !== strtolower($expectedSign)) {
return response()->json(['code' => 5003, 'message' => 'Invalid HMAC Signature'], 200);
}
// 2. Fetch Player Account
$memberAccount = $request->input('member_account');
$user = User::where('username', $memberAccount)->first();
if (!$user) {
return response()->json(['code' => 1001, 'message' => 'Player Account Not Found'], 200);
}
// 3. Handle Balance Query
if ($method === 'getbalance') {
return response()->json([
'code' => 0,
'message' => 'SUCCESS',
'data' => [
'member_account' => $user->username,
'balance' => (float)$user->balance,
'currency' => 'USD'
]
]);
}
// 4. Handle Wager / Win Balance Adjustment
if ($method === 'changebalance') {
$amount = (float)$request->input('amount');
$txId = $request->input('transaction_id');
// Prevent overdraft on debit
if ($amount < 0 && $user->balance < abs($amount)) {
return response()->json(['code' => 1002, 'message' => 'Insufficient Player Balance'], 200);
}
// Atomic balance mutation
$user->balance += $amount;
$user->save();
return response()->json([
'code' => 0,
'message' => 'SUCCESS',
'data' => [
'member_account' => $user->username,
'balance' => (float)$user->balance,
'transaction_id' => $txId
]
]);
}
// 5. Handle Atomic Rollback
if ($method === 'rollback') {
$rollbackAmount = (float)$request->input('amount');
$user->balance += $rollbackAmount;
$user->save();
return response()->json(['code' => 0, 'message' => 'ROLLBACK_SUCCESS']);
}
return response()->json(['code' => 9999, 'message' => 'Unknown Method'], 200);
}
}
Wallet Architecture FAQs
Everything operators need to know about wallet selection, TPS sizing, and reconciliation.
Which wallet protocol is right for my online casino?
If you run a direct-to-consumer (B2C) online casino, sportsbook, or crypto casino, Seamless Wallet is recommended because it removes all player transfer friction and maximizes turnover. If you operate an agent/credit network where sub-agents hold credit quotas per game provider, Fund Transfer Wallet is the ideal model.
How does Seamless Wallet handle disconnected player spins?
Our gateway implements strict Idempotency Keys and automated Rollback Hooks. If a player’s browser disconnects mid-spin or your server times out, the round is either completed by the studio RNG or automatically refunded via a rollback webhook.
Can I switch from Fund Transfer to Seamless Wallet later?
Yes. NoviSoft’s unified aggregator allows operators to switch between Seamless and Fund Transfer protocols with zero contract penalties. Your operator API keys support both protocols seamlessly.
How does GGR accounting work between the two models?
GGR (Gross Gaming Revenue = Total Settled Bets - Total Settled Wins) is tracked in real-time in your Operator Back-Office regardless of whether you use Seamless or Fund Transfer. Reports can be exported per game, studio, currency, and player.
Ready to Deploy Your Wallet Architecture?
Create a free operator developer account. Test our live Seamless Wallet webhook receiver and Fund Transfer API endpoints in the sandbox today.