Remediază respingerile ANAF de raport (P7B / MF / JE)
Respingerile ANAF revin prin ciclul report.generated pe înregistrarea raportului dispozitivului. Textul respingerii este setat literal de ANAF; e-bon doar îl afișează pe documentul de raport. Această rețetă arată cum să-l obții și să-l interpretezi.
status: "rejected" cu un câmp error non-gol care poartă mesajul ANAF. Cererea HTTP care a trimis raportul s-a întors de obicei 2xx — respingerea se întâmplă asincron, după ce ANAF procesează fișierul. Abonează-te la report.generated (vezi Evenimente webhook › report.generated) în loc să interoghezi periodic endpoint-ul de raport.Identifică categoria respingerii
- Semnătură invalidă pe arhiva ZIP de export (P7B) — certificatul fiscal al dispozitivului a expirat, a fost reînnoit dar noul certificat n-a fost reaplicat pe AMEF, sau ceasul sistemului pe dispozitiv este suficient de decalat încât marcajul de timp inclus în semnătură este respins.
- Nepotrivire de schemă (XML) — ANAF a strâns XSD-ul pentru
MF(Memorie Fiscală) sauJE(Jurnal Electronic), iar firmware-ul AMEF n-a fost actualizat la versiunea de schemă potrivită. Aceasta este o problemă de firmware pe dispozitiv, nu o problemă e-bon. - Transmitere duplicată pentru o zi fiscală închisă — același MF / JE pentru aceeași zi a fost trimis deja (de obicei printr-o rulare anterioară a aceluiași export). ANAF deduplică pe partea sa.
- Raport prealabil lipsă — ai trimis un MF înainte să fie acceptat JE-ul corespunzător, sau invers, acolo unde ANAF impune o ordine.
Verifică statusul raportului
Obține statusul raportului — calea depinde de tipul de raport:
# Memorie Fiscală (MF)
curl https://api.e-bon.ro/api/v1/devices/{deviceId}/reports/mf/{reportId} \
-H "Authorization: Bearer <jwt>"
# Jurnal Electronic (JE)
curl https://api.e-bon.ro/api/v1/devices/{deviceId}/reports/je/{reportId} \
-H "Authorization: Bearer <jwt>"
# Arhivă export P7B
curl https://api.e-bon.ro/api/v1/devices/{deviceId}/reports/p7b/{reportId} \
-H "Authorization: Bearer <jwt>"
Un raport respins poartă status: "rejected" și un câmp error cu textul literal de la ANAF. Verifică încrucișat listând rapoartele recente de tipul respectiv pe dispozitiv:
curl "https://api.e-bon.ro/api/v1/devices/{deviceId}/reports?type=mf&limit=20" \
-H "Authorization: Bearer <jwt>"
Aplică remedierea
Citește câmpul error literal
Nu parafraza și nu traduce mesajul ANAF înainte să-l cauți — string-urile sunt stabile și se găsesc pe portalul de documentație ANAF. Păstrează textul original în limba română.
Potrivește mesajul cu o categorie
Folosește categoriile de mai sus. Cuvintele-cheie din mesajul ANAF sunt distincte: „semnătură", „schemă", „deja transmis", „ordine".
Aplică remedierea pe categorie
Pentru semnătură invalidă, contactează tehnicianul autorizat al AMEF — e-bon nu poate reaplica un certificat fiscal de la distanță. Pentru nepotrivire de schemă, contactează producătorul imprimantei pentru un update de firmware la XSD-ul ANAF curent. Pentru transmitere duplicată, nu este nevoie de nicio acțiune — transmiterea originală există deja. Pentru raport prealabil lipsă, generează și trimite mai întâi raportul prealabil, apoi re-trimite.
Re-trimite doar după ce ai rezolvat cauza de bază
Odată ce problema este rezolvată, regenerează și re-trimite raportul. Noua transmitere este o înregistrare proaspătă de raport, cu propriul ID, nu o reîncercare a celei originale.
report.generated.Obține ajutor suplimentar
Deschide un caz de suport la support@e-bon.ro sau e-bon.ro/contact cu ID-ul raportului, textul literal al respingerii ANAF și ID-ul dispozitivului. Dacă bănuiești că este o categorie de respingere nedocumentată anterior, semnaleaz-o explicit ca să actualizăm rețeta.
Eșecuri de livrare a webhook-urilor și auto-dezactivare
Cum interpretezi `lastError`, programul de retry pe 5 încercări, auto-dezactivarea după 20 de eșecuri și cum reactivezi un webhook în siguranță.
Nepotrivire de semnătură HMAC
De ce verificarea `X-EBon-Signature` eșuează pe endpoint-ul tău — drift de ceas, secret greșit după rotație și capcane la re-serializarea body-ului.