Available in plans >= small

Convert Exchange Rates

On this page, we’ll dive into the convert exchange rates endpoint you can use to directly convert a value to another currency's value.


GET/v3/convert

Convert Exchange Rates

Returns calculated values for today or any given date for all currencies.

Required attributes

  • Name
    value
    Type
    number
    Description

    The value you want to convert. Must be greater than 0 Or send values instead, see several amounts

Optional attributes

  • Name
    values
    Type
    string
    Description

    Up to 100 comma separated values to convert in one request (9.99,24.50,100), each greater than 0, see several amounts Not together with value

  • Name
    date
    Type
    string
    Description

    Date to convert against historical rates (format: 2021-12-31) Must be at least one day in the past; omit for the latest rates

  • Name
    datetime
    Type
    string
    Description

    Convert at this moment (ISO8601 Datetime, e.g. 2026-09-30T10:07:30Z), see conversions at a moment Needs a plan with intraday updates; not together with date

  • Name
    base_currency
    Type
    string
    Description

    The base currency to which all results are behaving relative to By default all values are based on USD

  • Name
    currencies
    Type
    string
    Description

    A list of comma separated currency codes which you want to get (EUR,USD,CAD) By default all available currencies will be shown

  • Name
    type
    Type
    string
    Description

    The type of currency you want to get (fiat, metal or crypto) By default all types will be shown

  • Name
    round_step
    Type
    number
    Description

    Adds rounded: every converted value rounded to a multiple of this step (e.g. 0.05, 1, 10), see shop prices Not together with price_ending

  • Name
    price_ending
    Type
    number
    Description

    Adds rounded: every converted value rounded to a price with this ending (0 up to below 1, e.g. 0.99), see shop prices

  • Name
    round_mode
    Type
    string
    Description

    How round_step and price_ending round: nearest (default), up or down

  • Name
    locale
    Type
    string
    Description

    Adds formatted: every converted value as text in this locale (e.g. de_AT, en-US), see shop prices

  • Name
    shape
    Type
    string
    Description

    default or compact. With compact every converted value is a plain number ("EUR": 11.021472) instead of a code/value object Not together with round_step, price_ending or locale

  • Name
    precision
    Type
    integer
    Description

    Round every converted value to this many decimals (0 to 10), e.g. 2 for amounts of money

  • Name
    format
    Type
    string
    Description

    json (default), csv or xlsx. The CSV has one row per currency: datetime,base_currency,currency,value With values an amount column follows base_currency; rounding and locale add the columns rounded and formatted xlsx gives the same table as an Excel workbook, see Excel downloads

Response Properties

The response structure is equal to the response from the /latest endpoint, but every value is already multiplied by the value you sent — no manual math needed. meta also holds the value you sent and, when you sent one, the date.

Amounts, rounded to cents

curl -G https://api.currencyapi.com/v3/convert \
    -d value=12 \
    -d currencies=EUR,GBP \
    -d shape=compact \
    -d precision=2 \
    -H "apikey: YOUR-API-KEY"

Response

{
    "meta": {
        "last_updated_at": "2023-06-23T10:15:59Z",
        "base_currency": "USD",
        "value": 12
    },
    "data": {
        "EUR": 11.02,
        "GBP": 9.43
    }
}

Several amounts in one request

Send values instead of value to convert up to 100 amounts at once, for example every price of a product list. data is then a list with one entry per amount, in the order you sent them: the value and its converted currencies. meta.values replaces meta.value. The request costs one request of your quota, however many amounts it holds; values[]=9.99&values[]=24.50 is accepted as well.

Two amounts

curl -G https://api.currencyapi.com/v3/convert \
    -d values=10,2.5 \
    -d currencies=EUR \
    -d shape=compact \
    -H "apikey: YOUR-API-KEY"

Response

{
    "meta": {
        "last_updated_at": "2026-09-29T23:59:59Z",
        "base_currency": "USD",
        "values": [10, 2.5]
    },
    "data": [
        {
            "value": 10,
            "currencies": {
                "EUR": 9
            }
        },
        {
            "value": 2.5,
            "currencies": {
                "EUR": 2.25
            }
        }
    ]
}

With format=csv every row carries its amount after base_currency:

Response (text/csv)

datetime,base_currency,amount,currency,value
2026-09-29T23:59:59Z,USD,10,EUR,9
2026-09-29T23:59:59Z,USD,2.5,EUR,2.25

Conversions at a moment of the day

With datetime the value is converted at the rate of the minute, quarter hour or hour the moment falls in, exactly as /rate finds it: minutes and quarter hours for the last 7 days, hours for the last 3 months, at the finest interval your plan updates at. meta.last_updated_at tells you which point was used. Moments further back return a 422; use date for those days instead.

100 USD at 10:07:30

curl -G https://api.currencyapi.com/v3/convert \
    -d value=100 \
    -d currencies=EUR \
    -d datetime=2026-09-30T10:07:30Z \
    -H "apikey: YOUR-API-KEY"

Response (plan with minute updates)

{
    "meta": {
        "last_updated_at": "2026-09-30T10:07:59Z",
        "base_currency": "USD",
        "value": 100
    },
    "data": {
        "EUR": {
            "code": "EUR",
            "value": 95
        }
    }
}

Shop prices: rounding and formatting

Converted prices rarely look like prices. Two options turn them into amounts you can show in a shop, while value always stays the exact conversion:

  • Name
    round_step
    Type
    Description

    Adds rounded, the value rounded to a multiple of the step: 0.05 for 5-cent steps, 1 for whole amounts, 10 for tens. Must be greater than 0

  • Name
    price_ending
    Type
    Description

    Adds rounded, the value rounded to a price with this ending: 0.99 turns 10.97 into 10.99, 0.95 gives 4.95, 9.95, ... Must be at least 0 and below 1. Not together with round_step

  • Name
    round_mode
    Type
    Description

    nearest (default) picks the closest candidate, up never goes below the exact value, down never above it

  • Name
    locale
    Type
    Description

    Adds formatted, the amount as text in an ICU locale such as de_AT, en-US or fr_CH, with the currency’s symbol and its own decimal places (at most 8). With rounding, the rounded price is formatted; a whole-number round_step shows no decimals. An unknown locale returns a 422

Rounding and locale work with the default shape and with CSV, which then gets the columns rounded and formatted (in that order), but not with shape=compact (422). The text in formatted uses the spaces the locale prescribes, e.g. a non-breaking space between symbol and amount for de_AT.

A price in euros, ending in .99

curl -G https://api.currencyapi.com/v3/convert \
    -d value=1371.11 \
    -d currencies=EUR \
    -d price_ending=0.99 \
    -d locale=de_AT \
    -H "apikey: YOUR-API-KEY"

Response

{
    "meta": {
        "last_updated_at": "2026-09-29T23:59:59Z",
        "base_currency": "USD",
        "value": 1371.11
    },
    "data": {
        "EUR": {
            "code": "EUR",
            "value": 1233.999,
            "rounded": 1233.99,
            "formatted": "€ 1.233,99"
        }
    }
}

The same with locale=en-US and format=csv

datetime,base_currency,currency,value,rounded,formatted
2026-09-29T23:59:59Z,USD,EUR,1233.999,1233.99,"€1,233.99"

Request

GET
/v3/convert
curl -G https://api.currencyapi.com/v3/convert \
    -d value=12 \
    -H "apikey: YOUR-API-KEY"

Full Response

{
    "meta": {
        "last_updated_at": "2022-01-01T23:59:59Z",
        "base_currency": "USD",
        "value": 12
    },
    "data": {
        "AED": {
            "code": "AED",
            "value": 44.07672
        },
        "AFN": {
            "code": "AFN",
            "value": 1101.63048
        },
        "ALL": {
            "code": "ALL",
            "value": 1298.74848
        },
        "AMD": {
            "code": "AMD",
            "value": 5764.99908
        },
        "...": "180+ more currencies"
    }
}