> ## Documentation Index
> Fetch the complete documentation index at: https://docs.relay.link/llms.txt
> Use this file to discover all available pages before exploring further.

# Deposit Addresses

> Bridge assets by sending funds to a deposit address — no wallet connection or signing required.

export const SolverCurrencies = ({id}) => {
  const key = 'solver-currencies-data';
  if (typeof window === "undefined") {
    return null;
  }
  if (typeof document === "undefined") {
    return null;
  }
  if (!window[key]) {
    window[key] = {
      fetching: false,
      data: null,
      observer: null
    };
  }
  if (!window[key].fetching) {
    const showLoading = () => {
      const rootElement = document.getElementById(id);
      if (!rootElement) {
        return;
      }
      rootElement.innerHTML = `<tr><td colspan="2" style="text-align: center; padding: 20px;">Loading...</td></tr>`;
    };
    const appendCurrencies = data => {
      const rootElement = document.getElementById(id);
      if (!rootElement) {
        return;
      }
      const priorityChains = ['Ethereum', 'Base', 'Arbitrum', 'Optimism', 'BNB', 'Polygon', 'Solana', 'Bitcoin'];
      const rows = data.filter(chain => chain.solverCurrencies && chain.solverCurrencies.length > 0).slice().sort((a, b) => {
        const aIndex = priorityChains.indexOf(a.displayName);
        const bIndex = priorityChains.indexOf(b.displayName);
        if (aIndex !== -1 && bIndex !== -1) {
          return aIndex - bIndex;
        }
        if (aIndex !== -1) return -1;
        if (bIndex !== -1) return 1;
        return a.displayName.localeCompare(b.displayName);
      }).map(chain => {
        const currencies = chain.solverCurrencies.slice().sort((a, b) => {
          const priority = ['ETH', 'USDC', 'USDT', 'WETH'];
          const aIndex = priority.indexOf(a.symbol);
          const bIndex = priority.indexOf(b.symbol);
          if (aIndex !== -1 && bIndex !== -1) {
            return aIndex - bIndex;
          }
          if (aIndex !== -1) return -1;
          if (bIndex !== -1) return 1;
          return a.symbol.localeCompare(b.symbol);
        }).map(c => c.symbol).join(', ');
        return `<tr key=${chain.id}>
          <td>${chain.displayName}</td>
          <td>${currencies}</td>
        </tr>`;
      });
      rootElement.innerHTML = `<div id="${id}-marker"></div>${rows.join("")}`;
      if (!window[key].observer) {
        let observer = new MutationObserver(function (mutations) {
          if (!document.getElementById(`${id}-marker`)) {
            appendCurrencies(data);
          }
        });
        observer.observe(document.body, {
          childList: true,
          subtree: true
        });
        window[key].observer = observer;
      }
    };
    const fetchChains = async () => {
      try {
        if (window[key].fetching) return;
        window[key].fetching = true;
        window[key].data = null;
        showLoading();
        const response = await fetch("https://api.relay.link/chains");
        const data = await response.json();
        window[key].fetching = false;
        window[key].data = data.chains;
        appendCurrencies(data.chains);
      } catch (e) {
        console.error('Error fetching chains:', e);
        window[key].fetching = false;
        window[key].data = false;
      }
    };
    if (window[key].data) {
      appendCurrencies(window[key].data);
    } else {
      showLoading();
      fetchChains();
    }
  }
  return <table style={{
    width: "100%"
  }} className="relay-table">
<thead style={{
    borderBottom: "1px solid rgb(227 226 230)",
    paddingBottom: 5,
    width: "100%",
    fontSize: 16
  }}>
<tr style={{
    textAlign: "left"
  }}>
<th>Chain</th>
<th>Solver Currencies</th>
</tr>
</thead>
<tbody id={id}></tbody>
</table>;
};

Deposit addresses let users bridge or swap tokens by simply sending funds to an address — no wallet connection or signing required. This works for both cross-chain bridges and same-chain swaps. The integrator requests a quote with `useDepositAddress: true`, receives a deposit address, and the user transfers funds there. Relay detects the deposit and fills on the destination chain.

This makes deposit addresses ideal for CEX withdrawals, fiat onramps, and headless systems where the sender can't sign transactions. The user just sends to an address — same UX as a normal transfer.

## How It Works

1. **Quote** — Integrator requests a quote with `useDepositAddress: true`. The response includes a `depositAddress` and `requestId`.
2. **User Deposit** — User sends funds to the deposit address (wallet transfer or exchange withdrawal).
3. **Detect + Sweep** — Relay detects the deposit onchain and sweeps funds to the depository contract. For open-ended addresses, the amount, currency, and chain are validated and the quote may be regenerated if different from the original. For strict addresses, the deposit is validated against the original order.
4. **Fill** — Relay fills on the destination chain from pre-positioned liquidity. Funds are delivered to the recipient address.

### Key Parameters

| Parameter           | Type    | Details                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| ------------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `useDepositAddress` | boolean | Set to `true` to receive a deposit address instead of transaction calldata.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| `user`              | address | The recipient wallet on the destination chain. Can be any valid address, including the zero address.                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| `recipient`         | address | The address that receives funds on the destination chain.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| `refundTo`          | address | Address to send refunds if the transfer fails. Required for strict deposit addresses and for routes that include a destination-side swap. Set to the origin chain's native-currency address (EVM `0x0000000000000000000000000000000000000000`, Bitcoin `bc1qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqmql8k8`, Solana `11111111111111111111111111111111`) to opt into automatic refunds to the original depositor — supported on EVM chains, Bitcoin, and Solana. Omitting this on open addresses disables automatic refund. See [Refund Behavior](#refund-behavior). |
| `tradeType`         | string  | Must be `EXACT_INPUT`. Deposit addresses only support exact input trades — output varies based on market conditions at fill time.                                                                                                                                                                                                                                                                                                                                                                                                                          |
| `amount`            | string  | The quoted amount in the origin token's smallest unit. Open-ended addresses support variable deposit amounts. Strict addresses should be treated as exact-payment instructions.                                                                                                                                                                                                                                                                                                                                                                            |
| `strict`            | boolean | Set to `true` for a strict deposit address tied to a specific order. Omit or set to `false` for an open deposit address.                                                                                                                                                                                                                                                                                                                                                                                                                                   |

### Address Reuse

**Open deposit addresses** can be reused for the same route (same origin currency, origin chain, destination currency, and destination chain). Each new deposit triggers a fresh quote and fill.

Strict addresses should not be presented as reusable. They are bound to the original order and intended for single-use payment instructions.

## Open vs Strict Deposit Addresses

Relay supports two deposit address modes that differ in how flexible they are when handling deposits.

### Open Deposit Addresses

Open-ended deposit addresses are the flexible mode for supported routes. They can handle variable deposit amounts, and on some supported chain families they can also adapt to a different supported input token or a deposit on a different chain.

* `refundTo` is recommended. Omitting `refundTo` disables automatic refund — there is no internal fallback.
* Best for: general-purpose integrations where you want tolerance for user variability.

### Strict Deposit Addresses

Strict deposit addresses are bound to the original order and should be treated as predictable payment instructions. They are not flexible intake points.

* `refundTo` is **required**. The request will fail without it.
* Set `strict: true` in your `/quote/v2` request.
* Best for: integrations that need predictable behavior and explicit refund handling (e.g., payment processors).

### Comparison

| Behavior                      | Open                                                                                                                                                          | Strict                                                                                               |
| ----------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- |
| Accepted currencies           | Flexible — may adapt to a different supported token depending on chain family                                                                                 | Only the currency specified in the original quote                                                    |
| Wrong token (solver currency) | Requote and fill on some chain families (not universal); [relay.link/withdraw](https://relay.link/withdraw) is the fallback if the auto-flow doesn't complete | Recoverable via [relay.link/withdraw](https://relay.link/withdraw)                                   |
| Wrong token (non-solver)      | Not supported and not currently recoverable                                                                                                                   | Not supported and not currently recoverable                                                          |
| Wrong chain (same VM)         | Auto-reroute on EVM; other chain families may refund                                                                                                          | Not supported                                                                                        |
| Wrong chain (different VM)    | Not possible — address formats differ                                                                                                                         | Not possible — address formats differ                                                                |
| Amount mismatch               | Usually requotes for actual amount; too-small deposits may refund                                                                                             | Underpayments refund; exact payments fill; overpayments fill the quoted amount and refund the excess |
| `refundTo`                    | Recommended (omitting disables automatic refund)                                                                                                              | Required                                                                                             |
| Address reuse                 | Yes, same route                                                                                                                                               | No — bound to original order                                                                         |

## Example Request and Response

### Open Deposit Address

Bridging 0.01 ETH from Base to Optimism using an open deposit address:

<CodeGroup>
  ```bash Request theme={null}
  curl -X POST \
    'https://api.relay.link/quote/v2' \
    -H 'Content-Type: application/json' \
    -d '{
  	"user": "0xF0AE622e463fa757Cf72243569E18Be7Df1996cd",
  	"originChainId": 8453,
  	"originCurrency": "0x0000000000000000000000000000000000000000",
  	"destinationChainId": 10,
  	"destinationCurrency": "0x0000000000000000000000000000000000000000",
  	"tradeType": "EXACT_INPUT",
  	"recipient": "0xF0AE622e463fa757Cf72243569E18Be7Df1996cd",
  	"amount": "100000000000000000",
  	"useDepositAddress": true,
  	"refundTo": "0xF0AE622e463fa757Cf72243569E18Be7Df1996cd"
  }'
  ```

  ```json Response expandable theme={null}
  {
    "steps": [
      {
        "id": "deposit",
        "action": "Confirm transaction in your wallet",
        "description": "Depositing funds to the relayer to execute the swap for ETH",
        "kind": "transaction",
        "items": [
          {
            "status": "incomplete",
            "data": {
              "from": "0xF0AE622e463fa757Cf72243569E18Be7Df1996cd",
              "to": "0x856533b33e4526ca3df3b4df4205955056d9d3f0",
              "data": "0x",
              "value": "100000000000000000",
              "chainId": 8453,
              "gas": "27300",
              "maxFeePerGas": "6500000",
              "maxPriorityFeePerGas": "1000000"
            },
            "check": {
              "endpoint": "/intents/status/v3?requestId=0x5288854c6ff2bf4eb4f53f515e599217c20ded0654f7bbfa2a459ebfe462a57c",
              "method": "GET"
            }
          }
        ],
        "requestId": "0x5288854c6ff2bf4eb4f53f515e599217c20ded0654f7bbfa2a459ebfe462a57c",
        "depositAddress": "0x856533b33e4526ca3df3b4df4205955056d9d3f0"
      }
    ],
    "fees": {
      "gas": {
        "currency": {
          "chainId": 8453,
          "address": "0x0000000000000000000000000000000000000000",
          "symbol": "ETH",
          "name": "Ether",
          "decimals": 18,
          "metadata": {
            "logoURI": "https://assets.relay.link/icons/1/light.png",
            "verified": true
          }
        },
        "amount": "143425703256",
        "amountFormatted": "0.000000143425703256",
        "amountUsd": "0.000302",
        "minimumAmount": "143425703256"
      },
      "relayer": {
        "currency": {
          "chainId": 8453,
          "address": "0x0000000000000000000000000000000000000000",
          "symbol": "ETH",
          "name": "Ether",
          "decimals": 18,
          "metadata": {
            "logoURI": "https://assets.relay.link/icons/1/light.png",
            "verified": true
          }
        },
        "amount": "19775083466725",
        "amountFormatted": "0.000019775083466725",
        "amountUsd": "0.041623",
        "minimumAmount": "19775083466725"
      },
      "relayerGas": {
        "currency": {
          "chainId": 8453,
          "address": "0x0000000000000000000000000000000000000000",
          "symbol": "ETH",
          "name": "Ether",
          "decimals": 18,
          "metadata": {
            "logoURI": "https://assets.relay.link/icons/1/light.png",
            "verified": true
          }
        },
        "amount": "773003796434",
        "amountFormatted": "0.000000773003796434",
        "amountUsd": "0.001627",
        "minimumAmount": "773003796434"
      },
      "relayerService": {
        "currency": {
          "chainId": 8453,
          "address": "0x0000000000000000000000000000000000000000",
          "symbol": "ETH",
          "name": "Ether",
          "decimals": 18,
          "metadata": {
            "logoURI": "https://assets.relay.link/icons/1/light.png",
            "verified": true
          }
        },
        "amount": "19002079670291",
        "amountFormatted": "0.000019002079670291",
        "amountUsd": "0.039996",
        "minimumAmount": "19002079670291"
      },
      "app": {
        "currency": {
          "chainId": 8453,
          "address": "0x0000000000000000000000000000000000000000",
          "symbol": "ETH",
          "name": "Ether",
          "decimals": 18,
          "metadata": {
            "logoURI": "https://assets.relay.link/icons/1/light.png",
            "verified": true
          }
        },
        "amount": "0",
        "amountFormatted": "0.0",
        "amountUsd": "0",
        "minimumAmount": "0"
      },
      "subsidized": {
        "currency": {
          "chainId": 8453,
          "address": "0x0000000000000000000000000000000000000000",
          "symbol": "ETH",
          "name": "Ether",
          "decimals": 18,
          "metadata": {
            "logoURI": "https://assets.relay.link/icons/1/light.png",
            "verified": true
          }
        },
        "amount": "0",
        "amountFormatted": "0.0",
        "amountUsd": "0",
        "minimumAmount": "0"
      }
    },
    "details": {
      "operation": "swap",
      "sender": "0xF0AE622e463fa757Cf72243569E18Be7Df1996cd",
      "recipient": "0xF0AE622e463fa757Cf72243569E18Be7Df1996cd",
      "currencyIn": {
        "currency": {
          "chainId": 8453,
          "address": "0x0000000000000000000000000000000000000000",
          "symbol": "ETH",
          "name": "Ether",
          "decimals": 18,
          "metadata": {
            "logoURI": "https://assets.relay.link/icons/1/light.png",
            "verified": true
          }
        },
        "amount": "100000000000000000",
        "amountFormatted": "0.1",
        "amountUsd": "210.480239",
        "minimumAmount": "100000000000000000"
      },
      "currencyOut": {
        "currency": {
          "chainId": 10,
          "address": "0x0000000000000000000000000000000000000000",
          "symbol": "ETH",
          "name": "Ether",
          "decimals": 18,
          "metadata": {
            "logoURI": "https://assets.relay.link/icons/1/light.png",
            "verified": true
          }
        },
        "amount": "99980224916533275",
        "amountFormatted": "0.099980224916533275",
        "amountUsd": "210.438616",
        "minimumAmount": "97980620418202610"
      },
      "refundCurrency": {
        "currency": {
          "chainId": 8453,
          "address": "0x0000000000000000000000000000000000000000",
          "symbol": "ETH",
          "name": "Ether",
          "decimals": 18,
          "metadata": {
            "logoURI": "https://assets.relay.link/icons/1/light.png",
            "verified": true
          }
        },
        "amount": "100000000000000000",
        "amountFormatted": "0.1",
        "amountUsd": "210.480239",
        "minimumAmount": "100000000000000000"
      },
      "totalImpact": {
        "usd": "-0.041623",
        "percent": "-0.02"
      },
      "swapImpact": {
        "usd": "-0.000000",
        "percent": "-0.00"
      },
      "expandedPriceImpact": {
        "swap": {
          "usd": "-0.019996"
        },
        "execution": {
          "usd": "-0.021627"
        },
        "relay": {
          "usd": "0"
        },
        "app": {
          "usd": "0"
        },
        "sponsored": {
          "usd": "0"
        }
      },
      "rate": "0.9998022491653327",
      "slippageTolerance": {
        "origin": {
          "usd": "0.000000",
          "value": "0",
          "percent": "0.00"
        },
        "destination": {
          "usd": "4.187728",
          "value": "1999604498330665",
          "percent": "1.99"
        }
      },
      "timeEstimate": 2,
      "userBalance": "0",
      "isFixedRate": false,
      "route": {
        "origin": {
          "inputCurrency": {
            "currency": {
              "chainId": 8453,
              "address": "0x0000000000000000000000000000000000000000",
              "symbol": "ETH",
              "name": "Ether",
              "decimals": 18,
              "metadata": {
                "logoURI": "https://assets.relay.link/icons/1/light.png",
                "verified": true
              }
            },
            "amount": "100000000000000000",
            "amountFormatted": "0.1",
            "amountUsd": "210.480239",
            "minimumAmount": "100000000000000000"
          },
          "outputCurrency": {
            "currency": {
              "chainId": 8453,
              "address": "0x0000000000000000000000000000000000000000",
              "symbol": "ETH",
              "name": "Ether",
              "decimals": 18,
              "metadata": {
                "logoURI": "https://assets.relay.link/icons/1/light.png",
                "verified": true
              }
            },
            "amount": "100000000000000000",
            "amountFormatted": "0.1",
            "amountUsd": "210.480239",
            "minimumAmount": "100000000000000000"
          },
          "router": "relay"
        },
        "destination": {
          "inputCurrency": {
            "currency": {
              "chainId": 10,
              "address": "0x0000000000000000000000000000000000000000",
              "symbol": "ETH",
              "name": "Ether",
              "decimals": 18,
              "metadata": {
                "logoURI": "https://assets.relay.link/icons/1/light.png",
                "verified": true
              }
            },
            "amount": "99980224916533275",
            "amountFormatted": "0.099980224916533275",
            "amountUsd": "210.438616",
            "minimumAmount": "97980620418202610"
          },
          "outputCurrency": {
            "currency": {
              "chainId": 10,
              "address": "0x0000000000000000000000000000000000000000",
              "symbol": "ETH",
              "name": "Ether",
              "decimals": 18,
              "metadata": {
                "logoURI": "https://assets.relay.link/icons/1/light.png",
                "verified": true
              }
            },
            "amount": "99980224916533275",
            "amountFormatted": "0.099980224916533275",
            "amountUsd": "210.438616",
            "minimumAmount": "97980620418202610"
          },
          "router": "relay"
        }
      }
    },
    "protocol": {
      "v2": {
        "orderId": "0x8391f3eb54c0999767a970a1603aaf16403a17263cdf723adec76e3fda5be275",
        "orderData": {
          "version": "v1",
          "solverChainId": "base",
          "solver": "0xf70da97812cb96acdf810712aa562db8dfa3dbef",
          "salt": "0x184ed77f343bff09b7255a75f0be900ac82c00c276c0a97eed2948ab3a1e8503",
          "inputs": [
            {
              "payment": {
                "chainId": "base",
                "currency": "0x0000000000000000000000000000000000000000",
                "amount": "100000000000000000",
                "weight": "1"
              },
              "refunds": [
                {
                  "chainId": "base",
                  "recipient": "0xF0AE622e463fa757Cf72243569E18Be7Df1996cd",
                  "currency": "0x0000000000000000000000000000000000000000",
                  "minimumAmount": "0",
                  "deadline": 1791082506,
                  "extraData": "0x000000000000000000000000b92fe925dc43a0ecde6c8b1a2709c170ec4fff4f"
                },
                {
                  "chainId": "optimism",
                  "recipient": "0xF0AE622e463fa757Cf72243569E18Be7Df1996cd",
                  "currency": "0x0000000000000000000000000000000000000000",
                  "minimumAmount": "0",
                  "deadline": 1791082506,
                  "extraData": "0x000000000000000000000000b92fe925dc43a0ecde6c8b1a2709c170ec4fff4f"
                }
              ]
            }
          ],
          "output": {
            "chainId": "optimism",
            "payments": [
              {
                "recipient": "0xF0AE622e463fa757Cf72243569E18Be7Df1996cd",
                "currency": "0x0000000000000000000000000000000000000000",
                "minimumAmount": "97980620418202610",
                "expectedAmount": "99980224916533275"
              }
            ],
            "calls": [],
            "deadline": 1791082506,
            "extraData": "0x000000000000000000000000b92fe925dc43a0ecde6c8b1a2709c170ec4fff4f"
          },
          "fees": []
        },
        "paymentDetails": {
          "chainId": "base",
          "depository": "0x4cd00e387622c35bddb9b4c962c136462338bc31",
          "currency": "0x0000000000000000000000000000000000000000",
          "amount": "100000000000000000"
        }
      }
    }
  }
  ```
</CodeGroup>

### Strict Deposit Address

Same route, but using a strict deposit address. Note the addition of `strict: true` and the required `refundTo`:

<CodeGroup>
  ```bash Request theme={null}
  curl -X POST \
    'https://api.relay.link/quote/v2' \
    -H 'Content-Type: application/json' \
    -d '{
  	"user": "0xF0AE622e463fa757Cf72243569E18Be7Df1996cd",
  	"originChainId": 8453,
  	"originCurrency": "0x0000000000000000000000000000000000000000",
  	"destinationChainId": 10,
  	"destinationCurrency": "0x0000000000000000000000000000000000000000",
  	"tradeType": "EXACT_INPUT",
  	"recipient": "0xF0AE622e463fa757Cf72243569E18Be7Df1996cd",
  	"amount": "100000000000000000",
  	"useDepositAddress": true,
  	"strict": true,
  	"refundTo": "0xF0AE622e463fa757Cf72243569E18Be7Df1996cd"
  }'
  ```

  ```json Response expandable theme={null}
  {
    "steps": [
      {
        "id": "deposit",
        "action": "Confirm transaction in your wallet",
        "description": "Depositing funds to the relayer to execute the swap for ETH",
        "kind": "transaction",
        "items": [
          {
            "status": "incomplete",
            "data": {
              "from": "0xF0AE622e463fa757Cf72243569E18Be7Df1996cd",
              "to": "0xEa04F61d00AFD8649B39b873306949aa11630067",
              "data": "0x",
              "value": "100000000000000000",
              "chainId": 8453,
              "gas": "27300",
              "maxFeePerGas": "6500000",
              "maxPriorityFeePerGas": "1000000"
            },
            "check": {
              "endpoint": "/intents/status/v3?requestId=0xcb422162ba0a775cadcdc7983fc2108e761840446fe3f241fd8f72286fd3b4f8",
              "method": "GET"
            }
          }
        ],
        "requestId": "0xcb422162ba0a775cadcdc7983fc2108e761840446fe3f241fd8f72286fd3b4f8",
        "depositAddress": "0xEa04F61d00AFD8649B39b873306949aa11630067"
      }
    ],
    "fees": {
      "gas": {
        "currency": {
          "chainId": 8453,
          "address": "0x0000000000000000000000000000000000000000",
          "symbol": "ETH",
          "name": "Ether",
          "decimals": 18,
          "metadata": {
            "logoURI": "https://assets.relay.link/icons/1/light.png",
            "verified": true
          }
        },
        "amount": "143437744316",
        "amountFormatted": "0.000000143437744316",
        "amountUsd": "0.000302",
        "minimumAmount": "143437744316"
      },
      "relayer": {
        "currency": {
          "chainId": 8453,
          "address": "0x0000000000000000000000000000000000000000",
          "symbol": "ETH",
          "name": "Ether",
          "decimals": 18,
          "metadata": {
            "logoURI": "https://assets.relay.link/icons/1/light.png",
            "verified": true
          }
        },
        "amount": "19782653616567",
        "amountFormatted": "0.000019782653616567",
        "amountUsd": "0.041606",
        "minimumAmount": "19782653616567"
      },
      "relayerGas": {
        "currency": {
          "chainId": 8453,
          "address": "0x0000000000000000000000000000000000000000",
          "symbol": "ETH",
          "name": "Ether",
          "decimals": 18,
          "metadata": {
            "logoURI": "https://assets.relay.link/icons/1/light.png",
            "verified": true
          }
        },
        "amount": "773072690010",
        "amountFormatted": "0.00000077307269001",
        "amountUsd": "0.001626",
        "minimumAmount": "773072690010"
      },
      "relayerService": {
        "currency": {
          "chainId": 8453,
          "address": "0x0000000000000000000000000000000000000000",
          "symbol": "ETH",
          "name": "Ether",
          "decimals": 18,
          "metadata": {
            "logoURI": "https://assets.relay.link/icons/1/light.png",
            "verified": true
          }
        },
        "amount": "19009580926557",
        "amountFormatted": "0.000019009580926557",
        "amountUsd": "0.039980",
        "minimumAmount": "19009580926557"
      },
      "app": {
        "currency": {
          "chainId": 8453,
          "address": "0x0000000000000000000000000000000000000000",
          "symbol": "ETH",
          "name": "Ether",
          "decimals": 18,
          "metadata": {
            "logoURI": "https://assets.relay.link/icons/1/light.png",
            "verified": true
          }
        },
        "amount": "0",
        "amountFormatted": "0.0",
        "amountUsd": "0",
        "minimumAmount": "0"
      },
      "subsidized": {
        "currency": {
          "chainId": 8453,
          "address": "0x0000000000000000000000000000000000000000",
          "symbol": "ETH",
          "name": "Ether",
          "decimals": 18,
          "metadata": {
            "logoURI": "https://assets.relay.link/icons/1/light.png",
            "verified": true
          }
        },
        "amount": "0",
        "amountFormatted": "0.0",
        "amountUsd": "0",
        "minimumAmount": "0"
      }
    },
    "details": {
      "operation": "swap",
      "sender": "0xF0AE622e463fa757Cf72243569E18Be7Df1996cd",
      "recipient": "0xF0AE622e463fa757Cf72243569E18Be7Df1996cd",
      "currencyIn": {
        "currency": {
          "chainId": 8453,
          "address": "0x0000000000000000000000000000000000000000",
          "symbol": "ETH",
          "name": "Ether",
          "decimals": 18,
          "metadata": {
            "logoURI": "https://assets.relay.link/icons/1/light.png",
            "verified": true
          }
        },
        "amount": "100000000000000000",
        "amountFormatted": "0.1",
        "amountUsd": "210.314210",
        "minimumAmount": "100000000000000000"
      },
      "currencyOut": {
        "currency": {
          "chainId": 10,
          "address": "0x0000000000000000000000000000000000000000",
          "symbol": "ETH",
          "name": "Ether",
          "decimals": 18,
          "metadata": {
            "logoURI": "https://assets.relay.link/icons/1/light.png",
            "verified": true
          }
        },
        "amount": "99980217346383433",
        "amountFormatted": "0.099980217346383433",
        "amountUsd": "210.272604",
        "minimumAmount": "97980612999455765"
      },
      "refundCurrency": {
        "currency": {
          "chainId": 8453,
          "address": "0x0000000000000000000000000000000000000000",
          "symbol": "ETH",
          "name": "Ether",
          "decimals": 18,
          "metadata": {
            "logoURI": "https://assets.relay.link/icons/1/light.png",
            "verified": true
          }
        },
        "amount": "100000000000000000",
        "amountFormatted": "0.1",
        "amountUsd": "210.314210",
        "minimumAmount": "100000000000000000"
      },
      "totalImpact": {
        "usd": "-0.041606",
        "percent": "-0.02"
      },
      "swapImpact": {
        "usd": "0.000000",
        "percent": "0.00"
      },
      "expandedPriceImpact": {
        "swap": {
          "usd": "-0.019980"
        },
        "execution": {
          "usd": "-0.021626"
        },
        "relay": {
          "usd": "0"
        },
        "app": {
          "usd": "0"
        },
        "sponsored": {
          "usd": "0"
        }
      },
      "rate": "0.9998021734638343",
      "slippageTolerance": {
        "origin": {
          "usd": "0.000000",
          "value": "0",
          "percent": "0.00"
        },
        "destination": {
          "usd": "4.184425",
          "value": "1999604346927668",
          "percent": "1.99"
        }
      },
      "timeEstimate": 2,
      "userBalance": "0",
      "isFixedRate": false,
      "route": {
        "origin": {
          "inputCurrency": {
            "currency": {
              "chainId": 8453,
              "address": "0x0000000000000000000000000000000000000000",
              "symbol": "ETH",
              "name": "Ether",
              "decimals": 18,
              "metadata": {
                "logoURI": "https://assets.relay.link/icons/1/light.png",
                "verified": true
              }
            },
            "amount": "100000000000000000",
            "amountFormatted": "0.1",
            "amountUsd": "210.314210",
            "minimumAmount": "100000000000000000"
          },
          "outputCurrency": {
            "currency": {
              "chainId": 8453,
              "address": "0x0000000000000000000000000000000000000000",
              "symbol": "ETH",
              "name": "Ether",
              "decimals": 18,
              "metadata": {
                "logoURI": "https://assets.relay.link/icons/1/light.png",
                "verified": true
              }
            },
            "amount": "100000000000000000",
            "amountFormatted": "0.1",
            "amountUsd": "210.314210",
            "minimumAmount": "100000000000000000"
          },
          "router": "relay"
        },
        "destination": {
          "inputCurrency": {
            "currency": {
              "chainId": 10,
              "address": "0x0000000000000000000000000000000000000000",
              "symbol": "ETH",
              "name": "Ether",
              "decimals": 18,
              "metadata": {
                "logoURI": "https://assets.relay.link/icons/1/light.png",
                "verified": true
              }
            },
            "amount": "99980217346383433",
            "amountFormatted": "0.099980217346383433",
            "amountUsd": "210.272604",
            "minimumAmount": "97980612999455765"
          },
          "outputCurrency": {
            "currency": {
              "chainId": 10,
              "address": "0x0000000000000000000000000000000000000000",
              "symbol": "ETH",
              "name": "Ether",
              "decimals": 18,
              "metadata": {
                "logoURI": "https://assets.relay.link/icons/1/light.png",
                "verified": true
              }
            },
            "amount": "99980217346383433",
            "amountFormatted": "0.099980217346383433",
            "amountUsd": "210.272604",
            "minimumAmount": "97980612999455765"
          },
          "router": "relay"
        }
      }
    },
    "protocol": {
      "v2": {
        "orderId": "0x67ffde85c03352d45f9b073ef15fc73c656115d1c472de76aff9c66580eb5dc7",
        "orderData": {
          "version": "v1",
          "solverChainId": "base",
          "solver": "0xf70da97812cb96acdf810712aa562db8dfa3dbef",
          "salt": "0xe95244440faaedb49eddcb1dda9a5b82531b38e03c5799242638685b2fdb924e",
          "inputs": [
            {
              "payment": {
                "chainId": "base",
                "currency": "0x0000000000000000000000000000000000000000",
                "amount": "100000000000000000",
                "weight": "1"
              },
              "refunds": [
                {
                  "chainId": "base",
                  "recipient": "0xF0AE622e463fa757Cf72243569E18Be7Df1996cd",
                  "currency": "0x0000000000000000000000000000000000000000",
                  "minimumAmount": "0",
                  "deadline": 1791082605,
                  "extraData": "0x000000000000000000000000b92fe925dc43a0ecde6c8b1a2709c170ec4fff4f"
                },
                {
                  "chainId": "optimism",
                  "recipient": "0xF0AE622e463fa757Cf72243569E18Be7Df1996cd",
                  "currency": "0x0000000000000000000000000000000000000000",
                  "minimumAmount": "0",
                  "deadline": 1791082605,
                  "extraData": "0x000000000000000000000000b92fe925dc43a0ecde6c8b1a2709c170ec4fff4f"
                }
              ]
            }
          ],
          "output": {
            "chainId": "optimism",
            "payments": [
              {
                "recipient": "0xF0AE622e463fa757Cf72243569E18Be7Df1996cd",
                "currency": "0x0000000000000000000000000000000000000000",
                "minimumAmount": "97980612999455765",
                "expectedAmount": "99980217346383433"
              }
            ],
            "calls": [],
            "deadline": 1791082605,
            "extraData": "0x000000000000000000000000b92fe925dc43a0ecde6c8b1a2709c170ec4fff4f"
          },
          "fees": []
        },
        "paymentDetails": {
          "chainId": "base",
          "depository": "0x4cd00e387622c35bddb9b4c962c136462338bc31",
          "currency": "0x0000000000000000000000000000000000000000",
          "amount": "100000000000000000"
        }
      }
    }
  }
  ```
</CodeGroup>

Key differences in the strict request:

* `strict` is set to `true`
* `refundTo` is required — the request fails without it
* The deposit address is bound to this specific order and is not reusable

## Quote Regeneration

When funds arrive at a deposit address, Relay evaluates what was sent versus what was originally quoted. How mismatches are handled depends on the deposit address mode.

### Open-Ended Addresses

#### Same Token, Different Amount

* **Exact match** — The original quote is reused and the fill proceeds directly.
* **More than quoted** — A new quote is generated for the larger amount, and the fill proceeds.
* **Less than quoted** — If the smaller amount still covers fees and the minimum fill, a new quote is generated and the fill proceeds. If not, the deposit is refunded to the `refundTo` address (if set).

#### Different Token (Solver Currency)

On some chain families, if the user sends a different token that is a [solver currency](#caveats), Relay can regenerate the quote using the actual currency deposited and fill the order. This is not universal across all chains — some chain families will fail or refund on token mismatch. If a different supported token was sent and nothing happens immediately, use the [reindex endpoint](#reindexing-stuck-deposits) as a fallback.

#### Different Chain (Same VM)

On EVM chains, if the user deposits on the wrong chain but the address exists on that chain, Relay can auto-reroute the deposit. Other chain families may treat chain mismatch as an error and refund instead.

#### Different Chain (Different VM)

This is not possible — deposit address formats differ across VM types (e.g., EVM vs Solana vs Bitcoin), so a user cannot accidentally send to the wrong VM.

### Strict Addresses

Strict addresses are bound to the original order. The handling is narrower:

* **Exact amount** — The fill proceeds using the original order.
* **Underpayment** — The deposit fails and is refunded to `refundTo`. The fill does not proceed.
* **Overpayment** — The fill proceeds for the originally quoted amount and the excess is returned to `refundTo` as a separate refund leg. The fill itself is never scaled up.
* **Wrong token or wrong chain** — Not supported. Strict addresses do not have automatic wrong-token or wrong-chain recovery paths.

<Warning>
  Open-ended mismatches often create a new `requestId`. Always track transactions by deposit address, not by `requestId`. See [Tracking Transactions](#tracking-transactions).
</Warning>

## Refund Behavior

What happens when a deposit can't be processed depends on the token type and the `refundTo` configuration.

### Refund Flows

There are two distinct refund scenarios:

1. **Correct currency, fill failed** (e.g., slippage, network issues) — If `refundTo` is set, the deposit is automatically refunded to that address, minus the cost of gas. No additional fees are taken.
2. **Wrong currency (non-solver token)** — Not supported and not currently recoverable.

<Info>
  If a wrong solver currency was sent and the deposit didn't auto-resolve, users can recover it at [relay.link/withdraw](https://relay.link/withdraw).
</Info>

### `refundTo` Configuration

| `refundTo` value                                                                                                                                                                          | Behavior                                                                                                                                                                 |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| User's address                                                                                                                                                                            | Refund directly to the user                                                                                                                                              |
| App-controlled address                                                                                                                                                                    | Refund to integrator's address — your support team handles returning funds to the user                                                                                   |
| Origin chain's native-currency address (EVM `0x0000000000000000000000000000000000000000`, Bitcoin `bc1qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqmql8k8`, Solana `11111111111111111111111111111111`) | Auto-refund to the original depositor — the address that sent funds to the deposit address. Supported on EVM chains, Bitcoin, and Solana origins; rejected on other VMs. |
| Not set (open)                                                                                                                                                                            | Automatic refund is disabled — no internal fallback                                                                                                                      |
| Not set (strict)                                                                                                                                                                          | Not allowed — `refundTo` is required for strict deposit addresses                                                                                                        |

<Note>
  If users may send from a centralized exchange, **do not use "refund to sender"** — neither an explicit user address you don't control nor the native-currency-address auto-refund opt-in — the sender address will be the exchange's hot wallet, not the user's. Use an app-controlled address instead so your support team can handle the last mile.
</Note>

<Info>
  When auto-refund to the original depositor is triggered, the request's `outTxs` will contain **two** refund transactions. The first transaction is the solver-to-depositor transfer that actually returns funds to the depositor — this is the one to track from your integration. The second is an internal protocol-settlement transaction that does not move user funds and can be ignored by integrators.
</Info>

### Recommended Setup

* **Open deposit addresses**: Set `refundTo` to the user's address for automatic refunds.
* **Strict deposit addresses**: Always set `refundTo`. If the sender is unknown (e.g., CEX withdrawal), use an app-controlled address so your support team can manage refunds.
* **Auto-refund to depositor**: When users deposit from wallets they control, you can pass `refundTo` as the origin chain's native-currency address (EVM `0x0000000000000000000000000000000000000000`, Bitcoin `bc1qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqmql8k8`, Solana `11111111111111111111111111111111`) to refund to the original depositor automatically. The first of the two resulting `outTxs` is the transfer to the depositor — track that one for refund delivery. Avoid this when deposits may originate from a centralized exchange.

## Tracking Transactions

### Querying by Deposit Address

The most reliable way to track deposit address transactions is to poll the [Get Requests API](/references/api/get-requests) using the `depositAddress` query parameter:

<CodeGroup>
  ```bash Request theme={null}
  curl -X GET "https://api.relay.link/requests/v2?depositAddress=<DEPOSIT_ADDRESS>&sortBy=updatedAt&sortDirection=desc&limit=20"
  ```

  ```json Response expandable theme={null}
  {
    "requests": [
      {
        "id": "0x6acbc4acb0cb61d2b42962ddaf0973b536933670ede1df3ab39f9003e9c3e04e",
        "status": "success",
        "user": "0x43255777ad9bd6ff7684d04d6121cd8d96c7e32b",
        "recipient": "0xf3128499092b90f1a520f63c09946dca3dadf98f",
        "depositAddress": {
          "address": "0xb353e49aa47514fb579d6ba6594c768379a96515",
          "depositAddressType": "open",
          "depositor": "0xb353e49aa47514fb579d6ba6594c768379a96515",
        },
        "data": {
          "slippageTolerance": "50",
          "failReason": "N/A",
          "refundFailReason": "N/A",
          "subsidizedRequest": false,
          "fees": {
            "gas": "3807",
            "fixed": "20002",
            "price": "7990",
            "gateway": "0"
          },
          "feesUsd": {
            "gas": "0.003806",
            "fixed": "0.020000",
            "price": "0.007989",
            "gateway": "0.000000"
          },
          "inTxs": [
            {
              "fee": "9823482523847773",
              "data": {
                "to": "0x3c499c542cef5e3811e1192ce70d8cc03d5c3359",
                "data": "0xa9059cbb0000000000000000000000004cd00e387622c35bddb9b4c962c136462338bc310000000000000000000000000000000000000000000000000000000004c3b43d1307b68c63c473186b7aebd374e9bffd16fd791ebcb37b3d005edeb88e7b7672",
                "from": "0xb353e49aa47514fb579d6ba6594c768379a96515",
                "value": "0"
              },
              "stateChanges": [
                {
                  "change": {
                    "data": {
                      "tokenKind": "ft",
                      "tokenAddress": "0x3c499c542cef5e3811e1192ce70d8cc03d5c3359"
                    },
                    "kind": "token",
                    "balanceDiff": "-79934525"
                  },
                  "address": "0xb353e49aa47514fb579d6ba6594c768379a96515"
                },
                {
                  "change": {
                    "data": {
                      "tokenKind": "ft",
                      "tokenAddress": "0x3c499c542cef5e3811e1192ce70d8cc03d5c3359"
                    },
                    "kind": "token",
                    "balanceDiff": "79934525"
                  },
                  "address": "0x4cd00e387622c35bddb9b4c962c136462338bc31"
                }
              ],
              "hash": "0x6334e6ce2558c2d4ebc187d99f3adf2605a97279a6733e612ee6cdc57f112ad3",
              "block": 85115744,
              "type": "onchain",
              "chainId": 137,
              "timestamp": 1775351525,
              "status": "success"
            }
          ],
          "currency": "usdc",
          "currencyObject": {},
          "feeCurrency": "usdc",
          "feeCurrencyObject": {
            "chainId": 137,
            "address": "0x3c499c542cef5e3811e1192ce70d8cc03d5c3359",
            "symbol": "USDC",
            "name": "USD Coin",
            "decimals": 6,
            "metadata": {
              "logoURI": "https://ethereum-optimism.github.io/data/USDC/logo.png",
              "verified": true
            }
          },
          "appFeeCurrencyObject": {
            "chainId": 137,
            "address": "0x3c499c542cef5e3811e1192ce70d8cc03d5c3359",
            "symbol": "USDC",
            "name": "USD Coin",
            "decimals": 6,
            "metadata": {
              "logoURI": "https://ethereum-optimism.github.io/data/USDC/logo.png",
              "verified": true
            }
          },
          "appFees": [],
          "paidAppFees": [],
          "metadata": {
            "sender": "0x43255777ad9bd6ff7684d04d6121cd8d96c7e32b",
            "recipient": "0xf3128499092b90f1a520f63c09946dca3dadf98f",
            "currencyIn": {
              "currency": {
                "chainId": 137,
                "address": "0x3c499c542cef5e3811e1192ce70d8cc03d5c3359",
                "symbol": "USDC",
                "name": "USD Coin",
                "decimals": 6,
                "metadata": {
                  "logoURI": "https://ethereum-optimism.github.io/data/USDC/logo.png",
                  "verified": true
                }
              },
              "amount": "79934525",
              "amountFormatted": "79.934525",
              "amountUsd": "79.926372",
              "amountUsdCurrent": "79.923094",
              "minimumAmount": "79934525"
            },
            "currencyOut": {
              "currency": {
                "chainId": 8453,
                "address": "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913",
                "symbol": "USDC",
                "name": "USD Coin",
                "decimals": 6,
                "metadata": {
                  "logoURI": "https://coin-images.coingecko.com/coins/images/6319/large/usdc.png?1696506694",
                  "verified": true
                }
              },
              "amount": "79902723",
              "amountFormatted": "79.902723",
              "amountUsd": "79.894573",
              "amountUsdCurrent": "79.891297",
              "minimumAmount": "79503210"
            },
            "rate": "0.9996021493841366",
            "route": {
              "origin": {
                "inputCurrency": {
                  "currency": {
                    "chainId": 137,
                    "address": "0x3c499c542cef5e3811e1192ce70d8cc03d5c3359",
                    "symbol": "USDC",
                    "name": "USD Coin",
                    "decimals": 6,
                    "metadata": {
                      "logoURI": "https://ethereum-optimism.github.io/data/USDC/logo.png",
                      "verified": true
                    }
                  },
                  "amount": "79934525",
                  "amountFormatted": "79.934525",
                  "amountUsd": "79.926372",
                  "minimumAmount": "79934525"
                },
                "outputCurrency": {
                  "currency": {
                    "chainId": 137,
                    "address": "0x3c499c542cef5e3811e1192ce70d8cc03d5c3359",
                    "symbol": "USDC",
                    "name": "USD Coin",
                    "decimals": 6,
                    "metadata": {
                      "logoURI": "https://ethereum-optimism.github.io/data/USDC/logo.png",
                      "verified": true
                    }
                  },
                  "amount": "79934525",
                  "amountFormatted": "79.934525",
                  "amountUsd": "79.926372",
                  "minimumAmount": "79934525"
                },
                "router": "relay"
              },
              "destination": {
                "inputCurrency": {
                  "currency": {
                    "chainId": 8453,
                    "address": "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913",
                    "symbol": "USDC",
                    "name": "USD Coin",
                    "decimals": 6,
                    "metadata": {
                      "logoURI": "https://coin-images.coingecko.com/coins/images/6319/large/usdc.png?1696506694",
                      "verified": true
                    }
                  },
                  "amount": "79902723",
                  "amountFormatted": "79.902723",
                  "amountUsd": "79.894573",
                  "minimumAmount": "79503210"
                },
                "outputCurrency": {
                  "currency": {
                    "chainId": 8453,
                    "address": "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913",
                    "symbol": "USDC",
                    "name": "USD Coin",
                    "decimals": 6,
                    "metadata": {
                      "logoURI": "https://coin-images.coingecko.com/coins/images/6319/large/usdc.png?1696506694",
                      "verified": true
                    }
                  },
                  "amount": "79902723",
                  "amountFormatted": "79.902723",
                  "amountUsd": "79.894573",
                  "minimumAmount": "79503210"
                },
                "router": "relay"
              }
            }
          },
          "price": "79902723",
          "usesExternalLiquidity": false,
          "timeEstimate": 4,
          "outTxs": [
            {
              "fee": "426860744193",
              "data": {
                "to": "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913",
                "data": "0x23b872dd000000000000000000000000f70da97812cb96acdf810712aa562db8dfa3dbef000000000000000000000000f3128499092b90f1a520f63c09946dca3dadf98f0000000000000000000000000000000000000000000000000000000004c338031307b68c63c473186b7aebd374e9bffd16fd791ebcb37b3d005edeb88e7b7672",
                "from": "0xca7ded7e4f4ba8ab3b10009236ae6d1b95094589",
                "value": "0"
              },
              "stateChanges": [
                {
                  "change": {
                    "data": {
                      "tokenKind": "ft",
                      "tokenAddress": "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913"
                    },
                    "kind": "token",
                    "balanceDiff": "-79902723"
                  },
                  "address": "0xf70da97812cb96acdf810712aa562db8dfa3dbef"
                },
                {
                  "change": {
                    "data": {
                      "tokenKind": "ft",
                      "tokenAddress": "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913"
                    },
                    "kind": "token",
                    "balanceDiff": "79902723"
                  },
                  "address": "0xf3128499092b90f1a520f63c09946dca3dadf98f"
                }
              ],
              "hash": "0x098d75e397350670f9c3fa4496036b0594ad3a06f00ea1784cf45b080f258651",
              "block": 44281091,
              "type": "onchain",
              "chainId": 8453,
              "timestamp": 1775351529,
              "status": "success"
            }
          ]
        },
        "referrer": "meshpay_f5b533dc-841a-4820-a454-9912fca134c1",
        "createdAt": "2026-04-05T01:12:06.153Z",
        "updatedAt": "2026-04-05T01:12:44.199Z"
      }
    ]
  }
  ```
</CodeGroup>

### Handling Quote Regeneration

When a quote is regenerated (different amount, token, or chain), a new `requestId` may be generated. Use `includeChildRequests=true` to find all related requests, including regenerated ones:

```bash theme={null}
curl -X GET "https://api.relay.link/requests/v2?depositAddress=<DEPOSIT_ADDRESS>&includeChildRequests=true"
```

### Request-Level Status

Once you have a `requestId`, you can use [Get Status](/references/api/get-intents-status-v3) for detailed status polling:

<CodeGroup>
  ```bash Request theme={null}
  curl -X GET "https://api.relay.link/intents/status/v3?requestId=<REQUEST_ID>"
  ```

  ```json Response expandable theme={null}
  {
    "status": "pending",
    "inTxHashes": [
      "0xabc123..."
    ],
    "txHashes": [],
    "updatedAt": 1769988962883,
    "originChainId": 8453,
    "destinationChainId": 10
  }
  ```
</CodeGroup>

### Reindexing Stuck Deposits

Relay's background monitor only checks the originally quoted input token. If a user sent a different supported (solver) token, the monitor may not detect it automatically. Use the [Deposit Address Reindex](/references/api/deposit-address-reindex) endpoint to trigger on-demand re-detection — it checks every solver-depositable currency on the chain and queues a sweep for any non-zero balances.

```bash theme={null}
curl -X POST 'https://api.relay.link/transactions/deposit-address/reindex' \
  -H 'Content-Type: application/json' \
  -d '{
    "chainId": 8453,
    "depositAddress": "0x1ba74e01d46372008260ec971f77eb6032b938a4"
  }'
```

**`chainId` is the chain the deposit address was originally registered on.** Pass `targetChainId` to run the reindex on a different chain — useful when funds were sent to the right address but on the wrong chain (e.g. the address was registered for Arbitrum but funds landed on Ethereum). This is the chain being reindexed, not the destination chain of the original quote.

Pass `currency` to scope the reindex to a single currency address instead of iterating every depositable currency. Any currency registered with Relay on the target chain is accepted — including currencies outside the standard solver-depositable list (e.g. a HyperCore-registered token when the deposit address was created for HyperEVM).

```bash theme={null}
curl -X POST 'https://api.relay.link/transactions/deposit-address/reindex' \
  -H 'Content-Type: application/json' \
  -d '{
    "chainId": 42161,
    "depositAddress": "0x1ba74e01d46372008260ec971f77eb6032b938a4",
    "targetChainId": 1,
    "currency": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"
  }'
```

<Note>
  The deposit transaction hash cannot be used to look up the status of a deposit address bridge. Always use the deposit address itself or the `requestId` to track status.
</Note>

## Caveats

### Gas Overhead

Deposit addresses add gas overhead compared to direct calldata execution because Relay must sweep funds from the deposit address:

| Method   | Token Type                       | Gas Overhead |
| -------- | -------------------------------- | ------------ |
| Receiver | Native tokens (ETH, MATIC, etc.) | \~33,000 gas |
| Protocol | ERC-20 tokens                    | \~70,000 gas |

For very small amounts, the gas overhead may make deposit addresses less cost-effective than direct calldata execution.

### Supported Currencies

Only tokens listed as **solver currencies** for a given chain can be processed by deposit addresses. The input token must be a solver-depositable currency for the requested route. The destination token can differ and be completed through a destination-side swap — in that case, `refundTo` is required.

Relay treats certain tokens as equivalent within currency groups (e.g., ETH and WETH) — depositing any token in a group triggers the same fill behavior.

The table below is loaded live from the [chains API](/references/api/get-chains). Each chain's `solverCurrencies` array is the authoritative source for which tokens are supported.

<SolverCurrencies id="solverCurrencies" />

<Warning>
  Non-solver tokens and NFTs sent to deposit addresses are **not recoverable** through normal processes. Always verify the token is a solver currency before depositing.
</Warning>

### Chain-Specific Notes

* **Bitcoin** — Requires 1 block confirmation before Relay processes the deposit. Deposits are detected via mempool monitoring but only acted on after confirmation.
* **Solana** — Supports SPL tokens through the protocol deposit method. Native SOL and SPL tokens like USDC are solver currencies on Solana.
* **Hyperliquid** — Uses bridged USDC (USDC.e) with different decimal precision than native USDC on other chains. Be aware of decimal mismatches when computing amounts.

### Other Limitations

* Calldata execution on destination is not allowed.
