> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.0x.org/llms.txt.
> For full documentation content, see https://docs.0x.org/llms-full.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.0x.org/_mcp/server.

# Native Tokens Handling

> How native tokens (ETH, SOL, TRX) work in cross-chain swaps.

The 0x Cross-Chain API is in private beta. [Request access](https://0x.org/products/cross-chain) 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 Type | Native Token Address                          | Example                   |
| ---------- | --------------------------------------------- | ------------------------- |
| EVM        | `0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee`  | ETH, AVAX, BNB, POL, etc. |
| Solana     | `So11111111111111111111111111111111111111111` | SOL                       |
| Tron       | `T9yD14Nj9j7xAB4dbGeiX9h8unkKHxuWwb`          | TRX                       |

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):

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

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](/docs/cross-chain-api/key-concepts/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 token** — `value` includes the sell amount
2. **Bridge native fee** — some bridges charge a messaging fee in native token (see [Understanding Bridging Costs](/docs/cross-chain-api/key-concepts/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.