Skip to main content

Autoramp Quote

The Autoramp Quote lets you retrieve a binding rate quote between two assets or currencies. This quote guarantees a specific rate for a defined period, allowing your application to offer predictable pricing and exact-out behaviour for payments. Once a quote is obtained, you can use it to create an Autoramp, which executes conversions using that locked rate until the quote expires.
Without a quote, your conversions execute at the current mid-market rate, which can fluctuate throughout the day. With a quote, the rate is locked, ensuring consistent pricing for your users.

Flow Overview

You must follow this order when integrating:
1
Create a Quote using GET/autoramps/quote to request a signed quote from Iron’s system.
2
Create an Autoramp using POST/autoramps which includes the signed quote payload from the previous step.

Parameters:

Rate lock duration
  • Time window where the quoted rate plus fee is fully guaranteed
  • Funds inside this window execute at the quoted price
Validity period
  • Total time the autoramp remains active
  • Funds after this period are always refunded
Return policy
  • Validity period equals rate lock duration
  • Any funds after the lock duration are refunded
Slippage policy
  • Validity period can be longer than the lock duration
  • Funds after the lock duration execute only if market rate is within the slippage tolerance
Example one, return policy
  • Quote accepted at 100 USD for 0.0025 BTC
  • Rate lock duration ten minutes, validity period ten minutes
  • Funds arrive after twelve minutes
  • Result: funds arrive after both windows, so they are refunded
Example two, slippage policy
  • Quote accepted at 100 USD for 0.0025 BTC with five bips slippage allowed
  • Rate lock duration ten minutes, validity period one hour
  • Funds arrive at twenty minutes
  • Market rate is within five bips of the quote
  • Result: trade executes at market rate
Example three, slippage policy
  • Same setup as example two
  • Funds arrive at twenty minutes
  • Market rate is outside the slippage tolerance
  • Result: transfer cannot execute and must be refunded or requoted

Step 1: Create a Quote

A customer or your system can request a rate quote for a specific currency pair or asset conversion. This quote defines the rate and validity period for the transaction. You can retrieve a quote using the API, as shown in the example below. Retrieves a signed quote from Iron’s backend that defines:
  • Conversion rate
  • Lock duration
  • Validity period
  • Fees and associated details
This quote must be passed unchanged when creating an Autoramp.

Request

curl -X GET "http://api.sandbox.iron.xyz/api/autoramps/quote?customer_id=<your-customer-id>&source_currency_code=USDC&source_currency_chain=Ethereum&destination_currency_code=EUR&recipient_account=DE30100701240163238900&amount_out=100&rate_lock_duration_minutes=10&rate_expiry_policy=Return&expiry_in_hours=1" \
 -H "Accept: application/json; charset=utf-8" \
 -H "X-API-Key: <your-api-key>" \

Response

Returned Quote is a signed payload as shown in the following response sample.
{
  "amount_in": {
    "amount": "111.19863",
    "currency": {
      "blockchain": "Ethereum",
      "token": "USDC",
      "type": "Crypto"
    }
  },
  "amount_out": {
    "amount": "100",
    "currency": {
      "code": "EUR",
      "type": "Fiat"
    }
  },
  "customer_id": "<your-customer-id>",
  "destination_currency": {
    "code": "EUR",
    "type": "Fiat"
  },
  "fee": {
    "iron_fee": {
      "amount": "0.326433577532308069664907935",
      "currency": {
        "blockchain": "Ethereum",
        "token": "USDC",
        "type": "Crypto"
      }
    },
    "network_fees": [
      {
        "amount": "1.7345702248379309244896514326",
        "currency": {
          "blockchain": "Ethereum",
          "token": "USDC",
          "type": "Crypto"
        },
        "type": "EthereumGas"
      },
      {
        "amount": "0.326433577532308069664907935",
        "currency": {
          "blockchain": "Ethereum",
          "token": "USDC",
          "type": "Crypto"
        },
        "type": "SepaOut"
      }
    ],
    "partner_fee": {
      "amount": "0",
      "currency": {
        "blockchain": "Ethereum",
        "token": "USDC",
        "type": "Crypto"
      }
    },
    "total_fee": {
      "amount": "2.3874373799025470638194673027",
      "currency": {
        "blockchain": "Ethereum",
        "token": "USDC",
        "type": "Crypto"
      }
    }
  },
  "fee_settlement": "deductedImmediately",
  "partner_fee_settlement": "deductedImmediately",
  "quote_id": "e8cd73a4-54cc-4a34-916d-238c5ce5f898",
  "rate": "0.919023105",
  "rate_expiry_policy": "Return",
  "rate_lock_valid_until": "2025-03-14T11:37:24.250798+00:00",
  "recipient_account": {
    "iban": "DEIBANADDRESSEXAMPLE",
    "type": "Iban"
  },
  "signature": "36665918454471c078724046bcb82698eac2fb6f5f91c58a0f1a3923c5d95a28",
  "slippage_tolerance_in_bips": null,
  "source_currency": {
    "blockchain": "Ethereum",
    "token": "USDC",
    "type": "Crypto"
  },
  "valid_until": "2025-03-14T11:37:24.250798+00:00"
}

Query Parameters

ParameterTypeRequiredDescription
customer_idstringUnique identifier for your customer in your system. Used for tracking and linking the quote to a user.
source_currency_codestringCurrency or token being sent (e.g. USDC or USD).
source_currency_chainstringBlockchain or network for the source currency (e.g. Ethereum, Polygon).
destination_currency_codestringCurrency or token being received (e.g. EUR, GBP).
recipient_accountstringRecipient’s destination account or wallet. For fiat currencies, use an IBAN; for crypto, use a wallet address.
amount_outnumberDesired output amount in the destination currency. If you prefer to specify the input instead, use amount_in. Only one may be set.
amount_innumberDesired input amount in the source currency. Used instead of amount_out when performing exact-in quotes.
rate_lock_duration_minutesintegerDuration (in minutes) that the rate is locked for. Max: 20 minutes.
rate_expiry_policystringDefines what happens when the rate lock expires. Options: • Return - refund funds if late • ProcessWithSlippage - process at market rate with slippage tolerance
slippage_tolerance_in_bipsintegerOnly required when using ProcessWithSlippage. Defines allowable deviation from quoted rate (1 bip = 0.01%).
expiry_in_hoursintegerDuration (in hours) that the entire quote is valid for. Max: 24 hours. Once expired, the quote cannot be used.
Notes
  • The quote is digitally signed and must be passed verbatim into the POST /autoramps call.
  • Any modification (e.g., changing values or omitting fields) will cause the request to fail.
  • The rate lock and validity times are expressed in ISO 8601 UTC format.

Step 2: Confirm the Quote and Create an Autoramp

Once the signed quote is retrieved, you can confirm it and create an Autoramp by submitting the signed quote payload to the Create Autoramp API (POST /autoramps). This action finalizes the quote and initiates an Autoramp that follows the same implementation flow. The Autoramp will process all deposits at the locked-in rate defined in the quote until the quote expires.
The quote payload must be submitted exactly as received from the GET /autoramps/quote response. Any modification to the signed payload (such as altered fields or omitted parameters) will cause the request to fail.

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 '{
  "amount_in": {
    "amount": "111.19863",
    "currency": {
      "blockchain": "Ethereum",
      "token": "USDC",
      "type": "Crypto"
    }
  },
  "amount_out": {
    "amount": "100",
    "currency": {
      "code": "EUR",
      "type": "Fiat"
    }
  },
  "customer_id": "<your-customer-id>",
  "destination_currency": {
    "code": "EUR",
    "type": "Fiat"
  },
  "fee": {
    "iron_fee": {
      "amount": "0.326433577532308069664907935",
      "currency": {
        "blockchain": "Ethereum",
        "token": "USDC",
        "type": "Crypto"
      }
    },
    "network_fees": [
      {
        "amount": "1.7345702248379309244896514326",
        "currency": {
          "blockchain": "Ethereum",
          "token": "USDC",
          "type": "Crypto"
        },
        "type": "EthereumGas"
      },
      {
        "amount": "0.326433577532308069664907935",
        "currency": {
          "blockchain": "Ethereum",
          "token": "USDC",
          "type": "Crypto"
        },
        "type": "SepaOut"
      }
    ],
    "partner_fee": {
      "amount": "0",
      "currency": {
        "blockchain": "Ethereum",
        "token": "USDC",
        "type": "Crypto"
      }
    },
    "total_fee": {
      "amount": "2.3874373799025470638194673027",
      "currency": {
        "blockchain": "Ethereum",
        "token": "USDC",
        "type": "Crypto"
      }
    }
  },
  "fee_settlement": "deductedImmediately",
  "partner_fee_settlement": "deductedImmediately",
  "quote_id": "e8cd73a4-54cc-4a34-916d-238c5ce5f898",
  "rate": "0.919023105",
  "rate_expiry_policy": "Return",
  "rate_lock_valid_until": "2025-03-14T11:37:24.250798+00:00",
  "recipient_account": {
    "iban": "DEIBANADDRESSEXAMPLE",
    "type": "Iban"
  },
  "signature": "36665918454471c078724046bcb82698eac2fb6f5f91c58a0f1a3923c5d95a28",
  "slippage_tolerance_in_bips": null,
  "source_currency": {
    "blockchain": "Ethereum",
    "token": "USDC",
    "type": "Crypto"
  },
  "valid_until": "2025-03-14T11:37:24.250798+00:00"
}'

Response

{
  "id": "f8f9a8c7-d8b1-4f1a-8f15-7e6c8a1a8e50",
  "status": "Created",
  "deposit_account": {
    "type": "Crypto",
    "chain": "0xEthereumDepositAddress"
  },
  "created_at": "2025-01-20T12:34:56Z",
  "source": "Quote",
  "quote": {
    "amount_in": {
      "amount": "111.19863",
      "currency": {
        "blockchain": "Ethereum",
        "token": "USDC",
        "type": "Crypto"
      }
    },
    "amount_out": {
      "amount": "100",
      "currency": {
        "code": "EUR",
        "type": "Fiat"
      }
    },
    "customer_id": "<your-customer-id>",
    "destination_currency": {
      "code": "EUR",
      "type": "Fiat"
    },
    "fee": {
      "iron_fee": {
        "amount": "0.326433577532308069664907935",
        "currency": {
          "blockchain": "Ethereum",
          "token": "USDC",
          "type": "Crypto"
        }
      },
      "network_fees": [
        {
          "amount": "1.7345702248379309244896514326",
          "currency": {
            "blockchain": "Ethereum",
            "token": "USDC",
            "type": "Crypto"
          },
          "type": "EthereumGas"
        },
        {
          "amount": "0.326433577532308069664907935",
          "currency": {
            "blockchain": "Ethereum",
            "token": "USDC",
            "type": "Crypto"
          },
          "type": "SepaOut"
        }
      ],
      "partner_fee": {
        "amount": "0",
        "currency": {
          "blockchain": "Ethereum",
          "token": "USDC",
          "type": "Crypto"
        }
      },
      "total_fee": {
        "amount": "2.3874373799025470638194673027",
        "currency": {
          "blockchain": "Ethereum",
          "token": "USDC",
          "type": "Crypto"
        }
      }
    },
    "fee_settlement": "deductedImmediately",
    "partner_fee_settlement": "deductedImmediately",
    "quote_id": "e8cd73a4-54cc-4a34-916d-238c5ce5f898",
    "rate": "0.919023105",
    "rate_expiry_policy": "Return",
    "rate_lock_valid_until": "2025-03-14T11:37:24.250798+00:00",
    "recipient_account": {
      "iban": "DEIBANADDRESSEXAMPLE",
      "type": "Iban"
    },
    "slippage_tolerance_in_bips": null,
    "source_currency": {
      "blockchain": "Ethereum",
      "token": "USDC",
      "type": "Crypto"
    },
    "valid_until": "2025-03-14T11:37:24.250798+00:00"
  }
}

Query Parameters

ParameterTypeRequiredDescription
rate_expiry_policystringDetermines what happens when a rate expires: • Return - Refunds the user • ProcessWithSlippage - Executes at a market rate within the provided slippage tolerance.
slippage_tolerance_in_bipsintegerDefines allowable deviation from quoted rate (1 bip = 0.01%). Required when ProcessWithSlippage is set.
typestringEither exact_in (fixed input) or exact_out (fixed output). Only one can be used.
valid_untiltimestampISO 8601 timestamp when the quote expires. Max 24 hours from creation.
rate_lock_valid_untilintegerLock period in minutes. Defines how long the rate is guaranteed before expiry (max 20 minutes for stablecoin pairs).
Notes
  • The quote_id and signature pair authenticate the quote.
  • The Autoramp inherits all rate and validity parameters from the quote.
  • If deposits don’t match the quoted amount_in, they will be refunded.
  • Once the valid_until timestamp passes, the Autoramp automatically expires.
  • You can confirm a quote through the API as shown in the example below.

Developer Experience Tips

  • Always check valid_until before submitting the quote - expired quotes will return 400 Bad Request.
  • Use idempotency keys for reliable POST API Endpoint calls when confirming quotes.
  • If testing in sandbox, rates are simulated but signatures behave identically to production.