Skip to main content
A Smart Deposit Address (SDA) is a deposit address you generate for each end customer. When the customer sends a supported token to it, on any of its enabled chains, Rhino.fi detects the deposit, routes it as needed (bridging, swapping and, where configured, running an onchain action on settlement), runs compliance screening, and settles the funds to the configured destination address. For examples of how clients use SDAs, see 5 ways to use Smart Deposit Addresses.
For initial testing, projects start with a limit of 500 SDAs in total and 50 new SDAs per hour. Subscription accounts have production limits that depend on their tier. See Limits and contact your account manager before launch.

How it works

1

Check where SDAs are available

Find the chains and tokens you can accept, and their deposit limits.
2

Create an address for each customer

Choose the deposit chains, the destination chain and address, and the token to settle in. One API call returns the address. On EVM chains, one address works on every EVM chain you list. Non-EVM chains, such as Solana or Tron, are also supported, each with its own address.
3

Show the address to your customer

You can also show the supported tokens and the minimum and maximum deposit amounts.
4

Your customer sends funds

Your customer, or your platform after consolidating customer funds, sends a supported token to the address.
5

Rhino.fi settles each deposit

Funds arrive at your destination in the token you configured. You receive webhooks at each stage. Afterwards, Rhino.fi periodically sweeps the address to consolidate balances. You don’t need to do anything.
All examples use the rhinoFetch helper from Authentication. All SDA endpoints require authentication.

1. Check where SDAs are available

See Supported chains and tokens for the full list. In code, the configs endpoint flags each chain that supports SDAs with enabledDepositAddress:
To see which tokens are accepted between a deposit chain and your destination, and their limits:
See Supported tokens for an SDA for the response format.

2. Create an address

Create addresses as you need them, for example when a customer first opens your deposit screen, rather than in bulk. See best practices for operating SDAs.
The response is an array with one entry for each deposit chain:
depositAddress is the address to show your customer. When you list several EVM chains, the address is the same on every one.
List every EVM chain that supports SDAs, even ones you do not advertise. If a customer sends funds on the wrong EVM network, Rhino.fi still detects and settles them, and no manual recovery is needed. See best practices for operating SDAs.

Request fields

The full schema and error list are in the API reference.

Deposits that are not processed

Rhino.fi only processes deposits that meet all of these conditions:
  • The token is in supportedTokens for that chain.
  • The amount is between minDepositLimitUsd and maxDepositLimitUsd.
  • The deposit passes AML screening. For custom screening rules and real-time AML alerts, see Enhanced Compliance & Risk Management.
  • For native tokens such as ETH, the deposit is sent as a direct transfer. Internal transfers, where a smart contract sends the funds (for example a smart wallet, or an exchange that batches withdrawals), are only supported on Ethereum, Base and Optimism. On other chains, such as Arbitrum, Rhino.fi does not detect them, so no webhook is sent.
You can show these conditions to your customer next to the address, so they know which deposits will be processed. Deposits slightly outside the limits may still be processed, to allow for price movement, but do not rely on this. If liquidity on a route is temporarily insufficient, the deposit is retried until it settles or is refunded. Deposits that are not processed trigger a DEPOSIT_ADDRESS_BRIDGE_REJECTED webhook. Contact your Rhino.fi account manager to arrange a refund.

Settle in a different token

With tokenOut set, every deposit is settled in that token, swapped where needed. It can be any token supported on the destination chain. For example, USDT deposits can be settled as USDC. If you don’t set tokenOut, each deposit settles in the token that was deposited. Bitcoin is the exception: BTC deposits settle as WBTC by default. See Interacting with Bitcoin. With the 1:1 Stablecoin Settlement extension, USDC and USDT conversions run at a guaranteed 1:1 rate, with no slippage or market exposure.

Reuse addresses

SDAs are reusable. Rhino.fi monitors each address for seven years, and it can receive any number of deposits in that time. After seven years the address is no longer monitored, unless the period is extended. Contact your account manager if you need longer. With the default reusePolicy: "reuse-existing", a create request returns your existing address when all of the following fields match a previous request: depositChain, destinationChain, destinationAddress, addressNote, tokenOut, postBridgeData, webhookUrl and refundAddress. Only addresses created by your project are considered. This makes the create call safe to retry. If several customers settle to the same destination address, put each customer’s ID in addressNote. Otherwise, with reuse-existing, they would all receive the same address. Use reusePolicy: "create-new" only when you need a fresh address every time.

Refunds

Deposits that can’t be processed, such as an unsupported token or a deposit on an unsupported chain, are refunded by your account manager, who returns the funds to a verified address. You can set a refundAddress when you create an address. It doesn’t trigger a refund on its own. If set, it is offered as the default destination when a refund for that address is processed, instead of the sending address. Only set it if the depositor controls that address. Many customers deposit from exchanges and other pooled wallets, where funds sent back may never reach them.

3. Monitor an address

Check its status

The response has the same shape as the create response. destinationAddress is included only when the JWT comes from a secret key.

List its deposits

Requires a secret key.

Track deposits from a browser or app

Your frontend should not use a secret key, so it cannot call the history endpoint. Use the public status endpoint with a JWT from a public key instead. It requires the address’s destinationAddress, which your frontend already has from the create response. The request is rejected if the value does not match.
lastBridges contains the most recent deposit, whether accepted or rejected. An empty array means no deposit has been detected yet.

Find your addresses

Search your project’s addresses. All filters are optional. destinationAddress also requires destinationChain.
From 9 November 2026, this endpoint requires a JWT created from a secret key. Call it from your backend.

Pause or update an address

You can pause, resume or update an address with the pause, unpause or update endpoint. Pausing is useful when you offboard a customer or want to stop accepting deposits on an address. A paused address is not monitored, so any funds sent to it get stuck and are not processed.

Fees

For subscription clients, most SDA fees are covered by the subscription. Many of the fields in the quote response’s fees object relate to the legacy pricing structure, so read them with that in mind. Tron, Solana and Bitcoin have additional onchain costs (see Tron, Solana and Bitcoin Access). On a subscription, you choose who pays them:
  • Paid by you. The cost appears in the sponsored section of the response and is invoiced in your month-end accounting.
  • Paid by your end customer. The cost appears in the non-sponsored section and is deducted from the amount settled on the destination chain.

Price a deposit

To show the fees for a deposit before your customer sends it, request a quote with isSda: "true". Use the SDA as the depositor and your destination address as the recipient:
This quote is for display only. Don’t commit it: Rhino.fi creates the transfer automatically when the deposit arrives. See the quote API reference for the full response. To set more granular fee rules or change an existing fee configuration, see Advanced Fee & Limit Management.

Next steps

Track transactions

Receive webhooks for every deposit and reconcile settled funds.

SDA Widget

Embed a ready-made SDA deposit interface instead of building your own.