New integrations use standing deposit addresses. Retaining a legacy address does not establish current route availability.
Accumulation addresses
Create an address that converts Solana USDC deposits into USDB on Spark:Replace
SERVER_KEY with your fn_... key. Use a new X-Idempotency-Key for each operation and reuse it when retrying that same request. Amounts are integer strings in the asset’s smallest unit: "100000" is 0.001 BTC; "50000000" is 50 USDC on Base. Read each asset’s decimals from /routes.destinationAsset is BTC or USDB on Spark. Fees are feeBps plus either appFees or affiliateIds. The response carries accumulationAddressId, depositAddress, and subscriptions (Solana Helius only). The same configuration returns the same address.
Fund the configured asset: native assets use native transfers; EVM tokens use token transfers. For missed deposits, POST /v1/accumulation-addresses/:idOrAddress/reindex requests a rescan. POST /v1/accumulation-addresses/sync re-registers Solana Helius webhooks. GET /v1/accumulation-addresses, GET /:id, and DELETE /:id list, read, and disable.
Liquidation addresses
Liquidation accepts Bitcoin L1 deposits for canonical Bitcoin routes, excluding Hedera and xchain-only destinations. Create an address targeting USDC on Base:liquidationAddressId, l1DepositAddress (fund this), and sparkAddress (internal claim address). Each (txid, vout) becomes a separate order with quoteId: null. Below-floor outputs fail with amount_too_small. Eligible deposits may receive per-order ZeroConf offers. GET /v1/liquidation-addresses/orders?id= or ?label= lists generated orders.
Fee plans
The fee plan is resolved and frozen when the address is created; later changes to affiliate profiles do not apply. InlineappFees recipients must hold an address on the settlement chain: Solana for most routes, Spark USDB for USDB destinations. BTC-only destinations reject fee plans with 400 unsupported_fee_plan.
Differences from standing addresses
- Legacy instructions have one source chain, order tracking, order-scoped ZeroConf, and no address-level refund API.
DELETEdisables an address. - Standing instructions span source chains and track deposits before orders. They support
/resolverefunds, reversiblePATCHpauses, and deposit-scoped ZeroConf.