oneapi
Sign in
Financiar v1 / Registre

Payment institutions

The register of payment institutions authorised by the NBR, in a usable form: the type separated from the status, each agent's parent institution, and the services parsed.

The register mixes institutions with their agents, and the difference is an order of magnitude. Only one record in ten is a payment institution; the rest are agents: merchants providing payment services on behalf of an institution. Anyone counting the rows as institutions is wrong tenfold. meta.numaratoare gives the breakdown by type and status, computed on the whole register, whatever filters were requested.

Over two thirds are struck off, almost all of them agents. A list without the status in plain sight would look like a market several times bigger than it is.

The agent → institution link exists, but not in a field. It is encoded in the registration number: IP-RO-0006-A-RO-051 is agent 51 of institution IP-RO-0006. Without it, you have a list of agents without knowing whose they are. institutie_mama extracts it — and it is derived from the structure of the number, not a field published by the NBR. If the format changes, the field is null, not guessed.

The services stay as codes. servicii is the list of points from the annex to Law 209/2019 — ["a","b","c1","c3","f"] — parsed but untranslated: subpoints reconstructed from memory would produce wrong legal names, and a wrong legal name is worse than a code.

They are not banks and they do not issue Romanian IBANs. That is why they do not sit in /banci: put into the same list, they would break exactly the distinction /validare/iban makes with nu_e_institutie_de_credit.

Almost all have a tax id, so they can be joined to the trade register. cui also accepts the form with the country prefix, as it appears on an invoice.

GET
https://oneapi.ro/api/financiar/v1/institutii-plata

Query parameters

NameTypeDescriptionAccepted values
tipoptional string | null Optional: institutie or agent. Without it both come back — but meta.numaratoare says how many of each. institutieagent
stareoptional string | null Optional: activa or radiata. A record with no declared status would appear under neither filter; meta.numaratoare counts them under fara_stare. activaradiata
institutieoptional string | null Optional, the institution number (IP-RO-0006). Returns the institution AND its agents. max 32 car.
cuioptional string | null Optional. With or without the RO prefix. e.g. 6719278
cautaoptional string | null Optional, 2–64 characters. Searches name, address, notes and number. max 64 car.
paginaoptional integer | null Optional, defaults to 1. 1
per_paginaoptional integer | null Optional, defaults to 50, maximum 200. 1

How it behaves

  • The register of payment institutions authorised by the NBR, in usable form: type separated from status, each agent's parent institution, and the services parsed.
  • The register mixes institutions with their agents, and the difference is an order of magnitude. Only one record in ten is a payment institution; the rest are agents: merchants providing payment services on an institution's behalf. Anyone counting rows as institutions is wrong by tenfold.
  • meta.numaratoare gives the breakdown by type and status, computed over the whole register, not over the filtered result: it is what protects the figure, so it must not depend on the request.
  • Over two thirds are struck off, almost all of them agents. A list without status in plain sight would look like a market several times larger than it is.
  • The agent → institution link exists, but not in a field. It is encoded in the registration number: IP-RO-0006-A-RO-051 is agent 51 of institution IP-RO-0006. Without it you have a list of agents and no idea whose they are. institutie_mama extracts it — and it is derived from the number's structure, not published by the NBR as a field. If the format changes, the field is null, not guessed.
  • The services stay as codes. servicii is the list of points from the annex to Law 209/2019 — ["a","b","c1","c3","f"] — parsed but untranslated: sub-points reconstructed from memory would produce wrong legal names, and a wrong legal name is worse than a code.
  • They are not banks and do not issue Romanian IBANs. That is why they are not in /banci: placed in the same list, they would break exactly the distinction /validare/iban makes with nu_e_institutie_de_credit.
  • Almost all carry a tax ID, so they can be linked to the trade register. cui accepts the country-prefixed form too, as it appears on an invoice.
  • Diacritics are missing at the source in about one record in five — ? instead of ș/ț; meta.nota_diacritice gives the exact count. A search for a word with diacritics may find nothing. We do not repair the text by guessing.
  • The raw form, with NBR codes and untranslated values, is at /registre/1928.
  • pagina and per_pagina are validated; above 200 they are clamped to 200, and meta.paginare reports the effective value.

What it is for

  • How many payment institutions are actually authorised in Romania.
  • Checking a payment service provider before contracting.
  • A given institution's agents, with each one's status.

Response structure

FieldTypeDescription
data.filtre[] string[] The filters actually applied, as the route understood them — useful when a value was normalised.
data.entitati[] object[]
meta.sursa string The official source the data comes from, with its licence where one is required.
meta.numaratoare object The breakdown by type and status of the WHOLE register, independent of filters.
meta.acoperire string How much the data we hold covers, compared to what the source publishes.
meta.paginare.pagina integer Current page, counted from 1.
meta.paginare.per_pagina integer How many records a page holds.
meta.paginare.total string Total matching records, beyond the current page.
meta.paginare.pagini integer How many pages the list has.
meta.nota_numaratoare string Cifrele se citesc din numaratoare, nu se scriu de mână: până pe 15 sep nota spunea „18
instituţii (13 active) şi 175 de agenţi" când registrul ajunsese la 19 (15) şi 180.
meta.nota_institutie_mama string A note on how to read the response: a caveat, a convention or a limit of the source.
meta.nota_servicii string A note on how to read the response: a caveat, a convention or a limit of the source.
meta.nota_iban string A note on how to read the response: a caveat, a convention or a limit of the source.
meta.nota_diacritice string A note on how to read the response: a caveat, a convention or a limit of the source.
meta.forma_bruta string
data.entitati[].numar string The register number. For agents, it also carries the parent institution's number.
data.entitati[].tip string institutie or agent. null if the source writes something other than the two known values.
data.entitati[].tip_sursa string What the source writes, untranslated — for the case where a new value appears.
data.entitati[].stare string activa, radiata, or null when the source does not state it.
data.entitati[].institutie_mama string The number of the institution whose agent this is. null for institutions and when the number does not match the expected format.
data.entitati[].servicii array Codes of the authorised services, from the annex to Law 209/2019. Untranslated.
data.entitati[].cui string The tax identification code, without the country prefix. null for the few without one.
data.entitati[].cod_lei null The legal entity identifier. Few records carry it.
data.entitati[].data string The date of registration.

Response examples

GEThttps://oneapi.ro/api/financiar/v1/institutii-plata?per_pagina=3
{
    "data": {
        "filtre": [],
        "entitati": [
            {
                "numar": "IP-RO-0018-A-RO-001",
                "denumire": "PAYPOINT SERVICES S.R.L.",
                "tip": "agent",
                "tip_sursa": "Agent",
                "stare": "activa",
                "institutie_mama": "IP-RO-0018",
                "cui": "21307815",
                "numar_onrc": "J2007004785401",
                "cod_lei": null,
                "adresa": "P-ta Charles de Gaulle, Nr. 15, Etaj 4, BUCURESTI, sector 1, cod postal 011857 Romania",
                "servicii": [
                    "e2",
                    "f"
                ],
                "observatii": "serviciile de plata sunt furnizate in numele si pe seama NETOPIA FINANCIAL SERVICES S.A.",
                "data": "2026-09-11"
            }
        ]
    },
    "meta": {
        "sursa": "BNR — Registrul instituţiilor de plată (baza de date interactivă, clasa 1928).",
        "numaratoare": {
            "total": 199,
            "institutie": {
                "total": 19,
                "activa": 15,
                "radiata": 4,
                "fara_stare": 0
            },
            "agent": {
                "total": 180,
                "activa": 42,
                "radiata": 138,
                "fara_stare": 0
            },
            "fara_tip": 0
        },
        "acoperire": {
            "de_la": "2010-06-25",
            "pana_la": "2026-09-11"
        },
        "paginare": {
            "pagina": 1,
            "per_pagina": 3,
            "total": 199,
            "pagini": 67
        },
        "nota_numaratoare": "Registrul amestecă instituţiile cu agenţii lor: 19 instituţii (15 active) şi 180 de agenţi. `numaratoare` e calculată pe registrul ÎNTREG, nu pe rezultatul filtrat — ea apără cifra, deci nu depinde de cerere.",
        "nota_institutie_mama": "`institutie_mama` e DEDUSĂ din structura numărului de înregistrare (`IP-RO-0006-A-RO-051` → `IP-RO-0006`), nu publicată de BNR ca un câmp. Dacă formatul se schimbă, câmpul e `null`.",
        "nota_servicii": "`servicii` sunt codurile din anexa Legii 209/2019, parsate dar netraduse. Nu le transformăm în denumiri: o denumire legală greşită e mai rea decât un cod.",
        "nota_iban": "Instituţiile de plată NU sunt instituţii de credit şi nu emit IBAN-uri româneşti. Registrul băncilor e la /financiar/v1/banci.",
        "nota_diacritice": "Sursa publică `?` în loc de `ş`/`ţ` la 40 din 199 înregistrări. O căutare după un cuvânt cu diacritice poate să nu găsească nimic. Nu reparăm textul prin ghicit.",
        "forma_bruta": "/financiar/v1/registre/1928"
    }
}

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 type or status outside the lists, a malformed tax ID, or cauta under two characters.
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 type or status outside the lists, a malformed tax ID, or cauta under two characters.",
        "detalii": {
            "tip": [
                "The value sent does not satisfy the parameter rule."
            ]
        }
    }
}