Skip to content
moallet

Wallet infrastructure API

Wallet infrastructure for your platform

Give every customer their own Solana deposit address for USDT and SOL. Deposits are detected and credited automatically, your funds sit in one pool per app, and payouts go to any address with a single API call.

  • Idempotent payouts
  • Two-factor console
  • Reconciliation APIs

Built for platforms, marketplaces, fintech and digital-goods apps.

Features

Everything you need to hold and move customer funds

One API for deposit addresses, customer balances, a pooled treasury and payouts — plus a console for your operations team.

Per-customer deposit addresses

Create a customer with your own ID and get a dedicated Solana address that accepts USDT (SPL) and SOL. The same ID always returns the same address.

Automatic deposit detection

Incoming transfers are detected on-chain and credited to your app pool and to the customer's ledger. No node to run, no chain to watch.

One pooled treasury per app

All of an app's funds sit in a single pool per asset. Top it up at any time from a dedicated top-up address.

Payouts to any address

Send to any Solana address with your own idempotent reference. Retrying the same reference never pays twice.

A console with two-factor sign-in

Your team manages apps, customers, top-ups and payouts in a console protected by authenticator-app codes.

Full history and reconciliation

Cursor-based transaction history, payout lookups by reference and per-customer balances keep your books in sync.

How it works

From first customer to first payout in three calls

  1. Step 1

    Create a customer

    Send your own customer ID. You get back a Solana deposit address — the same ID always returns the same address.

    POST /users/
    { "user_id": "customer-1001" }
  2. Step 2

    Your customer deposits

    They send USDT or SOL to that address. The deposit is detected, credited to your pool and to the customer's ledger, and listed in the transactions API.

    GET /transactions/?status=SUCCESS
    DEPOSIT · +250.00 USDT · confirmed
  3. Step 3

    You pay out

    Pay any amount from the pool to any address with your own reference. External wallets are paid on-chain; wallets on our network are settled internally — instantly, with no network fee.

    POST /transfer/
    to_address, amount, reference

Security

Designed so that a retry — or a stolen session — can't move money twice

Two-factor console

Authenticator-app codes protect sign-in and every payout made from the console, with one-time backup codes as a fallback.

Idempotent by design

Every payout carries your own reference. A double click, a timeout or a retry returns the original result instead of paying again.

72-hour hold on internal inflows

Funds that arrive by internal settlement can't be paid out to external wallets for 72 hours. On-chain deposits are payable right away.

Addresses never stop working

A customer's address stays valid. Issue a new one whenever you like — earlier addresses keep receiving and are still credited.

Payout address allowlist

Optionally restrict payouts to addresses you list in advance. New addresses wait 24 hours before they can be paid.

Read-only API keys

Give reporting and reconciliation systems keys that can read everything and move nothing.

FAQ

Common questions

See all questions
Which assets and networks are supported?

USDT (SPL) and SOL on Solana. The live list is available from the public chains endpoint.

Do I need to run a node or watch the blockchain?

No. Deposits to your customers' addresses are detected for you and credited to your pool and to each customer's ledger.

What happens if a payout request is sent twice?

Send the same reference and you get the first result back. Nothing is paid twice.

How do I get an account?

Accounts are issued by your account manager. There is no self sign-up.

Ready to build?

Read the docs to see every endpoint, or sign in to manage your apps.

Existing customer?Sign in
Read the docs