Sphere
An operating system for cross-border money movement.
What it is
Sphere (Sphere Laboratories, Inc.) is a B2B cross-border payments API that moves dollars between countries using stablecoins as the settlement rail. Its core SpherePay product runs the 'stablecoin sandwich' — convert local currency into a USD stablecoin, move it on-chain, then pay out in the destination currency — wrapping KYC/KYB, fiat rails, and multi-chain settlement behind one API. It is also building SphereNet, a permissioned Solana-VM ledger (developed with Anza) that bakes compliance and privacy into the settlement layer itself. This is Arnold Lee's Sphere Labs (founded 2023), not an unrelated older consumer 'SpherePay'.
How it works
- Stablecoin sandwich: local currency → USD stablecoin (USDC/USDT) → destination currency, settling on-chain in the middle.
- Onramper accounts: virtual bank accounts that auto-convert fiat deposits (ACH, Wire, SEPA, PIX) into stablecoins.
- Offloader wallets: blockchain wallets that auto-convert incoming stablecoins into fiat payouts to a linked bank account.
- Customers (individuals or businesses) clear KYC/KYB once, then register bank accounts + crypto wallets as reusable instruments; transfers quote a rate-locked price and return deposit instructions.
- Multi-chain coverage (Solana, Ethereum, Base, Polygon, Tron, Arbitrum, Avalanche, Aptos) lets Sphere route the on-chain leg on the cheapest/fastest network.
- SphereNet: a permissioned, closed-loop modified Solana VM with enshrined compliance (ZK identity proofs, MPC, sanctions screening) for regulated transfers between institutions.
Differentiators
- SphereNet — a compliance-first permissioned Solana-VM ledger (built with Anza) with KYC/AML, sanctions screening, and privacy (ZK/MPC) enshrined at the protocol level, rather than bolted on.
- Full lifecycle API: customers + KYB/UBO, instruments, quotes, transfers, and automated Onramper/Offloader accounts in one v2 REST surface.
- Deep emerging-market focus — local hiring, sales, and compliance investment in LatAm (Brazil/BRL, Mexico) where B2B stablecoin corridors are growing fastest.
- Strong Solana-ecosystem backing (Jump Crypto, Solana Ventures, Anza, Pyth, Anatoly Yakovenko, Raj Gokal) gives it privileged access to the rail it builds on.
Business model
FX spread on the stablecoin sandwich + fees on transfer volume; infrastructure/platform fees for white-label embeds. SphereNet positioned as settlement infrastructure for regulated institutions.
Depends on
- Bank rails + local payout partners (ACH, Wire, SEPA, PIX) for last-mile in each corridor
- Solana + other chains (Ethereum, Base, Polygon, Tron, Aptos) for the on-chain leg
- Stablecoin liquidity (USDC, USDT, EURC) and market makers
- Anza / Solana core engineering for SphereNet
- KYC/KYB + sanctions-screening vendors
Risks
- Emerging-market FX + stablecoin liquidity volatility in thin corridors.
- Crowded LatAm cross-border lane (BVNK, Mural, Conduit, Bridge) — distribution + last-mile reach is the real battleground, not the rail.
- SphereNet is early/ambitious — a bespoke permissioned chain must win institutional and validator buy-in to matter.
- Money-transmitter / VASP licensing burden scales with every new corridor and currency.
Architecture & mechanics
The stablecoin sandwich
Sphere's core flow replaces correspondent-bank hops with an on-chain middle leg. Local currency is converted into a USD stablecoin, moved across a blockchain, and converted into the destination currency at the far end — collapsing days and multiple FX spreads into one quote.
- Top slice: pay-in via a local fiat rail (ACH/Wire in the US, SEPA in the EU, PIX in Brazil) into an Onramper account.
- Filling: value moves as USDC/USDT on the cheapest viable chain (Solana, Base, Tron, Polygon, Aptos…).
- Bottom slice: an Offloader wallet converts the stablecoin and pays out local currency (e.g. BRL) to the recipient's bank.
- Revenue = FX spread on the two conversions + a transfer fee; the single rate-locked quote replaces stacked correspondent-bank spreads.
SphereNet — compliance-first Solana-VM ledger
Built with Anza, SphereNet is a permissioned, closed-loop modified Solana Virtual Machine aimed at regulated institutions. Rather than screening transactions after the fact on a public chain, it enshrines compliance and privacy at the protocol level.
- Permissioned validator set with a constrained quorum (initially Sphere Foundation-managed) and a programmatic registry of approved nodes + market makers.
- Compliance by default: zero-knowledge proofs of identity, MPC over compliance commitments, native KYC/AML + sanctions screening, jurisdiction metadata per account.
- Enshrined gasless relayers so institutions can transact without holding a volatile gas token.
- Consensus-level changes (e.g. modified VoteProgram requiring a validator supermajority) and dynamic, auditable network economics.
Corridors & last-mile
Sphere targets under-addressed emerging-market corridors where legacy rails are slow and expensive, with the heaviest investment in LatAm — local hiring, sales, and compliance — and Brazil/PIX as an anchor.
- Currencies: USD, EUR, BRL on the fiat side; USDC, USDT, EURC on-chain.
- Last-mile payout via local rails (PIX in Brazil) and bank instruments registered per customer.
- Operates in a fast-growing lane — B2B stablecoin volume in LatAm corridors has grown multiples year-over-year — but competes with BVNK, Mural, Conduit, and Bridge on reach and distribution.
Compliance & risk model
- Customers clear KYC (individuals) or KYB with UBO/business-representative collection before transacting; enhanced due diligence adds face-liveness and OTP verification.
- Sanctions screening and AML are handled in-platform; SphereNet pushes these checks down into the ledger itself.
- Key risks: emerging-market FX/liquidity volatility, money-transmitter/VASP licensing burden per corridor, and execution risk on the ambitious bespoke SphereNet chain.
How it's built
Architecture
Sphere sits between bank rails and chains as an orchestration layer. The unit of work is a Transfer that runs the stablecoin sandwich; around it sit reusable entities — a Customer (individual or business) that has cleared KYC/KYB, plus registered Bank Accounts (fiat instruments) and Wallets (crypto instruments). Two automated primitives wrap the flow: Onramper Accounts are virtual bank accounts that auto-convert any fiat deposit into stablecoins sent to a destination wallet; Offloader Wallets are blockchain wallets that auto-convert incoming stablecoins into fiat payouts. Quotes rate-lock FX before a transfer is funded. SphereNet is the longer-term settlement substrate — a permissioned Solana VM where compliance is enshrined in the protocol.
Integration shape
Server-side REST API at the /v2 namespace with Bearer-token (API key) auth; ~100 RPS read/write limits and an OpenAPI 3.0 spec for codegen. Customers can be onboarded via API or hosted KYC/KYB link flows (including face-liveness EDD). White-label SDKs/embeds let fintechs surface on/off-ramp + transfer flows under their own brand. Webhook events drive async transfer state.
API surface
POST /v2/customer- Create an individual or business customer; submit for KYC/KYB via /v2/customer/{id}/kyc. UBOs go through /v2/business-representative.
POST /v2/bank-account- Register a fiat instrument with its payment rail (ACH, Wire, SEPA, PIX) for a customer.
POST /v2/wallet- Register a customer's blockchain wallet (Solana, EVM, Tron, Aptos…) as a payout/receive instrument.
POST /v2/quote- Create a rate-locked FX quote; mark used/expired via PUT /v2/quote/{id}.
POST /v2/transfer- Create an on-ramp or off-ramp transfer; GET /v2/transfer/{id} returns deposit instructions + status.
POST /v2/virtual-account- Onramper account — a virtual bank account that auto-converts fiat deposits to stablecoins to a destination wallet.
POST /v2/offloader-wallet- Offloader wallet — a wallet that auto-converts incoming stablecoins to fiat payouts to a linked bank account.
Minimal integration
Off-ramp: clear a customer, register instruments, then quote + create a USDC→BRL transfer.
const sphere = (path: string, body: unknown) =>
fetch(`https://api.spherepay.co/v2/${path}`, {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.SPHERE_API_KEY}`, // server-side only
'Content-Type': 'application/json',
},
body: JSON.stringify(body),
}).then((r) => r.json());
// 1. Customer (already KYB-approved) registers a Brazilian payout bank account.
const bank = await sphere('bank-account', {
customer: customerId,
paymentRail: 'pix',
currency: 'brl',
accountDetails: { pixKey: 'merchant@example.com.br' },
});
// 2. Rate-lock the USDC -> BRL leg of the sandwich.
const quote = await sphere('quote', {
src: { currency: 'usdc', network: 'solana' },
dst: { currency: 'brl' },
amount: '1000',
});
// 3. Create the off-ramp transfer; the response carries the on-chain
// deposit address to fund, then Sphere pays out via PIX.
const transfer = await sphere('transfer', {
customer: customerId,
quote: quote.data.id,
destination: { bankAccount: bank.data.id },
});
console.log(transfer.data.status, transfer.data.depositInstructions);Build notes
- Treat the webhook/event stream as the source of truth for transfer state; the create call only returns deposit instructions, not final settlement.
- Customer + KYB and instrument registration are one-time setup; reuse customer/bank-account/wallet IDs across transfers to avoid re-onboarding.
- Quotes are rate-locked and expire — create the quote, then the transfer that references it, promptly.
- [verify exact request/response field names and the production base host against the current docs.spherepay.co OpenAPI spec — field shapes evolve.]