oneapi
Sign in
Business v1 / Firme

Company profile

The synthetic profile of a company by tax id: ONRC identity, legal form, status, main NACE code, tax status (VAT / inactive / e-invoicing), the registered office in both forms — RAW (ONRC) and RESOLVED (Locations: SIRUTA, unit, county, region, NUTS, population) — plus a summary of the sub-resources available.

GET
https://oneapi.ro/api/business/v1/firme/{cui}

Path parameters

NameTypeDescriptionExample
cuirequired string The company tax identification number, without the RO prefix (e.g. 6719278).

Query parameters

This route accepts no query parameters.

How it behaves

  • The unified profile of a company, keyed on its tax ID (CUI). It brings together the ONRC identity (name, legal form, headquarters, status, incorporation date), the ANAF tax status (VAT payer, inactivity) and the primary CAEN code.
  • The primary CAEN code comes from the tax status (ANAF), not from the list of authorised activities. In the registry the ONRC "primary activity" field is empty for every company, so the source of truth for the current CAEN is the tax vector. Coverage is ~97%.
  • The headquarters is served in two forms: sediu.raw (the raw text from ONRC) and sediu.rezolvat (resolved through the Locations module to county, locality and, where possible, street). Resolution covers 99.9% of companies at the locality level.
  • Individual slices have dedicated routes: /firme/{cui}/fiscal, /financiar, /activitati, /persoane, /achizitii, /contact, /locatie. The full profile (all slices in one call) is at /firme/{cui}/profil-complet.

What it is for

  • Autofilling company data at invoicing or when onboarding a business customer.
  • A quick check of status and VAT registration before a transaction.
  • Enriching a customer base with official data, starting from the tax ID.

Response structure

All fields below live inside data.

FieldTypeDescription
cui integer The tax ID.
denumire string | null The name.
cod_inmatriculare string | null The trade register order number (J…).
euid string | null The European Unique Identifier of the company.
forma_juridica string | null Legal form (SRL, SA, PFA…).
stare string | null The company status, as an object: denumire is the raw ONRC text (107 distinct values in use), categorie is our classification into 7 buckets — activa, suspendata, dizolvata, lichidare, radiata, insolventa, alta — which is what you filter or group by. cod is the ONRC code of the status.
data_inmatriculare string | null The trade register incorporation date.
sediu object Object with the raw headquarters (raw) and the one resolved through Locations (rezolvat).
sediu.raw[] string | integer The registered office address as the source writes it, field by field; empty keys are omitted.
sediu.rezolvat.localitate_id integer The internal locality id in Locations.
sediu.rezolvat.localitate string The locality.
sediu.rezolvat.cod_siruta integer | null The locality SIRUTA code — chainable to /api/locations/v1.
sediu.rezolvat.uat string | null The administrative-territorial unit.
sediu.rezolvat.judet string | null The county.
sediu.rezolvat.regiune string | null The development region.
sediu.rezolvat.cod_nuts string | null The NUTS code of the territorial unit.
sediu.rezolvat.populatie integer | null The locality population (census).
sediu.rezolvat.strada_id integer | null The street id in Locations — chainable to /api/locations/v1/strazi/{id}.
sediu.rezolvat.strada string | null The street.
sediu.rezolvat.potrivire[] string How confident the link to the register is, for locality and for street.
sediu.rezolvat.coordonate.lat number Latitude of the point (WGS84, 6 decimals ≈ 11 cm).
sediu.rezolvat.coordonate.lng number Longitude of the point (WGS84).
sediu.rezolvat.coordonate.precizie string ⚠️ How fine the point is, in four steps that are NOT interchangeable: numar (the OSM address point, matched exactly on the house number in the register — 1,308,114 companies), numar_aproximativ (the same kind of point, matched only on the integer part: "4A" placed at "4" — 115,040 companies), strada (street centroid) and localitate (the rest). Only drop a pin for the first two; a pin on strada claims a precision we do not have.
caen_principal object The primary CAEN code, from the tax status. null where ANAF does not publish it.
caen_principal.cod string The primary CAEN code.
caen_principal.denumire string | null The name of the primary activity.
caen_principal.versiune string The CAEN revision the code is expressed in.
fiscal.platitor_tva boolean VAT-registered as of the last sync.
fiscal.tva_la_incasare boolean Applies VAT on collection.
fiscal.split_tva boolean Applies split VAT.
fiscal.inactiv_fiscal boolean Declared fiscally inactive.
fiscal.e_factura boolean Enrolled in e-Invoicing.
fiscal.radiata boolean The company is struck off.
prezente[] mixed Which other datasets the company appears in (financials, procurement, registers…).
tva VAT payer as of the last ANAF sync.

Response examples

GEThttps://oneapi.ro/api/business/v1/firme/6719278
{
    "data": {
        "cui": 6719278,
        "denumire": "MEGA IMAGE SRL",
        "cod_inmatriculare": "J1994027872407",
        "euid": "ROONRC.J1994027872407",
        "forma_juridica": "SRL",
        "stare": {
            "cod": "1048",
            "denumire": "funcțiune",
            "categorie": "activa"
        },
        "data_inmatriculare": "1994-12-27",
        "sediu": {
            "raw": {
                "judet": "Bucureşti",
                "localitate": "Bucureşti Sectorul 6",
                "strada": "Timişoara",
                "numar": "26",
                "etaj": "2",
                "sector": 6,
                "cod_postal": "61331"
            },
            "rezolvat": {
                "localitate_id": 13755,
                "localitate": "București Sectorul 6",
                "cod_siruta": 179196,
                "uat": "București",
                "judet": "București",
                "regiune": "București-Ilfov",
                "cod_nuts": "RO321",
                "populatie": 324994,
                "strada_id": 221585,
                "strada": "Timișoara",
                "potrivire": {
                    "loc": "exact",
                    "str": "exact"
                },
                "coordonate": {
                    "lat": 44.428876,
                    "lng": 26.036041,
                    "precizie": "numar"
                }
            }
        },
        "caen_principal": {
            "cod": "4711",
            "denumire": "Comerț cu amănuntul în magazine nespecializate, cu vânzare predominantă de produse alimentare, băuturi și tutun",
            "versiune": "CAEN Rev.2"
        },
        "fiscal": {
            "platitor_tva": true,
            "tva_la_incasare": false,
            "split_tva": false,
            "inactiv_fiscal": false,
            "e_factura": false,
            "radiata": false
        },
        "prezente": {
            "nr_persoane": 5,
            "ani_financiar": [
                2008,
                2009,
                2010,
                2011,
                2012,
                2013,
                2014,
                2015,
                2016,
                2017,
                2018,
                2019,
                2020,
                2021,
                2022,
                2023,
                2024,
                2025
            ],
            "nr_achizitii": 776,
            "registre": [
                "anaf_datorii",
                "anpm_eee",
                "ansvsa",
                "contribuabili",
                "mcpds_sponsorizari"
            ]
        }
    }
}

Error codes

CodeSlugWhen it occurs
401neautentificatToken missing, invalid, expired or revoked.
403feature_indisponibilThe current plan does not include the feature the route depends on.
404negasitTax ID not found in the registry. The error code is negasit.
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": "negasit",
        "mesaj": "Tax ID not found in the registry. The error code is negasit."
    }
}