Depunere de fișiere
Predarea facturilor ca fișiere.
- Încă nu este în sandbox
În cuvinte simple
Depunerea de fișiere este pentru ERP-urile care pot doar să scrie fișiere: acestea pun facturile într-un folder, iar serviciul trimite rezultatele înapoi ca fișiere în același folder. Astfel, clientul nu trebuie să construiască o conexiune API. Serviciul urmărește un folder de pe mașina pe care rulează. Funcția nu este activată în sandboxul găzduit, iar transferul securizat de fișiere și stocarea în cloud nu sunt implementate.
Un ERP care poate doar să scrie fișiere poate preda facturile printr-un singur folder. Serviciul urmărește folderul și tratează fiecare fișier ca pe o transmitere: un fișier JSON ca POST /invoices, un fișier XML ca POST /invoices/xml. Rezultatele revin ca fișiere în același folder.
Notă
Încă nu este în sandbox
Depunerea de fișiere urmărește un folder local. Nu este activată în sandboxul găzduit. Nu există SFTP și nici stocare de obiecte; oricare dintre ele ar fi dezvoltată doar dacă ar fi necesară într-un proiect pilot.
Configurare
Folderul se stabilește la instalarea serviciului. Serviciul îl verifică o dată pe secundă și nu urmărește nimic când nu este stabilit niciun folder. Un fișier trece prin aceeași preluare ca un apel API, așa că este refuzat din aceleași motive.
Denumirea fișierului
| Fișier | Tratat ca |
|---|---|
INVOICE-REF.json | POST /invoices. Conținutul este corpul JSON al acelui apel (consultați transmiterea JSON). Dacă acest corp are un invoice_ref, acesta trebuie să fie egal cu numele fișierului fără .json. |
INVOICE-REF.ROUTE.xml | POST /invoices/xml. ROUTE este DE-XRECHNUNG, PEPPOL, FR-PA, PL-KSEF sau RO-EFACTURA. Conținutul este fișierul facturii (consultați transmiterea XML). |
- O referință de factură are cel mult 100 de caractere și nu conține
/sau\. - Un fișier de peste 5 MB este refuzat.
- Un nume care începe cu punct, conține
..sau nu se potrivește cu niciun model este ignorat. Idempotency-Keyeste format din primele 32 de caractere ale SHA-256-ului fișierului. Depunerea din nou a unui fișier identic este o reluare, nu o a doua factură.
Ce primiți înapoi
drop/
DE-4711.json you write this
status/
DE-4711-1.json one file per status event
DE-4712-error.json the answer to a refused file
done/
DE-4711.json an accepted file moves here
failed/
DE-4712.json a refused file moves hereUn fișier acceptat este mutat în done/. Evenimentele facturii sunt scrise în status/, câte un fișier pentru fiecare eveniment, cu numele INVOICE-REF-<sequence>.json. Fiecare este un element al răspunsului GET /invoices/{id}/events. Ele conțin hash-ul facturii și niciun conținut al facturii.
{
"occurred_at": "2026-10-02T17:17:55.857Z",
"sequence": 1,
"environment": "sandbox",
"invoice_ref": "CAPTURE-JSON-1790961440",
"document_sha256": "3b41395db498666777b74f9f5b9fae82871720304bc25bbb590e25b7b75ea1d4",
"event_id": "evt_200c0def79ed702df81d702f",
"country_route": "DE-XRECHNUNG",
"invoice_number": "CAPTURE-JSON-1790961440",
"status": "validated"
}Evenimentele care există în momentul acceptării fișierului sunt scrise imediat. Fiecare eveniment ulterior este scris pe măsură ce apare, până când factura ajunge într-o stare finală (accepted, delivered, rejected, validation_failed, dead_letter sau cancelled) sau până când trec 30 de zile.
Un fișier refuzat este mutat în failed/, iar status/INVOICE-REF-error.json conține răspunsul pe care l-ar fi dat API-ul. Pentru un fișier care nu este factură, acesta este răspunsul 422 de mai jos. Corectați datele și depuneți din nou fișierul cu același nume.
{
"type": "https://eurinvoice.com/problems/validation-failed",
"title": "The invoice did not pass the checks",
"errors": [
{
"code": "EI-XML-TYPE",
"fix_hint": "Send the invoice itself, in the format agreed for the route.",
"who_fixes": "erp",
"source": "XML-safety",
"message": "The file is not an invoice in a format this route accepts. Please send the invoice in the agreed format."
}
],
"status": 422
}Ce lipsește
- SFTP și stocarea de obiecte.
- O modalitate de a citi din folder ID-ul
inv_al unei facturi acceptate. Fișierele de stare conțininvoice_refșiinvoice_number.