18.1 Exchange Rate Adjustments & Dimension Corrections

Key Takeaways

  • The Adjust Exchange Rates batch job (Report 595 / Adjust Currency Exchange Rates) recalculates open customer, vendor, and bank ledger entries using period-ending rates, posting unrealized foreign exchange gains and losses to the General Ledger.
  • For customer and vendor subledgers, the currency adjustment generates Detailed Customer Ledger Entries and Detailed Vendor Ledger Entries with Entry Type Unrealized Gain or Unrealized Loss, preserving original transaction values.
  • The Dimension Correction Tool (Page 2583) allows financial controllers to modify, add, or remove dimension values on posted General Ledger Entries without reversing documents, updating Dimension Set IDs and reporting views.
  • Executing the Validate Dimension Changes action is mandatory before applying dimension updates to prevent violations of dimension combinations, blocked values, or account-specific constraints.
  • Balance sheet General Ledger accounts can be revalued directly when configured with 'Adjust Amount' or 'Adjust Additional-Currency Amount', ensuring foreign currency and ACY balances accurately reflect closing rates.
Last updated: September 2026

18.1 Exchange Rate Adjustments & Dimension Corrections

Quick Summary: In Microsoft Dynamics 365 Business Central, multi-currency financial integrity and analytical reporting accuracy depend on two critical periodic tools. The Adjust Exchange Rates batch job (Report 595 / Codeunit 595) recalculates open foreign currency receivables, payables, bank accounts, and enabled G/L accounts at period end, posting Unrealized Foreign Exchange Gains/Losses to the General Ledger and logging Detailed Ledger Entries. To resolve reporting misallocations without cumbersome document reversals, the Dimension Correction Tool (Page 2583) allows authorized users to alter dimension sets on posted General Ledger Entries, validate dimension combination rules, and schedule background updates via the Job Queue.


Multi-Currency Dynamics & Period-End Exchange Rate Exposure

In global business environments, organizations frequently execute transactions in foreign currencies (FCY) while maintaining their primary general ledger in a local currency (LCY), and optionally in an Additional Reporting Currency (ACY). When a foreign sales invoice or purchase invoice is posted, Business Central converts the FCY amount to LCY using the exchange rate effective on the transaction's Posting Date (Table 330 Currency Exchange Rate).

Foreign Currency Posting vs. Period-End Revaluation Timeline:

[Jan 15: Post Sales Invoice: €10,000 @ Rate 1.10 = $11,000 LCY]
         │
         ├── Cust. Ledger Entry: Remaining Amount = €10,000 ($11,000 LCY)
         │
         ▼ (Jan 31: Month-End Exchange Rate Shifts to €1 = $1.05)
[Jan 31: Run "Adjust Exchange Rates" Batch Job (Report 595)]
         │
         ├── Recalculates €10,000 @ 1.05 = $10,500 LCY (Unrealized Loss: $500)
         ├── Inserts Detailed Cust. Ledg. Entry (Entry Type = Unrealized Loss)
         └── Posts to G/L: Debit Unrealized Loss $500 / Credit AR Control $500
         │
         ▼ (Feb 15: Customer Pays €10,000 @ Rate 1.08 = $10,800 LCY)
[Feb 15: Post Payment & Apply to Invoice]
         ├── Reverses January Unrealized Loss ($500)
         └── Posts Final Realized Loss ($200) based on Jan 15 vs Feb 15 Rates

Because exchange rates fluctuate constantly between the invoice posting date and the settlement date, open monetary assets (receivables, foreign bank accounts) and monetary liabilities (payables) are exposed to currency volatility. Under accounting standards (such as IFRS and US GAAP), companies must revalue outstanding foreign currency monetary balances at each financial period close using the period-end closing spot rate, recognizing unrealized gains or losses in the Income Statement.


The Adjust Exchange Rates Batch Job (Report 595)

The Adjust Exchange Rates batch job (Alt+Q -> type Adjust Exchange Rates or Adjust Currency Exchange Rates, Report 595 / Codeunit 595) automates the period-end currency revaluation process across subledgers and the general ledger.

Scope of Subledger & Ledger Revaluation

When executed, the batch job evaluates four distinct areas:

  • Customer Ledger Entries (Table 21): Evaluates all open customer ledger entries (Remaining Amount <> 0). It compares the current LCY remaining amount with the value calculated using the ending exchange rate on the specified revaluation date.
  • Vendor Ledger Entries (Table 25): Revalues open vendor liabilities using the same mechanism, evaluating outstanding payables in foreign currencies.
  • Bank Account Ledger Entries (Table 271): Adjusts foreign currency bank account balances to match closing rates, updating both the Bank Account card balance in LCY and the corresponding General Ledger cash account.
  • General Ledger Accounts Enabled for Adjustment: Balance Sheet G/L accounts marked for currency adjustment (e.g., intercompany loan accounts or foreign petty cash).

Detailed Subledger Entries & G/L Accounting Mechanics

A foundational architectural principle of Business Central is that the Adjust Exchange Rates batch job never overwrites or edits the original posted transaction ledger entries. Instead:

  1. It creates records in Detailed Cust. Ledg. Entry (Table 379) or Detailed Vendor Ledg. Entry (Table 380) with Entry Type set to Unrealized Gain or Unrealized Loss.
  2. In the General Ledger, the batch job creates balanced journal entries:
    • Debits or credits the Receivables or Payables control account assigned in the customer's or vendor's Posting Group.
    • Offsetting debit or credit is posted to the Unrealized Gains Acc. or Unrealized Losses Acc. defined on the Currency Card (Page 5 / Table 4).
Currency Adjustment Ledger Architecture:

[Customer Ledger Entry: Invoice #10401 (Original Amount: €10,000 / $11,000 LCY)]
   │
   ├── Detailed Cust. Ledg. Entry 1: [Initial Entry: €10,000 / $11,000 LCY]
   │
   └── Detailed Cust. Ledg. Entry 2: [Unrealized Loss: €0 / -$500 LCY]
                                       │
                                       ▼ General Ledger (Table 17)
                                       Debit:  Unrealized FX Loss (P&L) ... $500
                                       Credit: AR Control Account (Asset) . $500

Realized vs. Unrealized Currency Gain/Loss Lifecycle

  • Unrealized Gains/Losses: Temporary paper gains or losses recognized at balance sheet dates for open transactions. These are generated strictly by the Adjust Exchange Rates batch job.
  • Realized Gains/Losses: Permanent financial gains or losses recognized when a payment is received or issued and applied against an open invoice. When cash application occurs, Business Central automatically reverses any prior unrealized gain/loss entries and posts the definitive variance to the Realized Gains Acc. or Realized Losses Acc.

Batch Job Parameters on the Request Page

  • Starting Date & Ending Date: The date interval defining which currency exchange rates apply. The rate active on the Ending Date is used for the revaluation.
  • Posting Date: The accounting date assigned to the generated G/L and detailed subledger entries (typically the final day of the fiscal reporting month).
  • Posting Description: The text logged on G/L entries (defaults to Exchange rate adjmt. of %1 %2).
  • Document No.: Audit document reference number for the batch run.
  • Adjust Customer, Vendor, and Bank Accounts: Toggles specifying which subledgers are included in the revaluation.

Dimension Correction Tool Architecture & Governance

Dimensions provide the core analytical framework in Business Central, enabling multi-dimensional financial tracking by department, cost center, project, or line of business without bloating the chart of accounts. In earlier versions of Business Central, correcting a miskeyed dimension on a posted entry required reversing the entire transaction with a credit memo and reposting—creating clutter and audit confusion.

The Dimension Correction Tool (Alt+Q -> type Dimension Corrections, Page 2583) allows authorized users to correct dimension values on posted General Ledger Entries (Table 17) directly, safely, and with full audit traceability.

Dimension Correction Execution Pipeline:

[General Ledger Entries (Page 20)] ──► Select Erroneous Lines
                │
                ▼ Action: "Correct Dimensions"
[Dimension Correction Card (Page 2583)]
  ├── Select Action: Change Value / Add Dimension / Remove Dimension
  ├── Specify New Dimension Value (e.g., DEPT: SALES -> ADMIN)
  └── Enter Mandatory / Recommended "Reason Code"
                │
                ▼ Action: "Validate Dimension Changes"
       ┌────────┴────────┐
       ▼                 ▼
[Validation Passed]   [Validation Failed]
       │                 └── Displays Error Log (e.g., Blocked Value, Combination Rule)
       ▼
Choose Execution Mode:
  ├── "Run Immediately"  (Synchronous foreground update for small batches)
  └── "Schedule"         (Enqueues Job Queue task for large historical volumes)
                │
                ▼
[Ledger & Audit Updates Committed]
  ├── Table 17 G/L Entries: Updated with New Dimension Set ID
  ├── Dimension Set Entry (Table 480): Creates or reuses unique dimension combination
  ├── Dimension Correction Log: Immutable audit of User, Timestamp, Old/New Values
  └── Prompt: "Update Analysis Views" to refresh financial reports

Scope of Dimension Corrections

  • Primary Target: The Dimension Correction Tool modifies the Dimension Set ID on General Ledger Entries (Table 17).
  • Subledger Relationship: The tool does not retroactively rewrite historical subledger entries (such as Item Ledger Entries or Customer Ledger Entries). Instead, it ensures that financial statements, General Ledger reporting, and Analysis Views reflect the true analytical allocation.

Dimension Validation, Scheduling & Audit Tracking

Pre-Execution Validation Checks

Before any dimension alteration can be applied to the ledger, users must click Validate Dimension Changes. The validation engine interrogates the system setup to enforce three rigid constraints:

  1. Dimension Combinations (Page 538): Confirms that the proposed dimension values do not violate blocked or limited combinations established between dimension pairs (e.g., ensuring Department PROD is not used alongside Project OVERHEAD).
  2. Default Dimension Rules on Accounts (Table 352): Validates account-specific rules configured on the Chart of Accounts, such as Value Posting set to Code Mandatory or Same Code.
  3. Blocked Dimension Values: Verifies that neither the dimension code nor the target dimension value is flagged as Blocked.

Foreground vs. Job Queue Scheduling

  • Run Immediately: Suitable for small transaction volumes (fewer than 1,000 entries). The correction processes synchronously in the client session.
  • Schedule: Essential for large-scale corrections spanning tens of thousands of historical entries. It enqueues a task in the Job Queue, allowing the system to process the update during off-peak hours without locking active operational tables.

Auditability & Updating Analysis Views

  • Immutable Audit Trail: The system writes every modification to the Dimension Correction Log (Page 2583). It records the User ID, exact Timestamp, Original Dimension Set ID, New Dimension Set ID, and the specified Reason Code.
  • Updating Analysis Views: Because financial reporting tools (Financial Reports, Account Schedules, Power BI) often rely on pre-aggregated Analysis Views (Page 556), the tool prompts users to run Update Analysis Views post-execution to refresh reporting cubes.

Revaluing General Ledger Account Balances

In addition to customer and vendor subledgers, organizations often hold balance sheet general ledger accounts denominated in foreign currencies (e.g., foreign currency cash drawers, foreign intercompany notes payable).

Configuring G/L Accounts for Currency Adjustment

On the G/L Account Card (Alt+Q -> Chart of Accounts -> select account), the Exchange Rate Adjustment field governs revaluation behavior:

  • No Adjustment: The G/L account balance remains static in LCY regardless of exchange rate movements.
  • Adjust Amount: Recalculates the LCY balance based on exchange rate fluctuations, posting the variance to unrealized gain/loss accounts.
  • Adjust Additional-Currency Amount: Recalculates the balance in the Additional Reporting Currency (ACY).

[!IMPORTANT] If an organization enables an Additional Reporting Currency (ACY) in General Ledger Setup, the Adjust Exchange Rates batch job provides an option to adjust G/L account balances for the ACY, ensuring the secondary reporting ledger remains aligned with global currency standards.


Financial Adjustment Mechanisms Comparison

Feature / AttributeAdjust Exchange Rates Batch JobDimension Correction ToolDirect G/L Account Revaluation
Primary Engine ObjectReport 595 (Codeunit 595)Page 2583 (Codeunit 2580)Report 595 (Adjust G/L Accounts)
Target Database TablesCust. / Vendor / Bank / Detailed LedgersTable 17 (General Ledger Entry)Table 17 (General Ledger Entry)
Financial Dollar ImpactYes; posts unrealized gain/loss entries.No; debits and credits remain unchanged.Yes; adjusts LCY/ACY balance sheet balances.
Subledger Details CreatedDetailed Cust./Vendor Ledger Entries.None (modifies Dimension Set ID).G/L Ledger Entries only.
Validation PrerequisiteValid currency exchange rates on Ending Date.Validate Dimension Changes routine.Exchange Rate Adjustment set on G/L Card.
Audit Trail MechanismDetailed subledger entries with Entry Type.Immutable Dimension Correction Log.G/L Register & Transaction Document No.

Step-by-Step UI Execution Workflows

Workflow A: Running the Period-End Adjust Exchange Rates Batch Job

  1. Press Alt+Q, type Adjust Exchange Rates (or Adjust Currency Exchange Rates), and select the related report link (Report 595).
  2. In the Starting Date and Ending Date fields, enter the period boundary (e.g., 01/01/2026 and 01/31/2026).
  3. In the Posting Date field, enter the month-end date (e.g., 01/31/2026).
  4. In the Posting Description field, enter Period-End Revaluation Jan 2026.
  5. In the Document No. field, enter an audit voucher identifier (e.g., EXCH-2026-01).
  6. Ensure the toggles for Adjust Customers, Adjust Vendors, and Adjust Bank Accounts are enabled.
  7. Click OK to execute the batch job. Inspect the resulting G/L entries and Detailed Customer/Vendor Ledger Entries.

Workflow B: Correcting Dimensions on Posted General Ledger Entries

  1. Press Alt+Q, type General Ledger Entries, and select the related link (Page 20).
  2. Filter for the target entries (e.g., by Document No. or G/L Account No.). Select the lines requiring correction.
  3. In the action bar, select Entry -> Correct Dimensions (Page 2583 opens).
  4. In the Dimension Correction Changes FastTab, select the Dimension Code (e.g., DEPARTMENT).
  5. In the New Dimension Value Code field, select the correct value (e.g., ADMIN).
  6. On the header, enter a descriptive Reason Code (e.g., CORRECTION).
  7. In the action bar, click Validate Dimension Changes. Verify that the status shows Valid and zero errors are returned.
  8. Click Run Immediately (or Schedule for background processing). Confirm the prompt.
  9. When complete, navigate to Analysis Views (Alt+Q -> Analysis Views) and click Update to refresh financial reporting.

Common Configuration Pitfalls & Exam Traps

  • Pitfall 1: Expecting Closed Entries to be Revalued. The Adjust Exchange Rates batch job revalues only open entries. If an invoice is fully applied and closed before month-end, running Report 595 has zero impact on it; realized gains and losses were already settled at cash application.
  • Pitfall 2: Missing Unrealized Gain/Loss Accounts on Currency Card. If a company adds a new foreign currency (e.g., JPY) but neglects to populate the Unrealized Gains Acc. and Unrealized Losses Acc. on the Currency Card, running Adjust Exchange Rates will halt with a hard validation error when attempting to post G/L entries.
  • Pitfall 3: Subledger vs. G/L Dimension Divergence. Functional consultants must remember that the Dimension Correction Tool modifies the Dimension Set ID on General Ledger Entries (Table 17), but does not alter historical Item Ledger Entries or Customer Ledger Entries. Reporting that pulls directly from subledgers rather than the G/L will still reflect the original dimension.
  • Pitfall 4: Neglecting to Update Analysis Views. After executing a dimension correction, financial reports based on Analysis Views will continue to display stale historical dimension allocations until Update Analysis Views is run.
Loading diagram...
Period-End Currency Adjustments & Dimension Correction Flow
Test Your Knowledge

A financial controller runs the Adjust Exchange Rates batch job at month-end to revalue open foreign receivables. What specific entries and updates are generated by Business Central when recalculating an open customer sales invoice?

A
B
C
D
Test Your Knowledge

An accounting clerk posted several general journal entries to office supply expense accounts but assigned the wrong Department dimension value (SALES instead of ADMIN). The company needs to fix the analytical reporting without reversing and reposting the general ledger entries. How should the functional consultant instruct the clerk to resolve this?

A
B
C
D
Test Your Knowledge

A functional consultant is configuring a multi-currency implementation. When the finance team attempts to run the Adjust Exchange Rates batch job for open customer balances, the process halts with an error regarding missing G/L accounts. Which setup page and fields must be populated to resolve this error?

A
B
C
D