Use Case
Enable users to swap token 1 into token 2 across various chains. Examples:- Setup wallet address 1 which turns incoming USDC on Solana into EURC on Base
- Setup wallet address 2 which turns incoming SOL on Solana into USDC on Arbitrum
Example Flow
1
User sets up a wallet address 1 on Solana owned by Iron
2
Now an
autoramp is activatedi. which turns all incoming USDC on wallet address 1 into EURC on Baseii. and delivers those into his connected wallet in wallet address 23
Now user sends 1000 USDC to wallet address 1
4
As soon as funds hit this address, Iron turns them into EURC on Base and delivers them to wallet address 2
Prerequisites
Every step must complete before moving to the next. Sandbox-only steps are marked.1
Customer is Active
Your customer must have
Active status. This means they have completed identification (KYC/KYB) and signed all required documents.2
Register the recipient wallet address
Register the destination wallet via Crypto Addresses for Travel Rule compliance. Self-hosted wallets require a signed proof-of-ownership message; hosted wallets require the custodian’s DID.The wallet you pass in
recipient_account must match an address you have already registered for this customer.3
(Optional) Get a quote
If you need a locked rate (and lower-bps fee profiles), request a quote via
GET /api/autoramps/quote. See Quotes. Otherwise, the swap executes at the current mid-market rate.Standalone swap autoramps cannot attach quotes later. If you anticipate needing locked rates over time, start with a quote-source autoramp.4
Create the swap autoramp
Create the autoramp via
POST /api/autoramps using the registered wallet address as the recipient. See the Implementation example below.5
Sandbox: approve the autoramp
In Sandbox, the autoramp starts in In production, autoramps are approved automatically after compliance review.
Authorized status. Approve it to enable transaction processing:Implementation
Follow these example steps to create an autoramp logic for turning USDC on Solana to EURC on Base.Request
POST /api/autoramps requires an IDEMPOTENCY-KEY header. Use a unique UUID per request to prevent duplicate autoramps.The request uses
chain in recipient_account, but the response returns the same value as blockchain in recipient. Both are correct: map between them when comparing the request and response.Response
deposit_rails is empty at Authorized. Poll GET /api/autoramps/{id} or subscribe to webhooks until status = Approved before sharing deposit details with end users. See Autoramp Status.Approved, the response includes the deposit wallet address under deposit_rails. Share it with the user along with the supported assets for that wallet (e.g. EURC, USDC). Non-supported assets sent to the wallet will be returned to sender.
Shared EVM deposit address. When the source is on an EVM chain, the
deposit_rails address is valid across all supported EVM chains (Ethereum, Polygon, Arbitrum, Base, Optimism, and so on) for this autoramp. The user can send the supported stablecoin from any of those chains to the same address — Iron detects and converts it regardless of which EVM chain it arrived on. Non-EVM chains such as Solana receive their own distinct deposit address.
