Skip to main content

Seamless Wallet Setup & Security

This guide will help you set up and configure Seamless Wallet integration with Evenbeter.


What is Seamless Wallet?​

In Seamless Wallet integrations, the Evenbeter system does not store player funds. Your system remains the single source of truth for player balances. Whenever money needs to be withdrawn or deposited, our system makes a callback request to your server, and you handle the actual balance changes.


Prerequisites​

Before you begin integration, the following configuration is required:

SEAMLESS_KEY

  • A secure key used to sign and verify all requests
  • We provide this key to you during setup
  • Must be different for test and production environments
  • Keep this key secure and never expose it in client-side code
warning

If your seamless key is compromised, immediately notify Evenbeter support. For better security, we recommend periodic key rotations.


Communication Protocol​

All communication between Evenbeter and your system follows these rules:

Request Format​

  • Method: HTTP POST
  • Content Type: JSON
  • Authentication: Signature-based (see Security section below)

Response Format​

  • Content Type: JSON
  • Required fields: Vary by request type (see individual API references)
  • Error handling: Return appropriate error codes (see Error Reference)

Security​

All requests are secured using signature-based authentication to ensure data integrity and prevent unauthorized access.


Request Signature​

Every request from Evenbeter includes a signature in the HTTP header that you must validate.

Header name: sign

How the signature is generated:

  1. The complete JSON request body is converted to a string
  2. Your SEAMLESS_KEY is appended to this string
  3. SHA256 hash is applied to the combined string
  4. The resulting hash is sent in the sign header

Signature Validation Example (PHP)​

<?php
// Step 1: Get the incoming request data
$jsonMessage = file_get_contents('php://input'); // Raw JSON string
$sign = $_SERVER['HTTP_SIGN']; // Signature from header
$SEAMLESS_KEY = 'your_seamless_key_here'; // Your seamless key

// Step 2: Calculate expected signature
$expectedSign = hash('sha256', $jsonMessage . $SEAMLESS_KEY);

// Step 3: Validate signature
if ($sign !== $expectedSign) {
// Invalid signature - return error
http_response_code(200);
header('Content-Type: application/json');
echo json_encode([
'errorCode' => 1,
'errorDescription' => 'Invalid signature'
]);
exit;
}

// Step 4: If valid, parse and process the request
$request = json_decode($jsonMessage, true);
// ... continue with your business logic
?>

Signature Validation Example (Node.js)​

const crypto = require('crypto');

function validateSignature(req, SEAMLESS_KEY) {
// Get the raw body and signature
const jsonMessage = JSON.stringify(req.body);
const receivedSign = req.headers['sign'];

// Calculate expected signature
const expectedSign = crypto
.createHash('sha256')
.update(jsonMessage + SEAMLESS_KEY)
.digest('hex');

// Validate
if (receivedSign !== expectedSign) {
return false;
}

return true;
}

// Usage in Express.js
app.post('/api/evenbet/wallet', (req, res) => {
if (!validateSignature(req, process.env.SEAMLESS_KEY)) {
return res.json({
errorCode: 1,
errorDescription: 'Invalid signature'
});
}

// Continue processing...
});
Important Notes
  • The signature is calculated using the exact raw JSON string as received
  • Do not parse the JSON before validating the signature
  • The SEAMLESS_KEY is not sent in the request - only you and Evenbeter know it
  • Different SEAMLESS_KEY values should be used for test and production environments

IP Whitelisting​

For production environments, IP whitelisting is required for both sides:

Evenbeter side:

  • Our specialists will configure IP whitelisting on our servers
  • Only requests from your whitelisted IPs will be accepted

Your side:

  • You must whitelist Evenbeter's IP addresses
  • Only accept requests from Evenbeter's IPs
  • We will provide you with the IP addresses to whitelist

To request IP whitelist changes:

  • Contact your Evenbeter account manager
  • Provide your server IP addresses
info

IP whitelisting is not required for test/staging environments, but is mandatory for production.


Testing Your Integration​

Manual Testing Tool​

Evenbeter provides a manual testing tool to verify your integration implementation:

Test Tool URL: https://tests.evenbetgaming.com/seamless/

Use this tool to:

  • Verify your signature implementation
  • Test request/response formats
  • Simulate different transaction scenarios
  • Debug integration issues
Recommendation

Thoroughly test your integration in the staging environment before going live. Test all transaction types and error scenarios.


Automated Testing Suite​

Before going live, you must pass our comprehensive automated test suite. This includes 35+ automated tests covering all API methods and edge cases.

Access to automated tests:

  • Login credentials will be provided by your Evenbeter account manager after initial setup is complete
  • Tests must be successfully completed before production launch
  • The automated test suite validates signature implementation, error handling, idempotency, and all transaction flows

Contact your account manager for automated test access credentials when you're ready for final validation.


Callback URL Configuration​

With your logic fully tested and verified, you are ready to enable live transactions by configuring your secure callback URL.

CALLBACK_URL​

  • The URL endpoint where Evenbeter will send all transaction requests
  • Provide this URL to us, and we'll configure it on our end
  • Must be accessible via HTTPS
  • Example: https://your-domain.com/api/evenbet/wallet

Integration Checklist​

Before going live, ensure you have completed the following:

Essential​

  • Provided CALLBACK_URL to Evenbeter
  • Provided IP whitelist to Evenbeter
  • Implemented signature validation on your server
  • Configured Evenbeter IP whitelisting for production
  • Tested integration using manual test tool: https://tests.evenbetgaming.com/seamless/
  • Passed all automated tests (credentials provided by Evenbeter account manager)
  • Implemented proper error handling
  • Implemented idempotency checks (prevent duplicate transactions)
  • Set up monitoring and logging for all requests
  • Documented your integration for your team

What's Next?​

Now that your integration is set up and tested, learn how the transaction flow works:

  1. Seamless Wallet Transaction Flow - Understand when each API is called and see complete transaction scenarios
  2. API References:
  3. Error Reference - Handle errors properly

Support​

If you encounter any issues during integration: