Skip to main content
Accumulation addresses are persistent deposit addresses on Base and Solana. Each incoming deposit automatically creates an order that converts into USDC (if needed), bridges to Spark, and then:
  • delivers USDB to a fixed Spark address, or
  • swaps into BTC and delivers BTC to a fixed Spark address.
This is the right integration when you want to hand out a reusable deposit address per user and you do not want to call /quote and /submit per deposit.

Supported Routes

  • USDC (base|solana) -> USDB (spark)
  • USDC (base|solana) -> BTC (spark)
  • ETH (base) -> USDB (spark)
  • ETH (base) -> BTC (spark)
  • SOL (solana) -> USDB (spark)
  • SOL (solana) -> BTC (spark)
Orders created from accumulation deposits have:
  • sourceChain = base|solana
  • sourceAsset = USDC|ETH|SOL
  • destinationChain = spark
  • destinationAsset = BTC|USDB
  • quoteId = null
Some deployments also accept allowlisted tokens on Base and Solana. When enabled, those deposits create orders with sourceAsset = TOKEN.

Create an Accumulation Address

const BASE_URL = 'https://orchestration.flashnet.xyz';

const res = await fetch(`${BASE_URL}/v1/accumulation-addresses`, {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    Authorization: `Bearer ${process.env.FLASHNET_API_KEY}`,
    'X-Idempotency-Key': `acu:create:${Date.now()}`,
  },
  body: JSON.stringify({
    label: 'User 123',
    destinationAsset: 'BTC',
    recipientSparkAddress: 'spark1UserRecipient...',

    // Optional overrides
    feeBps: 5,
    slippageBps: 50,
  }),
}).then((r) => r.json());

console.log(res.depositAddresses.base);
console.log(res.depositAddresses.solana);
Response fields:
  • depositAddresses.base: Base address to receive deposits
  • depositAddresses.solana: Solana address to receive deposits
  • subscriptions: status of the server-side deposit detection subscriptions

Deposit Lifecycle

  1. Your user sends a supported deposit asset to one of the returned deposit addresses.
  2. Flashnet detects the deposit and creates an order.
  3. The engine processes the order asynchronously.
  4. You observe progress via partner webhooks.

Webhooks

Accumulation deposits create normal order.* webhook events. To receive them:
  1. Register an endpoint with POST /v1/webhooks.
  2. Verify X-Flashnet-Signature on inbound requests.
  3. Treat webhook delivery as at least once.
See Webhooks.

Manage Addresses

List accumulation addresses:
  • GET /v1/accumulation-addresses
Get an address by id:
  • GET /v1/accumulation-addresses/:id
Disable an address:
  • DELETE /v1/accumulation-addresses/:id (requires X-Idempotency-Key)

Sync

POST /v1/accumulation-addresses/sync re-registers all enabled deposit addresses with the configured deposit detection webhooks. This is intended for operational recovery and self-hosted deployments.

Next Steps