oneapi
Sign in
Business v1 / Firme

VAT status

The company's VAT standing, with the three things people conflate: VAT registered, VAT on collection, and tax inactivity. Each with the date it applies from.

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

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

  • "Has none" is an answer, not an error. When the company exists but has nothing the route asks for, the response is 200 with data: null and the reason in meta.fara_date. 404 only means the company (tax ID) does not exist — that way you can tell the two apart and cache the negative answer.
  • The strictly-VAT slice: whether the company is a payer, since when, whether it is cash-basis, in split or inactive. Convenient when you only care about VAT, without the rest of the tax status.

What it is for

  • A short call in the invoicing flow, when only VAT matters.
  • Quickly validating a VAT number at the till or in checkout.
  • Flagging cash-accounting VAT customers in a CRM, since their payment terms differ.

Response structure

FieldTypeDescription
data.cui integer The tax ID.
data.platitor boolean VAT-registered.
data.de_la string Since when the situation is valid.
data.pana_la string | null Until when the situation is valid.
data.la_incasare.activ boolean Is active.
data.la_incasare.de_la string | null Since when VAT on collection applies.
data.la_incasare.pana_la string | null Until when VAT on collection applied.
data.split.activ boolean Is active.
data.split.de_la string | null Since when split VAT applies.
data.split.anulare string | null The date split VAT was cancelled.
meta.fara_date Only when the response is empty: why there is no data (for instance "Firma nu are cod LEI înregistrat la GLEIF."). Absent when data is filled in.
meta.fara_date_cod The short, STABLE word for the reason, for clients that branch on it in code: fara_date is prose and may be rephrased, this is not.

Response examples

GEThttps://oneapi.ro/api/business/v1/firme/6719278/tva
{
    "data": {
        "cui": 6719278,
        "platitor": true,
        "de_la": "1995-01-04",
        "pana_la": null,
        "la_incasare": {
            "activ": false,
            "de_la": null,
            "pana_la": null
        },
        "split": {
            "activ": false,
            "de_la": null,
            "anulare": null
        }
    }
}

Error codes

CodeSlugWhen it occurs
401neautentificatToken missing, invalid, expired or revoked.
403feature_indisponibilThe current plan does not include the feature the route depends on.
404negasitThe company with tax ID [{cui}] was not found.
422validareThe route takes no parameters apart from lang: any other parameter returns 422 instead of being ignored.
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": "The route takes no parameters apart from lang: any other parameter returns 422 instead of being ignored.",
        "detalii": {
            "cui": [
                "The value sent does not satisfy the parameter rule."
            ]
        }
    }
}