Start here
Quickstart
Build a minimal end-to-end flow.
Choose Your Integration
Compare quote/submit, accumulation, and liquidation patterns.
Order Lifecycle
State machine, field mapping, and how quotes become orders.
Routes
Buy BTC
Convert supported stablecoins and native assets, including Tempo USDC, into BTC on Spark, Bitcoin L1, or Lightning.
Sell BTC
Convert BTC or USDB into USDC, PathUSD, USDT, ETH, SOL, BNB, DAI, TRX, WBTC, cbBTC, or USDC.e across supported chains.
Fiat onramp
Lightning Onramp
The cheapest fiat-to-crypto path. Users pay via any Lightning-compatible app, Orchestra delivers USDB, BTC on Spark or Bitcoin L1, USDC, or any supported asset. Custom pricing. Single API call.
Pay Links
Shareable payment links that never expire. Specify the stablecoin output, share the URL. Each click creates a fresh Lightning invoice at the current rate.
Reusable deposit addresses
Accumulation addresses
Reusable deposit address (Solana or any chain Orchestra supports) that auto-delivers BTC or USDB on Spark.
Liquidation addresses
Reusable Bitcoin L1 address that auto-delivers to any chain and asset Orchestra supports.
What it does
Partners specify source asset, destination asset, amount, and recipient. Orchestra returns a deposit instruction and then advances the order through deposit detection, execution, and delivery. You integrate the same interface across routes:POST /v1/orchestration/quoteto getdepositAddressand quote metadata- fund the deposit instruction (address or invoice)
POST /v1/orchestration/submitto create the order- track progress via webhooks or
GET /v1/orchestration/status
What can I build with Orchestra?
Which chains and assets are supported?
Orchestra currently supports:- Chains:
base,solana,ethereum,arbitrum,optimism,polygon,bsc,tron,plasma,tempo,spark,bitcoin,lightning - Assets:
USDC,USDC.e,USDT,USDB,BTC,ETH,SOL,BNB,DAI,WBTC,cbBTC,PathUSD
USDC is supported as both a source and destination asset. Tempo PathUSD is currently supported as a destination asset. WBTC and DAI are available on Ethereum. cbBTC is available on Base and Solana. BNB and USDT are available on BSC. USDC.e is available on Polygon.
Not all chain/asset combinations are valid. Use GET /v1/orchestration/routes to see available trading pairs, or see the route listings in:
How it works
Under the hood, Orchestra combines three primitives:- Bridge: Bridges stablecoin value between source chains and Spark via Solana USDC as the settlement hub. The bridge handles any chain-to-chain transfers.
- AMM: Swaps USDB and BTC on Spark liquidity.
- Bitcoin ingress handling: Supports both confirmation-based and ZeroConf-assisted L1 deposit processing.
Execution model
Quotes expire after 2 minutes. Expired quotes are not rejected at submit time: late deposits are always accepted, repriced at the live market rate at detection time, and executed against the quote’sslippageBps. Deposits do not need to match the quoted amount exactly — the engine adjusts amounts and fees to reflect the actual deposit. Orders that cannot execute within slippageBps refund automatically without partner action.
See Order Lifecycle for the full state machine, field mapping between quotes and orders, deposit flexibility rules, and market-move refund behavior. See ZeroConf for instant Bitcoin L1 credit.
What are the fees?
Swaps have two cost components, both embedded in the quoted output amount:- Platform fee: Custom pricing based on route and volume. The fee is denominated on the stablecoin side of the swap (
USDCfor most routes,USDBfor the BTC/USDB direct pair). Direct BTC passthrough routes charge the platform fee in BTC. The/estimateand/quoteendpoints return the exact fee for each transaction. - LP pool fee: Charged by the BTC/USDB pool on Spark in the input asset. When selling BTC, the LP fee is in BTC. When buying BTC with stablecoins, the LP fee is in USDB. This goes to liquidity providers, not Flashnet. The exact amount varies with pool depth and trade size.
lightning:BTC -> bitcoin:BTC, the final on-chain withdrawal also pays the network withdrawal fee quoted by Spark at delivery time. That withdrawal fee is separate from Flashnet’s platform fee.
Orchestra supports optional app and affiliate fees on supported routes. Fees settle in Solana USDC or Spark USDB depending on the route.
appFees (inline model)
Specify fee recipients directly in the quote request. Each entry includes a recipient address and fee in basis points. The fee plan is embedded in the order at creation time.
affiliateIds (registered model)
Reference pre-registered affiliate profiles by ID. Entries can be plain strings (uses the profile’s configured fee bps) or { affiliateId, feeBps } objects to override the profile’s bps for that request. The stored profile is not mutated.
Registered affiliates use a holdback model: they claim accumulated fees via POST /v1/affiliates/:id/claim. Claims settle to the (payoutChain, payoutAsset, payoutAddress) on the profile. Supported destinations include Solana USDC, Spark assets, and EVM chains (USDC/USDT on Base, Ethereum, Arbitrum, Optimism, Polygon, BSC).
Fee rules
| Rule | Detail |
|---|---|
| Amount mode | Standard quote/submit flows require amountMode=exact_in. Pay links are sender-side and work with exact-out mode. |
| Reusable addresses | Accumulation and liquidation addresses accept appFees and affiliateIds at creation time. The fee plan is validated, frozen on the address, and replayed into every deposit. |
| Platform cut | Flashnet takes 20% of all app/affiliate fees. |
| Mutual exclusivity | appFees and affiliateIds cannot be combined in the same request. |
Settlement
- BTC settles to Spark wallets.
- Stablecoins settle to any supported chain (base, solana, ethereum, arbitrum, optimism, polygon, bsc, tron, plasma, tempo).
- Final order statuses are
completed,failed, orrefunded. - Partners track progress via webhooks or
GET /v1/orchestration/status.
What do partners not need?
- Spark protocol integration
- Direct liquidity management
- Bitcoin node operations
- Bridge infrastructure management
What do partners need?
- Ability to fund the provided deposit instruction (address or invoice)
- Destination address for delivery
- Optional affiliate configuration (
appFees,affiliateId, oraffiliateIds) for routes that support app fees - Webhook endpoint or polling logic
- Approval handling if
awaiting_approvalis reached (ZeroConf offers only)
What are the limits?
| Parameter | Value |
|---|---|
| Minimum | $1 equivalent |
| Maximum | $100,000 equivalent |
| BTC swap minimum | 1,000 sats |
| Platform Fee | Custom pricing based on route and volume |
| App Fee Platform Cut | 20% of app/affiliate fees |
Next steps
- Quickstart: Build a minimal end-to-end flow
- Choose Your Integration: Compare quote/submit, accumulation, and liquidation patterns
- Order Lifecycle: State machine, field mapping, repricing
- Stablecoin to BTC: Buy Bitcoin with USDC
- BTC to Stablecoin: Sell Bitcoin for USDC
- ZeroConf: Instant Bitcoin L1 credit
- Webhooks: Receive order status updates
- API Reference: Complete endpoint documentation