Skip to main content
In sandbox you fund wallets from the faucet. In live, funds come from actual money sources — cards, bank accounts, crypto wallets, or hosted on-ramp sessions. This guide covers the full spectrum.

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):
For Plaid-linked banks, verification happens in the link flow. For manual bank entry, micro-deposits arrive in 1-2 business days; the user confirms the amounts in your UI, which submits back to this endpoint. Source status transitions: unverifiedverified | blocked.

Step 3 — Initiate funding

Once verified:
Amount is in minor units (amount_cents) — 50000 = $500.00 USD. Avoid float precision issues. Response:

Step 4 — Watch settlement

Status: pendingprocessingcompleted | 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)

Returns { 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:
Returns a short-lived session token. Pass it to the Plaid Link SDK client-side.

Estimate fees before funding

Returns provider fee, Sly fee, FX spread, and total — useful for displaying to end users.

Cross-currency funding

Funding a USDC wallet from a USD bank account = on-ramp + FX.
Use the returned quote_id on the funding transaction to lock in the rate.

List providers + supported pairs

Endpoints

Common pitfalls

  • Forgetting idempotency_key on 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 unverified state can’t fund; verify first
  • Provider-specific KYC — some providers require additional KYC beyond Sly’s; check the source’s verification_status