> For clean Markdown of any page, append .md to the page URL. > For a complete documentation index, see https://docs.0x.org/evm/0x-swap-api/additional-topics/chain-specific-native-tokens/llms.txt. > For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.0x.org/_mcp/server. # Chain-Specific Native Tokens > How to handle native tokens on Mantle and Arc, the chains that do not follow the standard placeholder-address convention. Most chains we support represent their native token with the placeholder address `0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE`, and the flow described in [Handle Native Tokens](/evm/0x-swap-api/additional-topics/handling-native-tokens) applies without changes. This page covers the two chains that behave differently. ## Mantle: MNT has a contract address Mantle’s native token, **MNT**, does not follow this convention. On the Mantle EVM chain, MNT has a designated contract address: `0xdeaddeaddeaddeaddeaddeaddeaddeaddead0000`. This address applies only to the native `MNT` token on Mantle and should not be used for wrapped or bridged versions on other networks. Refer to the linked guide for additional [differences between Ethereum and Mantle](https://docs.mantle.xyz/network/for-developers/difference-between-ethereum-and-mantle). ## Arc: USDC is the native gas token USDC plays two roles on Arc at once. It is the native gas token, and it is also an ERC-20 token that the chain has built in at a fixed address. There is no wrapped-native token, and Circle does not plan to deploy one, so the [ETH/WETH wrapping pattern](/evm/0x-swap-api/additional-topics/handling-native-tokens#wrapping-and-unwrapping-between-eth-and-weth) does not apply. Refer to Arc's own guide for the full details of [USDC as the native gas token](https://docs.arc.io/arc/concepts/stablecoin-native-model#usdc-as-the-native-gas-token). ### The two interfaces of USDC | | Native | ERC-20 | | --------------------- | --------------------------------------------- | ------------------------------------------------------ | | Address to pass to 0x | `0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE` | `0x3600000000000000000000000000000000000000` | | Decimals | 18 | 6 | | Purpose | Gas accounting, native sends, and `msg.value` | Application-level transfers, approvals, and allowances | | Allowance required | No | Yes | Both interfaces are backed by a **single balance**. Sending native USDC and transferring ERC-20 USDC move the same money, and the two forms are entangled at the protocol level: an ERC-20 transfer also emits a native transfer. ### What this means for your integration > **Warning** > > Native USDC and ERC-20 USDC differ in scale by a factor of 10^12. One whole USDC (\$1.00) is `1000000` in ERC-20 base units and `1000000000000000000` in native base units. Mixing the two misprices a swap by a factor of one trillion. The Swap API returns amounts in the base units of whichever interface you requested, and performs no conversion between them. Follow these rules: #### Pick one interface per request Use `0x3600000000000000000000000000000000000000` if you want to work in 6 decimals, or `0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE` if you want to work in 18 decimals. Do not mix the two within a single quote. #### Read decimals from the interface you sent, not from the symbol `sellAmount`, `buyAmount`, `minBuyAmount` and fee amounts are all denominated in the base units of the address you passed. Balance checks, allowance logic and any USD display must use the same decimals. #### Apply the usual native-token rules only to the native interface If you requested the ERC-20 interface, the standard ERC-20 flow applies, including an allowance. If you requested the native interface, skip the approval and set `transaction.value`, as described in [Handle Native Tokens](/evm/0x-swap-api/additional-topics/handling-native-tokens#steps-for-handling-standard-native-tokens). #### Set maxFeePerGas to at least 20 gwei Arc enforces a 20 gwei floor on `maxFeePerGas`. Transactions submitted below it can stay pending indefinitely or fail outright. A small tip (for example 1 gwei) on `maxPriorityFeePerGas` improves inclusion during high utilization. > **Note** > > There is no wrap or unwrap step to build on Arc. A quote between the native and ERC-20 interfaces of USDC is not a supported swap; move between them by using the interface you need, since they share one balance. ### Notes for wallets and analytics * **Show one USDC balance.** Displaying gas balance and USDC balance as separate rows suggests a user holds two assets when they hold one. * **Expect duplicate transfer logs on ERC-20 moves only.** Moving USDC through the ERC-20 interface emits both a native transfer and an ERC-20 `Transfer` event, so indexers that count both will double-count USDC volume. Moving it through the native interface emits a single log. * **Avoid `SELFDESTRUCT` patterns.** Arc forbids burning USDC, so a self-destructed account cannot receive value-bearing calls. Contracts that rely on `SELFDESTRUCT` can revert in ways that are hard for users to interpret. > Developer documentation for the 0x API. Embed swaps in your onchain app. Access 10+ million tokens with liquidity from 150+ exchanges with a single API.