> For the complete documentation index, see [llms.txt](https://docs.squidrouter.exchange/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.squidrouter.exchange/api-and-sdk-integration/key-concepts/transaction-types.md).

# 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:**

| Route         | API                                                                                           | SDK                                                                                           |
| ------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- |
| EVM → EVM     | [evmToEVMSwap](https://github.com/0xsquid/examples/tree/main/V2/api/evmToEVMSwap)             | [evmToEVMSwap](https://github.com/0xsquid/examples/tree/main/V2/sdk/evmToEVMSwap)             |
| Solana → EVM  | [solanaToEVM\_Swap](https://github.com/0xsquid/examples/tree/main/V2/api/solanaToEVM_Swap)    | —                                                                                             |
| XRPL → EVM    | [xrplToArbitrumSwap](https://github.com/0xsquid/examples/tree/main/V2/api/xrplToArbitrumSwap) | [xrplToArbitrumSwap](https://github.com/0xsquid/examples/tree/main/V2/sdk/xrplToArbitrumSwap) |
| EVM → XRPL    | [baseToXrplSwap](https://github.com/0xsquid/examples/tree/main/V2/api/baseToXrplSwap)         | [baseToXrplSwap](https://github.com/0xsquid/examples/tree/main/V2/sdk/baseToXrplSwap)         |
| Stellar → EVM | [stellarToEVMSwap](https://github.com/0xsquid/examples/tree/main/V2/api/stellarToEVMSwap)     | [stellarToEVMSwap](https://github.com/0xsquid/examples/tree/main/V2/sdk/stellarToEVMSwap)     |

***

## `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.

```typescript
// Step 1: Sign the order hash
const orderHash = routeResponse.route.transactionRequest.signatureRequired.orderHash;
const depositTxVerificationSignature = await signer.signMessage(
  ethers.getBytes(orderHash)
);

// Step 2: Include signature in status calls
const status = await axios.get("https://v2.api.squidrouter.exchange/v2/status", {
  params: {
    transactionId,
    fromChainId,
    toChainId,
    quoteId,
    depositTxVerificationSignature, // Required for DEPOSIT_ADDRESS_WITH_SIGNATURE
  },
});
```

See the [Hedera Integration Guide](/api-and-sdk-integration/chain-integration-guides/hedera-integration.md) for complete working examples.

**Code examples:**

| Route        | API                                                                                               | SDK                                                                                               |
| ------------ | ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- |
| Hedera → EVM | [hederaToArbitrumSwap](https://github.com/0xsquid/examples/tree/main/V2/api/hederaToArbitrumSwap) | [hederaToArbitrumSwap](https://github.com/0xsquid/examples/tree/main/V2/sdk/hederaToArbitrumSwap) |

***

## `ON_CHAIN_EXECUTION_WITH_SIGNATURE`

* **Source chains:** Hedera
* **Conditions:** Pre-hook (DEX swap) + Squid Intents step
* **Example route:** Hedera:SAUCE → Arbitrum:USDC

**Code examples:**

| Route        | API                                                                                               | SDK                                                                                               |
| ------------ | ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- |
| Hedera → EVM | [hederaToArbitrumSwap](https://github.com/0xsquid/examples/tree/main/V2/api/hederaToArbitrumSwap) | [hederaToArbitrumSwap](https://github.com/0xsquid/examples/tree/main/V2/sdk/hederaToArbitrumSwap) |

***

## `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       | [evmPrehooktoEVM](https://github.com/0xsquid/examples/tree/main/V2/api/evmPrehooktoEVM)         | [evmPrehooktoEVM](https://github.com/0xsquid/examples/tree/main/V2/sdk/evmPrehooktoEVM) |
| Cosmos → EVM             | [cosmostoEVMSwap](https://github.com/0xsquid/examples/tree/main/V2/api/cosmostoEVMSwap)         | —                                                                                       |
| Cosmos → EVM (post-hook) | [CosmostoEVMPostHook](https://github.com/0xsquid/examples/tree/main/V2/api/CosmostoEVMPostHook) | —                                                                                       |

***

## `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 | [bitcoinToEVM\_Swap](https://github.com/0xsquid/examples/tree/main/V2/api/bitcoinToEVM_Swap) | —   |


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.squidrouter.exchange/api-and-sdk-integration/key-concepts/transaction-types.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
