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

Parameter
Value

Chain ID

295

Supported Tokens

Token
Address

USDC

0x000000000000000000000000000000000006f89a


Key Concepts

Transaction Type: DEPOSIT_ADDRESS_WITH_SIGNATURE

Hedera 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 entirely

  • Requires signing an order hash — the route response includes a signatureRequired field containing an order hash that must be signed by the sender's wallet

  • Returns 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 depositTxVerificationSignature in the response

You are still responsible for:

  • Polling estimateGas to wait for token association before calling executeRoute()

  • Passing the depositTxVerificationSignature and quoteId to the status endpoint

Full Working Example


Status Tracking

Hedera routes are powered by Squid Intents, which requires both quoteId and depositTxVerificationSignature for status polling.

Parameter
Description

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

Route
Example

Hedera → EVM

SDK Examples

Route
Example

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.js tooling and a Hedera JSON-RPC endpoint.

  • No ERC-20 approval neededDEPOSIT_ADDRESS_WITH_SIGNATURE routes bypass the standard approval flow. Do not call approve() for these routes.

  • Token association is asynchronous — Always poll estimateGas before 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 signatureRequired field must be signed and the resulting depositTxVerificationSignature must be passed to the /v2/status endpoint for transaction tracking.

  • quoteId is required for status calls — All Squid Intents transactions (including Hedera routes) require the quoteId parameter when polling the status endpoint.

For a full reference of all transaction types across all chains, see the Transaction Types page.

Last updated