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.