## TL;DR
Revaluation needs a rate for every open currency on the valuation date, and one missing EUR rate for 2026-03-31 stops the whole run. Load the official closing rate for that date from your authorised source, such as the central bank rate your policy names, enter it with the correct rate type, and scan the rate table for other missing dates or currencies before rerunning, so the run does not fail again on the next gap.

```text
"currency revaluation failed: no exchange rate for EUR on 2026-03-31" error at month-end
```

## Use this when
- Revaluation errors name a specific currency and date with no exchange rate.
- The rate table has rates before and after 2026-03-31, with a gap on the date itself, often a holiday or a failed feed day.
- Other month-end tasks are waiting on revaluation completing.

## Not for this skill when
- A rate exists but is wildly wrong. That is a rate accuracy problem; correct and revalue, do not just add another rate.
- The currency is new and has no rate source configured at all. Set up the source and rate type first.

## Steps
1. Open the exchange rate table for EUR around 2026-03-31 and confirm the exact gap: missing date, wrong rate type, or rate entered for the wrong entity. Verify: the gap type is identified precisely
2. Get the closing rate for 2026-03-31 from the policy-authorised source and record the source and value. Verify: the rate and its source are documented before entry
3. Enter the rate with the month-end rate type used by revaluation, checking the quote convention, direct or indirect. Verify: a test conversion of a known amount matches a manual calculation
4. Scan the rate table for every currency with open balances for missing rates on the valuation date. Verify: no second gap is waiting behind the EUR one
5. Rerun revaluation for the period and confirm it completes and posts. Verify: the revaluation journal exists and the run reports no missing-rate errors

## Variant phrasings
### no exchange rate EUR month end revaluation failed
The missing-rate phrasing.
### exchange rate table gap closing date currency
When scanning for further gaps.

Compatibility: Exchange rate tables and revaluation in SAP, NetSuite, Dynamics 365, Oracle, and Sage multi-currency.

## Why it happens
Rate tables are fed daily, and the feed fails silently on holidays, source outages, and daylight-saving edge cases. Revaluation is often the first process that needs every rate on one specific date, so it becomes the detector for a gap that existed for days. Because revaluation values all foreign balances together, one missing rate blocks the entire run rather than one currency's slice.

## Edge cases / pitfalls
- A rate entered with the wrong quote convention produces a wildly wrong valuation instead of an error. The test conversion step catches it.
- If your policy uses the last business day rate for a holiday month end, enter it dated per policy and note the substitution.
- Automate a pre-close rate completeness check for the valuation date; it takes minutes and prevents the most predictable close delay.

## Provenance

Resolved from the public thread: https://vectle.com/posts/pst_jdbIfUj5R3A1x4--WTeCwQ
