Home Troubleshooting Wrong Exchange Rate on a Transaction

Wrong Exchange Rate on a Transaction

Last updated on May 03, 2026

How to recognize the problem

You see a multi-currency transaction with a rate that doesn't match what you actually got, or doesn't match the market rate for that day:

  • A BTC transaction from yesterday at $80,000 per BTC, but the market that day was around $85,000
  • A EUR transaction recorded at 1.05 EUR/USD when you remember the rate being 1.08
  • A transaction stuck in Pending status because a rate didn't fetch

This article walks through diagnosing and fixing.


Step 1: confirm what rate was used

Open the transaction. Click into its detail. Scroll to the line items.

Each line in a multi-currency entry shows:

  • The transactional amount and currency
  • The functional value
  • The exchange rate
  • The rate source provider
  • The rate timestamp

The rate is what was used. Note the value.

Transaction line detail showing the exchange rate, source, and timestamp


Step 2: confirm what rate it should be

Two ways to check:

Look up the historical rate yourself

For BTC: go to CoinGecko, look up BTC/USD historical price for the transaction's date. Compare.

For fiat: go to Open Exchange Rates' historical page or any reputable rate source. Compare.

If they match, BitBooks used the right rate. The "wrong" rate is just what the market was that day. Move on.

If they differ significantly, continue.

Check the rate provider's data

The rate source provider is shown in the line detail. If BitBooks used "OPEN_EXCHANGE_RATES" but you'd expect a different rate, the issue might be that provider's data for that day was off.


Step 3: decide whether to fix it

Three scenarios:

The rate is just slightly different (rounding cents)

Don't fix. Rounding differences between rate providers are normal. The accounting is fine.

The rate matches the date's market but you got a different actual rate

Common when you trade through an exchange that adds a spread. The "market" rate was $80,000 but you actually paid $80,400 effective rate after fees.

Two options:

  1. Accept the market rate as recorded. Implicit fee is a $400 difference between cost basis and actual cash out.
  2. Override with your actual rate. Edit the line, manually set the rate to $80,400 / 1 BTC. The line's functional value updates accordingly.

The second is more accurate but requires you to know your actual rate.

The rate is wildly off (10%+ different from any reasonable market rate)

Probably a provider data issue or a pinned-at-wrong-time problem. Investigate:

  • Check the rate timestamp; is it the right time?
  • Try fetching the rate from a different provider for that date
  • If the issue persists, contact support

How to manually override a rate

For a posted entry, you may need to reverse and re-enter rather than edit (depends on which fields are edit-locked). For a Draft, you can edit directly.

For a Draft journal entry:

  1. Open the entry
  2. Click into the multi-currency line
  3. The rate field is editable; click to change
  4. Enter the rate you want
  5. Save

For a posted multi-currency line, the rate is locked. Reverse and re-enter with the correct rate.

Journal entry line detail with the rate field editable, showing a manual rate being entered


"Pending" rates

A rate can be Pending when BitBooks couldn't fetch it at the time of transaction creation. Causes:

  • The rate provider's API was down
  • A rate-limit throttled us
  • The currency pair isn't supported by the provider
  • The transaction date is in the future

The line shows "Pending" instead of a value, and the functional total includes a placeholder.

To resolve:

  1. Click the Retry pending rates banner at the top of the Transactions or Journal Entries page
  2. BitBooks tries to fetch again
  3. If successful, the rate fills in and the transaction is recalculated

If retry doesn't work after several attempts, the rate may not be auto-fetchable. Manually enter it (see Manual Override above).

Banner across the top of Transactions reading "X rates pending" with a Retry button


Bulk-fixing wrong rates

If many entries have the wrong rate (e.g., you imported a CSV with stale rates that need to be refreshed):

  1. Filter Transactions / Journal Entries to the affected period
  2. Open each entry, fix the rate
  3. (For Draft entries) re-fetch via "Retry pending rates" if applicable

There's no bulk rate-correction tool in the current UI. For many corrections, contact support; we may have backend tools to help.


Common questions

"Why doesn't BitBooks just use the actual exchange rate from my exchange?"

Because we don't have a real-time feed from every exchange. We use one or two reference providers (Open Exchange Rates for fiat, CoinGecko for BTC). For your actual trade-time rate, you'd manually enter it.

A future version may integrate exchange-specific rate feeds.

"What rate is best for my multi-currency lines: market or actual?"

Depends on the use case:

  • For ongoing operational entries (you bought something in EUR while traveling): market rate is fine
  • For trade entries (you bought BTC at an exchange, exact rate matters): actual rate

For high-volume trading, accept market rate everywhere and book a separate "Exchange Spread" expense for the difference.

"My BTC rate fluctuated 5% during the day. What's 'the' rate?"

BitBooks uses 5-minute buckets for BTC. The rate at the bucket containing your transaction time is used. So a 14:00 transaction uses the 14:00-14:05 bucket, not the day's average.

If you need a specific intraday rate (e.g., your trade executed at 14:23:17), the closest 5-minute bucket should match closely.


Where to go next