Skip to main content

Use Case

Enable users to offramp stablecoins into fiat across various chains. This works via setting up an autoramp rule on Iron that offramps stablecoins that are received into that address to your bank account. Examples:
  • Setup wallet address 1 which turns stablecoins (e.g. USDC) into fiat and sends them to your bank account at Deutsche Bank
  • Setup wallet address 2 which turns stablecoins (e.g. USDC) into fiat and sends them to your personal bank account at Revolut

Example Flow

1
Max sets up a wallet address 1 owned by Iron
2
Now an autoramp is activated which turns USDC to EUR and is tied to his bank account
3
Max sends 1000 USDC to wallet address 1
4
As soon as funds hit this address, Iron turns them into EUR and pays them to Max’s bank account
5
Max can transfer at any time. This wallet address 1 is persistent.
6
Non-supported assets sent to wallet address 1 will be returned to sender

Prerequisites

Before creating an offramp autoramp, you must:
  1. Register a bank account (fiat address) for your customer. The recipient_account parameter in the autoramp creation request references the bank account details you registered.
  2. Register your customer’s wallet addresses via the Crypto Addresses API. While the offramp deposit address is owned by Iron, the Travel Rule requires that all wallets interacting with Iron are linked. If your customer sends funds from an unregistered wallet, the transaction may be delayed for manual review.
The IBAN or account details you provide in recipient_account must match a bank account you’ve already registered via the Fiat Addresses API. Iron uses this to ensure secure and compliant payouts.
Steps:
  1. Register a bank account for your customer
  2. Register the customer’s wallet addresses for Travel Rule compliance
  3. Create an offramp autoramp using the registered bank account details

Implementation

Follow these example steps to create an autoramp logic for USDC to EUR on Ethereum.

Request

curl -X POST "https://api.sandbox.iron.xyz/api/autoramps" \
  -H "Content-Type: application/json; charset=utf-8" \
  -H "IDEMPOTENCY-KEY: <your-idempotency-key>" \
  -H "X-API-Key: <your-api-key>" \
  -d '{
    "source_currencies": [{
      "type": "Crypto",
      "token": "USDC",
      "blockchain": "Ethereum"
    }],
    "destination_currency": {
      "type": "Fiat",
      "code": "EUR"
    },
    "recipient_account": {
      "type": "Fiat",
      "iban": "DE89370400440532013000"
    },
    "customer_id": "123e4567-e89b-12d3-a456-426614174000",
    "source_is_third_party": false
  }'

Response

{
  "id": "9a7b6c5d-e3f1-4g2h-8i7j-6k5l4m3n2o1p",
  "status": "Authorized",
  "deposit_rails": [
    {
      "type": "Wallet",
      "id": "xyz98765-lkjh-4321-mnop-0987654321ab",
      "blockchain": "Ethereum",
      "address": "0xYourEthereumAddress",
      "currency": {
        "type": "Crypto",
        "token": "USDC",
        "blockchain": "Ethereum"
      }
    }
  ],
  "created_at": "2025-01-20T13:45:23Z"
}
The deposit_rails array contains the payment details. The legacy deposit_account field is deprecated.
Now you are ready to show the user their custom wallet address which will be auto-connected to this offramp rule. Please also show supported assets for this wallet address (e.g. EURC, USDC). Non-supported assets will be returned to sender.