Circle keeps 10% of the custom fee you collect from your end users.
Fees breakdown
Every transfer can incur the following fees:- Your custom fee: The extra amount you charge on top of the transfer. Circle keeps 10% of this amount. The remaining 90% goes to the fee recipient you configure on the source blockchain.
- CCTP protocol fee: For Fast Transfers only, CCTP collects a fee that
varies by source chain. Standard Transfers (
SLOWspeed) do not incur this fee. For current fee rates, see CCTP Fees. For how to configure the transfer speed, see Configure Transfer Speed and Maximum Cost. - Forwarding Service fee: When you use the Circle Forwarding Service to submit the mint transaction on the destination chain, it collects a service fee.
Funds flow
The following example shows what happens when a user initiates a 1,000 USDC Fast Transfer with a 1% custom fee and the Forwarding Service enabled:- The user initiates a 1000 USDC transfer on the source blockchain.
- You add a 10 USDC (1%) custom fee.
- The source wallet signs a transaction for 1,010 USDC (transfer amount + custom fee).
- The 10 USDC custom fee is split on the source blockchain:
- Circle receives 1 USDC (10%).
- Your fee recipient receives 9 USDC (remaining 90%).
- The 1000 USDC transfer amount is forwarded to CCTP.
- CCTP takes a protocol fee (0.10 USDC in this example) for a Fast Transfer.
- The Forwarding Service deducts its fee (0.20 USDC in this example) from the amount to be minted on the destination chain.
- The destination wallet receives 999.70 USDC on the destination chain.
Best practices
Follow these best practices when implementing custom fees:- Treat the custom fee as an amount added on top of the transfer. Do not subtract it from the transfer amount.
- Validate that the user’s wallet balance covers both the transfer and the custom fee. The following code shows an example balance check:
TypeScript
- Use a fee recipient address on the source blockchain. Do not use an address on the destination.
- In your UI, display the following to the user before they confirm the
transaction:
- The total source wallet debit: transfer amount + custom fee
- The full fee breakdown: transfer amount, custom fee, CCTP Fast Transfer fee (if applicable), and Forwarding Service fee (if using the Forwarding Service)
- Return human-readable decimal strings. For example,
10rather than10000000for 10 USDC. Bridge Kit handles base-unit conversion internally.