Dezvoltatori

Endpoint-urile aplicațiilor conectate

Toate metodele API-ului extern pentru aplicații, cu dreptul necesar, cererea și răspunsul JSON — proforme, plăți, anulare, retrimitere, lista facturilor.

Specificația API (JSON)

Adresa de bază: https://dev.ezif.ro/api/ext/v1 (test) / https://app.ezif.ro/api/ext/v1 (producție). Autentificarea: Autentificarea și semnătura.

Metoda Cale Drept Ce face
GET /ping — firma, utilizatorul tehnic, drepturile, seriile, setările și evenimentele cheii
POST /proformas proforma:write emite proforma cu plată; idempotentă pe external_id
GET /proformas/{id} documents:read proforma: stare, total, încasat, rest, valabilitate, pay_url, pdf_url, încasările, factura emisă
GET /proformas/by-external/{external_id} documents:read aceeași, după external_id
POST /proformas/{id}/payments payment:write plata raportată de aplicație; la plata integrală, răspunsul conține factura emisă
POST /proformas/{id}/cancel proforma:write anulează o proformă neplătită
POST /proformas/{id}/send proforma:write retrimite proforma pe e-mail (aceeași adresă sau {"email": "…"})
GET /invoices documents:read lista facturilor și a stornărilor: since, series, status, spv, page, per_page
GET /invoices/{id} · /invoices/by-external/{id} · /invoices/{id}/pdf documents:read factura (cu from_proforma_id), după external_id, PDF
POST /invoices/{id}/storno invoice:write storno total; webhook invoice.storno
POST /callback · /callback/test webhooks:manage adresa de webhook a aplicației și testul ei

Metodele pentru magazine (POST /invoices, încasarea pe factură, conversia, articolele, stocul) sunt în API-ul extern.

POST /proformas

{
  "external_id": "PJAPI-SUB-1842-2026-10",
  "currency": "RON", "price_mode": "net", "valid_days": 15,
  "client": {"name": "Alfa Instal SRL", "cui": "RO12345678", "reg_com": "J40/1/2020",
             "email": "contabilitate@alfainstal.ro", "county": "B", "city": "Sector 3", "street": "Str. Alfa 1"},
  "lines": [{"code": "PJAPI-PRO", "name": "Abonament pjAPI.ro Pro — octombrie 2026",
             "qty": 1, "price": 249.00, "vat": 21, "service": true}],
  "period": {"from": "2026-10-01", "to": "2026-10-31"},
  "notes": "Abonament lunar, cont #1842"
}
Câmp Explicație
external_id obligatoriu, unic pe firmă (abonament + perioadă). A doua cerere cu același external_id întoarce aceeași proformă, cu "duplicate": true, fără e-mail nou
series opțional; doar seria cheii sau una din „seriile permise” (altfel 403 SERIES_NOT_ALLOWED)
valid_days 1–90; lipsă = valabilitatea din setările cheii
client, lines, currency, price_mode aceleași reguli ca la POST /invoices; adresa clientului e obligatorie (apare pe factura din e-Factura)
period perioada abonamentului; apare pe proformă și pe factură („Perioada: 01.10.2026 – 31.10.2026”)

Răspunsul 201:

{"id": 9012, "kind": "proforma", "series": "PJPF", "number_text": "PJPF00042", "issue_date": "2026-10-01",
 "valid_until": "2026-10-16", "currency": "RON", "total": "301.29", "paid": "0.00", "remaining": "301.29", "status": "unpaid",
 "external_id": "PJAPI-SUB-1842-2026-10", "period": {"from": "2026-10-01", "to": "2026-10-31"},
 "pay_url": "https://app.ezif.ro/api/public/plata/…", "pdf_url": "https://app.ezif.ro/api/public/documente/…",
 "payments": [], "invoice": null, "emailed": true}

POST /proformas/{id}/payments

{"amount": 301.29, "paid_on": "2026-10-03", "method": "card", "reference": "pi_3Q…", "external_id": "PJAPI-PAY-55120"}

method: card, online, transfer, numerar, alta. external_id al plății: aceeași plată nu se înregistrează de două ori. Răspunsul: proforma actualizată; la plata integrală, status: "invoiced" și invoice:

"invoice": {"id": 9013, "number_text": "PJ00118", "total": "301.29", "paid": "301.29", "payment_status": "paid",
            "spv_status": "queued", "pdf_url": "https://app.ezif.ro/api/public/documente/…"}

GET /invoices

Parametru Valori
since ISO 8601 (ex. 2026-10-01T00:00:00Z): doar documentele modificate după
series prefixul seriei (ex. PJ)
status issued (neîncasate), paid, cancelled (stornate)
spv accepted, rejected, pending
page, per_page per_page ≤ 200 (implicit 100)

Răspunsul: {"page": 1, "per_page": 100, "invoices": [{…factura…, "from_proforma_id": 9012}]}, cele mai noi primele. Parametrii nu intră în semnătură (doar calea).

Documentația aplicației eZif 0.42.6.