Skip to main content
The Orderbook supports multiple fee types—protocol fees, royalties, and marketplace fees—that are automatically distributed when trades execute.

Fee Types

FeeRecipientSet By
Protocol FeeImmutableFixed by protocol
Royalty FeeNFT CreatorSet on NFT contract
Maker FeeListing marketplaceOrder creator
Taker FeeFilling marketplaceOrder filler

How Fees Work

When a trade executes, fees are deducted from the payment:
Sale Price: 1.00 IMX
├── Protocol Fee (2%):    0.02 IMX → Immutable
├── Royalty (5%):         0.05 IMX → Creator
├── Maker Fee (1%):       0.01 IMX → Listing Marketplace
├── Taker Fee (1%):       0.01 IMX → Filling Marketplace
└── Seller Receives:      0.91 IMX

Protocol Fee

The protocol fee is a small percentage that supports the Immutable ecosystem.
NetworkProtocol Fee
Mainnet2%
Testnet2%
The protocol fee is non-negotiable and applies to all trades on the Orderbook.

Royalties

Royalties ensure creators earn from secondary sales. They’re set on the NFT contract and enforced by the Orderbook.

Setting Royalties

Royalties are configured when deploying your NFT contract:
// In your ERC-721 contract
function royaltyInfo(uint256 tokenId, uint256 salePrice)
    external
    view
    returns (address receiver, uint256 royaltyAmount)
{
    // 5% royalty to the creator
    return (creatorAddress, (salePrice * 500) / 10000);
}

Typical Royalty Rates

Game TypeTypical Royalty
Gaming items2-5%
Collectibles5-10%
Art5-15%
Royalties must be implemented via the Operator Allowlist to be enforced. Collections not on the allowlist may have royalties bypassed.

Marketplace Fees

Marketplaces can add their own fees on top of protocol fees and royalties.

Maker Fees

Set by the marketplace where the order is created:
const { result } = await orderbookClient.createListing({
  orderComponents: prepareListing.orderComponents,
  orderHash: prepareListing.orderHash,
  orderSignature: signature,
  makerFees: [
    {
      recipientAddress: MARKETPLACE_FEE_WALLET,
      amount: '10000000000000000', // 0.01 IMX flat fee
    },
  ],
});

Taker Fees

Set by the marketplace where the order is filled:
const { actions } = await orderbookClient.fulfillOrder(
  orderId,
  buyerAddress,
  [
    {
      recipientAddress: MARKETPLACE_FEE_WALLET,
      amount: '10000000000000000', // 0.01 IMX flat fee
    },
  ]
);

Percentage-Based Fees

Calculate fees as a percentage of the order value:
function calculateFee(orderAmount: string, percentageBps: number): string {
  // BPS = basis points (100 bps = 1%)
  const amount = BigInt(orderAmount);
  const fee = (amount * BigInt(percentageBps)) / BigInt(10000);
  return fee.toString();
}

// 2.5% marketplace fee
const fee = calculateFee(listing.buy.amount, 250);

const { actions } = await orderbookClient.fulfillOrder(
  orderId,
  buyerAddress,
  [{ recipientAddress: MARKETPLACE_WALLET, amount: fee }]
);

Fee Splitting

Distribute fees to multiple recipients:
const makerFees = [
  {
    recipientAddress: PLATFORM_WALLET,
    amount: calculateFee(price, 100), // 1% to platform
  },
  {
    recipientAddress: AFFILIATE_WALLET,
    amount: calculateFee(price, 50),  // 0.5% to affiliate
  },
];

await orderbookClient.createListing({
  // ...
  makerFees,
});

Displaying Fees to Users

Show users the fee breakdown before they trade:
interface FeeBreakdown {
  protocolFee: bigint;
  royalty: bigint;
  makerFee: bigint;
  takerFee: bigint;
  sellerReceives: bigint;
}

function calculateFeeBreakdown(
  salePrice: bigint,
  royaltyBps: number,
  makerFeeBps: number,
  takerFeeBps: number
): FeeBreakdown {
  const protocolFee = (salePrice * 200n) / 10000n; // 2%
  const royalty = (salePrice * BigInt(royaltyBps)) / 10000n;
  const makerFee = (salePrice * BigInt(makerFeeBps)) / 10000n;
  const takerFee = (salePrice * BigInt(takerFeeBps)) / 10000n;
  
  const sellerReceives = salePrice - protocolFee - royalty - makerFee;
  
  return { protocolFee, royalty, makerFee, takerFee, sellerReceives };
}

Example UI

You're selling: Sword of Power #123
Price: 1.00 IMX

Fee Breakdown:
  Protocol Fee (2%):     -0.02 IMX
  Creator Royalty (5%):  -0.05 IMX
  Marketplace Fee (1%):  -0.01 IMX
  ─────────────────────────────────
  You'll receive:         0.92 IMX

Fee Limits

Fee TypeMaximum
Royalty10% recommended, contract-defined
Maker FeeNo protocol limit
Taker FeeNo protocol limit
Total FeesShould not exceed sale price
Keep total fees reasonable (under 15%) to maintain a healthy marketplace. High fees discourage trading.

Next Steps