Skip to main content
Flashnet Orchestra is an async orchestration protocol. It gives you deposit instructions, executes the route, and delivers the output asset to your recipient.

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/quote to get depositAddress and quote metadata
  • fund the deposit instruction (address or invoice)
  • POST /v1/orchestration/submit to 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
Tempo 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:
  1. Bridge: Bridges stablecoin value between source chains and Spark via Solana USDC as the settlement hub. The bridge handles any chain-to-chain transfers.
  2. AMM: Swaps USDB and BTC on Spark liquidity.
  3. Bitcoin ingress handling: Supports both confirmation-based and ZeroConf-assisted L1 deposit processing.
Partners do not integrate these primitives directly. Orchestra abstracts bridge, AMM, and ingress handling as quote, submit, status, and webhook flows.

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’s slippageBps. 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 (USDC for most routes, USDB for the BTC/USDB direct pair). Direct BTC passthrough routes charge the platform fee in BTC. The /estimate and /quote endpoints 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.
Both fees are embedded in the quoted output. The user sends X, receives the quoted Y. Spark-to-Spark transfers incur no network gas fees (platform fees still apply). Lightning and Bitcoin L1 withdrawals incur network fees quoted at delivery time (see below). Onramp and Pay Links use custom pricing. USDB routes are cheaper because they settle natively on Spark without bridging. All fees on onramp and pay links are sender-side: the recipient receives the configured output net of route-specific execution costs, and the sender’s Lightning invoice is sized to cover output plus fees. For 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

RuleDetail
Amount modeStandard quote/submit flows require amountMode=exact_in. Pay links are sender-side and work with exact-out mode.
Reusable addressesAccumulation 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 cutFlashnet takes 20% of all app/affiliate fees.
Mutual exclusivityappFees and affiliateIds cannot be combined in the same request.
See Quotes and Orders for the full affiliate fee model.

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, or refunded.
  • Partners track progress via webhooks or GET /v1/orchestration/status.
Bitcoin L1 deposits can use ZeroConf for instant credit or wait for on-chain confirmations.

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, or affiliateIds) for routes that support app fees
  • Webhook endpoint or polling logic
  • Approval handling if awaiting_approval is reached (ZeroConf offers only)

What are the limits?

ParameterValue
Minimum$1 equivalent
Maximum$100,000 equivalent
BTC swap minimum1,000 sats
Platform FeeCustom pricing based on route and volume
App Fee Platform Cut20% of app/affiliate fees
Some USDC-source routes include a sweep fee that creates an effective minimum higher than $1. The quote response includes sweepFeeAmount when applicable. See Effective Limits for details.

Next steps