Skip to contents

Fetch the latest or historical foreign exchange reference rates from the Bank of Canada (BoC).

Usage

boc_fx_rates(start_date = NULL, end_date = NULL, limit = NULL, skip = NULL)

Arguments

start_date

(NULL | Date(1) | character(1))
Start date of the data. Default NULL.

end_date

(NULL | Date(1) | character(1))
End date of the data. Default NULL.

limit

(NULL | integer(1))
Maximum number of records to return. Default NULL (all records).

skip

(NULL | integer(1))
Number of records to skip. Default NULL (do not skip any records).

Value

A data.table::data.table() with the exchange rates.

Details

The recorded rates indicate the number of Canadian dollars required to buy a single unit of the foreign currency. New rates are released by the Bank of Canada (BoC) daily at 4:30 pm. The Canada Border Services (CBSA) retrieves these updates between 4:30 pm and 5 pm ET.

BoC provides 23 foreign exchange rates. All other rates are maintained by the CBSA.

Exchange rates from the BoC are updated daily in the system while other exchange rates are updated by the CBSA at set intervals. The updated rates are available for retrieval between 7 pm and 11:59 pm ET.

As BoC publishes exchange rates every business day, it is recommended that exchange rate data be retrieved on a daily basis. This retrieval should occur after 7 pm ET to ensure retrieval of the latest updates.

Examples

# \donttest{
# fetch latest exchange rates
boc_fx_rates()
#>      exchange_rate_id     rate exchange_rate_effective_timestamp
#>                 <int>    <num>                            <POSc>
#>   1:          5786797 0.094000                        2025-09-17
#>   2:          5786798 1.000000                        2025-09-17
#>   3:          5786799 1.000300                        2025-09-17
#>   4:          5786800 0.000001                        2025-09-17
#>   5:          5786801 0.003760                        2025-09-17
#>  ---                                                            
#> 150:          5786946 0.034960                        2025-09-17
#> 151:          5786947 0.000560                        2025-09-17
#> 152:          5786948 0.000050                        2025-09-17
#> 153:          5786949 0.057780                        2025-09-17
#> 154:          5786950 0.008710                        2025-09-17
#>      exchange_rate_expiry_timestamp exchange_rate_source from_currency
#>                              <POSc>               <char>        <char>
#>   1:            2025-09-17 23:59:59                 CBSA           EEK
#>   2:            2025-09-17 23:59:59                 CBSA           CAD
#>   3:            2025-09-17 23:59:59                 CBSA           ERP
#>   4:            2025-09-17 23:59:59                 CBSA           XXD
#>   5:            2025-09-17 23:59:59                 CBSA           ZWL
#>  ---                                                                  
#> 150:            2025-09-17 23:59:59                 CBSA           SRD
#> 151:            2025-09-17 23:59:59                 CBSA           TZS
#> 152:            2025-09-17 23:59:59                 CBSA           VND
#> 153:            2025-09-17 23:59:59                 CBSA           ZMW
#> 154:            2025-09-17 23:59:59                 CBSA           VES
#>      from_currency_csn to_currency to_currency_csn
#>                  <int>      <char>           <int>
#>   1:                59         CAD              36
#>   2:                36         CAD              36
#>   3:                62         CAD              36
#>   4:               223         CAD              36
#>   5:               238         CAD              36
#>  ---                                              
#> 150:               183         CAD              36
#> 151:               202         CAD              36
#> 152:               215         CAD              36
#> 153:               229         CAD              36
#> 154:               214         CAD              36
# fetch historical exchange rates
boc_fx_rates(start_date = "2021-10-22", end_date = "2021-10-23", limit = 10, skip = 2)
#>     exchange_rate_id     rate exchange_rate_effective_timestamp
#>                <int>    <num>                            <POSc>
#>  1:          5546931 0.193100                        2021-10-22
#>  2:          5546932 1.437200                        2021-10-22
#>  3:          5546933 0.158900                        2021-10-22
#>  4:          5546934 0.016500                        2021-10-22
#>  5:          5546935 0.000087                        2021-10-22
#>  6:          5546936 0.010850                        2021-10-22
#>  7:          5546937 0.060900                        2021-10-22
#>  8:          5546938 0.884600                        2021-10-22
#>  9:          5546939 0.147900                        2021-10-22
#> 10:          5546940 0.312500                        2021-10-22
#>     exchange_rate_expiry_timestamp exchange_rate_source from_currency
#>                             <POSc>               <char>        <char>
#>  1:            2021-10-22 23:59:59                  BoC           CNY
#>  2:            2021-10-22 23:59:59                  BoC           EUR
#>  3:            2021-10-22 23:59:59                  BoC           HKD
#>  4:            2021-10-22 23:59:59                  BoC           INR
#>  5:            2021-10-22 23:59:59                  BoC           IDR
#>  6:            2021-10-22 23:59:59                  BoC           JPY
#>  7:            2021-10-22 23:59:59                  BoC           MXN
#>  8:            2021-10-22 23:59:59                  BoC           NZD
#>  9:            2021-10-22 23:59:59                  BoC           NOK
#> 10:            2021-10-22 23:59:59                  BoC           PEN
#>     from_currency_csn to_currency to_currency_csn
#>                 <int>      <char>           <int>
#>  1:                42         CAD              36
#>  2:                66         CAD              36
#>  3:                87         CAD              36
#>  4:                95         CAD              36
#>  5:                92         CAD              36
#>  6:               102         CAD              36
#>  7:               138         CAD              36
#>  8:               150         CAD              36
#>  9:               148         CAD              36
#> 10:               154         CAD              36
# }