FAQ

Frequently asked questions

Top-ups, payouts, holds and balances — the questions that come up most while integrating.

Pool and top-ups

My pool is too low to pay out. How do I top it up?

Open your app in the console. On the Overview tab, the Pool top-up card shows your app's top-up address — press Get top-up address the first time. Send USDT (SPL) on Solana to it; the pool balance (total_amount in total-balance) goes up once the deposit is confirmed.

Console → Apps → your app → Overview → Pool top-up

Send USDT (SPL) only — other assets or networks aren't credited. Don't top up through a customer's deposit address: money sent there is booked to that customer as well.

How do I withdraw everything in my pool?

Use the Pool payout card on your app's Overview tab. Enter the destination address and press Max — it fills in what you can pay out now minus the network fee. To automate it, call the payouts API with to_address and an amount of payout_available − withdrawal_fee from total-balance.

Console → Apps → your app → Overview → Pool payout (API: GET total-balance → POST transfer)

Part of my pool won't pay out (WITHDRAWAL_LOCKED).

Funds that arrive by internal settlement from other wallets on our network can't be paid out to external wallets for 72 hours. On-chain deposits to customer addresses and pool top-ups can be paid out right away. The error's data (locked, available, next_unlock_at) and payout_locked in total-balance show how much is held and when it's released.

Payouts

What happens to the money if a payout fails?

The amount and fee go back to your pool automatically and the payout becomes FAILED. If the on-chain result is uncertain, the payout stays PROCESSING while it's checked instead of being refunded automatically. Sending the same reference again returns the first result, so use a new reference to retry.

What happens when I pay out to a wallet on our network?

It's settled internally: there's no on-chain transaction and no network fee, and the response status is SUCCESS right away. Your app's internal transfer fee applies.

Can I restrict where payouts go?

Yes. Turn on the payout allowlist in the console (your app → Security). Payouts then only go to addresses on the list, and a newly added address becomes usable 24 hours later. You can also create read-only API keys there for reporting systems.

Customers and deposits

How is a customer balance different from the pool?

All of the money sits in your app pool. A customer balance is your ledger of what you owe that customer: it grows automatically on deposit, and you raise or lower it with balance/adjust. The payouts API doesn't debit customer balances — after you pay a customer, DEBIT their balance with balance/adjust.

When are customer deposits credited, and how do I check them?

When an on-chain deposit to a customer's address is detected, it's credited to your pool and to the customer's balance automatically. Read it from the transactions API (type DEPOSIT, the customer's user_id) and page with after_id so that nothing is missed.

Can I call the create-customer API more than once?

Yes. Calling it again with the same user_id doesn't create a new customer — it returns the same customer and deposit address (200, created: false). You can call it every time your user opens their wallet screen.

Can I give a customer a new deposit address?

Yes. Call wallets/rotate, or use Issue new deposit address on the Customers tab. The new address becomes the current one; previous addresses keep working and are still credited to the same customer.

Can't find your answer? Your account manager can help.

© 2026 Moallet