Clienți și verificarea CUI la ANAF

Inserare sau actualizare (upsert) deduplicată pe tax_id și căutare în registrul ANAF, ca e-Factura să nu fie respinsă.

Inserare sau actualizare (upsert) deduplicată pe tax_id și căutare în registrul ANAF, ca e-Factura să nu fie respinsă.

← Înapoi la documentația API

Prima factură în 6 pași

  1. POST /v1/clients creează sau actualizează un client, deduplicat pe tax_id și, în lipsa lui, pe numele normalizat.
  2. GET /v1/clients listează clienții cu limit, offset și căutare liberă prin q.
  3. GET /v1/lookup/company/{tax_id} validează un CUI în registrul ANAF și întoarce datele oficiale.
  4. Prepopulează buyer din rezultatul lookup-ului, ca e-Factura să nu fie respinsă pentru un nume sau o adresă învechită.

Toate endpoint-urile

MetodăEndpointScopeIdempotency-KeyCereri / minut
GET/clients
Listează clienții
clients:read—120
POST/clients
Creează sau actualizează un client
clients:write—30
GET/lookup/company/{tax_id}
Validează un CUI în registrul ANAF
clients:read—120

Ce este API-ul 4invoices

bash
# Deduplicat după tax_id, iar în lipsa lui după un nume normalizat:
# retrimiterea aceluiași client O ACTUALIZEAZĂ, în loc să creeze un duplicat.
curl -sS -X POST https://api.4invoices.net/v1/clients \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{
    "name": "Exemplu Comert SRL",
    "tax_id": "RO12345678",
    "email": "[email protected]",
    "country": "RO",
    "county": "Cluj",
    "city": "Cluj-Napoca",
    "address": "Str. Fabricii 12",
    "iban": "RO49AAAA1B31007593840000"
  }'
bash
curl -sS https://api.4invoices.net/v1/lookup/company/RO12345678 \
  -H "Authorization: Bearer $ACCESS_TOKEN"

# Date oficiale din registrul ANAF — folosește-le ca să completezi "buyer", ca
# e-Factura să nu fie respinsă din cauza unui nume sau al unei adrese vechi.

https://api.4invoices.net/v1 · https://api.4invoices.net/v1/openapi.json

Greșeli frecvente

  • Nu ai nevoie de un client salvat ca să emiți: obiectul buyer poate fi trimis inline pe POST /invoices.
  • Pentru cumpărători din România, county trebuie să fie județul real; pentru București pui sectorul în city.
  • tax_id se acceptă cu sau fără prefixul de țară (RO12345678 sau 12345678).
  • Retrimiterea aceluiași client actualizează înregistrarea, deci un import repetat nu produce duplicate.

Întrebări frecvente de la dezvoltatori

Ce scope îmi trebuie pentru lookup-ul ANAF?

clients:read. Scrierea clienților cere clients:write.

Pot importa mii de clienți dintr-un sistem vechi?

Da, dar respectă bucketul de scrieri de 30 pe minut. Fă importul în batch-uri cu backoff pe 429.

Ce se întâmplă dacă CUI-ul nu există în registru?

Lookup-ul întoarce 404 not_found. Poți emite oricum cu datele tale, dar riști o respingere CIUS-RO la depunere.