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
Prerequisites
Every step must complete before moving to the next. Sandbox-only steps are marked.Customer is Active
Your customer must have
Active status. This means they have completed identification (KYC/KYB) and signed all required documents.Register a bank account
Register the destination bank account via
POST /addresses/fiat. See Fiat Addresses. The account starts in RegistrationPending status.Sandbox: approve the fiat address
In Sandbox, the fiat address stays in In production, registration is handled automatically.
RegistrationPending until you manually advance it:Register crypto addresses
Register your customer’s wallet addresses via Crypto Addresses for Travel Rule compliance. Funds from unregistered wallets may be delayed for manual review.
(Optional) Get a quote
If you need a locked rate, request a quote via
GET /autoramps/quote. See Quotes. Otherwise, the autoramp executes at the current mid-market rate.Create the offramp autoramp
Create the autoramp via
POST /autoramps using the registered bank account’s account_identifier.The
account_identifier 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.Implementation
Create an autoramp that converts USDC on Ethereum to EUR and pays out to a SEPA bank account.POST /autoramps
Request fields
| Field | Required | Description |
|---|---|---|
source_currencies | Yes | Array of input currencies (Crypto or Fiat objects) |
destination_currency | Yes | Output currency (Crypto or Fiat object) |
recipient_account | Yes | Destination account. For fiat: { "type": "Fiat", "account_identifier": { ... } }. For crypto: { "type": "Crypto", "chain": "...", "address": "..." } |
customer_id | Yes | The customer’s UUID |
source_is_third_party | No | Whether the source allows third-party payments |
sepa_payment_reference | No | Reference for outgoing SEPA transfers (max 140 chars) |
ach_payment_reference | No | Reference for outgoing ACH transfers (max 10 chars) |
batch_payout | No | If true, payouts are batched daily instead of sent individually. Fiat destinations only. |
account_identifier inside recipient_account uses the same payment rail discriminator as Fiat Addresses: SEPA (requires iban), ACH / Wire / RTP (require routing_number + account_number), SWIFT (requires bic + account_number), CHAPS / FPS (require sort_code + account_number).
Request
Response
The
deposit_rails array contains the payment details. The legacy deposit_account field is deprecated.
