For the complete documentation index, see llms.txt. This page is also available as Markdown.

Transaction Types

When requesting a route, the API returns a transactionType field that determines how the transaction should be constructed and submitted on-chain. The type depends on the source chain and whether the route involves DEX swaps.


DEPOSIT_ADDRESS_CALLDATA

  • Source chains: All EVMs (except Hedera), XRPL, Solana

  • Conditions: Direct route (no DEX swaps)

  • Example routes: Ethereum:USDC → Base:ETH, Solana:SOL → Arbitrum:USDC, XRPL:RLUSD → XRPL:XRP

Code examples:


DEPOSIT_ADDRESS_WITH_SIGNATURE

  • Source chains: Hedera

  • Conditions: Direct route (no DEX swaps)

  • Example routes: Hedera:HBAR → Arbitrum:USDC, Hedera:USDC → Arbitrum:USDC

This transaction type is unique to Hedera and requires an additional signing step. Instead of calling a contract directly, the user sends funds to a deposit address and provides a signed verification.

How it works

  1. Request a route — The route response includes a transactionRequest with a depositAddress and signatureRequired.orderHash.

  2. Sign the order hash — Before sending funds, sign the orderHash using signer.signMessage(). This produces a depositTxVerificationSignature that proves the user authorized the deposit.

  3. Poll for token association (Hedera-specific) — Before executing the transaction, poll using estimateGas to ensure the destination token is associated with the deposit address. Retry up to 15 times with 1-second delays.

  4. Send the transaction — Transfer funds to the deposit address.

  5. Track status — When polling status, include both quoteId and depositTxVerificationSignature as parameters.

See the Hedera Integration Guide for complete working examples.

Code examples:


ON_CHAIN_EXECUTION_WITH_SIGNATURE

  • Source chains: Hedera

  • Conditions: Pre-hook (DEX swap) + Squid Intents step

  • Example route: Hedera:SAUCE → Arbitrum:USDC

Code examples:


ON_CHAIN_EXECUTION

  • Source chains: All EVMs (except Hedera), Cosmos

  • Conditions: DEX swap as first action (Single-chain DEX swap, Pre-hook (DEX swap) + Squid Intents step, DEX swap + Axelar bridge step)

  • Example routes: Arbitrum:USDC → Arbitrum:ETH, Arbitrum:USDT → Base:ETH, Osmosis:USDC → Base:USDC

Code examples:

Route
API
SDK

EVM pre-hook → EVM

Cosmos → EVM

Cosmos → EVM (post-hook)


CHAINFLIP_DEPOSIT_ADDRESS

  • Source chains: Solana, Bitcoin

  • Conditions: Chainflip as first step

  • Example routes: Bitcoin:BTC → Arbitrum:ETH, Solana:SOL → Arbitrum:ETH

Code examples:

Route
API
SDK

Bitcoin → EVM


DEPOSIT_ADDRESS_DIRECT_TRANSFER

  • Source chains: Canton

  • Conditions: Direct route from Canton (no on-chain DEX swap)

  • Example routes: Canton:CC → Base:USDC, Canton:CC → Arbitrum:USDC

This transaction type is unique to Canton. Unlike EVM chains where a contract call executes the swap, Canton routes return a deposit address and an order hash that must be included as the transfer memo.

Canton wallets use the CIP-103 protocol — a browser-based wallet discovery and signing standard. There is no exportable private key or Node.js signing SDK. The API and SDK examples handle routing and status tracking programmatically, but the deposit must be sent manually from a Canton wallet (Send, C8, or Nightly). For fully automated browser-based execution, use the Squid Widget.

How it works

  1. Request a route — The route response includes a transactionRequest with target (deposit address) and data (order hash).

  2. Send Canton Coin — Transfer the specified amount to the target deposit address using your Canton wallet.

  3. Include the order hash as the memo — The data field contains the order hash, which must be included as the transfer memo in the Canton wallet's reason field (splice.lfdecentralizedtrust.org/reason).

  4. Track status — Poll using both transactionId and quoteId.

See the Canton Integration Guide for complete working examples.

Code examples:

Route
API
SDK

Last updated