Search
⌘K
Cross-Chain Swaps (Fusion+)
API version: All versions
Introduction
Quick Start
EVM → EVM
EVM → Solana
Solana → EVM
Orders
Get cross chain swap active orders GET
Get actual escrow factory contract address (v2 for fee-enabled orders) GET
Get orders by maker address GET
Get all data to perform withdrawal and cancellation GET
Get idx of each secret that is ready for submission for specific order GET
Get idx of each secret that is ready for submission for all orders GET
Get all data to perform a cancellation or withdrawal on public periods GET
Get order by hash (v1.2 with fee support) GET
Get orders by hashes (v1.2 with fee support) POST
Get cross chain swap cancelable orders by chain GET
Get cross chain swap active orders GET
Get actual escrow factory contract address GET
Get orders by maker address GET
Get all data to perform withdrawal and cancellation GET
Get idx of each secret that is ready for submission for specific order GET
Get idx of each secret that is ready for submission for all orders GET
Get all data to perform a cancellation or withdrawal on public periods GET
Get order by hash GET
Get orders by hashes POST
Get cross chain swap cancelable orders by chain GET
Quoter
Get quote details based on input data with fee support (v1.2) GET
Get quote with custom preset details (v1.2 with fee support) POST
Build EVM order by given quoteId (v1.2) POST
Build create order unsigned transaction for Solana (v1.2) POST
Get quote details based on input data GET
Get quote with custom preset details POST
Get quote details based on input data GET
Get quote with custom preset details POST
Build order by given quote POST
Build create order unsigned transaction POST
Relayer
Submit a cross-chain order with fee support that resolvers will be able to fill POST
Submit many cross chain orders with fee support that resolvers will be able to fill POST
Submit a secret for order fill after SrcEscrow and DstEscrow deployed and DstChain finality lock passed POST
Submit a cross-chain order that resolvers will be able to fill POST
Submit many cross chain orders that resolvers will be able to fill POST
Submit a secret for order fill after SrcEscrow and DstEscrow deployed and DstChain finality lock passed POST
SDK
Overview
When and how to submit a secret
Swapping a native token with Cross-Chain Swap
Auction Calculator
WebSocket API
Docs·APIs·Swap API·Cross-Chain Swaps (Fusion+)·SDK·Swapping a native token with Cross-Chain Swap

Swapping a native token with Cross-Chain Swap

Introduction

With Cross-Chain Swap, you can perform a gasless cross-chain swap from a chain's native token (like ETH on Base) to an asset on another chain.

How does native cross-chain exchange work?

For cross-chain orders involving a native token, a dedicated escrow contract is deployed on the source chain. This escrow serves as a temporary vault where the following sequence takes place:

  1. Deposit: the user deposits the source chain's native coin into the escrow. Inside, the token is automatically wrapped into its canonical ERC-20 form (e.g., ETH → WETH).

  2. Cross-chain execution: when a resolver fills the order, it initiates a cross-chain message that pulls the wrapped asset from the source escrow, performs the swap via Cross-Chain Swap infrastructure, bridges the taker asset to the destination chain, and delivers it directly to the user's address on that chain.

  3. Refund: if no resolver fills the order within the allowed timeframe, the escrow can be triggered to return the user's original native token on the source chain.

This design ensures that users interact only with their native assets, while all wrapping, bridging, escrow management, and swap execution are seamlessly handled by Cross-Chain Swap infrastructure and its resolvers.

In the section below, you'll find an interactive example of how to swap a native coin cross-chain.

Interactive Example

Explore the complete native token cross-chain swap implementation:

Key Differences from ERC-20 Cross-Chain Swaps

Step ERC-20 Native Token
Approval Required (Aggregation Router) Not needed
Order creation sdk.placeOrder() sdk.createOrder() + sdk.submitNativeOrder()
Escrow deployment Handled by resolver Must deploy via NativeOrdersFactory
On-chain transaction Not needed Required to fund escrow
Secret submission Same for both Same for both

Did you find what you need?