oneapi
Autentificare
Business v1 / Firme

Stare fiscală

Starea fiscală completă (ANAF) a unei firme: TVA (normal / la încasare / split, cu perioade),
inactivare fiscală, înrolare e-factura, radiere, date de înregistrare, CAEN, organ fiscal și contact.

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

Parametri de cale

NumeTipDescriereExemplu
cuiobligatoriu string Codul de identificare fiscală al firmei, fără prefixul RO (ex. 6719278).

Parametri de interogare

Ruta nu acceptă parametri de interogare.

Cum se comportă

  • „Nu are” e un răspuns, nu o eroare. Când firma există, dar n-are ce cere ruta, răspunsul e 200 cu data: null şi motivul în meta.fara_date. 404 înseamnă doar că firma (CUI-ul) nu există — aşa poţi deosebi cele două cazuri şi poţi păstra în cache răspunsul negativ.
  • Starea fiscală de la ANAF, grupată pe teme: TVA (plătitor, la încasare, split), inactivitate fiscală, e-Factura, radiere. Sursa e API-ul oficial ANAF.
  • Istoricul modificărilor de stare fiscală e la /firme/{cui}/fiscal/istoric; declaraţiile din vectorul fiscal la /firme/{cui}/vector-fiscal.

La ce folosește

  • Decizia de a factura cu sau fără TVA, pe baza statutului oficial al partenerului.
  • Verificarea inactivităţii fiscale înainte de a deduce o cheltuială.
  • Aflarea dacă partenerul e înrolat în e-Factura, înainte de a-i trimite documente.

Structura răspunsului

CâmpTipDescriere
data.cui integer Codul fiscal.
data.tva.platitor boolean Plătitoare de TVA.
data.tva.de_la string | null De când e înregistrată în scopuri de TVA.
data.tva.pana_la string | null Până când a fost înregistrată în scopuri de TVA.
data.tva.la_incasare.activ boolean Este activ.
data.tva.la_incasare.de_la string | null De când se aplică TVA la încasare.
data.tva.la_incasare.pana_la string | null Până când s-a aplicat TVA la încasare.
data.tva.la_incasare.tip string | null Tipul.
data.tva.split.activ boolean Este activ.
data.tva.split.de_la string | null De când se aplică split TVA.
data.tva.split.anulare string | null Data anulării split TVA.
data.inactiv.este_inactiv boolean Declarată inactivă fiscal.
data.inactiv.data_inactivare string | null Data declarării inactivităţii.
data.inactiv.data_reactivare string | null Data reactivării.
data.inactiv.data_publicare string | null Data publicării în registrul contribuabililor inactivi.
data.e_factura.inrolat boolean Înrolată în e-Factura.
data.e_factura.de_la string | null De când e înrolată în e-Factura.
data.radiere.radiata boolean Firma e radiată.
data.radiere.data string | null Data radierii.
data.caen.cod string Codul.
data.caen.denumire string | null Denumirea.
data.caen.versiune string Revizia nomenclatorului.
data.organ_fiscal string | null Administraţia fiscală de care aparţine.
data.domiciliu_fiscal string | null Domiciliul fiscal, în forma publicată de ANAF.
data.contact.telefon string Telefonul din evidenţa ANAF.opțional
data.contact.fax string Faxul din evidenţa ANAF.opțional
data.verificat_anaf_la string | null Când am verificat ultima oară starea la ANAF.
meta.fara_date Doar când răspunsul e gol: de ce nu există date (de pildă „Firma nu are cod LEI înregistrat la GLEIF.”). Lipseşte când data e completat.
meta.fara_date_cod Cuvântul scurt şi STABIL al motivului, pentru clienţii care comută pe el în cod: fara_date e proză şi se poate reformula, ăsta nu.

Exemple de răspuns

GEThttps://oneapi.ro/api/business/v1/firme/6719278/fiscal
{
    "data": {
        "cui": 6719278,
        "tva": {
            "platitor": true,
            "de_la": "1995-01-04",
            "pana_la": null,
            "la_incasare": {
                "activ": false,
                "de_la": null,
                "pana_la": null,
                "tip": null
            },
            "split": {
                "activ": false,
                "de_la": null,
                "anulare": null
            }
        },
        "inactiv": {
            "este_inactiv": false,
            "data_inactivare": null,
            "data_reactivare": null,
            "data_publicare": null
        },
        "e_factura": {
            "inrolat": false,
            "de_la": null
        },
        "radiere": {
            "radiata": false,
            "data": null
        },
        "inregistrare": {
            "data": "1995-01-05",
            "stare": "TRANSFER(SOSIRE) din data 19.08.2016",
            "forma_juridica": "SOCIETATE COMERCIALĂ CU RĂSPUNDERE LIMITATĂ",
            "forma_proprietate": "PROPR.PRIVATA-CAPITAL PRIVAT STRAIN",
            "forma_organizare": "PERSOANA JURIDICA"
        },
        "cod_caen": {
            "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"
        },
        "organ_fiscal": "Direcţia Generală de Administrare a Marilor Contribuabili",
        "domiciliu_fiscal": "MUNICIPIUL BUCUREŞTI, Sector 6 Mun. Bucureşti, Bld. Timişoara, nr. 26",
        "contact": {
            "telefon": "0212246677"
        },
        "verificat_anaf_la": "2026-08-16 00: 00: 00"
    }
}

Coduri de eroare

CodSlugCând apare
401neautentificatToken lipsă, invalid, expirat sau revocat.
403feature_indisponibilPlanul curent nu include funcţia de care ţine ruta.
404negasitFirma cu CUI [{cui}] nu a fost găsită.
422validareRuta nu primeşte parametri, în afară de lang: orice alt parametru dă 422, nu e ignorat.
429cota_depasitaCota lunară a planului a fost depăşită (vezi Retry-After).

Toate erorile au aceeași formă. eroare.cod e stabil și e cel după care trebuie să ramifici în cod — nu după textul din mesaj, care se poate schimba.

{
    "eroare": {
        "cod": "validare",
        "mesaj": "Ruta nu primeşte parametri, în afară de lang: orice alt parametru dă 422, nu e ignorat.",
        "detalii": {
            "cui": [
                "Valoarea trimisă nu respectă regula parametrului."
            ]
        }
    }
}