Inserare sau actualizare (upsert) deduplicată pe tax_id și căutare în registrul ANAF, ca e-Factura să nu fie respinsă.
Prima factură în 6 pași
- POST /v1/clients creează sau actualizează un client, deduplicat pe tax_id și, în lipsa lui, pe numele normalizat.
- GET /v1/clients listează clienții cu limit, offset și căutare liberă prin q.
- GET /v1/lookup/company/{tax_id} validează un CUI în registrul ANAF și întoarce datele oficiale.
- Prepopulează buyer din rezultatul lookup-ului, ca e-Factura să nu fie respinsă pentru un nume sau o adresă învechită.
Toate endpoint-urile
| Metodă | Endpoint | Scope | Idempotency-Key | Cereri / 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.