Hedera Integration
Integrate cross-chain swaps from Hedera to EVM chains using Squid. Hedera support is powered by Squid Intents — Squid's intent-based execution protocol for fast, solver-driven cross-chain settlement.
Squid Intents must be enabled on your integrator ID. Reach out to the Squid team to request Squid Intents access before integrating with Hedera.
Hedera Parameters
Chain ID
295
Supported Tokens
USDC
0x000000000000000000000000000000000006f89a
Key Concepts
Transaction Type: DEPOSIT_ADDRESS_WITH_SIGNATURE
DEPOSIT_ADDRESS_WITH_SIGNATUREHedera routes use the DEPOSIT_ADDRESS_WITH_SIGNATURE transaction type. Unlike standard EVM routes, this type:
Does not require ERC-20 approval — skip the
approve()call entirelyRequires signing an order hash — the route response includes a
signatureRequiredfield containing an order hash that must be signed by the sender's walletReturns a deposit address — funds are sent directly to a deposit address via a standard EVM transaction
Order Hash Signing
When the route response has transactionRequest.type === 'DEPOSIT_ADDRESS_WITH_SIGNATURE', the transactionRequest.signatureRequired field contains the order hash. Sign this hash using signer.signMessage() to produce the depositTxVerificationSignature:
Important: The Squid indexer expects the signature of the literal UTF-8 hex string, not raw bytes. Use
signMessage()(which applies EIP-191 prefix) directly on the order hash string.
Token Association Polling
Hedera uses the Hedera Token Service (HTS) which requires tokens to be explicitly associated with accounts before they can receive transfers. When Squid creates a deposit address for your route, it must complete a token association on the Hedera network. This process is asynchronous and takes a few seconds.
Poll estimateGas on the transaction before executing to confirm the token association is complete:
If the token has not yet been associated, estimateGas will throw an HTS system error (e.g., TOKEN_NOT_ASSOCIATED_TO_ACCOUNT). The loop retries up to 15 times with a 1-second delay (~15 seconds total).
API Integration
Route from Hedera (Hedera → EVM)
To route from Hedera to an EVM chain, set fromChain to 295 and provide an EVM-compatible Hedera address.
Full Working Example
SDK Integration
The Squid SDK handles much of the Hedera-specific logic automatically. For DEPOSIT_ADDRESS_WITH_SIGNATURE routes, executeRoute() will:
Automatically sign the order hash (
signatureRequired)Execute the deposit transaction
Return the
depositTxVerificationSignaturein the response
You are still responsible for:
Polling
estimateGasto wait for token association before callingexecuteRoute()Passing the
depositTxVerificationSignatureandquoteIdto the status endpoint
Full Working Example
Status Tracking
Hedera routes are powered by Squid Intents, which requires both quoteId and depositTxVerificationSignature for status polling.
transactionId
The deposit transaction hash
fromChainId
295 (Hedera)
toChainId
The destination chain ID
quoteId
Returned in the route response — required for Squid Intents
depositTxVerificationSignature
The signed order hash — required for Hedera routes
bridgeType
rfq
Important: A Squid Intents transaction will not be trackable unless status is polled with the
quoteId. See the Integrating Squid Intents guide for full status polling details.
Code Examples
API Examples
Hedera → EVM
SDK Examples
Hedera → EVM
Important Notes
EVM-compatible wallets only — Hedera integration uses Hedera's EVM-compatible layer. You need an Ethereum-style private key and can interact with Hedera using standard
ethers.jstooling and a Hedera JSON-RPC endpoint.No ERC-20 approval needed —
DEPOSIT_ADDRESS_WITH_SIGNATUREroutes bypass the standard approval flow. Do not callapprove()for these routes.Token association is asynchronous — Always poll
estimateGasbefore sending the deposit transaction to ensure the deposit address has completed HTS token association. Skipping this step may result in a failed transaction.Order hash signing is mandatory — The
signatureRequiredfield must be signed and the resultingdepositTxVerificationSignaturemust be passed to the/v2/statusendpoint for transaction tracking.quoteIdis required for status calls — All Squid Intents transactions (including Hedera routes) require thequoteIdparameter when polling the status endpoint.
For a full reference of all transaction types across all chains, see the Transaction Types page.
Last updated