Convert currency with a given exchange rate
If one unit of your source currency buys 0.92 units of the target, enter 0.92 and your amount is multiplied by exactly that rate, with no fee, spread or rounding added. Use it to check an invoice or a bank conversion. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Amount
- 125.5
- Source currency
- usd
- Target currency
- EUR
- Exchange rate
- 0.92
- Source currency
- USD
- Converted amount
- 115.46
This static currency converter calculates a target amount from an amount, two currency codes, and an exchange rate that you provide. Use it when a bank, payment provider, contract, invoice, spreadsheet, or accounting workflow has already established the applicable rate and you need a transparent, repeatable calculation without an external rate source.
Provide the rate in the correct direction
Enter the amount in the source currency, identify the source and target with three-letter currency codes, and supply the number of target-currency units received for one source-currency unit. For example, when one unit of the source buys 0.92 units of the target, the exchange rate is 0.92. Direction matters: reversing the source and target generally requires the reciprocal rate, not the same number.
The calculator deliberately does not guess, invert, or look up a rate because its purpose is to apply the explicit rate that governs your transaction. Currency codes are normalized to uppercase in the result, making values such as usd and USD equivalent as identifiers. The amount may be positive, zero, or negative, which supports ordinary payments as well as refunds, credits, reversals, and accounting adjustments.
The exchange rate itself must be a finite number greater than zero. A zero or negative rate has no valid meaning for this multiplication and is rejected as invalid input instead of producing a misleading total.
Understand exactly how the result is calculated
The conversion uses one direct formula: converted amount equals source amount multiplied by the supplied exchange rate. No spread, fee, commission, tax, markup, minimum charge, or rounding rule is added. That makes the output suitable for checking another system when you know the precise rate it was supposed to use.
The response repeats the accepted amount, normalized currency codes, and exchange rate alongside the converted amount, so an audit record contains both the answer and the assumptions behind it. The converter also does not force a currency-specific number of decimal places. Some currencies commonly display two decimals, while others use zero or three, and financial systems can retain additional precision during intermediate calculations.
Apply the rounding policy required by your invoice, ledger, payment processor, or legal agreement after conversion rather than assuming one universal rule.
Choose a static converter for reproducible workflows
A static-rate conversion is the right choice whenever the exchange rate comes from a source outside the calculation itself. Common examples include a rate printed on a card statement, a treasury rate approved for a reporting period, a customs rate published for a shipment, or a contractual rate fixed on an invoice date. Keeping rate selection separate from multiplication prevents a later market update from changing a previously established result.
It also makes testing straightforward: store the input with the record and rerun it whenever you need to demonstrate how the target amount was obtained. This tool is not a live foreign-exchange quote and should not be presented as one. It cannot tell you whether a supplied rate is current, competitive, or appropriate, and it does not account for provider fees.
The same deterministic logic can run in the browser for quick checks, so manual and automated calculations can be compared without depending on different rate services.
What you can do with it
Reconcile a payment statement
Apply the rate shown by a bank or payment provider and compare the calculated target amount with the posted transaction.
Convert an invoice at a fixed rate
Use the contractual exchange rate recorded on an invoice without replacing it with a newer market quote.
FAQ
Does this tool fetch a live exchange rate?
No. You must supply the exchange rate explicitly, and the calculator uses that value without contacting a rate provider.
What direction should the exchange rate use?
Supply target-currency units per one source-currency unit. If the direction is reversed, calculate and provide the appropriate reciprocal rate.
Does the converter round to currency decimal places?
No. It returns the direct multiplication result. Apply the rounding rule required by the relevant currency, ledger, provider, or agreement.
Can I convert a negative amount?
Yes. Negative amounts are supported for credits, refunds, reversals, and similar accounting entries, provided the exchange rate is positive.
What if the exchange rate is zero or negative?
It is refused rather than producing a misleading total. The rate must be a number greater than zero, written as the units of the target currency you receive for one unit of the source currency.
Related tools
For developers — API access
Everything on this page is available programmatically. This section is for teams who want to wire it into their own systems; everyone else can just use the tool above.
API endpoint
Prefer to automate it? One authenticated POST creates the task; the result comes back by webhook or a signed link. The same capability also runs here on the web, by email and from Telegram — and soon from our app too.
Call it from your stack
curl -X POST https://api.kit.forhosting.com/calc2/currency-convert-static \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"amount":125.5,"source_currency":"USD","target_currency":"EUR","exchange_rate":0.92}'const res = await fetch("https://api.kit.forhosting.com/calc2/currency-convert-static", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"amount": 125.5,
"source_currency": "USD",
"target_currency": "EUR",
"exchange_rate": 0.92
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/calc2/currency-convert-static",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"amount": 125.5,
"source_currency": "USD",
"target_currency": "EUR",
"exchange_rate": 0.92
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/calc2/currency-convert-static", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"amount":125.5,"source_currency":"USD","target_currency":"EUR","exchange_rate":0.92}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"amount":125.5,"source_currency":"USD","target_currency":"EUR","exchange_rate":0.92}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/calc2/currency-convert-static", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"amount": 125.5,
"source_currency": "USD",
"target_currency": "EUR",
"exchange_rate": 0.92
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "calc2.currency_convert_static",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}The API is asynchronous: the call returns a task_id immediately and the result arrives by webhook. Polling is capped at 1 req/s per task.
Pricing
Published price — no tokens, no invented credits. A failed task is never charged.
Errors
| HTTP | Code | Meaning |
|---|---|---|
401 | unauthorized | Missing or invalid API key. |
402 | insufficient_balance | Your balance doesn't cover the task price. |
404 | unknown_type | That task type doesn't exist. |
429 | rate_limited | Too many requests. Use the webhook instead of polling. |
Technical notes
It does not fetch live or historical market data, so the result always reflects the exact rate supplied with the request.
Understand exactly how the result is calculated
Computation uses standard finite JavaScript numbers and remains deterministic: identical JSON input produces identical JSON output, with no network request, clock, random value, or changing market feed involved.
Choose a static converter for reproducible workflows
For automation, the API costs $0.002 per request.
Integration use cases
Test financial software
Create deterministic fixtures for importers, ledgers, and checkout systems by supplying a known amount and rate.
Technical questions
What happens if the exchange rate is zero or negative?
The request fails with an invalid input error because an exchange rate must be a finite number greater than zero.
What does an API conversion cost?
Each API request costs $0.002. You can also run the deterministic calculation in your browser for a quick manual check.