A ready-made cashier, permanent player wallets and payouts you approve — 16 coins on 13 networks, 0.5% per deposit.

Deposit, withdraw and history in one window: a modal, a frame inside your page or a popup. One API call on your server opens it for a player.
One address per player and network that never changes. Every transfer is credited to that player after the network confirmations and announced by a signed webhook.
A withdrawal in the cashier is only a request. Your server debits the player and confirms it; only then does it become a payout.
Daily amount and count limits per player and a hold on the first withdrawal to a new address: tripped rules wait for manual approval.
Senders and payout addresses are checked against the OFAC sanctions list and the platform block list. Matching deposits are frozen, matching withdrawals refused.
Let players pay in BTC, ETH, SOL or meme coins and convert automatically to USDT or USDC for 0.25% on top of the venue cost.
If a block is reorganized after a deposit was credited, the credit is reversed and you get deposit.reversed at once.
Separate test and live keys, read / payments / payouts permissions, IP allowlists, team roles and two-factor sign-in.
// Your server, when the player opens the cashier
const API = 'https://stablora.xyz/api/v1';
const res = await fetch(`${API}/cashier/sessions`, {
method: 'POST',
headers: { Authorization: `Bearer ${STABLORA_KEY}`,
'Content-Type': 'application/json' },
body: JSON.stringify({ externalId: player.id }),
});
const { url } = await res.json();<script src="https://stablora.xyz/cashier.js"></script>
<script>
Stablora.openCashier(url, { onClose: refreshBalance });
</script>if (event.type === 'deposit.confirmed') credit(event.data);
if (event.type === 'cashier.withdrawal_requested') {
const w = event.data;
if (debit(w.externalId, w.asset, w.amount))
await stablora.post(`/cashier/withdrawals/${w.id}/confirm`);
else
await stablora.post(`/cashier/withdrawals/${w.id}/reject`,
{ reason: 'Insufficient balance' });
}Webhooks are signed with HMAC-SHA256 and retried with backoff. API reference
| Deposits | 0.5% per credited deposit |
| Withdrawals | Network fee + 0.5% commission, paid from the amount sent |
| Conversion | +0.25% on top of the venue cost, only if you turn it on |
| Cashier widget | Included, no monthly or setup fee |
Stablora is a custodial gateway: deposits arrive on addresses the platform controls and your balance is recorded in our ledger until you withdraw it. Build with a test key first, then route a small real deposit and a small withdrawal before real volume, and withdraw what you do not need — automatic withdrawals can do it for you.
No. A withdrawal in the widget creates a request and sends you cashier.withdrawal_requested. Money only moves after your server confirms it, and then your payout approval rules and player limits still apply. Unanswered requests expire after 24 hours.
Each player has a permanent address per network. Deposits arrive as deposit.confirmed with the customer id you created from your own player id, after the network confirmations.
Your Stablora balance on the same network and asset. With the pooled balance model all deposits fund one pool you pay players from; you can also top it up from your own wallet without a processing fee.
Yes. A test API key opens a test cashier on test networks. Open a test cashier from Dashboard → Cashier, simulate deposits and answer the withdrawal requests before you switch to a live key.
No documents are required to open an account today. We may ask about your business or a transaction at any time and hold payouts until we hear back — see the AML policy.
Create a free workspace, open a test cashier from the dashboard and walk through a deposit and a withdrawal.
Create a free workspace