Docs
8

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.

Non ancora nella sandboxnon nella sandbox ospitata

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

FileTrattato come
INVOICE-REF.jsonPOST /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.xmlPOST /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

Text
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 here

Un 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.

status/DE-4711-1.json
{
  "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"
}
Un evento tratto da una risposta registrata, su più righe; il file è una sola riga.

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.

status/DE-4712-error.json
{
  "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
}
La risposta a un file `.xml` che non è una fattura, da una chiamata registrata.

Cosa manca

  • SFTP e object storage.
  • Un modo per leggere dalla cartella l’id inv_ di una fattura accettata. I file di stato riportano invoice_ref e invoice_number.

In questa pagina