LuxxonSettlement contract; sessions debit from that pool
automatically. Operators receive USDC directly into their wallet
each time a session settles.
Base is Coinbase’s L2 — an Ethereum rollup with
sub-second blocks, ~$0.001 gas per transaction, and native USDC.
For non-crypto users, see Non-crypto users
for the Smart Wallet + Onramp + paymaster path.
Two reads: state + events
GET /wallet returns the current snapshot:
| Field | Meaning |
|---|---|
walletAddress | Checksummed Base address. Send USDC here to fund. |
trackedBalance | µUSDC the platform sees on-chain (reconciled by the deposit watcher). |
lastSyncBlock | Highest block consumed by the watcher. A heartbeat. |
GET /wallet/events returns the append-only ledger of on-chain
activity affecting this workspace:
DEPOSIT, WITHDRAWAL, SETTLE, APPROVAL.
Cursor-paginated; the prior page’s last id is the next page’s
cursor parameter.
Funding a consumer wallet
Two steps the first time, one step thereafter.Step 1 — get USDC on Base
Pick whichever fits: Coinbase Onramp (Apple Pay → USDC on Base) — the fastest path for users without crypto. Apple Pay funds USDC directly on Base, typically under a minute for amounts under $500. KYC inherited from Coinbase. Direct USDC transfer. If you already hold USDC on Base, send it to your workspace’swalletAddress. Native USDC on Base is the
Circle-issued contract 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913.
Bridge from another chain. Use any standard bridge (Across,
Stargate, Coinbase’s native bridge for Ethereum L1).
Step 2 — top up the per-session pool
Sessions debit from a pool onLuxxonSettlement, not from your
wallet directly. Funding the pool is a one-time approve + deposit:
From console.luxxon.dev: the
Wallet panel on your workspace dashboard surfaces:
- USDC balance in your wallet
- Pool balance on
LuxxonSettlement(read viaLuxxonSettlement.deposits(yourWallet)) - A Top up button (preset amounts + custom) that signs the
approve+depositpair - A Withdraw button that pulls unused balance back
approve followed by
deposit); every subsequent top-up is one popup (deposit alone,
because the approval is already in place).
Programmatically:
/end with zero
further signatures. At POST /sessions time the API reads
LuxxonSettlement.deposits(yourWallet) and rejects with
INSUFFICIENT_CREDIT if the pool can’t cover rate × maxDurationSeconds.
Withdraw
LuxxonSettlement.withdraw(amount) pulls unused USDC out of the
pool to your wallet. The contract honors withdraw even when the
admin has paused the rest of the platform — your escape valve is
non-negotiable.
Receiving payouts (operator side)
Operator workspaces don’t need to do anything special. When a session they fulfilled settles, the contract’ssettleFromPool(...) debits the consumer’s pool balance and
transfers USDC to the operator’s wallet in the same transaction.
The operator’s USDC balance just goes up.
There’s no “withdraw” flow on the operator side because there’s no
custody to withdraw from — Luxxon never holds the operator’s
USDC. Moving it out (to a CEX, to another wallet, to a swap) is
between you and your wallet.
What’s NOT in this API yet
- Auto-refund of unused pool balance at workspace deletion
- Sweep / consolidation endpoints
- Multi-currency wallets