Funding options at a glance
Step 1 — Register a funding source
Source types and required fields
Non-custodial crypto wallets don’t require registration — agents can send directly to their Sly wallet address.
Step 2 — Verify the source
Bank accounts typically require verification (micro-deposits or identity check):unverified → verified | blocked.
Step 3 — Initiate funding
Once verified:amount_cents) — 50000 = $500.00 USD. Avoid float precision issues.
Response:
Step 4 — Watch settlement
pending → processing → completed | failed.
Or subscribe to funding.transaction.completed webhook.
Hosted on-ramp (consumer-facing)
For consumer flows where the end-user completes funding in a branded Sly-hosted page — useful when you don’t want to build card/bank capture UI yourself.Coinbase on-ramp (fiat → USDC → your wallet)
{ session_token, session_url }. Redirect the user; they complete funding in Coinbase’s flow; the wallet is credited on confirmation.
Stripe crypto on-ramp
Similar pattern, different provider:Crossmint order (card → USDC, web + mobile friendly)
Off-ramp (USDC → fiat)
The inverse — move from a Sly wallet out to a bank:Embedded widget session
For a Plaid / Belvo link flow embedded in your UI:Estimate fees before funding
Cross-currency funding
Funding a USDC wallet from a USD bank account = on-ramp + FX.quote_id on the funding transaction to lock in the rate.
List providers + supported pairs
Endpoints
Common pitfalls
- Forgetting
idempotency_keyon funding transactions — retries create duplicate debits - Rounding in amount — always use
amount_cents, never floats - Stale quotes — FX quotes expire in ~30 seconds; re-quote before large moves
- Unverified source — sources in
unverifiedstate can’t fund; verify first - Provider-specific KYC — some providers require additional KYC beyond Sly’s; check the source’s verification_status