Skip to main content
Orchestra supports four integration patterns. Pick the one that fits your use case.

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/SubmitPay LinksReusable Addresses
Per-deposit workCall /quote, fund, call /submitClick a URLFund only (auto-detected)
SourceAny supported chainLightningAccumulation: solana, base, ethereum, arbitrum, optimism, polygon, bsc, tempo, tron, plasma. Liquidation: bitcoin
USDB advantageSame feeLower fee tier, fewer pipeline stepsSame fee
DestinationAny supported pairAny supported stablecoinAccumulation: spark (BTC or USDB). Liquidation: any supported chain/asset
Price controlPer-transaction slippage, exact-outExact-out (fresh quote per click)Fixed slippage per address
Platform feeCustom pricingCustom pricingCustom pricing
Fee modelDeducted from outputSender-side (receiver gets exact amount)Deducted from output
Affiliate feesSupported (exact-in)Supported, sender-side (via affiliateId)Supported (frozen at creation)
ExpirationQuote expires in 2 minLink never expiresAddress is permanent
ZeroConfConfigurable per quoteN/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.
Never send a second deposit to a quote’s depositAddress after that quote has been submitted or expired. Each quote generates its own deposit instruction.
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