oneapi
Sign in
Financiar v1 / Calendar

Where TARGET2 differs from the Romanian calendar

The days on which the two calendars contradict each other, in both directions. The dangerous one is „TARGET2 closed, Romania working": a euro payment scheduled then does not settle, even though it is a normal working day in Romania.

GET
https://oneapi.ro/api/financiar/v1/target2/divergente

Query parameters

NameTypeDescriptionAccepted values
anoptional integer | null Optional: the year, YYYY (1999–2100 — TARGET started in 1999). Without it, the current year. 1990 – 2100

How it behaves

  • The days on which the TARGET2 calendar and the Romanian one do not agree, in BOTH directions.
  • A separate route from /target2?an= for a structural reason: the TARGET2 closing list contains only days on which TARGET2 is closed. The reverse days — Romania closed, TARGET2 open — do not appear there at all, because they are not TARGET2 days. Put together, the list would have come out asymmetric.
  • The dangerous direction is "TARGET2 closed, Romania working". A euro payment scheduled then does not settle, even though it is an ordinary working day in Romania. There are few such days per year, but all fall around Easter, where the gap between the Gregorian and Orthodox calendars is widest — in 2027 they are more than five weeks apart.
  • The reverse direction — Romania closed, TARGET2 open — is less costly: European settlement works, but nobody is working in Romania. There are more such days, because Romania has holidays the Eurosystem does not keep: Epiphany, Children's Day, St. Andrew's Day, the National Day.
  • meta counts the two directions separately, precisely because their effects have nothing in common.
  • Weekends do not appear: they are non-working in both calendars, so they cannot diverge.

What it is for

  • Avoiding scheduling a euro payment on a day when settlement does not work.
  • Treasury planning around Easter.

Response structure

FieldTypeDescription
data.an integer The year the data refers to.
data.divergente[].data string
data.divergente[].zi_saptamana string Day of the week, with 1 = Monday.
data.divergente[].target2 string inchis or deschis on that day.
data.divergente[].romania string lucratoare or nelucratoare under Romanian law.
data.divergente[].motiv string The holiday causing the difference, from whichever calendar is closed.
meta.divergente integer
meta.target2_inchis_romania_lucreaza integer The number of days in the dangerous direction.
meta.romania_inchisa_target2_deschis integer The number of days in the reverse direction.
meta.temei string The legal basis for the values or for the way they are computed.
meta.nota string A note on how to read the response — a pitfall, a convention or a limit of the source.

Response examples

GEThttps://oneapi.ro/api/financiar/v1/target2/divergente
{
    "data": {
        "an": 2026,
        "divergente": [
            {
                "data": "2026-01-02",
                "zi_saptamana": "vineri",
                "target2": "deschis",
                "romania": "nelucratoare",
                "motiv": "Anul Nou"
            }
        ]
    },
    "meta": {
        "divergente": 10,
        "target2_inchis_romania_lucreaza": 2,
        "romania_inchisa_target2_deschis": 8,
        "temei": "calendarul TARGET2 (Paştele gregorian) faţă de art. 139 Codul Muncii (Paştele ortodox).",
        "nota": "Sensul „TARGET2 închis, România lucrează\" e cel care produce pagube: plăţile în euro nu se decontează, deşi în România e zi lucrătoare. Sunt puţine zile pe an, dar toate cad în perioada Paştelui, când diferenţa dintre calendarul gregorian şi cel ortodox e maximă. Sensul invers e mai puţin costisitor: decontarea europeană funcţionează, dar în România nu se lucrează."
    }
}

Error codes

CodeSlugWhen it occurs
401neautentificatToken missing, invalid, expired or revoked.
403feature_indisponibilThe current plan does not include the feature the route depends on.
422validareA year outside 1990–2100, or an_inainte_de_target2 for a year before 1999, when TARGET did not exist.
429cota_depasitaThe plan's monthly quota has been exceeded (see Retry-After).

All errors share the same shape. eroare.cod is stable and is the value you should branch on in code — not the text in mesaj, which may change.

{
    "eroare": {
        "cod": "validare",
        "mesaj": "A year outside 1990–2100, or an_inainte_de_target2 for a year before 1999, when TARGET did not exist.",
        "detalii": {
            "an": [
                "The value sent does not satisfy the parameter rule."
            ]
        }
    }
}