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
Request a route — The route response includes a
transactionRequestwith adepositAddressandsignatureRequired.orderHash.Sign the order hash — Before sending funds, sign the
orderHashusingsigner.signMessage(). This produces adepositTxVerificationSignaturethat proves the user authorized the deposit.Poll for token association (Hedera-specific) — Before executing the transaction, poll using
estimateGasto ensure the destination token is associated with the deposit address. Retry up to 15 times with 1-second delays.Send the transaction — Transfer funds to the deposit address.
Track status — When polling status, include both
quoteIdanddepositTxVerificationSignatureas 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:
CHAINFLIP_DEPOSIT_ADDRESS
Source chains: Solana, Bitcoin
Conditions: Chainflip as first step
Example routes: Bitcoin:BTC → Arbitrum:ETH, Solana:SOL → Arbitrum:ETH
Code examples:
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
Request a route — The route response includes a
transactionRequestwithtarget(deposit address) anddata(order hash).Send Canton Coin — Transfer the specified amount to the
targetdeposit address using your Canton wallet.Include the order hash as the memo — The
datafield contains the order hash, which must be included as the transfer memo in the Canton wallet's reason field (splice.lfdecentralizedtrust.org/reason).Track status — Poll using both
transactionIdandquoteId.
See the Canton Integration Guide for complete working examples.
Code examples:
Last updated