Split Swap Fees Across Multiple Recipients

Platforms can now split swap fees across multiple recipients in a single transaction using the Swap and Gasless APIs. No custom contracts, no off-chain redistribution.

March 26, 2026

Feature Release

Multi-Fee Support in the Swap and Gasless APIs

A platform earns a fee on every swap routed through its app. Partners, affiliates, and distributors driving volume to the platform should all earn a cut. Until now, splitting that fee required off-chain redistribution or a custom smart contract. Integrators building on Coinbase Developer Platform raised this as one of their top requests, but the need extends well beyond any single use case.

The Swap and Gasless APIs now accept multiple fee recipients in a single transaction. Each party gets paid at settlement. No extra transactions or intermediary contracts required.

How it works

Fee splitting is controlled by the following query parameters:

swapFeeRecipient accepts one or more wallet addresses, comma-separated. These are the addresses that receive fees at settlement.

swapFeeBps accepts one or more fee amounts denominated in basis points, comma-separated. Each value defines how much the corresponding recipient earns.

swapFeeToken (optional) specifies which token fees are collected in, either the buyToken or sellToken. If omitted, 0x defaults to the buy token, unless the sell token has higher priority (stablecoins or a more liquid asset) or the buy token is ineligible.

The parameters are positionally matchedand co-dependent. The first value in swapFeeBps applies to the first address in swapFeeRecipient, the second to the second, and so on. Both must be present and the same length.

Each fee is delivered directly to the specified address at settlement.

Here's an example where the platform earns 5 Bps and a distribution partner earns 10 Bps on a WETH to USDT swap:

const params = new URLSearchParams({
  chainId: "1",
  buyToken: "0xdac...",
  sellToken: "0xc02...",
  sellAmount: "100000000",
  taker: "0x70a...",
  swapFeeRecipient: [
    "0xPLATFORM_ADDRESS", // index 0
    "0xPARTNER_ADDRESS",  // index 1
  ].join(","),
  swapFeeBps: "5,10", // 5 Bps → index 0, 10 Bps → index 1
  // swapFeeToken (optional) defaults to buyToken if omitted
});

const response = await fetch(
  `https://api.0x.org/swap/allowance-holder/price?${params}`,
  {
    headers: {
      "0x-api-key": process.env.ZEROX_API_KEY!,
      "0x-version": "v2",
    },
  },
);

const data = await response.json();

data.fees.integratorFees.forEach((fee, i) => {
  console.log(`Recipient ${i}: ${fee.amount} of ${fee.token}`);
});


The response

The fees object in the response now includes two fields for integrator fees:

integratorFee (singular) returns the first fee in the list. This is the original field. It is backwards compatible, so existing single-fee integrations will continue to work without requiring code changes.

integratorFees (plural) is a new array containing every fee specified in the request and maps positionally to the  swapFeeRecipient and swapFeeBps values.

{
  "fees": {
    "integratorFee": {
      "amount": "49989",
      "token": "0xdac17f958d2ee523a2206206994597c13d831ec7",
      "type": "volume"
    },
    "integratorFees": [
      {
        "amount": "49989",
        "token": "0xdac17f958d2ee523a2206206994597c13d831ec7",
        "type": "volume"
      },
      {
        "amount": "99978",
        "token": "0xdac17f958d2ee523a2206206994597c13d831ec7",
        "type": "volume"
      }
    ],
    "zeroExFee": {
      "amount": "149968",
      "token": "0xdac17f958d2ee523a2206206994597c13d831ec7",
      "type": "volume"
    },
    "gasFee": null
  }
}


How the request maps to the response:

Index Recipient Fee (Bps) Amount (buy token)
0 0xPLATFORM_ADDRESS 5 49,989
1 0xPARTNER_ADDRESS 10 99,978

integratorFee (singular) always matches index 0. For the full breakdown, read from integratorFees (plural).

Use cases

The same feature applies anywhere multiple parties earn from a single swap:

Marketplace and platform fees: A marketplace charges its fee, and third parties building on that platform charge their own fee independently. Both are collected in a single transaction.

Revenue sharing: A protocol and the frontend that sourced the trade each collect their own fee at settlement. No separate off-chain reconciliation required.

Affiliate and referral splits: A referral link routes a swap through a platform. The referrer earns alongside the platform. No manual payouts.

Copy and social trading: A social trading platform takes a fee. The trader being copied, or the creator who sourced the trade, takes a separate fee. Both parties set their own fee at the API level.

Multi-party treasury distributions: A DAO can now route swap fees to multiple treasury addresses in a single call.

What to know

Multi-Fee Support is live today on all supported chains. See the docs for the full API Parameter Reference and additional code examples.

Contents

Subscribe to newsletter

By submitting you're confirming that you agree with our Terms and Conditions.
Yay! You’re signed up.
Oops! Something went wrong, but it's not your fault.