A fresh wallet holds nothing: no stablecoin to move and no ETH to pay gas
with. On the sandbox the fastest fix is the built-in faucet; on production
(and anywhere else) wallets simply receive funds like any on-chain address.
Option 1: The faucet (sandbox only)
The faucet exists only on the Sandbox environment (Sepolia). On Production
(Mainnet) it would move real funds, so POST /fund does not exist there and
returns 404; fund production wallets with a real deposit (Option 2).
One call sends test stablecoin and tops up ETH for gas:
The 201 means the request was accepted and queued; a background worker
sends the funds a few seconds later. Poll GET /transactions/{id} until the
status is CONFIRMED (or FAILED) before spending the funds; see
Track transactions.
Details worth knowing:
amount is optional. Omit it for the deployment’s default faucet
amount, or pass a decimal string like "250" to request a specific amount.
- Two legs, one call. When the wallet is short of ETH, the worker first
sends a gas top-up (its hash lands in
metadata.gasTxHash, with
metadata.gasToppedUp: true), then the stablecoin transfer, whose hash is
the transaction’s txHash. settlementTxHash is not used for faucet
transactions.
- Rolling 24-hour cap. Faucet volume is capped per account over a rolling
day. Exceeding it returns
400 faucet_cap_exceeded; the cap resets as old
requests age out. Queued and pending faucet requests count toward it.
- Works for external wallets too: the faucet is a plain on-chain send, so
watch-only addresses can receive it.
If the transaction ends up FAILED with errorCode: "faucet_failed", the
sandbox operator wallet is out of stablecoin or ETH; that’s an operational
issue on the platform side, not something your integration can fix, and no
funds moved. See Troubleshooting.
Option 2: Receive from anyone
Every wallet is a real on-chain address on the environment’s chain (Mainnet in
production, Sepolia on the sandbox). Share it and receive stablecoin, cAROUSD,
or ETH from any counterparty:
- Dashboard: the Receive screen shows the address, a QR code, a copy
button, and a downloadable address card.
- API: fetch the address from
GET /wallets/{id}, or produce a shareable
.nota address card with GET /wallets/{id}/nota.
Fiat on-ramps (bank transfer, card, Ramp, MoonPay, Transak) appear in the
dashboard as coming soon; on the sandbox, the faucet plays their role in
the meantime.
Verify the result
You should see normal.amount increased and a healthy eth.amount for gas.
From here, mint cAROUSD to step onto the confidential
rail.