Rapoarte
Rapoarte
API-ul de rapoarte stochează și returnează cele patru tipuri de rapoarte fiscale produse de o integrare AMEF: rapoarte X (totaluri curente zilnice, fără resetare), rapoarte Z (închidere de zi, resetează contoarele), rapoarte JE (Jurnal Electronic — XML-ul cerut de ANAF) și rapoarte MF (arhivă Memorie Fiscală). Toate rutele sunt sub /api/v1/reports.
Fiecare endpoint din acest grup necesită scope-ul reports și acceptă fie o cheie API (x-api-key / Authorization: Bearer …), fie un JWT din Portal. Vezi Autentificare › Alege permisiunile pentru catalogul complet.
Plicul de eroare, limitele de rată și convențiile de paginare sunt documentate o singură dată pe Prezentarea API-ului; pe această pagină listăm doar codurile de eroare specifice fiecărui endpoint.
GET /reports/x, /z, /je, /mf) folosesc o fereastră bazată doar pe limit (cele mai noi primele, după timestamp / reportDate / archiveDate) — nu folosesc paginarea prin cursor de la Bonuri. Folosește filtrele de interval (from, to) ca să parcurgi istoricul.Rapoarte X
Rapoartele X sunt instantanee fără resetare ale totalurilor curente de pe un dispozitiv. Nu modifică contoarele și pot fi emise de oricâte ori în cursul unei zile fiscale.
GET /api/v1/reports/x
Listează rapoartele X ale organizației, cele mai noi primele, după timestamp.
- Scope auth:
reports
Parametri query
| Parametru | Tip | Implicit | Note |
|---|---|---|---|
deviceId | string | — | Filtrează după dispozitiv. |
from | string | — | Timestamp ISO 8601; rapoarte cu timestamp >= from. |
to | string | — | Timestamp ISO 8601; rapoarte cu timestamp <= to. |
limit | integer | 50 | 1–100. |
Răspuns (200 OK)
{
"reports": [
{
"id": "xrep_abc123",
"deviceId": "dev_pos_01",
"totals": { "sales": 1240.5, "refunds": 0, "net": 1240.5 },
"vatBreakdown": [{ "rate": 9, "base": 1138.07, "amount": 102.43 }],
"receiptCount": 42,
"timestamp": "2026-04-09T14:00:00.000Z",
"orgId": "acme_corp",
"createdAt": "2026-04-09T14:00:01.123Z"
}
]
}
Exemplu
curl "https://api.e-bon.ro/api/v1/reports/x?deviceId=dev_pos_01&limit=20" \
-H "x-api-key: ebon_live_acme_corp_a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6"
Coduri de eroare
VALIDATION_ERROR(400) — query invalid (de ex.limit > 100).UNAUTHORIZED/FORBIDDEN— vezi Autentificare › Tratează erorile de autentificare.
GET /api/v1/reports/x/{reportId}
Returnează un singur raport X după ID.
- Scope auth:
reports
Răspuns (200 OK)
{
"report": {
"id": "xrep_abc123",
"deviceId": "dev_pos_01",
"totals": { "sales": 1240.5, "refunds": 0, "net": 1240.5 },
"vatBreakdown": [{ "rate": 9, "base": 1138.07, "amount": 102.43 }],
"receiptCount": 42,
"timestamp": "2026-04-09T14:00:00.000Z",
"orgId": "acme_corp",
"createdAt": "2026-04-09T14:00:01.123Z"
}
}
Exemplu
curl https://api.e-bon.ro/api/v1/reports/x/xrep_abc123 \
-H "x-api-key: ebon_live_acme_corp_a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6"
Coduri de eroare
NOT_FOUND(404) — nu există un raport X cu acel ID în organizația ta.UNAUTHORIZED/FORBIDDEN— vezi Autentificare › Tratează erorile de autentificare.
POST /api/v1/reports/x
Stochează un raport X nou pentru un dispozitiv.
- Scope auth:
reports
Corpul cererii
| Câmp | Tip | Obligatoriu | Note |
|---|---|---|---|
deviceId | string | da | Trebuie să fie un dispozitiv care există în organizația ta. |
totals | object | da | { sales, refunds, net } — toate numere. |
vatBreakdown | array | da | Cel puțin o intrare. Fiecare { rate, base, amount }. rate ∈ 0, 9, 11, 21. |
receiptCount | integer | da | Numărul de bonuri acoperite de raport (≥ 0). |
timestamp | string | da | Timestamp ISO 8601 când raportul a fost produs pe AMEF. |
Răspuns (201 Created)
Returnează raportul creat (aceeași formă ca GET /reports/x/{reportId}).
Exemplu
curl -X POST https://api.e-bon.ro/api/v1/reports/x \
-H "x-api-key: ebon_live_acme_corp_a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6" \
-H "Content-Type: application/json" \
-d '{
"deviceId": "dev_pos_01",
"totals": { "sales": 1240.5, "refunds": 0, "net": 1240.5 },
"vatBreakdown": [{ "rate": 9, "base": 1138.07, "amount": 102.43 }],
"receiptCount": 42,
"timestamp": "2026-04-09T14:00:00.000Z"
}'
Coduri de eroare
VALIDATION_ERROR(400) — corpul cererii nu a trecut validarea (câmpuri lipsă sau invalide).NOT_FOUND(404) —deviceIdnu există în organizația ta.UNAUTHORIZED/FORBIDDEN— vezi Autentificare › Tratează erorile de autentificare.
Rapoarte Z
Rapoartele Z închid ziua fiscală pe AMEF și resetează contoarele curente. Postarea unui raport Z în e-bon declanșează și o notificare prin email (fire-and-forget) către fiecare adresă din notificationSettings.zReportEmails al organizației.
GET /api/v1/reports/z
Listează rapoartele Z ale organizației, cele mai noi primele, după timestamp.
- Scope auth:
reports
Parametri query
| Parametru | Tip | Implicit | Note |
|---|---|---|---|
deviceId | string | — | Filtrează după dispozitiv. |
from | string | — | Timestamp ISO 8601; rapoarte cu timestamp >= from. |
to | string | — | Timestamp ISO 8601; rapoarte cu timestamp <= to. |
limit | integer | 50 | 1–100. |
Răspuns (200 OK)
{
"reports": [
{
"id": "zrep_xyz789",
"deviceId": "dev_pos_01",
"totals": { "sales": 5840.25, "refunds": 12.5, "net": 5827.75 },
"vatBreakdown": [{ "rate": 9, "base": 5347.48, "amount": 480.27 }],
"receiptCount": 187,
"timestamp": "2026-04-09T22:00:00.000Z",
"resetCounter": 134,
"periodStart": "2026-04-09T05:00:00.000Z",
"periodEnd": "2026-04-09T22:00:00.000Z",
"orgId": "acme_corp",
"createdAt": "2026-04-09T22:00:01.456Z"
}
]
}
Exemplu
curl "https://api.e-bon.ro/api/v1/reports/z?deviceId=dev_pos_01" \
-H "x-api-key: ebon_live_acme_corp_a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6"
Coduri de eroare
VALIDATION_ERROR(400) — query invalid.UNAUTHORIZED/FORBIDDEN— vezi Autentificare › Tratează erorile de autentificare.
GET /api/v1/reports/z/{reportId}
Returnează un singur raport Z după ID.
- Scope auth:
reports
Exemplu
curl https://api.e-bon.ro/api/v1/reports/z/zrep_xyz789 \
-H "x-api-key: ebon_live_acme_corp_a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6"
Coduri de eroare
NOT_FOUND(404) — nu există un raport Z cu acel ID în organizația ta.UNAUTHORIZED/FORBIDDEN— vezi Autentificare › Tratează erorile de autentificare.
POST /api/v1/reports/z
Stochează un raport Z nou pentru un dispozitiv. Declanșează o notificare email pentru raportul Z (fire-and-forget) către destinatarii configurați pe organizație.
- Scope auth:
reports
Corpul cererii
| Câmp | Tip | Obligatoriu | Note |
|---|---|---|---|
deviceId | string | da | Trebuie să fie un dispozitiv care există în organizația ta. |
totals | object | da | { sales, refunds, net } — toate numere. |
vatBreakdown | array | da | Cel puțin o intrare. Fiecare { rate, base, amount }. rate ∈ 0, 9, 11, 21. |
receiptCount | integer | da | Numărul de bonuri acoperite de raport (≥ 0). |
timestamp | string | da | Timestamp ISO 8601 când raportul Z a fost produs pe AMEF. |
resetCounter | integer | da | Valoarea contorului Z raportată de AMEF (≥ 0). |
periodStart | string | da | Timestamp ISO 8601 — începutul perioadei fiscale închise. |
periodEnd | string | da | Timestamp ISO 8601 — sfârșitul perioadei fiscale închise. |
Exemplu
curl -X POST https://api.e-bon.ro/api/v1/reports/z \
-H "x-api-key: ebon_live_acme_corp_a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6" \
-H "Content-Type: application/json" \
-d '{
"deviceId": "dev_pos_01",
"totals": { "sales": 5840.25, "refunds": 12.5, "net": 5827.75 },
"vatBreakdown": [{ "rate": 9, "base": 5347.48, "amount": 480.27 }],
"receiptCount": 187,
"timestamp": "2026-04-09T22:00:00.000Z",
"resetCounter": 134,
"periodStart": "2026-04-09T05:00:00.000Z",
"periodEnd": "2026-04-09T22:00:00.000Z"
}'
Coduri de eroare
VALIDATION_ERROR(400) — corpul cererii nu a trecut validarea (câmpuri lipsă sau invalide).NOT_FOUND(404) —deviceIdnu există în organizația ta.UNAUTHORIZED/FORBIDDEN— vezi Autentificare › Tratează erorile de autentificare.
Rapoarte JE — Jurnal Electronic
Rapoartele JE (Jurnal Electronic) sunt exportul XML al jurnalului fiscal cerut de ANAF. e-bon stochează XML-ul trimis împreună cu anafStatus și poate genera la cerere un XML proaspăt, conform ANAF, din intrările de jurnal pe care le deține.
GET /api/v1/reports/je/{deviceId}/xml
Generează un XML de Jurnal Electronic conform ANAF din intrările de jurnal stocate pentru dispozitivul și intervalul date. Corpul răspunsului este chiar fișierul XML, servit ca atașament.
- Scope auth:
reports - Content-type răspuns:
application/xml - Nume fișier:
JE_{fiscalSeries}_{periodStart}_{periodEnd}.xml
Parametri query
| Parametru | Tip | Obligatoriu | Note |
|---|---|---|---|
periodStart | string | da | Timestamp ISO 8601. |
periodEnd | string | da | Timestamp ISO 8601. |
Răspuns (200 OK)
Corp XML brut, salvat de exemplu cu -o:
curl "https://api.e-bon.ro/api/v1/reports/je/dev_pos_01/xml?periodStart=2026-04-01T00:00:00Z&periodEnd=2026-04-30T23:59:59Z" \
-H "x-api-key: ebon_live_acme_corp_a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6" \
-o JE_dev_pos_01_2026-04.xml
Coduri de eroare
VALIDATION_ERROR(400) —periodStartsauperiodEndlipsește sau nu este un datetime ISO valid.NOT_FOUND(404) —deviceIdnu există în organizația ta.UNAUTHORIZED/FORBIDDEN— vezi Autentificare › Tratează erorile de autentificare.
GET /api/v1/reports/je
Listează rapoartele JE stocate, cele mai noi primele, după reportDate.
- Scope auth:
reports
Parametri query
| Parametru | Tip | Implicit | Note |
|---|---|---|---|
deviceId | string | — | Filtrează după dispozitiv. |
anafStatus | string | — | Una dintre pending, accepted, rejected, error. |
from | string | — | Timestamp ISO 8601; rapoarte cu reportDate >= from. |
to | string | — | Timestamp ISO 8601; rapoarte cu reportDate <= to. |
limit | integer | 50 | 1–100. |
Răspuns (200 OK)
{
"reports": [
{
"id": "jerep_2026_04",
"deviceId": "dev_pos_01",
"xmlContent": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>...",
"reportDate": "2026-04-30T23:59:59.000Z",
"submittedToAnaf": true,
"anafStatus": "accepted",
"p7bSignature": "MIIH...==",
"orgId": "acme_corp",
"createdAt": "2026-05-01T08:00:00.000Z"
}
]
}
Exemplu
curl "https://api.e-bon.ro/api/v1/reports/je?anafStatus=accepted&limit=20" \
-H "x-api-key: ebon_live_acme_corp_a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6"
Coduri de eroare
VALIDATION_ERROR(400) — query invalid.UNAUTHORIZED/FORBIDDEN— vezi Autentificare › Tratează erorile de autentificare.
GET /api/v1/reports/je/{reportId}
Returnează un singur raport JE stocat după ID, cu payload-ul XML și statusul ANAF.
- Scope auth:
reports
Exemplu
curl https://api.e-bon.ro/api/v1/reports/je/jerep_2026_04 \
-H "x-api-key: ebon_live_acme_corp_a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6"
Coduri de eroare
NOT_FOUND(404) — nu există un raport JE cu acel ID în organizația ta.UNAUTHORIZED/FORBIDDEN— vezi Autentificare › Tratează erorile de autentificare.
POST /api/v1/reports/je
Stochează un raport JE (payload XML plus metadate ANAF).
- Scope auth:
reports
Corpul cererii
| Câmp | Tip | Obligatoriu | Note |
|---|---|---|---|
deviceId | string | da | Trebuie să fie un dispozitiv care există în organizația ta. |
xmlContent | string | da | Conținut XML formatat ANAF. |
p7bSignature | string | nu | Semnătură digitală PKCS#7 (base64), dacă este disponibilă. |
reportDate | string | da | Timestamp ISO 8601 acoperit de raport. |
submittedToAnaf | boolean | da | true dacă XML-ul a fost deja trimis la ANAF. |
anafStatus | string | nu | Una dintre pending, accepted, rejected, error. |
Exemplu
curl -X POST https://api.e-bon.ro/api/v1/reports/je \
-H "x-api-key: ebon_live_acme_corp_a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6" \
-H "Content-Type: application/json" \
-d '{
"deviceId": "dev_pos_01",
"xmlContent": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>...",
"reportDate": "2026-04-30T23:59:59.000Z",
"submittedToAnaf": true,
"anafStatus": "pending"
}'
Coduri de eroare
VALIDATION_ERROR(400) — corpul cererii nu a trecut validarea (câmpuri lipsă sau invalide).NOT_FOUND(404) —deviceIdnu există în organizația ta.UNAUTHORIZED/FORBIDDEN— vezi Autentificare › Tratează erorile de autentificare.
Rapoarte MF — Memorie Fiscală
Rapoartele MF (Memorie Fiscală) sunt arhiva pe termen lung a închiderilor de raport Z pentru un dispozitiv. Endpoint-ul de generare construiește la cerere un FiscalMemoryDocument din rapoartele Z deja stocate de e-bon; endpoint-urile list/get/post gestionează înregistrările arhivelor MF stocate și metadatele lor de retenție.
GET /api/v1/reports/mf/{deviceId}/generate
Generează la cerere un document de Memorie Fiscală agregând rapoartele Z pentru dispozitivul și intervalul date. Returnează JSON structurat cu toate închiderile de raport Z și un total general curent.
- Scope auth:
reports
Parametri query
| Parametru | Tip | Obligatoriu | Note |
|---|---|---|---|
periodStart | string | da | Timestamp ISO 8601. |
periodEnd | string | da | Timestamp ISO 8601. |
Răspuns (200 OK)
{
"document": {
"deviceId": "dev_pos_01",
"orgId": "acme_corp",
"periodStart": "2026-01-01T00:00:00.000Z",
"periodEnd": "2026-03-31T23:59:59.000Z",
"entries": [],
"grandTotal": { "sales": 0, "refunds": 0, "net": 0 },
"generatedAt": "2026-04-09T08:10:00.000Z"
}
}
Exemplu
curl "https://api.e-bon.ro/api/v1/reports/mf/dev_pos_01/generate?periodStart=2026-01-01T00:00:00Z&periodEnd=2026-03-31T23:59:59Z" \
-H "x-api-key: ebon_live_acme_corp_a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6"
Coduri de eroare
VALIDATION_ERROR(400) —periodStart/periodEndlipsește sau nu sunt datetime ISO valide.NOT_FOUND(404) — dispozitivul sau organizația nu au putut fi rezolvate de generator.UNAUTHORIZED/FORBIDDEN— vezi Autentificare › Tratează erorile de autentificare.
GET /api/v1/reports/mf
Listează rapoartele MF arhivate stocate, cele mai noi primele, după archiveDate.
- Scope auth:
reports
Parametri query
| Parametru | Tip | Implicit | Note |
|---|---|---|---|
deviceId | string | — | Filtrează după dispozitiv. |
from | string | — | Timestamp ISO 8601; rapoarte cu archiveDate >= from. |
to | string | — | Timestamp ISO 8601; rapoarte cu archiveDate <= to. |
limit | integer | 50 | 1–100. |
Răspuns (200 OK)
{
"reports": [
{
"id": "mfrep_q1_2026",
"deviceId": "dev_pos_01",
"content": "...dump memorie fiscală...",
"archiveDate": "2026-04-01T00:00:00.000Z",
"expiresAt": "2036-04-01T00:00:00.000Z",
"orgId": "acme_corp",
"createdAt": "2026-04-01T01:00:00.000Z"
}
]
}
Exemplu
curl "https://api.e-bon.ro/api/v1/reports/mf?deviceId=dev_pos_01" \
-H "x-api-key: ebon_live_acme_corp_a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6"
Coduri de eroare
VALIDATION_ERROR(400) — query invalid.UNAUTHORIZED/FORBIDDEN— vezi Autentificare › Tratează erorile de autentificare.
GET /api/v1/reports/mf/{reportId}
Returnează un singur raport MF stocat după ID.
- Scope auth:
reports
Exemplu
curl https://api.e-bon.ro/api/v1/reports/mf/mfrep_q1_2026 \
-H "x-api-key: ebon_live_acme_corp_a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6"
Coduri de eroare
NOT_FOUND(404) — nu există un raport MF cu acel ID în organizația ta.UNAUTHORIZED/FORBIDDEN— vezi Autentificare › Tratează erorile de autentificare.
POST /api/v1/reports/mf
Stochează o înregistrare de arhivă Memorie Fiscală împreună cu data de expirare a retenției.
- Scope auth:
reports
Corpul cererii
| Câmp | Tip | Obligatoriu | Note |
|---|---|---|---|
deviceId | string | da | Trebuie să fie un dispozitiv care există în organizația ta. |
content | string | da | Conținutul dump-ului de memorie fiscală. |
archiveDate | string | da | Timestamp ISO 8601 — data acoperită de arhivă. |
expiresAt | string | da | Timestamp ISO 8601 — expirarea retenției (când arhiva este ștearsă automat). |
Exemplu
curl -X POST https://api.e-bon.ro/api/v1/reports/mf \
-H "x-api-key: ebon_live_acme_corp_a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6" \
-H "Content-Type: application/json" \
-d '{
"deviceId": "dev_pos_01",
"content": "...dump memorie fiscală...",
"archiveDate": "2026-04-01T00:00:00.000Z",
"expiresAt": "2036-04-01T00:00:00.000Z"
}'
Coduri de eroare
VALIDATION_ERROR(400) — corpul cererii nu a trecut validarea (câmpuri lipsă sau invalide).NOT_FOUND(404) —deviceIdnu există în organizația ta.UNAUTHORIZED/FORBIDDEN— vezi Autentificare › Tratează erorile de autentificare.
Vezi și
- Bonuri — bonurile alimentează cele patru tipuri de rapoarte.
- Comenzi pentru dispozitive — emite comenzile
print_x_report,print_z_report,print_je_reportșiprint_mf_reportpe AMEF înainte să stochezi rezultatul aici. - Prezentare API — URL de bază, plic de eroare, limite de rată, idempotență, paginare.
- Depanare › Respingere raport ANAF — categoriile frecvente de respingere P7B / MF / JE și calea de remediere pe categorie.
Bonuri
Endpoint-uri REST pentru stocarea, listarea și consultarea bonurilor fiscale după tipărirea pe AMEF — scheme cerere/răspuns, exemple curl și coduri de eroare per endpoint.
Dispozitive
Endpoint-uri REST pentru gestionarea dispozitivelor fiscale (AMEF) — CRUD, claim/release, status live, alerte și setul complet de comenzi (sold de casă, dată/oră, sigle, cote TVA, antet/subsol, operatori, anulare, storno etc.).