API curs valutar BNR

Gratuit, fără cheie de acces, JSON, CORS activat. Datele provin din feed-ul XML oficial BNR, cu istoric din 2005, și se actualizează în fiecare zi bancară, în jurul orei 13:00.

Pe scurt

  • GET toate endpoint-urile sunt read-only, fără autentificare;
  • CORS Access-Control-Allow-Origin: * — apelabil direct din browser;
  • JSON răspunsuri UTF-8; cursurile sunt string-uri zecimale (precizie 4 zecimale, ca în comunicatul BNR);
  • datele se schimbă o singură dată pe zi bancară — vă rugăm să folosiți cache local (răspunsurile trimit Cache-Control);
  • atribuirea printr-un link către cupiu.ro este apreciată, nu obligatorie.

Cursurile unei zile

GET/api/rates/ — toate cursurile celei mai recente zile bancare (sau ale unei date anume).

  • date — opțional, format YYYY-MM-DD;
  • currency — opțional, un singur cod ISO (ex. EUR).
{ "date": "2026-07-17", "rates": [ { "currency": "EUR", "name": "Euro", "rate": "5.2429", "multiplier": 1 } ] }

Serii istorice: zilnic, săptămânal, lunar, anual

GET/api/history/ — seria unei valute. Agregatele includ media, minimul și maximul perioadei (utile pentru curs mediu lunar/anual la contabilitate).

  • currency — obligatoriu (ex. EUR);
  • intervaldaily (implicit), weekly, monthly, yearly;
  • from, to — opționale, YYYY-MM-DD. Fără interval explicit, seria zilnică se limitează la ultimul an; agregatele acoperă tot istoricul.
{ "currency": "EUR", "interval": "monthly", "count": 258, "series": [ { "period": "2026-07", "average": "5.2384", "min": "5.2317", "max": "5.2456", "days": 13 } ] }

Valutele disponibile

GET/api/currencies/ — cele 40 de valute din feed-ul BNR, cu intervalul de date acoperit de fiecare.

Cursurile băncilor comerciale

GET/api/banks/ — băncile urmărite (13 active). GET/api/bank-rates/ — cursurile curente de vânzare/cumpărare, cu marja fiecărei bănci și referința BNR alături.

  • currency — opțional, implicit EUR;
  • bank — opțional, slug-ul unei bănci din /api/banks/.
{ "currency": "EUR", "bnr_reference": "5.2429", "count": 10, "rates": [ { "bank": "Banca Transilvania", "slug": "banca-transilvania", "buy": "5.1600", "sell": "5.3250", "spread": "0.1650", "quoted_at": "2026-07-17T13:21:00+03:00", "checked_at": "2026-07-17T14:25:01+03:00" } ] }

Conversii la cursul oficial

GET/api/convert/ — conversie între orice două valute (prin RON), inclusiv la cursul unei date din trecut — utilă pentru facturi și deconturi (Art. 290 Cod Fiscal). Pentru zilele nelucrătoare se aplică automat ultimul curs comunicat.

  • amount, from, to — obligatorii (ex. 100, EUR, RON);
  • date — opțional, YYYY-MM-DD.
{ "amount": "100", "from": "EUR", "to": "RON", "date": "2026-07-17", "rate": "5.242900", "result": "524.2900" }

Erori, stabilitate și utilizare corectă

  • erorile vin ca JSON cu status potrivit: 400 parametri invalizi, 404 date inexistente, 405 altă metodă decât GET;
  • formatul răspunsurilor este stabil: câmpurile existente nu se redenumesc și nu dispar; pot apărea doar câmpuri noi;
  • fără limită strictă de apeluri, dar rugăm aplicațiile cu trafic mare să folosească cache (datele se schimbă o dată pe zi) — pentru descărcări în masă există datele deschise (CSV/JSON);
  • specificația mașină-citibilă: OpenAPI 3 (openapi.json) — importabilă direct în Postman;
  • întrebări sau nevoi speciale: contact.

English summary

Free JSON API for the official Romanian National Bank (BNR) exchange rates — no API key, CORS enabled (Access-Control-Allow-Origin: *), data since 2005, updated every banking day around 13:00 EET. Endpoints: /api/rates/ (daily rates, optional date and currency), /api/history/ (per-currency series with daily|weekly|monthly|yearly aggregation), /api/currencies/, /api/banks/ and /api/bank-rates/ (commercial banks' buy/sell rates), /api/convert/ (conversion at the official rate, including historical dates). Rates are decimal strings, RON-based. Attribution with a link to cupiu.ro is appreciated. Bulk downloads: open data (CSV/JSON).

Datele sunt preluate din comunicatul oficial BNR și au caracter informativ — vezi metodologia. Vezi și widget-ul gratuit dacă vrei cursul direct pe site-ul tău, fără cod.