Cuprins
40.000 de lei, apoi 90.000, apoi 160.000. Trei liste ANAF la rând, același client ipotetic. Dacă te uitai doar la ultima, aflai că firma datorează statului 160.000 de lei. Uitându-te la toate trei, afli ceva mai important: că datoria aproape se dublează de la un trimestru la altul. Prima e o situație, a doua e o traiectorie. În creditul comercial, traiectoria contează de obicei mai mult.
ANAF publică listele de restanțe trimestrial, iar fiecare listă e o fotografie. Puse cap la cap, fotografiile fac un film. API-ul Datorii ANAF ți-l dă gata montat, pentru fiecare firmă, din decembrie 2024 încoace.

Ce afli despre evoluție
Ruta GET /api/v1/fiscal/{cui}/restante, trei credite, raportează totul la cea mai nouă listă ANAF și îți dă evoluția pe trei niveluri.
Primul e comparația cu lista anterioară, în câmpul evolutie: diferența în lei (fata_de_publicarea_anterioara), în procente (procent) și direcția (directie), care poate fi crestere, scadere, stabil, noua sau iesita.
Al doilea e un rezumat al istoricului, tot în evolutie: pe câte liste a apărut firma (publicari_cu_restante), pe câte consecutiv până azi (publicari_consecutive), prima apariție (prima_aparitie) și datoria maximă, cu data ei (maxim).
Al treilea e istoricul complet, în istoric: fiecare listă pe care apare firma, cu data, total, situatie, bugete și variatie față de lista dinainte, de la cea mai nouă la cea mai veche. Cu primele două iei decizii rapide. Al treilea îți arată tiparul.
Tiparele pe care le vezi cel mai des
Creșterea constantă
Firma apare pe mai multe liste la rând, iar datoria crește la fiecare publicare. E tiparul care mă îngrijorează cel mai mult: firma nu doar că nu plătește, ci adaugă datorii noi. De multe ori crește și ponderea accesoriilor, semn că datoriile vechi rămân neatinse și strâng dobânzi și penalități.
Dintele de fierăstrău
Firma apare pe o listă, dispare de pe următoarea, reapare după un trimestru. Poate fi o firmă cu încasări sezoniere, care plătește când intră banii. Poate fi și una care plătește doar când e presată. Nu e grav în sine, dar arată o lichiditate la limită, și eu aș ține cont de asta la termenul de plată.
Saltul brusc
Firma n-a apărut niciodată pe liste și acum intră cu o sumă mare, cu direcția noua. Poate fi o decizie de impunere după un control, o sumă contestată sau începutul unei crize de bani. Structura datoriei te ajută să le deosebești. O sumă mare, contestată și formată mai ales din principal, arată mai degrabă un litigiu fiscal decât o lipsă de bani.
Scăderea spre ieșire
Datoria scade la fiecare listă, până când firma iese, cu direcția iesita. De obicei e o firmă care și-a rezolvat problema, poate printr-o eșalonare. E un semn bun, cu o singură rezervă: mai uită-te o dată, la lista următoare, să vezi că nu reapare.

Ce salvezi la fiecare listă
Pentru fiecare client, la fiecare listă nouă, salvează câteva valori. Cu ele compari clienții între ei și urmărești schimbările fără să recitești tot istoricul de fiecare dată.
| Metrică | De unde o iei | Ce îți spune |
|---|---|---|
| Total restant | total_restant | Mărimea problemei azi |
| Direcția | evolutie.directie | Încotro merge |
| Liste consecutive | evolutie.publicari_consecutive | Cât de veche e problema |
| Ponderea accesoriilor | structura.accesorii | Cât de mult a fost amânată plata |
| Ponderea contestată | structura.contestate | Cât e dispută, nu lipsă de bani |
| Bugetul asigurărilor sociale | situatia_curenta.bugete.asigurari_sociale | Dacă sunt afectate salariile |
Tiparul, recunoscut de cod
După ce ai scos din istoric șirul totalurilor, în ordinea listelor, clasifici tiparul cu câteva reguli orientative:
def tipar(serie):
# serie: totalurile restante pe listele consecutive, de la cea mai veche la cea mai nouă;
# 0 pentru listele pe care firma nu apare
if len(serie) < 2:
return "insuficient"
ultimele = serie[-3:]
if all(b > a for a, b in zip(ultimele, ultimele[1:])) and ultimele[0] > 0:
return "crestere_constanta"
if serie[-1] == 0 and serie[-2] > 0:
return "iesire"
if serie[-2] == 0 and serie[-1] > 0:
return "salt" if max(serie[:-1]) == 0 else "fierastrau"
if serie[-1] < serie[-2]:
return "scadere"
return "stabil"
print(tipar([40_000, 90_000, 160_000])) # crestere_constanta
Șirul îl construiești din istoric: iei total din fiecare element și inversezi ordinea, pentru că istoricul vine de la cea mai nouă listă la cea mai veche. Atenție aici: istoricul conține doar listele pe care apare firma. Zerourile pentru listele lipsă le pui tu, după datele listelor salvate la rulările anterioare. Altfel un dinte de fierăstrău poate arăta ca o creștere continuă.
Am ținut clasificatorul intenționat simplu. Contează mai mult să-l înțeleagă echipa financiară decât să fie sofisticat.
Ce faci cu fiecare tipar
| Tipar | Decizie sugerată |
|---|---|
| Creștere constantă | Oprești creditul nou; livrezi cu plată în avans sau cu garanție |
| Salt brusc | Ceri explicații; analizezi structura și sumele contestate |
| Dinte de fierăstrău | Termen de plată scurtat, plafon redus |
| Scădere sau ieșire | Menții condițiile; reverifici la lista următoare |
Când rulezi
Listele sunt trimestriale, deci ritmul firesc e o rulare după fiecare publicare. publicare_curenta îți spune data celei mai noi liste. O compari cu data salvată data trecută. Dacă e aceeași, n-a apărut nimic nou și n-are rost să reverifici tot portofoliul.
Dacă vrei dintr-odată firmele cu cea mai mare creștere dintr-un domeniu sau dintr-o zonă, ruta de listă, GET /api/v1/fiscal/restante, acceptă evolutie=crestere și sortare=variatie_desc, împreună cu filtrele de județ și CAEN. Costă 10 credite pe rezultat, așa că folosești filtre strânse și pagini mici. Implicit primești 20 de firme pe pagină, cel mult 50, cu pagina și pe_pagina.
Limitele
Listele cuprind doar restanțele peste pragul legal de publicare, deci un client poate avea datorii mai mici pe care nu le vezi. O restanță contestată nu e o datorie sigură până se soluționează contestația. Iar istoricul începe cu listele din decembrie 2024, așa că la unele firme șirul e încă scurt. Cazurile cu una sau două liste le tratezi separat, clasificatorul de mai sus le întoarce oricum ca „insuficient” când e o singură valoare.
Și nu uita că evoluția restanțelor e un semnal, nu o sentință. Pune-o lângă bilanț și lângă felul în care clientul te-a plătit pe tine până acum.
Câmpurile de evoluție și istoric sunt descrise pe pagina API Datorii ANAF. Cu un cont nou primești 250 de credite gratuite și nu dai niciun card. La trei credite pe firmă, urmărești peste 80 de clienți pe un trimestru.
Întrebări frecvente
De când am istoric de restanțe?
Din decembrie 2024 încoace, adică de la listele ANAF publicate de atunci.
Ce înseamnă direcția „noua”?
Că firma nu era pe lista anterioară și a intrat pe cea curentă.
Cât de des să mă uit la restanțele unui client?
O dată pe trimestru, după ce apare o listă ANAF nouă. Data ei e în câmpul publicare_curenta.
Pot scoate firmele dintr-un județ la care datoria crește cel mai repede?
Da, cu ruta de listă, filtrul judet, evolutie=crestere și sortare=variatie_desc. Costă 10 credite pe rezultat.



