---
id: object/codeunit/1281
type: object
title: Codeunit 1281 "Update Currency Exchange Rates"
summary: Codeunit 1281 "Update Currency Exchange Rates" in Base Application (Microsoft.Finance.Currency). 8 public procedures, 3 events. Present since at least BC23, still in BC30, changed in BC27-28, BC30.
tier: official
language: en
tags:
  - codeunit
  - base application
versions:
  introduced: null
  last_changed: "30"
  deprecated: null
review:
  state: derived
  by: null
  at: null
  flags: []
generated:
  at: "2026-10-11T00:31:51.816Z"
  pipeline: 0.2.0
  prompts: {}
  input_hash: ec0bc8512fe975128f78c41c78b015ef5f6b1c7a14568c192e85f5672668fb52
evidence:
  - kind: code
    url: https://github.com/microsoft/BCApps/blob/ea08af5ef2d6a9b5c5af4a029288abbe2c883220/src/Layers/W1/BaseApp/Finance/Currency/UpdateCurrencyExchangeRates.Codeunit.al
    title: src/Layers/W1/BaseApp/Finance/Currency/UpdateCurrencyExchangeRates.Codeunit.al (releases/29.x)
    date: null
    commit: ea08af5ef2d6a9b5c5af4a029288abbe2c883220
    t: null
    quote: null
links:
  learn: []
  objects: []
  features: []
  topics: []
  localizations: []
  videos: []
  posts: []
  guidelines: []
  changes:
    - change/bcapps/10755
    - change/bcapps/11435
object_type: codeunit
object_id: 1281
name: Update Currency Exchange Rates
namespace: Microsoft.Finance.Currency
app: Base Application
extends: null
first_version: "23"
last_version: "30"
present_in:
  - "23"
  - "24"
  - "25"
  - "26"
  - "27"
  - "28"
  - "29"
  - "30"
changed_in:
  - "27"
  - "28"
  - "30"
source_major: "29"
obsolete: null
countries: []
ms_search_form_ids: []
counts:
  fields: 0
  procedures: 17
  events: 3
  subscribers: 0
relations:
  out: 0
  referenced_by: 0
  pages: 0
  extended_by: 0
  event_subscribers: 0
  calls: 7
  called_by: 6
  implements: 0
---

# Codeunit 1281 "Update Currency Exchange Rates"

> Codeunit 1281 "Update Currency Exchange Rates" in Base Application (Microsoft.Finance.Currency). 8 public procedures, 3 events. Present since at least BC23, still in BC30, changed in BC27-28, BC30.

Base Application · Microsoft.Finance.Currency · BC23-30 · [source at ea08af5e](https://github.com/microsoft/BCApps/blob/ea08af5ef2d6a9b5c5af4a029288abbe2c883220/src/Layers/W1/BaseApp/Finance/Currency/UpdateCurrencyExchangeRates.Codeunit.al) · facts from BC29

## Properties

| Property | Value |
|---|---|
| Permissions | TableData "Data Exch." = rimd |

## Events published

- `OnBeforeGetCurrencyExchangeData(var CurrExchRateUpdateSetup: Record "Curr. Exch. Rate Update Setup"; var ResponseInStream: InStream; var SourceName: Text; var Handled: Boolean; var TempBlobResponse: Codeunit "Temp Blob")` (integration): Event is raised before getting currency exchange data from web service.
- `OnBeforeSyncCurrencyExchangeRatesLoop(var CurrExchRateUpdateSetup: Record "Curr. Exch. Rate Update Setup")` (integration)
- `OnSyncCurrencyExchangeRatesOnBeforeFindCurrExchRateUpdateSetup(var CurrExchRateUpdateSetup: Record "Curr. Exch. Rate Update Setup")` (integration): Integration event raised after the enabled filter is applied to the currency exchange rate update setup and before the setup records are read. Enables subscribers to apply additional filters to the setup before the synchronization loop runs.

## Procedures

- `UpdateCurrencyExchangeRates(CurrExchRateUpdateSetup: Record "Curr. Exch. Rate Update Setup"; CurrencyExchRatesDataInStream: InStream; SourceName: Text)`
- `GenerateTempDataFromService(var TempCurrencyExchangeRate: Record "Currency Exchange Rate" temporary; CurrExchRateUpdateSetup: Record "Curr. Exch. Rate Update Setup")`
- `OpenCurrencyExchangeRatesPageFromNotification(Notification: Notification)`
- `DisableMissingExchangeRatesNotification(Notification: Notification)`
- `ShowMissingExchangeRatesNotification(CurrencyCode: Code[10])`
- `ExchangeRatesForCurrencyExist(Date: Date; CurrencyCode: Code[10]): Boolean`
- `OpenExchangeRatesPage(CurrencyCode: Code[10])`
- `GetMissingExchangeRatesNotificationID(): Guid`

Plus 6 local procedures.

## Triggers

OnRun

## Calls

From the extracted call graph of BC29 (graphify-al on the snapshot checkout): calls whose target is known from a declared type or an `Object::"Name"` argument. Interface dispatch and calls through events are not counted, so the list is not complete.

- [Codeunit 1297 "Http Web Request Mgt."](../codeunit/1297.md) (5 calls: `ExecuteWebServiceRequest → DisableUI`, `ExecuteWebServiceRequest → GetResponse`, `ExecuteWebServiceRequest → Initialize`, …)
- [Codeunit 1237 "Get Json Structure"](../codeunit/1237.md) (2 calls: `CreateDataExchange → JsonToXML`, `CreateDataExchange → JsonToXMLCreateDefaultRoot`)
- [Codeunit 4100 "Temp Blob"](../codeunit/4100.md) (2 calls: `CreateDataExchange → CreateInStream`, `GetCurrencyExchangeData → CreateInStream`)
- [Page 483 "Currency Exchange Rates"](../page/483.md) (2 calls: `OpenCurrencyExchangeRatesPageFromNotification → (object)`, `OpenExchangeRatesPage → (object)`)
- [Codeunit 1280 "Map Currency Exchange Rate"](../codeunit/1280.md) (1 call: `GenerateTempDataFromService → MapCurrencyExchangeRates`)
- [Codeunit 1299 "Web Request Helper"](../codeunit/1299.md) (1 call: `ShowHttpError → GetWebResponseError`)
- [Codeunit 6224 "XML DOM Management"](../codeunit/6224.md) (1 call: `ShowHttpError → LoadXMLNodeFromInStream`)

## Called by

- [Page 39 "General Journal"](../page/39.md) (2 calls: `UpdateCurrencyFactor → ExchangeRatesForCurrencyExist`, `UpdateCurrencyFactor → OpenExchangeRatesPage`)
- [Table 36 "Sales Header"](../table/36.md) (2 calls: `UpdateCurrencyFactor → ExchangeRatesForCurrencyExist`, `UpdateCurrencyFactor → ShowMissingExchangeRatesNotification`)
- [Table 5900 "Service Header"](../table/5900.md) (2 calls: `UpdateCurrencyFactor → ExchangeRatesForCurrencyExist`, `UpdateCurrencyFactor → OpenExchangeRatesPage`)
- [Table 6900 "Expense"](../table/6900.md) (2 calls: `UpdateCurrencyFactor → ExchangeRatesForCurrencyExist`, `UpdateCurrencyFactor → ShowMissingExchangeRatesNotification`)
- [Table 6906 "Expense Report Header"](../table/6906.md) (2 calls: `UpdateCurrencyFactor → ExchangeRatesForCurrencyExist`, `UpdateCurrencyFactor → ShowMissingExchangeRatesNotification`)
- [Table 6907 "Expense Report Line"](../table/6907.md) (2 calls: `UpdateCurrencyFactor → ExchangeRatesForCurrencyExist`, `UpdateCurrencyFactor → ShowMissingExchangeRatesNotification`)

## Recent changes

- 2026-10-02 [#10755 Migrate Http Web Request Mgt. callers to native HttpClient](../../changes/bcapps/10755.md) (main, BC30, refactor)
- 2026-09-18 [#11435 Validate unauthenticated public API responses before use](../../changes/bcapps/11435.md) (main, BC30, fix)

## Across versions

- Present in: BC23-30
- Changed (declaration) in: BC27-28, BC30

Source: AL metadata extracted from the code (names, ids, signatures, properties); no code bodies (D10).

## Ask your agent

Procedure bodies are not stored here (D10). The call sections above are our own, per object, from the BC29 call graph. For a procedure body or the calls of one procedure, ask bc-code-atlas (external, by Stefan Maron, MIT; default corpus w1-28), which the bc-observatory plugin connects: `bcatlas_resolve_node(object_type: "codeunit", object_name: "Update Currency Exchange Rates")`, then `bcatlas_get_procedure_body` or `bcatlas_get_neighbors` on the returned id.
