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
200withdata: nulland the reason inmeta.fara_date.404only 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
}
}
}
GEThttps://oneapi.ro/api/business/v1/firme/14399840/tva
{
"data": {
"cui": 14399840,
"platitor": true,
"de_la": "2002-02-01",
"pana_la": null,
"la_incasare": {
"activ": false,
"de_la": null,
"pana_la": null
},
"split": {
"activ": false,
"de_la": null,
"anulare": null
}
}
}
GEThttps://oneapi.ro/api/business/v1/firme/2054341/tva
{
"data": {
"cui": 2054341,
"platitor": true,
"de_la": "1993-07-01",
"pana_la": "2025-05-13",
"la_incasare": {
"activ": false,
"de_la": null,
"pana_la": null
},
"split": {
"activ": false,
"de_la": null,
"anulare": null
}
}
}
GEThttps://oneapi.ro/api/business/v1/firme/24890577/tva
{
"data": {
"cui": 24890577,
"platitor": true,
"de_la": "2009-01-06",
"pana_la": null,
"la_incasare": {
"activ": false,
"de_la": null,
"pana_la": null
},
"split": {
"activ": false,
"de_la": null,
"anulare": null
}
}
}
Error codes
| Code | Slug | When it occurs |
|---|---|---|
| 401 | neautentificat | Token missing, invalid, expired or revoked. |
| 403 | feature_indisponibil | The current plan does not include the feature the route depends on. |
| 404 | negasit | The company with tax ID [{cui}] was not found. |
| 422 | validare | The route takes no parameters apart from lang: any other parameter returns 422 instead of being ignored. |
| 429 | cota_depasita | The 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."
]
}
}
}