Native Tokens Handling

View as Markdown

The 0x Cross-Chain API is in private beta. Request access to start building.

This page explains how native tokens (ETH, SOL, TRX) work in cross-chain swaps.

Native Token Addresses

Each chain type uses a specific address to represent the native token:

Chain TypeNative Token AddressExample
EVM0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeETH, AVAX, BNB, POL, etc.
SolanaSo11111111111111111111111111111111111111111SOL
TronT9yD14Nj9j7xAB4dbGeiX9h8unkKHxuWwbTRX

Pass these as sellToken or buyToken when swapping the chain’s native token.

Wrap Steps

When selling a native token, the API may include a wrap step on the origin chain before the swap or bridge, converting native to wrapped (e.g., ETH to WETH):

1[
2 { "type": "wrap", "sellToken": "0xeeeee...eeee", "buyToken": "0x4200...0006", "amount": "1000000000000000000" },
3 { "type": "bridge", "bridge": "across_v4", "originChainId": 8453, "destinationChainId": 42161 }
4]

The wrap executes atomically within the origin transaction. No extra user action needed.

Wrap steps affect refund behavior. If a bridge fails after a wrap, the refund is in the wrapped token (WETH), not the original native token (ETH). See Handling Failures and Recovery.

The value Field (EVM only)

On EVM chains, the value field in the transaction object is the amount of native token sent with the transaction. It is non-zero in two cases:

  1. Selling a native tokenvalue includes the sell amount
  2. Bridge native fee — some bridges charge a messaging fee in native token (see Understanding Bridging Costs)

When both apply, value = sell amount + bridge fee.

The user must have enough native token balance for value plus gas fees. If not, the transaction reverts.