Receiving Funds
How settlement works
TokenCashFlow settles every payment in USDT. When a payment completes:
- The received crypto is swept from the temporary payment wallet to the platform (via the configured exchange where applicable)
- The settlement engine computes fees and writes a ledger credit to your account balance
- You withdraw manually at any time — withdrawals are processed in USDT to a wallet address you configure per chain
The fee_payer setting (merchant or payer absorbs fees) is snapshotted at payment creation time. Changing the setting after a payment is created does not affect that payment — only future payments.
Fees overview
Fees are deducted before crediting your account. The exact percentages are set by the platform operator.
Service fee
Applied to every payment (default: 0.5% of amount_usd).
Conversion fee
Applied to every payment since all payments settle in USDT (defaults):
| Payer's crypto | Default fee |
|---|---|
| Stablecoin (USDT on any chain) | 1.0% of amount_usd |
| Any other crypto | 2.0% of amount_usd |
Fee payer option
You choose who absorbs the fees in Dashboard → Payment Settings (or via PUT /v1/payments/settings):
- Merchant pays (
fee_payer: "user", default): fees are deducted from the settled amount —net = amount_usd − service_fee − conversion_fee - Payer pays (
fee_payer: "payer"): the required crypto amount shown to the payer is increased to cover the fees; you receive the fullamount_usd
Withdrawal fee
A per-chain fee configured by the platform operator, deducted from each withdrawal. Check the current fee for a chain via GET /v1/withdrawals/fee-estimate?chain_id=... or in Dashboard → Withdrawals.
Account balance
Your USDT balance is ledger-derived:
balance_usd— total credits minus debitsreserved_usd— amounts locked by withdrawal requests awaiting admin approvalavailable_usd— what you can withdraw right now
Query it at any time: GET /v1/withdrawals/balance.
Withdrawing funds
Withdrawals are currently manual, USDT-only, and processed through the platform's configured exchange:
- Add a wallet address for the target chain (Dashboard → Withdrawals → Wallets). Chains available for withdrawal are shown in Dashboard → Withdrawals, or via
GET /v1/withdrawals/chains. - Requests start in
pending_approvaland must be approved by the admin team; the on-chain withdrawal is then processed and monitored to completion. - If your account has 2FA enabled, you must include a valid
totp_codewith the withdrawal request. - Each request must be at least the minimum withdrawal amount (default: $10.00) and above the per-chain withdrawal fee.
- If you hold Basic KYC, a rolling 24-hour withdrawal limit applies (default: $50,000/day). Advanced KYC removes the daily limit.
You receive withdrawal.completed / withdrawal.failed webhooks when the on-chain withdrawal finalises.
Address validation. Invalid addresses are rejected when you submit withdrawal requests. Always double-check the destination — on-chain transfers are irreversible.
Settlement on partial expiry
If a payment settles after its selection window expired while only partially funded (expired_partial), you are credited proportionally to the amount actually received, rather than the full amount_usd.

