Архив курсов валют ЦБ РФ: доступ, загрузка и использование

Разбираем курсы валют ЦБ РФ: как скачать архив, подключить API и не ошибиться в отчете. Гайд для бухгалтеров и разработчиков.

Бесплатная консультация юриста

+7 (800) 301-07-30

Реклама jurik.ru

Официальные курсы валют Центрального банка Российской Федерации (ЦБ РФ) являются основным эталоном для бухгалтерского учета, налогового учета, таможенного оформления и расчетов по валютным контрактам на территории России. Понимание того, как получить доступ к архивам курсов валют, автоматизировать их загрузку и правильно интерпретировать данные — критически важный навык для финансистов, бухгалтеров, разработчиков и аналитиков;

В этой статье мы подробно разберем структуру архивов ЦБ РФ, способы доступа (веб-интерфейс, API, файлы), форматы данных, нюансы работы с выходными днями и праздниками, а также дадим практические примеры интеграции.


Что такое архив курсов валют ЦБ РФ?

Архив курсов валют — это историческая база данных официальных курсов иностранных валют по отношению к рублю Российской Федерации, устанавливаемых ЦБ РФ ежедневно (в рабочие дни).

Ключевые характеристики:

  • Периодичность: Ежедневно в рабочие дни (исключения — выходные и праздничные дни по производственному календарю РФ).
  • Время публикации: Обычно курсы на «завтра» публикуются в 13:00–14:00 МСК текущего дня. Курсы на «сегодня» устанавливаются на основе торгов вчерашнего дня.
  • Юридическая сила: Официальные курсы обязательны для расчетов по налогам, таможенным пошлинам, статистике и отчетности, если иное не предусмотрено договором сторон.
  • Глубина архива: Данные доступны с 1992 года (с введения новой валюты РФ).

Структура данных курса:

  1. Цифровой код валюты (ISO 4217 Num): Например, 840 для USD, 978 для EUR, 156 для CNY.
  2. Буквенный код (ISO 4217 Alpha): USD, EUR, CNY, TRY и т.д.
  3. Номинал: Количество единиц валюты (1, 10, 100, 1000), за которое устанавливается курс. Важно: курс всегда указывается за номинал.
  4. Название валюты: На русском языке.
  5. Курс: Значение в рублях за указанный номинал (с 4 знаками после запятой до 2018 года, с 2018 года — с 4 знаками, но для расчетов часто округляют до 2 или 4).

Способы доступа к архивам

ЦБ РФ предоставляет несколько каналов получения данных: от ручного просмотра на сайте до машинно-читаемых API для автоматизации.

Веб-интерфейс (Ручное получение)

Самый простой способ — раздел «Курсы валют» на официальном сайте cbr.ru.

  • Адрес: https://cbr.ru/currency_base/daily/ (текущие курсы)
  • Архив: https://cbr.ru/currency_base/dynamics/ (динамика курсов за период)

Функционал: выбор диапазона дат, выбор конкретной валюты, экспорт в Excel (XLS) или печать. Подходит для разовых проверок и ручной выгрузки небольших объемов.

XML API (Основной способ автоматизации)

Это стандарт де-факто для интеграции в 1С, ERP-системы, сайты и боты. Данные отдаются в формате XML по HTTP/HTTPS.

Ежедневные курсы (Daily):

https://www.cbr.ru/scripts/XML_daily.asp?date_req=DD/MM/YYYY
  • Параметр date_req — обязателен для архива. Формат: день/месяц/год (например, ).
  • Если параметр не указан, возвращаются курсы на текущую дату (или последнюю рабочую).
  • Кодировка ответа: windows-1251 (важно для парсеров!).

Динамика курсов за период (Dynamic):

https://www.cbr.ru/scripts/XML_dynamic.asp?date_req1=DD/MM/YYYY&date_req2=DD/MM/YYYY&VAL_NM_RQ=CODE
  • date_req1 — начальная дата.
  • date_req2 — конечная дата.
  • VAL_NM_RQ — цифровой код валюты (ISO Num), например R01235 для USD, R01239 для EUR. Внимание: Это внутренние коды ЦБ (R01…), а не стандартные ISO 4217. Их список можно получить через XML_valFull.asp.

Справочник валют (ValFull):

https://www.cbr.ru/scripts/XML_valFull.asp

Возвращает полный список валют с их внутренними кодами (ID), номиналами и названиями. Необходим для маппинга ISO-кодов на внутренние коды ЦБ при работе с XML_dynamic.

JSON API (Современный альтернативный формат)

ЦБ РФ постепенно внедряет поддержку JSON. На данный момент стабильно работает эндпоинт для ежедневных курсов:

https://www.cbr-xml-daily.ru/daily_json.js

Примечание: Этот хост (cbr-xml-daily.ru) является неофициальным, но давно работающим прокси-сервисом, преобразующим официальный XML ЦБ в удобный JSON. Официальный сайт ЦБ (cbr.ru) также начал отдавать JSON по аналогичным путям, но cbr-xml-daily.ru остается стандартом индустрии из-за стабильности и CORS-заголовков.

Пример структуры JSON:

{
 "Date": "2026-06-10T00:00:00+03:00",
 "PreviousDate": "2026-06-09T00:00:00+03:00",
 "Timestamp": "2026-06-09T13:00:00+03:00",
 "Valute": {
 "USD": {
 "ID": "R01235",
 "NumCode": "840",
 "CharCode": "USD",
 "Nominal": 1,
 "Name": "Доллар США",
 "Value": 71.7300,
 "Previous": 71.3700
 },
 ...
 }
}

Файловые выгрузки (CSV/XLS) для массовой загрузки

Для загрузки больших массивов данных (например, за 10 лет по всем валютам) удобнее использовать готовые файлы.

  • На странице динамики (currency_base/dynamics) есть кнопка «Excel» — формирует XLS за выбранный период.
  • Существуют сторонние агрегаторы (например, cbr.ru/statistics или репозитории на GitHub), где выложены готовые CSV/Parquet датасеты за всю историю.

Нюансы и «подводные камни» работы с архивом

Выходные и праздничные дни

Правило: Курс на нерабочий день (суббота, воскресенье, праздник) равен курсу на предыдущий рабочий день.

  • В XML/JSON API за нерабочие дни данные могут отсутствовать (тег Valute не будет содержать запись за эту дату в динамике, или daily-запрос вернет курсы на последнюю рабочую дату).
  • При расчетах за период необходимо «пробрасывать» последний известный курс вперед до следующего рабочего дня.

Изменение номенала и деноминации

Иногда ЦБ меняет номинал валюты (например, был 1000, стал 1 после деноминации в стране-эмитенте, как было с белорусским рублем BYR -> BYN или турецкой лирой).

  • В архиве это отражается как смена поля Nominal.
  • При построении графиков или расчете доходности обязательно нормализуйте курс к 1 единице валюты (Value / Nominal).

Кодировка Windows-1251

Официальный XML API ЦБ (cbr.ru/scripts/...) отдает данные в кодировке windows-1251.

  • Современные библиотеки (Python requests, Node.js fetch, Go http) по умолчанию ожидают UTF-8.
  • Необходимо явно указать декодирование: response.encoding = 'windows-1251' (Python) или использовать iconv-lite (Node.js). Иначе кириллица в названиях валют превратится в «кракозябры».

Внутренние коды валют (R01XXX) vs ISO

Для запроса динамики (XML_dynamic) нужен именно внутренний код (например, R01235 для USD).

  • Не хардкодьте их в коде — они могут меняться (редко, но бывает при введении новых валют).
  • Всегда качайте XML_valFull.asp при старте приложения и строим мапу: CharCode (USD) -> ID (R01235).

Точность и округление

  • Официально курс публикуется с 4 знаками после запятой.
  • Для налогового и бухгалтерского учета используется именно это значение (или пересчет по курсу ЦБ на дату операции).
  • В JSON (cbr-xml-daily.ru) поле Value уже приходит как число (float) с 4 знаками.

Практические примеры интеграции

Пример 1: Python (получение курса USD на конкретную дату)

import requests
import xml.etree.ElementTree as ET
from datetime import datetime
def get_usd_rate(date_str: str) -> float:
 # date_str в формате 'DD/MM/YYYY'
 url = f"https://www.cbr.ru/scripts/XML_daily.asp?date_req={date_str}"
 response = requests.get(url)
 # Критически важно: ЦБ отдает windows-1251
 response.encoding = 'windows-1251'
 
 root = ET.fromstring(response.text)
 # Ищем валюту с ID="R01235" (USD)
 for valute in root.findall('Valute'):
 if valute.get('ID') == 'R01235':
 value_str = valute.find('Value').text.replace(',', '.')
 nominal = int(valute.find('Nominal').text)
 return round(float(value_str) / nominal, 4)
 raise ValueError("USD not found")

rate = get_usd_rate("")
print(f"Курс USD на : {rate} RUB")

Пример 2: JavaScript / Node.js (использование JSON API)

const fetch = require('node-fetch'); // или нативный fetch в Node 18+

async function getRateJSON(date) {
 // cbr-xml-daily.ru поддерживает историю через параметр date (YYYY-MM-DD)
 // Официальный API ЦБ для JSON истории может отличаться, проверяйте актуальность.
 const url = `https://www.cbr-xml-daily.ru/archive/${date.split('-').reverse.join('/')}/daily_json.js`;
 // Либо для актуальных: https://www.cbr-xml-daily.ru/daily_json.js
 
 try {
 const res = await fetch(url);
 if (!res.ok) throw new Error(`HTTP ${res.status}`);
 const data = await res.json;
 return data.Valute.USD.Value; // Уже нормализовано за номинал
 } catch (e) {
 console.error("Ошибка загрузки курса:", e);
 return null;
 }
}

// Пример: 2026-06-10
getRateJSON('2026-06-10').then(rate => console.log(`USD: ${rate} RUB`));

Пример 3: 1С:Предприятие 8.3 (стандартная обработка)

В 1С есть встроенные механизмы. Обычно используеться обработка «Загрузка курсов валют из Интернета» (входит в поставку типовых конфигураций ERP, КА, БП 3.0).

  • Адрес загрузки: https://www.cbr.ru/scripts/XML_daily;asp
  • Метод: ЧтениеXML.
  • Важно: В настройках ИБ проверить, что используется кодировка UTF-8, а при чтении XML указать кодировку «Windows-1251».

Альтернативные источники и резервные каналы

Хотя ЦБ РФ — первичный источник, для высоконагруженных систем рекомендуется иметь зеркала:

Источник Формат Особенности
cbr.ru (Официальный) Первичный источник, высокая надежность, но строгие лимиты по запросам (DDoS-защита).
cbr-xml-daily.ru JSON, JS Популярное неофициальное зеркало, CORS enabled, удобный JSON, архив по датам в URL.
bank.gov.ua / nbrb.by / api.exchangerate;host JSON Агрегаторы, тянущие данные из ЦБ РФ. Хороши для кросс-чека.
Московская биржа (MOEX ISS) JSON, CSV Рыночные курсы (торговые), отличаются от официальных ЦБ. Используются для трейдинга, не для учета.

Чек-лист для разработчика: правильная интеграция

  1. Кэширование: Не опрашивайте API ЦБ при каждом запросе пользователя. Курсы меняются 1 раз в день. Кэшируйте на 24 часа (или до 14:00 МСК следующего дня).
  2. Обработка ошибок: Реализуйте ретраи (exponential backoff) при 5xx ошибках или тайаутах.
  3. Fallback: При недоступности основного API переключайтесь на зеркало (cbr-xml-daily.ru) или используйте последнее успешно загруженное значение из БД.
  4. Валидация: Проверяйте, что дата в ответе совпадает с запрашиваемой (или является последней рабочей).
  5. Логирование: Логируйте дату запроса, источник, полученный курс USD/EUR/CNY для аудита.
  6. Тестирование на праздниках: Проверьте логику за майские/новогодние каникулы (10 дней без обновлений).

Актуальные примеры из недавней практики (Июнь 2026)

Исходя из доступных данных за июнь 2026 года, можно проследить динамику:

  • 29 мая: Курс доллара установлен на уровне 71,37 руб.
  • 2 июня: Курс евро установлен на уровне 86,24 руб. (рост на 3,61 руб. по сравнению с 30 мая — 82,63 руб.).
  • 9 июня: Рубль демонстрирует уверенный рост. Пара CNY/RUB на Мосбирже упала до 10,55.
  • 10 июня: Курс доллара установлен на уровне 71,73 руб.

Примечание: Курсы ЦБ РФ и биржевые котировки (Мосбиржа) могут отличаться. Официальный курс ЦБ используется для отчетности, биржевой — для реальных конвертаций и трейдинга.


Архивы валют ЦБ РФ — это фундаментальный ресурс для финансовой инфраструктуры страны. Грамотная работа с ними требует понимания:

  • Разницы между официальным курсом (для учета) и рыночным (для торговли).
  • Технических особенностей API: кодировки Windows-1251, внутренних кодов валют R01XXX, логики выходных дней.
  • Необходимости кэширования и наличия резервных каналов получения данных.

Использование современного JSON-интерфейса (cbr-xml-daily.ru) значительно упрощает разработку по сравнению с парсингом XML, однако для критически важных систем (банковский софт, госотчетность) рекомендуется дублировать запрос к официальному XML API ЦБ РФ для гарантии юридической значимости полученных данных.


Статья подготовлена на основе документации ЦБ РФ и практики интеграции финансовых систем. Актуально на 10 июля 2026 г.