Skip to main content

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 2
3
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
This flow lets applications add bridging and automatic swaps without users stepping through multi-step UIs. Any wallet or frontend can integrate it with one API call.

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 Authorized status. Approve it to enable transaction processing:
In production, autoramps are approved automatically after compliance review.

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.
Once the autoramp reaches 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.