Exchange Rate API for Accounting Software
Fetch current or historical FX rates for ledgers, reports, and month-end revaluation. Keep the rate, date, source, and carry-forward flag beside every converted amount.
Use one rate for each accounting event
An invoice, its payment, and the month-end close happen on different dates. Don't recalculate all three with today's rate. Fetch the rate for the date required by your accounting policy, then save that date on the ledger entry. A EUR 2,400 invoice dated 15 July should still show the same booked USD value when someone opens the report in October.
A current rate works for a dashboard or estimate that is meant to reflect the market now. For an older transaction, use the historical endpoint. If the date falls on a weekend or holiday, the response carries the last published fix and sets is_forward_filled. Your software can accept, flag, or reject that value according to company policy.
Store the evidence beside the number
Keep the original currency and amount. Then save the reporting currency, converted amount, full-precision rate, requested date, observation time in data_updated_at, source, and is_forward_filled. The final converted number isn't enough. Without the supporting fields, finance can't explain why an old report differs from a calculator opened today.
Use a decimal money type and round the amount for the currency's minor units. Keep the rate at full precision. Cutting the rate down too early can create a small difference on every row. Across a large ledger, those small differences tend to show up later, during reconciliation, when they are harder to trace.
Revalue open balances at month end
Foreign-currency receivables, payables, and cash balances may need a new reporting value on the closing date. Fetch one set of rates for that date and use it for the full run. Save a run ID or closing date beside each result. That gives the report a clear input and makes it possible to run the same calculation again.
Don't overwrite the value recorded when the transaction began. Store the revaluation adjustment as a separate entry. When an invoice is finally paid, compare its booked value with the real settlement amount. This keeps the original value, the period adjustment, and the payment result separate. The nearby multi-currency invoicing guide covers that invoice lifecycle.
The software supplies data; policy chooses the booked rate
exchangerate.dev supplies indicative rates for reference, analysis, and reporting. It doesn't choose an accounting policy for your business, and it isn't an official source of record. Your company, auditor, contract, or local rules decide which date and source are allowed.
Put that rule in the software. State whether you use the transaction date or posting date, how holidays are handled, and which source is used at month end. Once the rule is clear, the API can apply it the same way each time and retain the fields needed for a later review.
Record a historical transaction on the server
Keep the API key on your server. This example records the rate and its freshness fields alongside the value your application calculated.
Ready to test the API?
Start with the quickstart, check the response fields, and see pricing when you need account quota.
Free is for evaluation and internal, non-commercial use. Basic and Pro include commercial use.
Create a free evaluation key →