owner.
The request body is a flat object discriminated by type:
'inline_route' | 'deposit_config'
required
Which create payload to send.
inline_route takes source and destination. deposit_config
reuses an existing deposit configuration via deposit_config_id.object
Required when
type is inline_route. Assets the deposit address accepts. Chains must be EVM or
Solana.object
Required when
type is inline_route. Asset delivered to the destination wallet. Identifies
exactly one asset on exactly one chain.string
Required when
type is deposit_config. ID of an existing deposit configuration to attach.Use The hook param for an existing configuration is
createCryptoDepositAccount from useHeadlessCryptoDeposit. The hook signs the dest-owner request with the authenticated user’s signer.depositConfigId.Response
A successful response includes the following fields:object[]
One entry per source route created for the destination wallet.
Get a quote
React and React Native apps can callgetQuote on useHeadlessCryptoDeposit. Quotes do not require a wallet ID or authorization signature. This calls POST /v1/deposit_accounts/crypto/quote.
getQuote accepts an object with the following fields:
object
required
Asset the quote prices as input. Unlike create, both
chain and asset are required.object
required
Asset delivered to the destination wallet.
string
Amount as a decimal string in the source token’s standard unit (for example,
"1.5" for 1.5
USDC). Not the smallest on-chain unit. Omit to quote approximately $50 of the source asset.number
Slippage tolerance in basis points.
getQuote returns a Promise with the following fields:
string
Quoted input as a decimal string in the source token’s standard unit.
string
Estimated output as a decimal string in the destination token’s standard unit.
string
ISO 8601 timestamp when the quote was created.
Error handling
On React and React Native,createCryptoDepositAccount rejects on invalid configuration or failed requests. Common error cases include:
- the user is not authenticated
- the dest-owner request expires before it is sent
- swaps or app-pays gas sponsorship are not enabled for the source chain
- the route is unsupported
getQuote rejects when the route is unsupported or source and destination are not both mainnet or both testnet.
Your app should wrap calls in try/catch and show clear UI feedback.
Complete example
Next steps
Deposit modal
useDepositFunds for the prebuilt deposit UISetup
Enable swaps and app-pays gas sponsorship

