Deposito di file
Consegnare le fatture come file.
- Non ancora nella sandbox
In parole semplici
Il deposito di file è pensato per gli ERP che sanno solo scrivere file: depositano le fatture in una cartella, e il servizio restituisce gli esiti come file nella stessa cartella. Evita a un cliente di dover costruire un collegamento API. Sorveglia una cartella sul computer che esegue il servizio. Non è attivo nella sandbox ospitata, e il trasferimento sicuro di file e l’archiviazione cloud non sono realizzati.
Un ERP che sa solo scrivere file può consegnare le fatture tramite una cartella. Il servizio sorveglia la cartella e tratta ogni file come un invio: un file JSON come POST /invoices, un file XML come POST /invoices/xml. Gli esiti tornano come file nella stessa cartella.
Nota
Non ancora nella sandbox
Il deposito di file sorveglia una cartella locale. Non è attivo nella sandbox ospitata. Non ci sono né SFTP né object storage; l’uno o l’altro verrebbe realizzato solo se un progetto pilota ne avesse bisogno.
Configurazione
La cartella viene impostata quando il servizio è installato. Il servizio la controlla una volta al secondo, e non sorveglia nulla quando non è impostata alcuna cartella. Un file passa per la stessa presa in carico di una chiamata API, quindi viene rifiutato per gli stessi motivi.
Il nome del file
| File | Trattato come |
|---|---|
INVOICE-REF.json | POST /invoices. Il contenuto è il corpo JSON di quella chiamata (vedere inviare JSON). Se il corpo contiene un invoice_ref, deve essere uguale al nome del file senza .json. |
INVOICE-REF.ROUTE.xml | POST /invoices/xml. ROUTE è DE-XRECHNUNG, PEPPOL, FR-PA, PL-KSEF o RO-EFACTURA. Il contenuto è il file della fattura (vedere inviare XML). |
- Un riferimento di fattura ha fino a 100 caratteri e non contiene
/né\. - Un file oltre 5 MB viene rifiutato.
- Un nome che inizia con un punto, contiene
..o non corrisponde a nessuno dei due schemi viene ignorato. - La
Idempotency-Keyè formata dai primi 32 caratteri dello SHA-256 del file. Depositare di nuovo un file identico è una ripetizione, non una seconda fattura.
Cosa torna indietro
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 file accettato viene spostato in done/. Gli eventi della fattura vengono scritti in status/, un file per evento, con nome INVOICE-REF-<sequence>.json. Ognuno è una voce della risposta di GET /invoices/{id}/events. Riportano l’hash della fattura e nessun contenuto della fattura.
{
"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"
}Gli eventi che esistono quando il file viene accettato vengono scritti subito. Ogni evento successivo viene scritto man mano che arriva, finché la fattura raggiunge uno stato finale (accepted, delivered, rejected, validation_failed, dead_letter o cancelled) o sono trascorsi 30 giorni.
Un file rifiutato viene spostato in failed/, e status/INVOICE-REF-error.json contiene la risposta che avrebbe dato l’API. Per un file che non è una fattura, è il 422 qui sotto. Correggere i dati e depositare di nuovo il file con lo stesso nome.
{
"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
}Cosa manca
- SFTP e object storage.
- Un modo per leggere dalla cartella l’id
inv_di una fattura accettata. I file di stato riportanoinvoice_refeinvoice_number.