Default limits apply to Smart Deposit Addresses for initial testing purposes:
- 500 total SDAs
- 50 SDAs generated per hour
Introduction
Smart Deposit Addresses are the core deposit primitive in the Rhino.fi Stablecoin Activation Stack. Generate one address per user; Rhino.fi handles chain detection, routing, settlement, and compliance automatically. This allows customers to easily send any supported asset to the Smart Deposit Address, without worrying about needing a specific chain-token pairing, but allows clients to receive the funds in their required chain-token pairing, and take additional activation steps to ensure that funds land in a usable balance.How it works
1
Authentication
Get a JWT to authenticate your requests.
3
Generate address
Call our API to generate a Smart Deposit Address which will allow funds to be received across multiple chains. We strongly recommend generating an SDA on all available EVM chains to ensure that funds accidentally sent by customers to the wrong chain and automatically detected. More best practices can be found here.
4
Transfer funds
Any supported assets can then be sent to the Smart Deposit Address.
5
Receive funds
Rhino.fi monitors the Smart Deposit Addresses to detect when funds are received and will then take the necessary bridging and swapping actions to ensure funds land in an activated state on the specified destination.
Fees
Your Rhino.fi PAYG/Subscription covers use of both the Rhino.fi Bridge as well as Smart Deposit Addresses. Therefore your Flow Credit allocation is across both. To understand how many Flow Credits a transaction into a Smart Deposit Address will consume, thePOST/bridge/quote/bridge-swap/user endpoint should be called with the isSda parameter set as true. The response will also provide a fee breakdown showing what additional fees are charged to the client (such as onchain gas fee charges) or are being passed onto the end customer. Where a Client Surcharge is being applied, this will be shown in the fee amount and settled up to the client within end of month invoicing.
Learn more about Rhino.fi’s fee structure here.
N.B for clients on the legacy pricing structure, any fees will be deducted from the amount settled on the destination chain.
Advanced Fee and Limit ManagementRhino.fi has the Advanced Fee and Limit Management extension which is optimal for any clients who are looking to set up more complex or variable fee structures - beyond passing on a simple Client Surcharge to their end customers. See Advanced Fee & Limit Management for details and please reach out to your Rhino.fi Account Manager or the partnership team to discuss your optimal fee set up: partnerships@rhino.fi.
Smart Deposit Address Expiration
Smart Deposit Addresses are re-usable, meaning they can function as a receive for customer funds repeatedly and Rhino.fi will continue to actively monitor for deposits and process bridging and swapping activity to the destination of choice. Rhino.fi will monitor a Smart Deposit Address for 7 years, and thereafter it switches into an unmonitored state to conserve resources.Supported chains and tokens
Smart Deposit Addresses are enabled across a wide variety of tokens and chains. This is a growing list and based on client demand so please do reach out with any specific token or chain requests. The general bridge config endpoint provides a booleanenabledDepositAddress flag that can be used to find chains that Smart Deposit Addresses are enabled for. Example:
API interactions
The following examples showcase the use of our API to manage Smart Deposit Addresses. All those calls require authentication, see details on this here.Generating a Smart Deposit Address
You can generate a new Smart Deposit Address with the following API call:However, only tokens from the supportedTokens list will be processed. Transfers of tokens that are not in this list will not be processed. Transfers that are smaller than the
minDepositLimitUsd or larger than the maxDepositLimitUsd will not be processed (there is a “grace” window to account for different price sources and price fluctuations). If this happens, funds can be returned through our Account Management team.
Multiple deposit chains
You can provide multiple deposit chains in the request. The API will then generate one Smart Deposit Address that can be used on all the provided chains. This is why the response is also a list - one element for each chain provided. The Smart Deposit Addresses in the individual elements will be identical in this case.Please note that providing multiple deposit chains only works for EVM chains currently. Only then can the same address be used for all of them.
Swaps
When creating a Smart Deposit Address you can also specify atokenOut field. This will cause all withdrawals on the destination chain to be in that token, swapping if needed. This is currently only supported for stablecoins (USDC and USDT). The given tokenOut needs to be a bridgable token on the destination chain, otherwise creation of the SDA will fail.
1:1 Stablecoin Swaps (Extension)If your account has the 1:1 Stablecoin Swaps extension enabled, cross-stable conversions (e.g. USDT deposited → USDC settled) are processed at a guaranteed 1:1 rate. No slippage and no exposure to market price. This applies automatically to any SDA configured with a cross-stable
tokenOut. Contact your account representative to enable this extension.Post Bridge Data
Rhino.fi provides the option to execute contract calls as part of the withdrawal process on the destination chain so that funds can land in a fully activated state. For security reasons, only predefined actions are available. Please contact us with details on your use case if interested.Refund address
Rhino.fi provides the option to pass a refund address when creating a Smart Deposit Address so that, in the case of an unsuccessful transaction, funds can be reverted back to the provided address. However we recommend that any refunds are dealt with on a case by case basis directly with our Account Management team instead, to ensure that customer funds sent from pooled locations; such as a CEX, are able to be handled successfully. We therefore suggest that this field is not used unless you are highly confident that the customer will be able to access the sending address again.Custom data and reusing of addresses
When creating a Smart Deposit Address you can provide aaddressNote field to be stored in our database. This field will be returned from all status endpoints as well.Additionally, a
reusePolicy can be specified when creating a Smart Deposit Address. It can have the following values:
reuse-existing: Reuse an existing Smart Deposit Address if it exists. Only create a new one if no existing address matches the given parameters.create-new: Always create a new Smart Deposit Address.
reusePolicy is specified it defaults to reuse-existing.
To determine if a Smart Deposit Address already exists, the following combination of fields is used:
depositChaindestinationChaindestinationAddressuserId(only Smart Deposit Addresses previously created by you will be considered)addressNoteif providedtokenOutif providedpostBridgeDataif providedwebhookUrlif providedrefundAddressif provided
- Your users have unique destination addresses and you want to show users their previously used Smart Deposit Address.
- You consolidate multiple Smart Deposit Addresses into the same destination address but store a user ID in the
addressNotefield to make sure to only have one address per user.
Checking Smart Deposit Address status
You can also check the current status of a Smart Deposit Address with the following call:Checking Smart Deposit Address history
You can check the history of a Smart Deposit Address with the following call:from and to query parameter with a timestamp in milliseconds. Only a SECRET_ key is allowed to access history.
For the exact response format and more details, see the API Reference.
Checking Smart Deposit Address bridge status with a PUBLIC API key
Generally the above history endpoint can be used to track the bridges through a Smart Deposit Address. However it is not possible to use this in a frontend integration as a SECRET API key would be exposed in an unsafe browser environment.To also track bridges in this case, a public status endpoint exists. However, this endpoint additionally takes a
destinationAddress as query parameter that has to match the requested Smart Deposit Address (this value should still be available in the local state after creating a Smart Deposit Address). If it does not match, the request will be rejected.Example:
lastBridges field. If this array is empty it means that no transfer has been picked up yet.Please note that this array will currently only contain the last event. In the future this endpoint will be expanded with the option to return all bridges after a certain timestamp.
Search your addresses
Rhino.fi provides an endpoint that allows you to search for your Smart Deposit Addresses with some optional filters. This endpoint is authenticated and will only return the addresses associated with your user. The result is paginated and you can set thepageToken field to get to the next page. If not provided, it will return the first page of results and a nextTokenPage value that can be used to query for the next page.
The following filters are available (all are optional and can be combined):
addressNotedepositChaindestinationChaindestinationAddress: requiresdestinationChainto be set as well