<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: S-Data</title>
    <description>The latest articles on DEV Community by S-Data (@s-data).</description>
    <link>https://dev.to/s-data</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4210943%2F606ddc2a-aeb7-4608-98c5-bda669112fdb.png</url>
      <title>DEV Community: S-Data</title>
      <link>https://dev.to/s-data</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/s-data"/>
    <language>en</language>
    <item>
      <title>Web scraping legale per aziende: GDPR, robots.txt e banche dati</title>
      <dc:creator>S-Data</dc:creator>
      <pubDate>Thu, 29 Oct 2026 19:28:56 +0000</pubDate>
      <link>https://dev.to/s-data/web-scraping-legale-per-aziende-gdpr-robotstxt-e-banche-dati-4465</link>
      <guid>https://dev.to/s-data/web-scraping-legale-per-aziende-gdpr-robotstxt-e-banche-dati-4465</guid>
      <description>&lt;p&gt;Raccogliere dati dal web in modo automatico può essere molto utile a un'azienda: monitorare i listini dei concorrenti, tenere aggiornato un catalogo, seguire bandi e pubblicazioni, alimentare un report. Ma "è pubblico, quindi posso prenderlo" non è un criterio sufficiente. In Italia e nell'Unione Europea entrano in gioco almeno quattro piani diversi: la protezione dei dati personali, le condizioni d'uso del sito, i diritti sulle banche dati e il comportamento tecnico verso il server che si interroga.&lt;/p&gt;

&lt;p&gt;Questa guida mette in fila le domande da porsi prima di partire, con una checklist finale.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Nota:&lt;/strong&gt; questo articolo è informativo e non costituisce consulenza legale. Per un progetto concreto, soprattutto se coinvolge dati personali, fate valutare il caso a un legale o al vostro DPO.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  1. Prima domanda: che dati raccogliete?
&lt;/h2&gt;

&lt;p&gt;La distinzione più importante è tra dati che riguardano persone e dati che non le riguardano.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Dati non personali&lt;/strong&gt;: prezzi, disponibilità, caratteristiche tecniche dei prodotti, orari, testi di bandi. Qui il GDPR in genere non entra in gioco, mentre restano gli altri piani (condizioni d'uso, banche dati, carico sul server).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dati personali&lt;/strong&gt;: nomi, email, numeri di telefono, profili, recensioni firmate, foto. Qui si applica il Regolamento (UE) 2016/679 (GDPR), anche se i dati sono liberamente visibili online.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Il punto che si dimentica più spesso è proprio questo: &lt;strong&gt;un dato personale pubblicato su un sito resta un dato personale&lt;/strong&gt;. Il fatto che sia accessibile non dà automaticamente il diritto di raccoglierlo, copiarlo in un database e usarlo per altri scopi.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Se ci sono dati personali: GDPR
&lt;/h2&gt;

&lt;p&gt;Se il progetto tocca dati personali, servono risposte chiare ad alcune domande che derivano direttamente dal GDPR:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Base giuridica (art. 6)&lt;/strong&gt;: su cosa si fonda il trattamento? Nei progetti aziendali si valuta spesso il legittimo interesse, che però richiede un bilanciamento documentato con i diritti delle persone interessate e non è una formula valida per tutto.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Finalità e minimizzazione (art. 5)&lt;/strong&gt;: raccogliete solo i campi che servono davvero allo scopo dichiarato. Se vi serve sapere quante recensioni negative ha un prodotto, probabilmente non vi servono i nomi di chi le ha scritte.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Informativa (art. 14)&lt;/strong&gt;: quando i dati non vengono raccolti presso l'interessato, il GDPR prevede comunque obblighi di informazione, con alcune eccezioni da valutare caso per caso.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Conservazione e sicurezza&lt;/strong&gt;: per quanto tempo tenete i dati, dove, chi vi accede.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Il Garante per la protezione dei dati personali ha pubblicato nel 2024 una nota informativa dedicata al web scraping, rivolta soprattutto ai gestori di siti che vogliono difendersi dalla raccolta massiva di dati personali, ma utile anche a chi lo scraping lo fa.&lt;/p&gt;

&lt;p&gt;Una regola prudente: se un obiettivo si può raggiungere senza dati personali, progettate il sistema per non raccoglierli affatto, invece di raccoglierli e filtrarli dopo.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Le condizioni d'uso del sito
&lt;/h2&gt;

&lt;p&gt;Molti siti hanno termini di servizio che vietano o limitano l'estrazione automatica dei contenuti. Il loro peso dipende da diversi fattori, per esempio se l'utente li ha accettati (con una registrazione o un login) e da come sono formulati. Due indicazioni pratiche:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Leggeteli prima&lt;/strong&gt;, non dopo. Se il sito vieta esplicitamente lo scraping, è un elemento da valutare seriamente insieme a chi segue gli aspetti legali.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Attenzione alle aree riservate&lt;/strong&gt;: estrarre dati da sezioni accessibili solo dopo login, con un account che ha accettato condizioni contrarie, è una situazione molto diversa dal leggere pagine pubbliche.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  4. Banche dati: il diritto sui generis
&lt;/h2&gt;

&lt;p&gt;La Direttiva 96/9/CE sulla tutela giuridica delle banche dati, recepita in Italia nella legge sul diritto d'autore (L. 633/1941), prevede oltre al diritto d'autore un &lt;strong&gt;diritto sui generis&lt;/strong&gt; a favore di chi ha fatto un investimento rilevante per costituire, verificare o presentare una banca dati.&lt;/p&gt;

&lt;p&gt;In sintesi, questo diritto consente al costitutore di vietare:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;l'&lt;strong&gt;estrazione o il reimpiego della totalità o di una parte sostanziale&lt;/strong&gt; del contenuto;&lt;/li&gt;
&lt;li&gt;l'&lt;strong&gt;estrazione ripetuta e sistematica di parti non sostanziali&lt;/strong&gt;, quando questo contrasta con il normale sfruttamento della banca dati o arreca un pregiudizio ingiustificato al costitutore.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Il secondo punto è rilevante per lo scraping: anche prelevare poco alla volta, se fatto in modo sistematico fino a ricostruire una parte importante dell'archivio, può ricadere nel divieto.&lt;/p&gt;

&lt;p&gt;Va considerata anche la Direttiva (UE) 2019/790, che disciplina il text and data mining: tra le altre cose prevede che i titolari dei diritti possano riservarsi l'uso dei contenuti con strumenti leggibili da una macchina. Se il sito esprime questa riserva, è un'informazione da tenere in conto.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. robots.txt: non è una legge, ma è un segnale
&lt;/h2&gt;

&lt;p&gt;Il file &lt;code&gt;robots.txt&lt;/code&gt; (oggi descritto nello standard RFC 9309) indica quali percorsi del sito il gestore non vuole che vengano visitati dai programmi automatici. Non è di per sé una norma di legge, ma ignorarlo significa ignorare una volontà espressa chiaramente dal gestore, e questo pesa nella valutazione complessiva del progetto.&lt;/p&gt;

&lt;p&gt;In pratica: leggete il &lt;code&gt;robots.txt&lt;/code&gt; del sito, rispettate i percorsi esclusi e le eventuali indicazioni sul ritmo delle richieste. Se i dati che vi servono stanno in una sezione esclusa, è il momento di chiedersi se esiste un'altra strada.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Carico sul server e rate limit
&lt;/h2&gt;

&lt;p&gt;Uno scraper scritto male può mandare in difficoltà un sito, soprattutto se piccolo, e finire bloccato. Le buone pratiche tecniche sono semplici:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;limitare la frequenza delle richieste&lt;/strong&gt;, con pause tra una pagina e l'altra e poche connessioni in parallelo;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;rispettare i segnali del server&lt;/strong&gt;: se arriva un errore HTTP 429 (troppe richieste) o un'intestazione &lt;code&gt;Retry-After&lt;/code&gt;, rallentare o fermarsi;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;lavorare negli orari di minor traffico&lt;/strong&gt; quando possibile;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;scaricare solo ciò che è cambiato&lt;/strong&gt;, usando cache e richieste condizionali invece di riscaricare tutto ogni volta;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;identificarsi in modo onesto&lt;/strong&gt; e non aggirare le misure di protezione del sito, come captcha o blocchi di accesso.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  7. L'alternativa da valutare per prima: le API ufficiali
&lt;/h2&gt;

&lt;p&gt;Prima di scrivere uno scraper conviene sempre verificare se la fonte offre un canale ufficiale:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;API pubbliche o a pagamento&lt;/strong&gt;, con condizioni d'uso chiare;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;feed&lt;/strong&gt; (RSS, XML, CSV) o file di esportazione;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;open data&lt;/strong&gt; pubblicati dalle pubbliche amministrazioni;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;accordi diretti&lt;/strong&gt; con il gestore, per esempio con un fornitore che può mandarvi il listino in un formato strutturato.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Un'API ufficiale è quasi sempre più stabile di uno scraper, che si rompe ogni volta che il sito cambia grafica, e chiarisce in partenza cosa si può fare con i dati. Lo scraping ha senso quando un canale ufficiale non esiste o non copre quello che serve.&lt;/p&gt;

&lt;h2&gt;
  
  
  Checklist prima di avviare un progetto
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Obiettivo&lt;/strong&gt;: quale decisione o processo deve alimentare il dato? Scrivetelo in una frase.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Campi&lt;/strong&gt;: elencate i campi necessari ed eliminate quelli superflui, in particolare quelli personali.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fonti&lt;/strong&gt;: per ogni sito, esiste un'API, un feed o un open data alternativo?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Condizioni d'uso&lt;/strong&gt;: le avete lette? Contengono divieti o limiti sull'estrazione automatica?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;robots.txt e riserve TDM&lt;/strong&gt;: i percorsi che vi servono sono consentiti?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Banca dati&lt;/strong&gt;: state prelevando una parte sostanziale di un archivio costruito da altri, anche a piccoli pezzi?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dati personali&lt;/strong&gt;: se ci sono, base giuridica, informativa, conservazione e sicurezza sono documentate?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Frequenza e carico&lt;/strong&gt;: ogni quanto serve aggiornare? Avete previsto pause, limiti e gestione degli errori 429?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Uso finale&lt;/strong&gt;: i dati restano interni o verranno ripubblicati? Il reimpiego verso terzi richiede una valutazione più attenta.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Manutenzione&lt;/strong&gt;: chi si accorge se il sito cambia struttura e lo scraper smette di funzionare?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Se a qualcuna di queste domande non sapete rispondere, è meglio fermarsi e chiarire prima di scrivere codice.&lt;/p&gt;

&lt;h2&gt;
  
  
  Per approfondire
&lt;/h2&gt;

&lt;p&gt;Se state valutando un progetto di raccolta dati, potete vedere come impostiamo fonti, frequenze e limiti tecnici nella pagina del nostro &lt;a href="https://www.s-data.it/web-scraping.html" rel="noopener noreferrer"&gt;servizio di web scraping&lt;/a&gt;. Quando la fonte mette a disposizione un canale ufficiale, la strada più solida resta l'integrazione tramite &lt;a href="https://www.s-data.it/api-development.html" rel="noopener noreferrer"&gt;sviluppo e integrazione API&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>webscraping</category>
      <category>gdpr</category>
      <category>privacy</category>
      <category>italia</category>
    </item>
    <item>
      <title>Checklist per il brief di un gestionale su misura: cosa preparare</title>
      <dc:creator>S-Data</dc:creator>
      <pubDate>Thu, 29 Oct 2026 18:37:44 +0000</pubDate>
      <link>https://dev.to/s-data/checklist-per-il-brief-di-un-gestionale-su-misura-cosa-preparare-2d8o</link>
      <guid>https://dev.to/s-data/checklist-per-il-brief-di-un-gestionale-su-misura-cosa-preparare-2d8o</guid>
      <description>&lt;p&gt;Prima di chiedere un preventivo per un gestionale su misura conviene mettere per iscritto cosa deve fare. Non serve un capitolato di cento pagine. Bastano poche pagine chiare, che rispondano alle domande che qualsiasi sviluppatore farà comunque. Un brief fatto bene rende i preventivi confrontabili, riduce le sorprese durante lo sviluppo e ti permette di capire se chi hai davanti ha capito il tuo lavoro.&lt;/p&gt;

&lt;p&gt;Questa è la checklist che consigliamo di preparare, sezione per sezione.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. I processi, descritti come succedono davvero
&lt;/h2&gt;

&lt;p&gt;Parti da come lavorate oggi, non da come vorreste lavorare in teoria. Per ogni processo che il gestionale deve coprire (preventivi, ordini, commesse, magazzino, interventi, fatturazione) scrivi:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;chi lo avvia&lt;/strong&gt; e da cosa parte (una telefonata, un'email, un ordine dal sito);&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;i passaggi&lt;/strong&gt;, in ordine, con chi fa cosa;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;dove si blocca oggi&lt;/strong&gt;: doppi inserimenti, fogli Excel passati di mano, informazioni che si perdono;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;le eccezioni&lt;/strong&gt;: il cliente che paga in modo diverso, l'ordine urgente, il reso.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Le eccezioni sono la parte che si dimentica più spesso, ed è quella che fa lievitare tempi e costi se emerge a metà progetto. Se avete moduli cartacei, file Excel o email tipo, allegali come esempio: valgono più di molte descrizioni.&lt;/p&gt;

&lt;p&gt;Un consiglio pratico: distingui i processi in &lt;strong&gt;indispensabili per partire&lt;/strong&gt; e &lt;strong&gt;utili in un secondo momento&lt;/strong&gt;. Ti servirà per decidere cosa mettere nel primo rilascio.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Ruoli e permessi
&lt;/h2&gt;

&lt;p&gt;Elenca chi userà il gestionale e cosa deve poter fare. Una tabella semplice basta:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Ruolo&lt;/th&gt;
&lt;th&gt;Vede&lt;/th&gt;
&lt;th&gt;Modifica&lt;/th&gt;
&lt;th&gt;Approva&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Amministrazione&lt;/td&gt;
&lt;td&gt;tutto&lt;/td&gt;
&lt;td&gt;anagrafiche, fatture&lt;/td&gt;
&lt;td&gt;pagamenti&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Commerciale&lt;/td&gt;
&lt;td&gt;i propri clienti&lt;/td&gt;
&lt;td&gt;preventivi&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tecnico&lt;/td&gt;
&lt;td&gt;i propri interventi&lt;/td&gt;
&lt;td&gt;rapportini&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Titolare&lt;/td&gt;
&lt;td&gt;tutto&lt;/td&gt;
&lt;td&gt;tutto&lt;/td&gt;
&lt;td&gt;tutto&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Indica anche quante persone, più o meno, useranno ogni ruolo, se qualcuno lavora da mobile o fuori sede e se servono accessi per soggetti esterni (agenti, clienti, fornitori). Tutto questo incide sull'architettura e sulla sicurezza, e va saputo subito.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. I dati da migrare
&lt;/h2&gt;

&lt;p&gt;Il recupero dei dati esistenti è spesso sottovalutato. Prepara un elenco di:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;cosa va portato&lt;/strong&gt; nel nuovo sistema: anagrafiche clienti e fornitori, articoli, listini, storico documenti, commesse aperte;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;da dove arriva&lt;/strong&gt;: il vecchio gestionale, file Excel, Access, un database, un software in cloud;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;quanto storico&lt;/strong&gt; serve davvero: tutto, gli ultimi anni o solo i dati aperti;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;in che stato sono i dati&lt;/strong&gt;: doppioni, campi usati in modo diverso da persone diverse, codici non coerenti.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Se possibile, estrai un campione reale (anche anonimizzato) e allegalo. Chi deve stimare la migrazione capisce molto di più da un file vero che da una descrizione. Chiarisci anche chi si occupa della pulizia dei dati: se la fa il fornitore è lavoro da mettere in preventivo, se la fate voi va pianificata prima.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Le integrazioni con altri sistemi
&lt;/h2&gt;

&lt;p&gt;Un gestionale raramente vive da solo. Elenca ogni sistema con cui deve scambiare dati e, per ciascuno, in che direzione e con che frequenza:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Fatturazione elettronica e SdI&lt;/strong&gt;: il gestionale genera l'XML e lo invia tramite un intermediario, oppure passa i dati a un software di fatturazione che già usate? Serve ricevere le fatture passive?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ERP o contabilità esistente&lt;/strong&gt;: cosa resta lì e cosa passa al nuovo sistema, e chi è il "padrone" di ogni dato (per esempio, le anagrafiche si modificano solo in un posto).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;E-commerce&lt;/strong&gt;: ordini, giacenze, prezzi, stati di spedizione. In tempo reale o a intervalli?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Altro&lt;/strong&gt;: banca, corrieri, CRM, posta elettronica, firma digitale, macchinari o sensori in produzione.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Per ogni integrazione indica se il sistema dall'altra parte ha delle API documentate, se esporta file o se oggi i dati si copiano a mano. È una delle voci che pesa di più sulla stima, e saperlo in anticipo evita preventivi "al buio".&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Report e numeri che vi servono
&lt;/h2&gt;

&lt;p&gt;Scrivi quali informazioni volete ottenere dal gestionale, non solo quali inserire. Per esempio:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;margine per commessa o per cliente;&lt;/li&gt;
&lt;li&gt;ordini aperti e in ritardo;&lt;/li&gt;
&lt;li&gt;scadenziario incassi e pagamenti;&lt;/li&gt;
&lt;li&gt;carico di lavoro per tecnico o reparto.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Per ogni report indica chi lo guarda, ogni quanto e in che formato (a schermo, PDF, export Excel). Se oggi avete già un file Excel che fa questo lavoro, allegalo: è la specifica migliore possibile.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Criteri di accettazione
&lt;/h2&gt;

&lt;p&gt;Questa è la sezione che distingue un brief da una lista di desideri. Per ogni funzione importante scrivi &lt;strong&gt;come capirete che funziona&lt;/strong&gt;. Qualche esempio:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"Un commerciale crea un preventivo da un cliente esistente, lo trasforma in ordine e l'amministrazione lo vede senza reinserirlo."&lt;/li&gt;
&lt;li&gt;"Una fattura generata dal gestionale viene accettata dallo SdI senza scarti per i casi standard che usiamo (cliente italiano, split payment, reverse charge)."&lt;/li&gt;
&lt;li&gt;"Il tecnico compila il rapportino da telefono anche con connessione scarsa e i dati arrivano in ufficio appena torna la rete."&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Criteri così sono verificabili da entrambe le parti, chiudono le discussioni del tipo "pensavo facesse anche…" e diventano la base per il collaudo di ogni rilascio.&lt;/p&gt;

&lt;h2&gt;
  
  
  7. Proprietà del codice e dei dati
&lt;/h2&gt;

&lt;p&gt;Va chiarito per iscritto prima di firmare, non dopo:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;di chi è il codice sorgente&lt;/strong&gt; e se ne riceverete una copia;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;di chi sono i dati&lt;/strong&gt; e in che formato potrete esportarli in qualsiasi momento;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;dove gira il sistema&lt;/strong&gt;: server vostro, cloud a vostro nome o infrastruttura del fornitore;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;cosa succede se cambiate fornitore&lt;/strong&gt;: documentazione, credenziali, accessi.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Non esiste una risposta giusta per tutti, ma deve esistere una risposta scritta. Un gestionale su misura è un investimento pluriennale, e la libertà di cambiare chi lo mantiene è parte del suo valore.&lt;/p&gt;

&lt;h2&gt;
  
  
  8. Manutenzione ed evoluzione
&lt;/h2&gt;

&lt;p&gt;Il giorno del rilascio non è la fine del progetto. Nel brief chiedi esplicitamente:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;come si gestiscono &lt;strong&gt;bug e segnalazioni&lt;/strong&gt;, e in quanto tempo;&lt;/li&gt;
&lt;li&gt;chi si occupa di &lt;strong&gt;aggiornamenti di sicurezza&lt;/strong&gt;, backup e hosting;&lt;/li&gt;
&lt;li&gt;come si stimano e si pagano le &lt;strong&gt;modifiche future&lt;/strong&gt;;&lt;/li&gt;
&lt;li&gt;cosa succede quando cambiano le regole esterne, per esempio le specifiche tecniche della fattura elettronica.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Così potete confrontare i preventivi sul costo complessivo negli anni, non solo sul prezzo iniziale.&lt;/p&gt;

&lt;h2&gt;
  
  
  9. Vincoli, tempi e budget
&lt;/h2&gt;

&lt;p&gt;Chiudi il brief con i paletti: entro quando vi serve il primo rilascio, periodi in cui non potete fermarvi (chiusure di bilancio, alta stagione), persone interne che seguiranno il progetto e quanto tempo possono dedicarci.&lt;/p&gt;

&lt;p&gt;Indicare una fascia di budget, anche ampia, non è una debolezza: permette al fornitore di proporre la soluzione giusta per quella cifra invece di un progetto ideale fuori portata. Per avere un ordine di grandezza, nella nostra esperienza un'automazione mirata o un primo modulo su un solo processo si collocano in genere tra 3.000 e 7.500 €, un gestionale con più moduli collegati tra 7.500 e 18.000 € e un gestionale completo che copre più reparti tra 18.000 e 40.000 € (IVA esclusa). Il numero vero dipende proprio dalle voci di questa checklist: processi, integrazioni e dati da recuperare.&lt;/p&gt;

&lt;h2&gt;
  
  
  Una pagina di riepilogo
&lt;/h2&gt;

&lt;p&gt;Se il brief è lungo, aggiungi in testa una pagina di sintesi:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;cosa fa l'azienda, in tre righe;&lt;/li&gt;
&lt;li&gt;i 3-5 problemi che il gestionale deve risolvere;&lt;/li&gt;
&lt;li&gt;i processi indispensabili per il primo rilascio;&lt;/li&gt;
&lt;li&gt;le integrazioni obbligatorie;&lt;/li&gt;
&lt;li&gt;tempi e fascia di budget.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;È la pagina che chiunque leggerà per prima, e spesso basta per capire se ha senso approfondire.&lt;/p&gt;

&lt;h2&gt;
  
  
  Per approfondire
&lt;/h2&gt;

&lt;p&gt;Se state valutando un &lt;a href="https://www.s-data.it/gestionale-su-misura.html" rel="noopener noreferrer"&gt;gestionale su misura&lt;/a&gt;, portare questa checklist già compilata al primo incontro con il fornitore accorcia molto i tempi di analisi. Per capire come ogni voce del brief incide sul prezzo finale trovate le fasce e i fattori di costo nella guida &lt;a href="https://www.s-data.it/quanto-costa-software-gestionale-su-misura.html" rel="noopener noreferrer"&gt;quanto costa un software gestionale su misura&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>gestionale</category>
      <category>software</category>
      <category>sviluppo</category>
      <category>italia</category>
    </item>
    <item>
      <title>Fattura elettronica XML: gli errori più comuni che fanno scartare il file dallo SdI (e come evitarli)</title>
      <dc:creator>S-Data</dc:creator>
      <pubDate>Tue, 27 Oct 2026 22:16:37 +0000</pubDate>
      <link>https://dev.to/s-data/fattura-elettronica-xml-gli-errori-piu-comuni-che-fanno-scartare-il-file-dallo-sdi-e-come-nk6</link>
      <guid>https://dev.to/s-data/fattura-elettronica-xml-gli-errori-piu-comuni-che-fanno-scartare-il-file-dallo-sdi-e-come-nk6</guid>
      <description>&lt;p&gt;Chi genera fatture elettroniche da PDF o da Excel scopre presto che «produrre un XML» e «produrre un XML che lo SdI accetta» sono due lavori diversi. Qui metto in ordine i motivi di scarto che un convertitore può provocare, con codici e significati presi dai documenti ufficiali.&lt;/p&gt;

&lt;p&gt;Fonti usate: &lt;em&gt;Allegato A – Specifiche tecniche&lt;/em&gt; versione 1.9.1 (Agenzia delle Entrate), &lt;em&gt;Elenco dei controlli&lt;/em&gt; versione 2.0 (fatturapa.gov.it) e lo schema &lt;code&gt;Schema_VFPR12&lt;/code&gt; versione 1.2.3. I link sono in fondo. &lt;/p&gt;

&lt;h2&gt;
  
  
  Due livelli di controllo, non uno
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Validazione dello schema (XSD).&lt;/strong&gt; Controlla struttura, ordine degli elementi, tipi e formati. Un file che non la supera è, in pratica, «non conforme al formato»: &lt;strong&gt;00200&lt;/strong&gt;, e nel messaggio lo SdI indica il punto preciso. Se gli errori di formato sono più di 50, lo SdI si ferma con il &lt;strong&gt;00201&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Controlli di contenuto.&lt;/strong&gt; Coerenza dei numeri, identificativi fiscali, codice destinatario, unicità. Qui lo schema non ti aiuta: un file può essere valido sull'XSD e venire scartato lo stesso.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Per questo conviene validare in locale sull'XSD, ma non fermarsi lì.&lt;/p&gt;

&lt;h2&gt;
  
  
  Codici di scarto da conoscere
&lt;/h2&gt;

&lt;p&gt;Significati come da &lt;em&gt;Elenco controlli&lt;/em&gt; v2.0 e Allegato A 1.9.1:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Codice&lt;/th&gt;
&lt;th&gt;Significato&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;00200&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;File non conforme al formato (il messaggio indica la non conformità puntuale)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;00300 / 00301 / 00305&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Identificativo fiscale non valido: &lt;code&gt;IdCodice&lt;/code&gt; del trasmittente (00300), del cedente/prestatore (00301), del cessionario/committente (00305). Il controllo verifica la presenza in anagrafe tributaria; non si applica agli identificativi assegnati da autorità estere&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;00311&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;CodiceDestinatario&lt;/code&gt; non valido&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;00400&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;Natura&lt;/code&gt; assente con &lt;code&gt;AliquotaIVA&lt;/code&gt; pari a zero&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;00401&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;Natura&lt;/code&gt; presente con &lt;code&gt;AliquotaIVA&lt;/code&gt; diversa da zero (con l'eccezione del TipoDocumento TD16)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;00404&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Fattura duplicata: stesso cedente, stesso anno della data, stesso numero di una fattura già trasmessa e non scartata&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;00421 / 00422 / 00423&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;Imposta&lt;/code&gt;, &lt;code&gt;ImponibileImporto&lt;/code&gt; e &lt;code&gt;PrezzoTotale&lt;/code&gt; non calcolati secondo le regole delle specifiche&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;00424&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;AliquotaIVA&lt;/code&gt; non espressa in termini percentuali&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;00427&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;CodiceDestinatario&lt;/code&gt; di lunghezza non ammessa per il &lt;code&gt;FormatoTrasmissione&lt;/code&gt; (7 caratteri con FPA12, 6 con FPR12)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Altri due: &lt;strong&gt;00417&lt;/strong&gt; (del cessionario/committente deve esserci almeno uno tra partita IVA e codice fiscale) e &lt;strong&gt;00425&lt;/strong&gt; (il &lt;code&gt;Numero&lt;/code&gt; documento deve contenere almeno un carattere numerico).&lt;/p&gt;

&lt;h2&gt;
  
  
  Dove sbaglia un convertitore PDF/Excel → XML
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Date.&lt;/strong&gt; Nello schema &lt;code&gt;Data&lt;/code&gt; è un &lt;code&gt;xs:date&lt;/code&gt;: formato &lt;code&gt;2026-10-27&lt;/code&gt;. Una data letta dal PDF come &lt;code&gt;27/10/2026&lt;/code&gt; non passa l'XSD (l'ho provato). La data non può nemmeno essere successiva alla ricezione da parte dello SdI (&lt;strong&gt;00403&lt;/strong&gt;).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Decimali e arrotondamenti.&lt;/strong&gt; Qui nascono molti scarti 00421–00423. Le regole:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;PrezzoTotale&lt;/code&gt; deve essere uguale a &lt;code&gt;(PrezzoUnitario ± ScontoMaggiorazione) × Quantita&lt;/code&gt;, con tolleranza di ±1 centesimo (00423);&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;Imposta&lt;/code&gt; è &lt;code&gt;AliquotaIVA × ImponibileImporto / 100&lt;/code&gt;, arrotondata alla seconda cifra decimale (per difetto se la terza è inferiore a 5, per eccesso se uguale o maggiore), tolleranza ±1 centesimo (00421);&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;ImponibileImporto&lt;/code&gt; per ogni aliquota è la somma dei &lt;code&gt;PrezzoTotale&lt;/code&gt; delle righe con quell'aliquota (più contributo cassa e arrotondamento, se presenti), con tolleranza di ±1 euro (00422).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Nello schema &lt;code&gt;Imposta&lt;/code&gt; e &lt;code&gt;ImportoTotaleDocumento&lt;/code&gt; ammettono esattamente due decimali: &lt;code&gt;8.250&lt;/code&gt; è respinto, &lt;code&gt;8.25&lt;/code&gt; passa. &lt;code&gt;PrezzoUnitario&lt;/code&gt; ne accetta da 2 a 8, la &lt;code&gt;Percentuale&lt;/code&gt; di sconto solo 2. L'Agenzia stessa segnala nelle sue FAQ che il 00423 compare spesso con gli sconti quando il sistema di origine lavora con più decimali di quelli previsti dal tracciato. In un convertitore: calcola con tipi decimali (mai float), arrotonda come da specifica e confronta i totali ricostruiti con quelli del documento sorgente.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Aliquote e Natura.&lt;/strong&gt; &lt;code&gt;AliquotaIVA&lt;/code&gt; va scritta come &lt;code&gt;22.00&lt;/code&gt;, non &lt;code&gt;22&lt;/code&gt; e non &lt;code&gt;0.22&lt;/code&gt;. Attenzione: &lt;code&gt;0.22&lt;/code&gt; è valido per l'XSD, perché ha due decimali, ma non è «in termini percentuali» e lo SdI risponde 00424. Con aliquota &lt;code&gt;0.00&lt;/code&gt; serve la &lt;code&gt;Natura&lt;/code&gt; (00400), con aliquota diversa da zero non va messa (00401). I codici generici N2, N3 e N6 non sono più ammessi come natura dell'operazione (controllo &lt;strong&gt;00445&lt;/strong&gt;), ma l'XSD li accetta ancora: serve il sottocodice (per esempio &lt;code&gt;N2.2&lt;/code&gt;).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Codice destinatario e PEC.&lt;/strong&gt; Il &lt;code&gt;CodiceDestinatario&lt;/code&gt; ha 7 caratteri per i privati (FPR12) e 6 per la PA. &lt;code&gt;0000000&lt;/code&gt; si usa quando il destinatario riceve via PEC indicata in &lt;code&gt;PECDestinatario&lt;/code&gt; o quando non si conosce il canale. &lt;code&gt;XXXXXXX&lt;/code&gt; è solo per soggetti non residenti: con un IdPaese italiano del cessionario viene scartato con &lt;strong&gt;00313&lt;/strong&gt;. Un codice a 6 caratteri in una fattura FPR12 supera l'XSD (che accetta 6–7 caratteri) ma fa scattare il 00427.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Partita IVA e codice fiscale.&lt;/strong&gt; L'esistenza la verifica lo SdI (00300, 00301, 00305), non lo schema. Dal PDF possono arrivare spazi, prefissi «IT» ripetuti o zeri persi: normalizza prima di scrivere &lt;code&gt;IdCodice&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ordine degli elementi.&lt;/strong&gt; Lo schema è una sequenza: mettere &lt;code&gt;PrezzoUnitario&lt;/code&gt; prima di &lt;code&gt;Quantita&lt;/code&gt; produce un errore (&lt;code&gt;Element 'Quantita': This element is not expected&lt;/code&gt;). Se generi l'XML da un dizionario, non dare per scontato l'ordine delle chiavi.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Encoding e caratteri.&lt;/strong&gt; Le descrizioni ammettono solo caratteri Basic Latin e Latin-1 Supplement: &lt;code&gt;è&lt;/code&gt;, &lt;code&gt;à&lt;/code&gt; passano, mentre il trattino lungo &lt;code&gt;–&lt;/code&gt; e il simbolo &lt;code&gt;€&lt;/code&gt;, comunissimi nel testo copiato da un PDF, vengono respinti dall'XSD. Sostituiscili prima di scrivere. Anche &lt;code&gt;Numero&lt;/code&gt; è limitato a 20 caratteri Basic Latin.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Numero e duplicati.&lt;/strong&gt; Il numero deve avere almeno una cifra (00425). Ritrasmettere lo stesso numero è un problema solo se la fattura precedente non è stata scartata (00404): dopo uno scarto, la stessa fattura corretta può essere inviata di nuovo con lo stesso numero.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dimensioni e nome file.&lt;/strong&gt; Il singolo file fattura non può superare 5 MB. Il nome segue &lt;code&gt;IdPaese + codice trasmittente&lt;/code&gt;, underscore, progressivo alfanumerico di massimo 5 caratteri, ad esempio &lt;code&gt;IT01234567890_00001.xml&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Un frammento corretto
&lt;/h2&gt;

&lt;p&gt;Il blocco righe e riepilogo di una fattura TD01 con due aliquote (22% e operazione con natura N2.2). Ho validato il file completo da cui è estratto sull'XSD 1.2.3 con libxml2: l'esito riguarda solo lo schema. I controlli di contenuto dello SdI (anagrafe, destinatario) non si possono riprodurre in locale, e i dati sono inventati.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight xml"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;DatiBeniServizi&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;DettaglioLinee&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;NumeroLinea&amp;gt;&lt;/span&gt;1&lt;span class="nt"&gt;&amp;lt;/NumeroLinea&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;Descrizione&amp;gt;&lt;/span&gt;Consulenza tecnica&lt;span class="nt"&gt;&amp;lt;/Descrizione&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;Quantita&amp;gt;&lt;/span&gt;3.00&lt;span class="nt"&gt;&amp;lt;/Quantita&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;UnitaMisura&amp;gt;&lt;/span&gt;ore&lt;span class="nt"&gt;&amp;lt;/UnitaMisura&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;PrezzoUnitario&amp;gt;&lt;/span&gt;12.50&lt;span class="nt"&gt;&amp;lt;/PrezzoUnitario&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;PrezzoTotale&amp;gt;&lt;/span&gt;37.50&lt;span class="nt"&gt;&amp;lt;/PrezzoTotale&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;AliquotaIVA&amp;gt;&lt;/span&gt;22.00&lt;span class="nt"&gt;&amp;lt;/AliquotaIVA&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/DettaglioLinee&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;DettaglioLinee&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;NumeroLinea&amp;gt;&lt;/span&gt;2&lt;span class="nt"&gt;&amp;lt;/NumeroLinea&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;Descrizione&amp;gt;&lt;/span&gt;Rimborso spese documentate&lt;span class="nt"&gt;&amp;lt;/Descrizione&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;PrezzoUnitario&amp;gt;&lt;/span&gt;100.00&lt;span class="nt"&gt;&amp;lt;/PrezzoUnitario&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;PrezzoTotale&amp;gt;&lt;/span&gt;100.00&lt;span class="nt"&gt;&amp;lt;/PrezzoTotale&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;AliquotaIVA&amp;gt;&lt;/span&gt;0.00&lt;span class="nt"&gt;&amp;lt;/AliquotaIVA&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;Natura&amp;gt;&lt;/span&gt;N2.2&lt;span class="nt"&gt;&amp;lt;/Natura&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/DettaglioLinee&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;DatiRiepilogo&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;AliquotaIVA&amp;gt;&lt;/span&gt;22.00&lt;span class="nt"&gt;&amp;lt;/AliquotaIVA&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;ImponibileImporto&amp;gt;&lt;/span&gt;37.50&lt;span class="nt"&gt;&amp;lt;/ImponibileImporto&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;Imposta&amp;gt;&lt;/span&gt;8.25&lt;span class="nt"&gt;&amp;lt;/Imposta&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;EsigibilitaIVA&amp;gt;&lt;/span&gt;I&lt;span class="nt"&gt;&amp;lt;/EsigibilitaIVA&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/DatiRiepilogo&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;DatiRiepilogo&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;AliquotaIVA&amp;gt;&lt;/span&gt;0.00&lt;span class="nt"&gt;&amp;lt;/AliquotaIVA&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;Natura&amp;gt;&lt;/span&gt;N2.2&lt;span class="nt"&gt;&amp;lt;/Natura&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;ImponibileImporto&amp;gt;&lt;/span&gt;100.00&lt;span class="nt"&gt;&amp;lt;/ImponibileImporto&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;Imposta&amp;gt;&lt;/span&gt;0.00&lt;span class="nt"&gt;&amp;lt;/Imposta&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;RiferimentoNormativo&amp;gt;&lt;/span&gt;Esempio di riferimento normativo&lt;span class="nt"&gt;&amp;lt;/RiferimentoNormativo&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/DatiRiepilogo&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/DatiBeniServizi&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Per validare in locale basta qualche riga (serve lo schema scaricato dal sito dell'Agenzia):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;lxml&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;etree&lt;/span&gt;

&lt;span class="n"&gt;schema&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;etree&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;XMLSchema&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;etree&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;parse&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Schema_VFPR12_v1.2.3.xsd&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="n"&gt;doc&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;etree&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;parse&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;fattura.xml&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="n"&gt;schema&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;validate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;doc&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;schema&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;error_log&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;line&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Nota: lo schema importa lo schema &lt;code&gt;xmldsig&lt;/code&gt; del W3C; se la rete non è disponibile, scaricane una copia e sostituisci il percorso nell'&lt;code&gt;import&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Checklist finale
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Date in formato &lt;code&gt;AAAA-MM-GG&lt;/code&gt;, non successive all'invio.&lt;/li&gt;
&lt;li&gt;Importi con punto decimale, due decimali dove richiesto; calcoli con tipi decimali.&lt;/li&gt;
&lt;li&gt;Ricalcola &lt;code&gt;PrezzoTotale&lt;/code&gt;, &lt;code&gt;Imposta&lt;/code&gt; e &lt;code&gt;ImponibileImporto&lt;/code&gt; e verifica le tolleranze prima di scrivere.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;AliquotaIVA&lt;/code&gt; in percentuale (&lt;code&gt;22.00&lt;/code&gt;); &lt;code&gt;Natura&lt;/code&gt; solo con aliquota zero, e mai N2, N3 o N6 generici.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;CodiceDestinatario&lt;/code&gt; di 7 caratteri per FPR12; &lt;code&gt;0000000&lt;/code&gt; con &lt;code&gt;PECDestinatario&lt;/code&gt;; &lt;code&gt;XXXXXXX&lt;/code&gt; solo per non residenti.&lt;/li&gt;
&lt;li&gt;Partita IVA e codice fiscale normalizzati; almeno uno dei due per il cessionario.&lt;/li&gt;
&lt;li&gt;Elementi nell'ordine dello schema.&lt;/li&gt;
&lt;li&gt;Testo ripulito dai caratteri fuori da Basic Latin e Latin-1 (trattini lunghi, &lt;code&gt;€&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;Numero&lt;/code&gt; con almeno una cifra, massimo 20 caratteri; file sotto 5 MB; nome file corretto.&lt;/li&gt;
&lt;li&gt;Validazione sull'XSD ufficiale aggiornato alla versione in vigore, a ogni cambio di specifiche.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Per approfondire
&lt;/h2&gt;

&lt;p&gt;Se ti serve generare questi file da documenti esistenti, qui trovi come funziona un &lt;a href="https://www.s-data.it/convertitore-pdf-xml.html" rel="noopener noreferrer"&gt;convertitore da PDF a XML per la fattura elettronica&lt;/a&gt;; il quadro generale è nella pagina sulla &lt;a href="https://www.s-data.it/fatturazione-elettronica.html" rel="noopener noreferrer"&gt;fatturazione elettronica&lt;/a&gt;. S-Data sviluppa convertitori su misura: se il tuo caso non rientra negli strumenti già pronti, se ne può parlare.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fonti ufficiali&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.agenziaentrate.gov.it/portale/documents/d/guest/allegato-a-specifiche-tecniche-vers-1-9-1" rel="noopener noreferrer"&gt;Allegato A – Specifiche tecniche 1.9.1&lt;/a&gt; (Agenzia delle Entrate)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.fatturapa.gov.it/export/documenti/fatturapa/v1.4/Elenco-Controlli-versione-2.0.pdf" rel="noopener noreferrer"&gt;Elenco dei controlli, versione 2.0&lt;/a&gt; (fatturapa.gov.it)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.agenziaentrate.gov.it/portale/documents/d/guest/schema_vfpr12_v1-2-3" rel="noopener noreferrer"&gt;Schema VFPR12 1.2.3&lt;/a&gt; (Agenzia delle Entrate)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.agenziaentrate.gov.it/portale/controlli-sdi-motivi-di-errore" rel="noopener noreferrer"&gt;Controlli SdI / motivi di errore (FAQ)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>xml</category>
      <category>italy</category>
      <category>programming</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Software su misura o pacchetto: come decidere (e come fare il conto su 3-5 anni)</title>
      <dc:creator>S-Data</dc:creator>
      <pubDate>Tue, 27 Oct 2026 12:56:38 +0000</pubDate>
      <link>https://dev.to/s-data/software-su-misura-o-pacchetto-come-decidere-e-come-fare-il-conto-su-3-5-anni-50g0</link>
      <guid>https://dev.to/s-data/software-su-misura-o-pacchetto-come-decidere-e-come-fare-il-conto-su-3-5-anni-50g0</guid>
      <description>&lt;p&gt;La domanda «meglio su misura o a pacchetto?» ha una risposta onesta in due righe, e va detto subito: &lt;strong&gt;se il pacchetto ti basta, è la scelta giusta.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Il &lt;strong&gt;pacchetto&lt;/strong&gt; basta quando siete in pochi e il vostro modo di lavorare è standard. Il primo anno costa quasi sempre meno.&lt;/li&gt;
&lt;li&gt;Il &lt;strong&gt;su misura&lt;/strong&gt; conviene quando il vostro processo è diverso da quello che il pacchetto prevede, o quando oggi lavorate tra Excel, email e doppie digitazioni.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Il resto di questo articolo serve a capire in quale dei due casi sei.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cinque domande da farsi prima di decidere
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Quante persone useranno il software e per quanti anni?&lt;/strong&gt; Più sono, e più a lungo lo usate, più pesa il costo ricorrente.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Il mio processo entra nel pacchetto senza trucchi, o devo adattarmi io?&lt;/strong&gt; Se serve un foglio Excel accanto al gestionale per fare la parte che il gestionale non fa, la risposta è già un'altra.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Quanto tempo a settimana si perde tra Excel, email e doppie digitazioni?&lt;/strong&gt; Moltiplicalo per le persone coinvolte: è il costo nascosto del «ci arrangiamo».&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Quali sistemi deve collegare?&lt;/strong&gt; Contabilità, ERP, CRM, e-commerce, banca, corrieri. Un pacchetto collega quello che il produttore ha previsto.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cosa succede ai dati e al software se smetto di pagare o cambio fornitore?&lt;/strong&gt; Con un abbonamento, se smetti di pagare smetti di usarlo: controlla le condizioni di esportazione dei dati.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Il confronto, punto per punto
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Criterio&lt;/th&gt;
&lt;th&gt;Pacchetto in abbonamento&lt;/th&gt;
&lt;th&gt;Su misura&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Come si lavora&lt;/td&gt;
&lt;td&gt;ti adatti tu al programma&lt;/td&gt;
&lt;td&gt;il programma segue le tue fasi, documenti e ruoli&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Costo iniziale&lt;/td&gt;
&lt;td&gt;più basso&lt;/td&gt;
&lt;td&gt;più alto: si paga lo sviluppo, meglio se per fasi&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Costo nel tempo&lt;/td&gt;
&lt;td&gt;canone mensile, di solito per utente&lt;/td&gt;
&lt;td&gt;hosting ed eventuale assistenza&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Se aumentano le persone&lt;/td&gt;
&lt;td&gt;il costo cresce a ogni utente&lt;/td&gt;
&lt;td&gt;dipende dal contratto: chiedi se ci sono licenze per utente&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Moduli&lt;/td&gt;
&lt;td&gt;paghi anche quelli che non usi&lt;/td&gt;
&lt;td&gt;solo quelli che servono, aggiunti quando servono&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Integrazioni&lt;/td&gt;
&lt;td&gt;quelle previste dal produttore&lt;/td&gt;
&lt;td&gt;API, database o file verso i sistemi che già usi&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Dati e proprietà&lt;/td&gt;
&lt;td&gt;legati alla piattaforma&lt;/td&gt;
&lt;td&gt;sotto il tuo controllo; codice su repository se previsto&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Il confronto è generale: ogni prodotto ha le sue condizioni, quindi controlla quelle del pacchetto che stai valutando.&lt;/p&gt;

&lt;h2&gt;
  
  
  Una terza strada: tenere il pacchetto e aggiungere il pezzo che manca
&lt;/h2&gt;

&lt;p&gt;Non è una scelta tutto o niente. La contabilità, l'ERP o l'e-commerce che usi oggi possono restare al loro posto: un modulo su misura si collega a loro via API, database o file e copre solo la parte che il pacchetto non copre. Si parte dal processo che oggi ti fa perdere più tempo, lo metti in uso e decidi cosa aggiungere guardando come funziona.&lt;/p&gt;

&lt;h2&gt;
  
  
  Il conto su 3-5 anni (con un po' di codice)
&lt;/h2&gt;

&lt;p&gt;Il confronto onesto non si fa sul primo anno. Per ogni opzione somma tutto quello che pagherai nell'orizzonte che ti interessa:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;costo_pacchetto&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;canone_mensile_utente&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;utenti&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;anni&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;extra_a_pagamento&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;0.0&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt;Canone per utente x utenti x 12 mesi x anni, più moduli/personalizzazioni a pagamento.&lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;canone_mensile_utente&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;utenti&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;12&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;anni&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;extra_a_pagamento&lt;/span&gt;


&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;costo_su_misura&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;sviluppo&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;anni&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;hosting_annuo&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;0.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;manutenzione_pct&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;0.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;licenze_terzi_annue&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;0.0&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt;Sviluppo una tantum più costi ricorrenti. manutenzione_pct è una frazione (0.15 = 15%).&lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;
    &lt;span class="n"&gt;ricorrenti&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;hosting_annuo&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;sviluppo&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;manutenzione_pct&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;licenze_terzi_annue&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;sviluppo&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;ricorrenti&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;anni&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Come input usa &lt;strong&gt;numeri tuoi o preventivi veri&lt;/strong&gt;: il canone per utente del pacchetto che stai valutando, il numero di persone, le cifre scritte nei preventivi. Per la manutenzione, le software house che la dichiarano pubblicamente indicano tra il 12% e il 20% annuo del valore sviluppato; molte la rendono facoltativa, quindi chiedilo esplicitamente. Poi confronta &lt;code&gt;costo_pacchetto(...)&lt;/code&gt; e &lt;code&gt;costo_su_misura(...)&lt;/code&gt; a 3 e a 5 anni, e guarda in quale anno le due curve si incrociano (se si incrociano).&lt;/p&gt;

&lt;p&gt;Una regola pratica che ne discende: più sono gli utenti e più a lungo userai il programma, prima il su misura va in pari. Con pochi utenti e un processo standard, il pacchetto resta spesso più conveniente.&lt;/p&gt;

&lt;h2&gt;
  
  
  Come tenere il costo sotto controllo, se scegli il su misura
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Perimetro scritto&lt;/strong&gt; prima di iniziare: cosa fa il software e cosa resta fuori.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Parti da un modulo&lt;/strong&gt;, quello che oggi ti costa più tempo.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Paga a fasi&lt;/strong&gt;, man mano che il software entra in uso.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Chiedi per iscritto&lt;/strong&gt; cosa è compreso e cosa no: hosting, licenze di terzi, funzioni dopo l'avvio, assistenza.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Quanto costa il su misura
&lt;/h2&gt;

&lt;p&gt;Per le fasce di prezzo pubblicate dal mercato e per le voci che muovono il costo c'è la guida &lt;a href="https://www.s-data.it/quanto-costa-software-gestionale-su-misura.html" rel="noopener noreferrer"&gt;Quanto costa un software gestionale su misura&lt;/a&gt;. Il confronto qui sopra è pensato per decidere, non per vendere: se dopo le cinque domande il pacchetto ti basta, prendi il pacchetto.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;S-Data è una software house che sviluppa gestionali su misura dal 2007, quindi ha un interesse nella scelta: ho provato a scrivere il confronto in modo che regga anche per chi sceglie l'altra strada.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>softwaredevelopment</category>
      <category>business</category>
      <category>italy</category>
      <category>architecture</category>
    </item>
    <item>
      <title>Cosa pesa davvero sul costo di un gestionale su misura (dati 2026)</title>
      <dc:creator>S-Data</dc:creator>
      <pubDate>Tue, 27 Oct 2026 12:56:10 +0000</pubDate>
      <link>https://dev.to/s-data/cosa-pesa-davvero-sul-costo-di-un-gestionale-su-misura-dati-2026-2mg7</link>
      <guid>https://dev.to/s-data/cosa-pesa-davvero-sul-costo-di-un-gestionale-su-misura-dati-2026-2mg7</guid>
      <description>&lt;p&gt;Chi deve far costruire un gestionale per la propria azienda si scontra quasi sempre con la stessa risposta: «dipende». È vero, ma si può dire qualcosa di più preciso. Ho messo insieme i prezzi che &lt;strong&gt;dodici software house e professionisti italiani pubblicano sui loro siti&lt;/strong&gt; (rilevazione del 22 ottobre 2026) e li ho tenuti separati da qualsiasi stima mia. Qui sotto trovi cosa dicono, cosa non dicono e quali sono le voci che spostano davvero il costo.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cosa dicono i prezzi pubblicati
&lt;/h2&gt;

&lt;p&gt;Nove delle dodici fonti pubblicano cifre per almeno due fasce di progetto e sono entrate nel calcolo. Mediane dei prezzi dichiarati, &lt;strong&gt;IVA esclusa&lt;/strong&gt;:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Fascia&lt;/th&gt;
&lt;th&gt;Mediana dei minimi&lt;/th&gt;
&lt;th&gt;Mediana dei massimi&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Piccolo progetto o primo modulo&lt;/td&gt;
&lt;td&gt;5.000 €&lt;/td&gt;
&lt;td&gt;13.500 €&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Gestionale con più moduli collegati&lt;/td&gt;
&lt;td&gt;15.000 €&lt;/td&gt;
&lt;td&gt;22.000 €&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Gestionale completo / ERP&lt;/td&gt;
&lt;td&gt;37.500 €&lt;/td&gt;
&lt;td&gt;40.000 € (molte fonti scrivono «oltre»)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Se si guardano solo le cinque software house che si rivolgono esplicitamente alle PMI (classificazione mia, per come si presentano sui loro siti) le fasce scendono: 3.100–8.000 € per il piccolo, 8.000–20.000 € per il medio, 18.000–40.000 € per il grande. Le agenzie orientate a clienti più grandi pubblicano cifre molto più alte in tutte le fasce.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tre cose da non dimenticare quando leggi quella tabella
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Sono prezzi pubblicati, non preventivi chiusi.&lt;/strong&gt; Un preventivo reale può essere più alto o più basso.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Il campione è piccolo e non è casuale.&lt;/strong&gt; Sono le pagine che una ricerca sul web mostra, scritte da chi vende il servizio.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;«Piccolo», «medio» e «grande» non significano la stessa cosa per tutti.&lt;/strong&gt; Alcune cifre sono per modulo, altre per reparto, altre per un verticale. Dove una fonte scrive «oltre X» ho usato X come minimo e nessun massimo, quindi le mediane dei massimi per i progetti grandi si basano su meno fonti.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Un conflitto di interessi va detto: scrivo per una software house che sviluppa gestionali su misura. Per questo le nostre fasce non sono nei dati e non entrano in nessun calcolo.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cosa muove davvero il costo
&lt;/h2&gt;

&lt;p&gt;Due gestionali che sulla carta sembrano uguali possono costare uno il doppio dell'altro. Nella nostra esperienza la differenza sta quasi sempre in cinque voci, e nessuna è «il numero di schermate»:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Quanti processi copre.&lt;/strong&gt; Un'attività sola (per esempio i preventivi) oppure più reparti che si passano il lavoro. Ogni processo in più porta regole, schermate e test.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Quanti sistemi deve collegare.&lt;/strong&gt; Contabilità, ERP, CRM, e-commerce, banca, corrieri. Spesso è la voce che pesa di più, soprattutto se il programma da collegare è vecchio o chiuso, senza API.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ruoli e permessi.&lt;/strong&gt; Chi vede cosa, chi modifica, chi approva. Cinque persone con compiti molto diversi possono costare più lavoro di cinquanta che fanno la stessa cosa.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dati da recuperare.&lt;/strong&gt; Partire da zero è semplice. Portare anni di anagrafiche e storico da Excel o dal vecchio gestionale richiede pulizia, regole di deduplica e controlli con chi quei dati li conosce.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Regole del lavoro.&lt;/strong&gt; Listini per cliente, calcoli, scadenze, passaggi di approvazione. È la parte che si vede meno ed è quella che fa la differenza tra un programma generico e uno utile.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Da dove nascono le cifre: le tariffe a giornata
&lt;/h2&gt;

&lt;p&gt;Un preventivo è, in buona parte, giornate di lavoro moltiplicate per una tariffa. Le fonti pubbliche che ho trovato:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Assintel Report 2025, riportato da Buspa (indagine su 346 PMI ICT, dati 2024): programmatore 347 €/giorno, analista circa 420, capoprogetto circa 480, consulente 540.&lt;/li&gt;
&lt;li&gt;Zornade: freelance e piccole strutture 250–400 €/giorno; software house strutturate 400–700 €.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A titolo di sola aritmetica: a 347 €/giorno, 5.000 € corrispondono a circa 14 giornate di un programmatore. Non è un preventivo, serve per capire cosa può starci dentro un «piccolo progetto».&lt;/p&gt;

&lt;h2&gt;
  
  
  La manutenzione: quanto chiedono
&lt;/h2&gt;

&lt;p&gt;Tra le fonti che la indicano, la manutenzione annua è dichiarata tra il &lt;strong&gt;12% e il 20%&lt;/strong&gt; del valore sviluppato (LEMIO 12–18%, SicDev 15–20%, Sydus 15–20%). Altre fonti non la indicano o parlano di supporto incluso per alcuni mesi.&lt;/p&gt;

&lt;h2&gt;
  
  
  Come confrontare due preventivi
&lt;/h2&gt;

&lt;p&gt;Prima di confrontare due cifre, confronta cosa c'è dentro:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;c'è un &lt;strong&gt;perimetro scritto&lt;/strong&gt; (cosa fa il software e cosa resta fuori)?&lt;/li&gt;
&lt;li&gt;si paga &lt;strong&gt;a milestone&lt;/strong&gt; o tutto all'inizio?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;hosting, server e licenze di terzi&lt;/strong&gt; sono nel prezzo o a parte?&lt;/li&gt;
&lt;li&gt;l'&lt;strong&gt;import dei dati&lt;/strong&gt; è compreso, e quali dati?&lt;/li&gt;
&lt;li&gt;cosa costano le &lt;strong&gt;funzioni chieste dopo l'avvio&lt;/strong&gt;?&lt;/li&gt;
&lt;li&gt;la &lt;strong&gt;manutenzione&lt;/strong&gt; è obbligatoria o facoltativa, e in che percentuale?&lt;/li&gt;
&lt;li&gt;chi ha il &lt;strong&gt;controllo di codice e dati&lt;/strong&gt; se cambi fornitore?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Il rischio vero non è il prezzo iniziale, ma un progetto che cresce senza controllo. Un perimetro scritto e un primo modulo da mettere in uso subito sono le due difese più semplici.&lt;/p&gt;

&lt;h2&gt;
  
  
  Dati e fonti
&lt;/h2&gt;

&lt;p&gt;Tabella completa, fonti una per una (con link alle pagine lette), metodo e limiti sono nell'&lt;a href="https://www.s-data.it/osservatorio-prezzi-gestionale-su-misura-2026.html" rel="noopener noreferrer"&gt;Osservatorio prezzi del gestionale su misura 2026&lt;/a&gt;. Il CSV è anche su GitHub, con uno script che ricalcola le mediane: &lt;a href="https://github.com/S-Data-IT/osservatorio-prezzi-gestionale-italia" rel="noopener noreferrer"&gt;S-Data-IT/osservatorio-prezzi-gestionale-italia&lt;/a&gt;. Licenza CC BY 4.0: puoi riusarli citando la fonte.&lt;/p&gt;

&lt;p&gt;Se sei una delle aziende citate e una cifra non è corretta, scrivi a &lt;a href="mailto:info@s-data.it"&gt;info@s-data.it&lt;/a&gt; e la correggiamo.&lt;/p&gt;

</description>
      <category>softwaredevelopment</category>
      <category>business</category>
      <category>italy</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
