Patterns
Quote and Submit
Full control per transaction. Get a quote, fund the deposit, submit, track the order.
Pay Links
Shareable payment links with a fixed stablecoin output. Each click creates a fresh Lightning invoice. No expiration.
Reusable Addresses
Persistent deposit addresses in two directions: accumulation (any chain to Spark) and liquidation (Bitcoin L1 to any chain).
Comparison
| Quote/Submit | Pay Links | Reusable Addresses | |
|---|---|---|---|
| Per-deposit work | Call /quote, fund, call /submit | Click a URL | Fund only (auto-detected) |
| Source | Any supported chain | Lightning | Accumulation: solana, base, ethereum, arbitrum, optimism, polygon, bsc, tempo, tron, plasma. Liquidation: bitcoin |
| USDB advantage | Same fee | Lower fee tier, fewer pipeline steps | Same fee |
| Destination | Any supported pair | Any supported stablecoin | Accumulation: spark (BTC or USDB). Liquidation: any supported chain/asset |
| Price control | Per-transaction slippage, exact-out | Exact-out (fresh quote per click) | Fixed slippage per address |
| Platform fee | Custom pricing | Custom pricing | Custom pricing |
| Fee model | Deducted from output | Sender-side (receiver gets exact amount) | Deducted from output |
| Affiliate fees | Supported (exact-in) | Supported, sender-side (via affiliateId) | Supported (frozen at creation) |
| Expiration | Quote expires in 2 min | Link never expires | Address is permanent |
| ZeroConf | Configurable per quote | N/A (Lightning) | Liquidation addresses only (all Bitcoin L1 deposits are ZeroConf-eligible) |
Address behavior
Quote deposit addresses are generated per quote. Each/quote call returns a fresh depositAddress. Do not reuse a previous quote’s deposit address for a new deposit.
Reusable addresses (accumulation and liquidation) are deterministic. The deposit address is derived from the partner and destination configuration. Creating the same configuration twice returns the same address. Give reusable addresses to end users as permanent deposit targets.
Reusable address deposits are detected automatically by server-side webhooks. You do not need to call
/submit for these flows. Register a partner webhook to receive order updates.Which flow should I use?
- Need per-transaction price control, custom slippage, or exact-out payments? Quote/Submit.
- Shareable “pay me $X” links via Lightning? Pay Links.
- Auto-converting deposits into BTC on Spark, or Bitcoin L1 deposits into any supported asset? Reusable addresses (accumulation for inbound stablecoins, liquidation for inbound BTC).
Next steps
- Stablecoin to BTC: Buy Bitcoin with USDC, ETH, or SOL
- BTC to Stablecoin: Sell Bitcoin for USDC, WBTC, cbBTC, and more
- Pay Links: Shareable payment links
- Reusable Addresses