Skip to main content
Every depositing user needs a registered smart account. You can let the service create one (managed) or bring your own (user-owned).

Choose an account type

Managed accounts are recommended for most integrations — simpler setup, no SDK dependency for registration. User-owned accounts are for cases where deposits should go to an existing smart account the user already controls.
All examples below use these shared constants:

Register an account

The service creates a Nexus smart account deterministically from your API key and a salt you provide. The same API key + salt always produces the same deposit address, so you can safely re-register if needed.
1

Pick a salt

Use a stable, unique identifier per user — for example, an internal user ID. Hash it for privacy:
2

Call /register-managed

The response includes two deposit addresses:Both addresses route to the same target chain and token.
3

Verify registration

sources lists every chain the account can receive deposits from, each with its deposit address — EVM chains share the evmDepositAddress, Solana carries the solanaDepositAddress.

Optional: token routing

By default, all deposits are bridged to the single target token you set at registration. Token routing rules let you select the output token based on what the user deposited. When registering an account, the target object accepts two optional fields: Each rule has: A rule’s match must specify at least one of chain, token, or symbol. You can combine them for more specific matches.

Rule priority

When multiple rules match a deposit, the most specific rule wins. Declaration order only matters when two rules share the same specificity.

Example: USDC and ETH passthrough

Route USDC deposits to USDC.e and ETH deposits to WETH on Optimism, while defaulting other tokens to a fallback:
With this configuration:
  • User deposits USDC (from any chain) → receives USDC.e on Optimism
  • User deposits ETH (from any chain) → receives WETH on Optimism
  • User deposits any other token → receives target.token (default fallback)

Example: chain-specific overrides

Combine chain and symbol for chain-specific routing. The chain-specific rule takes priority because chain + symbol outranks symbol alone.

Example: reject unknown tokens

Only accept specific tokens and reject everything else:
Deposits that don’t match USDC or ETH are ignored (not bridged).