For DAOs and treasuries

Distribute treasury. Any coin, any wallet.

SwapZilla is a non-custodial payout infrastructure for DAOs and treasuries. Send grants, rewards, and airdrops to hundreds of wallets in one operation — with idempotency-safe API guarantees and any-to-any routing so contributors receive the asset they asked for.

What treasury ops teams run into

01

One asset in, many assets out

Your treasury holds one or two reserve assets, but contributors want to be paid in different coins. Manual conversion is a full-time job.

02

Batch reliability at scale

Sending to 500 addresses one-by-one means partial failures, missed retries, double-sends, and a lot of Etherscan-refreshing to reconcile.

03

Custody counterparty for a grant

Using a custodial processor for grant distribution means you're trusting them with treasury funds. Not ideal for DAOs that promised non-custodial ops.

How SwapZilla solves it

Submit a batch payout — a JSON array of recipients with their asset, network, and amount. SwapZilla routes each swap from your treasury asset into the recipient's requested asset, and executes all payouts under one idempotency key. If the call is retried, no address is paid twice. Everything is on-chain, verifiable, and non-custodial.

What you get

Batch API with idempotency

Submit hundreds of payouts in one call. Retrying the exact same call is a no-op — no address ever receives twice.

Any-to-any asset routing

Treasury holds USDT; contributor A wants BTC, contributor B wants XMR, contributor C wants ETH. Every leg is routed individually at the best available rate.

Non-custodial execution

Each payout is a direct wallet-to-wallet transfer via an exchange provider. Treasury funds never touch SwapZilla.

Audit-friendly

Every payout has an on-chain transaction, a client_order_id you supplied, and a status you can query anytime.

How a batch payout looks

  1. 1

    Prepare your recipient list

    A JSON array: address, asset, network, amount, client_order_id per recipient.

  2. 2

    Submit under an idempotency key

    POST the batch with a single Idempotency-Key header. Retries are safe.

  3. 3

    SwapZilla quotes each leg

    Each recipient's asset is quoted against every provider; the best route is picked automatically.

  4. 4

    Execution

    Each payout is executed as a separate swap from your treasury asset, sending the recipient's requested asset directly to their wallet.

  5. 5

    Reconcile via status API

    Poll the batch endpoint to see per-recipient status — completed, pending, failed with reason.

DAO / treasury FAQ

What batch size is supported?

Up to several hundred recipients per call. If you need more, split into multiple batches under distinct idempotency keys.

How does the idempotency guarantee actually work?

You supply an Idempotency-Key header. If you retry the exact same call, SwapZilla returns the original result without executing any payouts a second time. This prevents duplicate sends during network flakes or retries.

Can I mix assets — USDT to some, BTC to others?

Yes. Each recipient specifies their target asset and network. SwapZilla routes each one independently.

What if a single recipient's payout fails?

The rest of the batch continues. Failed recipients are returned with a reason (invalid address, provider unavailable, etc.) — you can retry just those without re-executing the successful ones.

Do you take custody of treasury funds during a batch?

No. Each payout is a direct swap through an exchange provider; treasury funds are pulled from your source wallet only as each individual payout executes. There is no intermediate SwapZilla balance.

Talk about your treasury workflow

We'll help you scope the integration and walk through the batch API. Most treasuries have their first payout live within a week.