Money (credits, USDC & amounts)
The two collateral stacks, geo-gating, and why amounts are in wei.
Two things to get right before you move money: which collateral stack you're on, and that amounts are base units (wei), not whole tokens.
Credits vs USDC
Markets and bets carry a collateralMode of 'credits' or 'usdc':
| Stack | What it is | Geo |
|---|---|---|
credits | a platform-managed balance (test / play) | not geo-gated |
usdc | real on-chain USDC collateral | geo-gated: restricted regions get 403 with code GEO_BLOCKED (detect with isGeoblockError) |
Either way, your managed account needs a funded balance, or writes fail with 400 "Insufficient Credits" (or insufficient balance). Fund it before trading.
Testnet faucet (register does not fund you)
eoaRegister / eoaLogin only provision the managed account and return a JWT. They do not credit USDC or credits. On testnet, mint via the SDK faucet after you have the managed address:
await sdk.public.faucet.mint({
address: managedAccountAddress, // from eoaLogin / eoaRegister — not your EOA
});
// Testnet success: ~1000 USDC + ~1000 Credits on the managed account.Optional readiness check: await sdk.public.faucet.status().
Without this (or another funding path), placeBet, paid tournament create/enter, and similar writes fail with insufficient balance.
Amounts are in wei
betAmount and betAmountUsdc are base units of the collateral token, not whole tokens. On BSC / credits that's 18 decimals:
const tenUnits = '10000000000000000000'; // 10 units, NOT '10'Passing '10' means 10 wei, effectively zero. Scale by the token's decimals (e.g. viem's parseUnits('10', 18)), or use collateralDecimals from your onchain.contracts.
Related
- Accounts & wallets: where the balance lives
- Place a bet
- Enter a tournament: vault buy-in vs in-tournament chips