Contabilità
Registro IVA Vendite/Acquisti, Liquidazione periodica, Prima Nota in partita doppia
Riferimenti normativi
- Art. 23 DPR 633/72 — Registro vendite: Le fatture emesse devono essere annotate entro 15 giorni nel registro con numero progressivo, data, soggetto, imponibile, aliquota e imposta.
- Art. 25 DPR 633/72 — Registro acquisti: Le fatture ricevute devono essere numerate e annotate nel registro anteriormente alla liquidazione periodica.
- Art. 39 DPR 633/72 — Conservazione registri: I registri IVA vanno conservati fino alla definizione degli accertamenti (minimo 5 anni, estensibili a 7).
- Art. 2214-2216 CC — Libro giornale: L'imprenditore deve tenere il libro giornale annotando giorno per giorno le operazioni relative all'esercizio.
- DPR 600/73 art. 14 — Scritture contabili: Contabilità ordinaria richiede: libro giornale, libro inventari, registri IVA, registro beni ammortizzabili.
- Art. 1 DL 148/1993 — Liquidazione periodica: IVA liquidata mensilmente (o trimestralmente sotto soglia) entro il 16 del mese successivo.
- D.Lgs. 127/2015 — Registri elettronici: I registri IVA possono essere tenuti in formato elettronico. Le fatture SDI alimentano automaticamente il registro.
- OIC 25 — Imposte sul reddito: Principio per rilevazione imposte correnti, differite e anticipate nel bilancio.
Il Registro IVA raccoglie tutte le operazioni rilevanti ai fini IVA in due sezioni: Vendite e Acquisti.
| Filtro | Opzioni | Default |
|---|---|---|
| Anno | Ultimi 5 anni | Anno corrente |
| Periodicità | Mensile / Trimestrale | Mensile |
| Tipo registro | Vendite / Acquisti | Vendite |
| Colonna | Contenuto |
|---|---|
| Data | Data del documento |
| Numero | Numero progressivo |
| Tipo | Tipo documento (TD01, TD06, TD24...) |
| Soggetto | Ragione sociale / nome cliente |
| P.IVA | Partita IVA |
| Imponibile | Base imponibile |
| Aliquota | Percentuale IVA |
| Natura | Codice natura se IVA=0% (N1-N7) |
| Imposta | Importo IVA |
| Totale | Imponibile + Imposta |
| Esigibilità | I (immediata), D (differita), S (split) |
In fondo: totali aggregati per imponibile, imposta e totale.
Stessa struttura del registro vendite ma con le fatture passive (FP) ricevute. Fondamentale per il calcolo dell'IVA detraibile (art. 19 DPR 633/72).
| Voce | Formula |
|---|---|
| IVA Vendite | Σ imposta registro vendite del periodo |
| IVA Acquisti | Σ imposta registro acquisti del periodo |
| Saldo | IVA Vendite − IVA Acquisti (positivo=debito, negativo=credito) |
Periodicità
- Mensile: versamento entro il 16 del mese successivo
- Trimestrale: per soggetti sotto soglia. Scadenze: 16/5, 20/8, 16/11, 16/3 anno successivo. Maggiorazione 1%.
Scarica il registro corrente in CSV (separatore ;). Utilizzabile per: import nel software del commercialista, analisi in Excel, archiviazione fiscale.
La Prima Nota è il libro giornale: registra tutte le operazioni in partita doppia.
- 17 tipi di causale
- 3 stati: Provvisorio, Definitivo, Annullato
- Autocomplete conti dal Piano dei Conti
- Auto-bilanciamento ultima riga
- Duplicazione registrazioni
- Riepilogo saldi conti
- Export CSV, paginazione 30/pag, filtri avanzati
- Premere + Nuova Registrazione.
- Inserire Data e Descrizione.
- Selezionare la Causale (17 tipi).
- Opzionale: collegare un Documento.
- Aggiungere righe: Conto (autocomplete) + importo in Dare o Avere.
- Opzionale: collegare un Soggetto a ogni riga.
- Verificare Dare = Avere (il sistema blocca se sbilanciate).
- Premere Salva → stato PROVVISORIO.
Σ Dare deve sempre essere = Σ Avere. Il sistema mostra lo sbilanciamento in tempo reale.
Esempi
| Operazione | Dare | Avere |
|---|---|---|
| Fattura emessa | Crediti v/clienti | Ricavi + IVA debito |
| Fattura passiva | Costi + IVA credito | Debiti v/fornitori |
| Incasso | Banca c/c | Crediti v/clienti |
| Pagamento | Debiti v/fornitori | Banca c/c |
| Stipendio | Costo personale | Banca + Debiti v/enti |
| Ammortamento | Ammortamento | Fondo ammortamento |
| Causale | Uso |
|---|---|
| FATTURA | Registrazione fattura emessa/ricevuta |
| INCASSO | Riscossione da cliente |
| PAGAMENTO | Pagamento a fornitore |
| BANCA | Bonifici, commissioni, interessi |
| CASSA | Movimenti cassa contanti |
| STIPENDIO | Retribuzioni dipendenti |
| CONTRIBUTI | Contributi previdenziali |
| IMPOSTE | Versamento IRES, IRAP, IVA, F24 |
| AMMORTAMENTO | Quote ammortamento |
| RITENUTA | Ritenute d'acconto versate |
| APERTURA | Apertura esercizio |
| CHIUSURA | Chiusura esercizio |
| RETTIFICA | Correzioni |
| ASSESTAMENTO | Ratei, risconti |
| GIROCONTO | Trasferimento tra conti |
| DIVERSI | Operazioni varie |
| ALTRO | Causale generica |
| Stato | Significato | Modificabile | Cancellabile |
|---|---|---|---|
| PROVVISORIO | Bozza, modificabile | Sì | Sì (cestino) |
| CONFERMATO | Scrittura consolidata | No | No (solo storno) |
| DEFINITIVO | Chiusa in esercizio | No | No (solo storno) |
| ANNULLATO | Annullata (in cestino) | No | Sì (solo admin) |
Riepilogo saldi per ogni conto: differenza totale Dare − totale Avere delle registrazioni definitive. La quadratura (totale Dare = totale Avere) conferma la correttezza contabile.
| Filtro | Tipo |
|---|---|
| Periodo | Date dal/al |
| Causale | Dropdown 17 tipi |
| Stato | Provvisorio / Definitivo / Annullato / Tutti |
| Conto | Autocomplete Piano dei Conti |
| Ricerca | Testo in descrizione e numero |
Paginazione 30/pagina. Export CSV con filtri applicati.
• Pacchetto
CONTABILITA attivo sul workspace (configurabile da SUPERADMIN in /admin/pacchetti)
• Profilo attività compatibile: Tutti i profili con contabilitΓ (escl. forfettari puri)
• Permesso utente abilitato in Modifica Utente → Moduli
I tre livelli si applicano in intersezione. Dettagli completi in Gerarchia Pacchetti+Profilo+Utente.
Dalla toolbar della Prima Nota il pulsante Cestino alterna tra la vista delle registrazioni attive e quelle soft-deleted (cancellate ma ripristinabili).
Cosa finisce nel cestino
- Solo registrazioni in stato PROVVISORIO possono essere spostate nel cestino (ic. delete).
- Le registrazioni CONFERMATO / DEFINITIVO non possono essere cancellate — vanno stornate.
Ripristino e eliminazione definitiva
- Ripristina (ic. restore_from_trash): riporta la registrazione nella lista attiva. Operazione riservata ad amministratori.
- Elimina definitivamente (ic. delete_forever): rimuove fisicamente la registrazione. Richiede motivazione e ruolo admin. L'evento resta registrato nell'audit log.
Lo storno è la modalità corretta per annullare una scrittura già consolidata. Il sistema crea automaticamente una nuova registrazione opposta (Dare↔Avere invertiti) collegata a quella originale.
Come eseguire uno storno
- Individuare la registrazione CONFERMATO/DEFINITIVO da stornare.
- Cliccare sull'icona swap_horiz nelle azioni di riga.
- Inserire la motivazione (obbligatoria).
- Il sistema crea PN-xxxx con causale STORNO e stato CONFERMATO.
Caratteristiche
- La registrazione originale resta intatta.
- Lo storno è etichettato con badge
← storno di PN-N. - La registrazione originale mostra badge
stornata. - La motivazione viene conservata e consultabile in audit.
- Il collegamento bidirezionale permette di ricostruire la catena di rettifiche.
È possibile selezionare più registrazioni (checkbox nella prima colonna) e applicare un'azione in blocco dalla barra inferiore che compare automaticamente.
| Azione | Effetto | Vincoli |
|---|---|---|
| Conferma | Porta le selezionate a CONFERMATO | Ignora registrazioni già confermate |
| Riapri | Riporta a PROVVISORIO | Blocca se CONFERMATO (impossibile retrocedere) |
| Cestino | Sposta nel cestino | Solo su PROVVISORIO |
Per ogni registrazione, l'icona history apre un modal che mostra la storia completa delle modifiche: campo cambiato, valore precedente, valore nuovo, operatore, timestamp, eventuale motivazione.
Cosa viene tracciato
- Modifiche a data, causale, descrizione, stato, note, competenza, documento collegato
- Eventi di soft-delete / ripristino / eliminazione definitiva
- Storni generati (campo
storno_generato→ numero PN) - Motivazioni eventualmente fornite dall'operatore
Mascheramento dati sensibili
Se i campi tracciati contengono valori sensibili (IBAN, CF, P.IVA), il log applica automaticamente il mascheramento conforme al GDPR (es. IT60****3456).
La chiusura periodo consolida definitivamente il registro IVA di un mese o trimestre.
Come chiudere un periodo
- Aprire Contabilità → Registro IVA e selezionare il periodo (anno + mese/trimestre) e il tipo (vendite o acquisti).
- Nel banner di stato in alto appare "Periodo aperto" e il pulsante Chiudi periodo.
- Cliccare, inserire una motivazione (opzionale) e confermare.
- Il sistema calcola totali e hash SHA-256 del contenuto come prova di immutabilità.
Cosa succede dopo la chiusura
- Il banner diventa rosso con icona lock, data/ora di chiusura, operatore e hash (prime 16 cifre).
- Nuovi documenti datati nel periodo chiuso sono bloccati (HTTP 409 con messaggio esplicativo).
- Modifiche a documenti esistenti del periodo chiuso sono anch'esse bloccate.
- La chiusura appare nello Storico → Chiusure.
Riapertura
Un periodo chiuso può essere riaperto solo da un amministratore tramite il pulsante Riapri (richiede motivazione obbligatoria). La riapertura viene tracciata separatamente (riaperto_il, riaperto_da, motivazione_riapertura).
La liquidazione IVA non è più un calcolo volatile ma una registrazione persistita con ciclo di vita.
Stati e transizioni
| Stato | Significato | Modificabile | Transizioni |
|---|---|---|---|
| BOZZA | Salvata, modificabile | Sì | → CONFERMATA / ANNULLATA |
| CONFERMATA | Confermata da admin | No | → VERSATA / ANNULLATA / (BOZZA) |
| VERSATA | Versata con F24 | No | → ANNULLATA |
| ANNULLATA | Annullata | No | → BOZZA |
Come usarla
- Selezionare il periodo: vengono caricati totali IVA vendite/acquisti dal registro.
- Inserire credito periodo precedente (se presente) e note.
- Cliccare Salva BOZZA → il sistema calcola saldo, tipo (debito/credito) e importo da versare.
- Cliccare Conferma per congelare i dati.
- Al versamento: inserire F24 numero e F24 data, poi Segna come VERSATA.
Audit trail
Ogni modifica o transizione viene registrata in log_modifiche_liquidazione_iva. Consultabile dal pulsante Audit accanto alla liquidazione o dal modal Storico → Audit liquidazione.
Ogni export CSV del Registro IVA viene automaticamente registrato nel log export per tracciabilità.
Dati tracciati
| Campo | Significato |
|---|---|
| tipo | vendite / acquisti |
| periodicita | mensile / trimestrale |
| anno / periodo | periodo esportato |
| formato | CSV (default) o altri formati futuri |
| righe_count | numero righe nel file |
| totale_imponibile / totale_imposta | somme aggregate |
| hash_contenuto | SHA-256 del CSV completo (inclusivo BOM e header) |
| esportato_da / esportato_il | utente e timestamp |
Cosa permette il log export
- Ricostruzione a posteriori: confrontando l'hash con un file consegnato al commercialista si prova se è lo stesso prodotto dal sistema o alterato.
- Non-ripudiabilità: l'utente che ha scaricato non può negare di averlo fatto.
- Prova digitale in caso di contestazione fiscale.
Il log è consultabile dal modal Storico → Export CSV: le ultime 100 esportazioni del registro corrente con hash visibile (tooltip mostra hash completo).
La chiusura di un periodo IVA blocca le modifiche non solo ai documenti ma all'intera catena contabile collegata al periodo.
Moduli protetti dal guard
| Modulo | Operazione bloccata | Endpoint | Proxy tipo registro |
|---|---|---|---|
| Documenti | POST / PUT | /api/documenti | tipo documento effettivo (TD01/TD02…) |
| Prima Nota | POST nuova registrazione / PUT modifica | /api/contabilita/prima-nota | derivato dalla causale (ACQUISTI → acquisti) |
| Scadenzario | PATCH (modifica scadenza) | /api/scadenzario/:id | tipo del documento di origine |
| Magazzino | POST movimento | /api/magazzino/movimenti | DDT (registro vendite per default) |
Comportamento
- Il guard invoca
assertPeriodoAperto(prisma, data, codiceTipoDoc)dal middlewareperiodo-iva.js - Se la data cade in una chiusura attiva (
riapertoIl IS NULL): HTTP 409 con messaggio esplicativo - Il messaggio include: periodicità, anno, periodo, data chiusura, tipo registro
Come sbloccare
- Un ADMIN riapre il periodo IVA (con motivazione obbligatoria, tracciata in
chiusure_registro_iva.motivazioneRiapertura) - Effettua le modifiche necessarie
- Richiude il periodo (eventualmente ricalcolando l'hash SHA-256 del nuovo contenuto)
chiusure_registro_iva con la motivazione di riapertura. La storia completa delle chiusure/riaperture è consultabile dal modal Storico → Chiusure dei Registri IVA.Quando una liquidazione IVA ha saldo a DEBITO (IVA da versare), puoi scaricare direttamente il modello F24 precompilato senza doverlo ricopiare a mano.
Passi operativi
- Vai su Contabilità → Registri IVA
- Scegli anno e periodicità (mensile o trimestrale)
- Seleziona il periodo (es. Q2)
- Scorri al blocco “Liquidazione IVA”: se la liquidazione è CONFERMATA o VERSATA con tipo DEBITO, compaiono 3 pulsanti dorati:
- π F24 PDF — modulo stampabile A4 con tutti i campi compilati (contribuente, sezione Erario, totali, firma)
- </> F24 XML (AdE) — tracciato per upload tramite home banking o Fisconline/Entratel
- π F24 CSV — dati grezzi per import in altri software
Codice tributo calcolato automaticamente
| Periodicità | Codice tributo | Esempio |
|---|---|---|
| Mensile | 6001 (gennaio) … 6012 (dicembre) | Gennaio → 6001 |
| Trimestrale | 6031 (Q1) … 6034 (Q4) | Q2 → 6032 |
Dopo aver pagato
Torna sulla liquidazione, inserisci Numero protocollo F24 e Data F24, clicca Segna come VERSATA. Il sistema:
- Blocca modifiche alla liquidazione
- Genera automaticamente la scrittura di versamento nella Prima Nota
- Aggiorna il report annuale
A gennaio-aprile dell'anno successivo devi consegnare al commercialista la Dichiarazione IVA annuale. Il gestionale aggrega tutto l'anno in un unico documento PDF pronto da consegnare.
Passi operativi
- Vai su Contabilità → Registri IVA
- Imposta l'anno (es. 2026 per la dichiarazione 2027)
- Nella barra pulsanti in alto, clicca:
- π Dich. IVA PDF — riepilogo stampabile per te/commercialista
- </> Dich. IVA XML — file strutturato per import nel software del commercialista
Cosa contiene la dichiarazione
Il gestionale compila in automatico i 4 quadri ufficiali:
| Quadro | Contenuto |
|---|---|
| VE | Fatture emesse durante l'anno, divise per aliquota IVA (4%, 5%, 10%, 22%) + operazioni non imponibili (esport. UE) + esenti art.10 |
| VF | Fatture ricevute divise per aliquota — importo IVA detraibile |
| VJ | Operazioni in reverse charge / autofatture (edilizia, oro, acquisti UE, …) |
| VL | Liquidazione annuale: IVA debito β IVA credito β versamenti periodici già fatti = conguaglio |
Conguaglio annuale
Alla fine della dichiarazione trovi l'importo netto da versare o recuperare:
- A debito → si versa con codice tributo 6099 entro il 16 marzo
- A credito → si può compensare in F24 futuri oppure richiedere a rimborso
Volume d'affari
Il PDF mostra in evidenza il volume d'affari annuale (totale imponibile + non imponibili + esenti): serve per capire se sei nella soglia del regime forfettario (85.000β¬), per i limiti trimestrale/mensile, ecc.
Dismettere un bene (vendita o rottamazione)
Quando vendi o rotta un macchinario/computer/automezzo, il gestionale calcola automaticamente se hai una plusvalenza (guadagno) o minusvalenza (perdita) da dichiarare.
- Vai su Contabilità → Beni ammortizzabili
- Apri la scheda del bene da dismettere
- Clicca Dismetti bene
- Inserisci Data dismissione, Prezzo di vendita (o 0 se rottamazione), Motivo (VENDITA / ROTTAMAZIONE / PERDITA)
- Il sistema mostra subito il risultato del calcolo: Valore Netto Contabile (costo storico β fondo ammortamento) confrontato col prezzo di vendita
Esempio pratico
| Voce | Valore |
|---|---|
| Costo storico macchinario | € 3.897,00 |
| Fondo ammortamento (somma quote contabilizzate) | € 389,70 |
| Valore Netto Contabile (VNC) | € 3.507,30 |
| Prezzo di vendita | € 1.500,00 |
| Risultato | Minusvalenza € 2.007,30 |
La plus/minusvalenza entra automaticamente nell'export Modello Redditi (§ 25).
Registro beni ammortizzabili (art. 16 DPR 600/73)
Obbligo fiscale: ogni anno devi stampare o conservare in digitale il registro di tutti i beni con il dettaglio ammortamento.
- Sempre da Beni ammortizzabili
- Clicca Scarica Registro PDF
- Scegli l'anno (es. 2026)
- Si scarica un PDF A4 orizzontale con tabella completa: codice, descrizione, categoria, data acquisto, costo storico, aliquota %, fondo ammortamento al 31/12/anno, quota dell'anno, valore netto, stato
Alla fine della tabella ci sono i totali aziendali (costo totale beni, fondo totale, valore netto residuo). Stampa, firma, conserva insieme ai registri IVA.
Rimando alla sezione 22 sopra per il workflow completo Dichiarazione IVA annuale con quadri VE / VF / VJ / VL.
Se durante l'anno hai pagato compensi a professionisti (avvocati, commercialisti, agenti, medici, consulenti, naturopati, …) trattenendo la ritenuta d'acconto del 20%, a fine anno devi:
- Consegnare una CU a ciascun professionista entro il 16 marzo
- Trasmettere il Modello 770 all'Agenzia Entrate entro il 31 ottobre
Cosa fa il gestionale
Aggrega automaticamente tutte le fatture passive dell'anno dove hai attivato la ritenuta d'acconto, raggruppa per singolo fornitore (percipiente), calcola compensi totali e ritenute operate, e genera i PDF pronti.
Passi operativi β CU per singolo percipiente
- Vai su Contabilità → Registri IVA
- Imposta l'anno di interesse
- Clicca Scarica CU dal menu azioni
- Se c'è un solo percipiente con ritenute, scarichi direttamente il PDF. Se ce ne sono più, scegli dall'elenco
Il PDF CU contiene:
- Dati del sostituto d'imposta (tu/azienda): ragione sociale, CF, P.IVA, sede
- Dati del percipiente: denominazione, CF/P.IVA, indirizzo
- Tabella riepilogativa: causale, codice tributo, nΒ° documenti, compensi lordi, base ritenuta, ritenute operate
- Spazi per luogo/data/firma
Passi operativi β Modello 770 aggregato
- Sempre da Contabilità → Registri IVA
- Clicca Scarica Modello 770
Il PDF contiene il Quadro SF (ritenute su compensi lavoro autonomo) con:
- Elenco completo dei percipienti con CF/P.IVA, compensi, ritenute
- Totali aziendali (quanti percipienti, compensi totali, ritenute versate)
Prerequisito: ritenuta attivata sulla fattura
Per finire nella CU/770 una fattura passiva deve avere:
- Flag “Ritenuta d'acconto” attivo
- Aliquota compilata (di solito 20%)
- Tipo ritenuta (di solito 1040 per professionisti)
- Causale (di solito A — prestazioni abituali)
Questi campi si impostano sulla scheda documento quando si registra la fattura, nella sezione Ritenute.
A gennaio, quando il commercialista ti chiede “i dati per la dichiarazione dei redditi”, non devi più buttargli addosso migliaia di fatture una ad una: scarichi un unico riepilogo.
Passi operativi
- Vai su Contabilità → Registri IVA (nella stessa pagina della Dichiarazione IVA)
- Scegli l'anno fiscale
- Usa l'endpoint Export Modello Redditi dal menu azioni
Cosa contiene l'export
Il file PDF/JSON aggrega tutti i dati economici dell'anno:
| Voce | Da dove viene |
|---|---|
| Ricavi | Somma imponibile delle fatture emesse (no IVA) |
| Costi | Somma imponibile delle fatture ricevute |
| Ammortamenti | Quote civilistiche e fiscali contabilizzate nell'anno (da Beni Ammortizzabili) |
| Plus/Minusvalenze | Dismissioni beni dell'anno (cfr. § 23) |
| Reddito operativo | Ricavi − Costi − Ammortamenti |
| Reddito ante imposte | Reddito operativo + Plusvalenze − Minusvalenze |
Quadro Redditi suggerito
Il gestionale indica in automatico quale quadro del Modello Redditi è il più rilevante per la tua attività:
- LM — se sei in regime forfettario o minimi (il reddito si calcola applicando il coefficiente ai ricavi)
- RE — se sei un professionista sanitario/legale/commercialista/naturopata
- RF / RG — se sei impresa ordinaria o semplificata
Feature #6 del pacchetto FATTURAZIONE v 2.2: implementa il regime opzionale di IVA per cassa (art. 32-bis DL 83/2012). In questo regime, l'IVA di una fattura emessa diventa esigibile solo al momento del pagamento, non all'emissione. Limite massimo di 12 mesi dalla data documento: oltre questo periodo l'IVA diventa comunque esigibile anche se la fattura non è stata incassata.
Requisiti soggettivi
Il regime è ammesso per contribuenti con volume d'affari annuo non superiore a 2.000.000 €. L'opzione si esercita con comportamento concludente e va indicata sulla fattura con la dicitura obbligatoria "IVA per cassa ex art. 32-bis DL 83/2012".
Campi documento coinvolti
ivaPerCassa(BOOLEAN) — flag sul singolo documento; marca la fattura come soggetta al regimeivaPerCassaVersataIl(TIMESTAMP) — data in cui l'IVA è stata effettivamente versata / incassata, rende l'IVA esigibile
Endpoint operativi
PATCH /api/fatturazione/iva-per-cassa/:docIdbody{attivo:true|false}— attiva/disattiva il flag sul documentoPOST /api/fatturazione/iva-per-cassa/:docId/versata— marca l'IVA come versata (al momento del pagamento)GET /api/fatturazione/iva-per-cassa/pendenti— elenco fatture con IVA sospesa (ivaPerCassa=trueeivaPerCassaVersataIl IS NULL)
Impatto sui registri IVA e sulla liquidazione
Le fatture con ivaPerCassa=true e ivaPerCassaVersataIl IS NULL non concorrono al saldo della liquidazione IVA del periodo di emissione; concorreranno alla liquidazione del periodo in cui l'IVA viene segnata come versata. È quindi fondamentale aggiornare il campo ivaPerCassaVersataIl al momento dell'incasso effettivo per non ritardare la contabilizzazione.
/pendenti va interrogato periodicamente (a fine mese) per verificare quali fatture con IVA sospesa hanno superato i 12 mesi: in tal caso l'IVA va versata comunque e il flag va aggiornato per forzare l'esigibilità (normativa art. 32-bis DL 83/2012 c.3).La ritenuta d'acconto è una trattenuta che il sostituto d'imposta (cliente) versa all'Erario per conto del percipiente (fornitore / professionista) a titolo di anticipo dell'imposta sui redditi. Il sistema calcola l'importo automaticamente al momento dell'applicazione sulla fattura.
Campi documenti coinvolti
ritenutaAttiva(boolean) — flag principalealiquotaRitenuta(NUMERIC 5,2) — tipicamente 20% per professionisti residenti, 23% per lavoro autonomo occasionale (art. 67 c.1 lett. l TUIR), 4% agenti e rappresentanti di commercio (art. 25-bis)baseCalcoloRitenuta(NUMERIC 14,2) — base imponibile per il calcolo (di solito = imponibile; per professionisti può includere o escludere la cassa previdenziale)tipoRitenuta(VARCHAR 10) — codice tributo: 1040 (redditi di lavoro autonomo), 1046 (provvigioni commercio), 1050 (prestazioni occasionali), 1019 (interessi sui cap. sociale)causaleRitenuta(VARCHAR 20) — causale Certificazione Unica: A-B-C-D-H ecc.importoRitenuta(NUMERIC 14,2) — calcolato automaticamente all'attivazione
Endpoint
PATCH /api/fatturazione/ritenuta/:docIdbody{attiva:true, aliquota, baseCalcolo, tipoRitenuta, causaleRitenuta}GET /api/fatturazione/ritenuta/report?anno=2026&soggettoId=X— riepilogo ritenute per CU / 770 con totale e dettaglio per soggetto
I professionisti iscritti alla Gestione Separata INPS possono addebitare in fattura una rivalsa del contributo previdenziale (fino al 4% del compenso). La rivalsa NON concorre alla base imponibile IVA ma aumenta il totale fattura.
- Campi documenti:
rivalsaInps(importo),aliquotaRivalsaInps(0-4%) - Campi soggetto:
aliquotaRivalsaInpsDefault,tipoProfessionista(INPS_GS / CNPADC / ENPAP / ENPAM / ENPAV / EPAP) PATCH /api/fatturazione/rivalsa-inps/:docIdbody{aliquota}— ricalcola importo automaticamente
Bollo di € 2,00 obbligatorio su operazioni esenti IVA (N4), escluse (N1), non soggette (N2), non imponibili (N3) con totale ≥ € 77,47. Il sistema calcola automaticamente l'importo cumulando i righi del documento con natura IVA N1..N7 e applicando la soglia.
Campi documenti
bolloTotale(NUMERIC 14,2) — importo calcolatobolloVirtualeFlag(boolean) — assolto in modo virtualebolloAutoCalcolato(boolean) — calcolo effettuato dal sistemamotivazioneBollo(VARCHAR 100) — testo esplicativo con dettaglio soglia (es. "Bollo virtuale ex DM 17/06/2014 (operazioni esenti/escluse ≥ €77,47: €250,00)")
Endpoint
POST /api/fatturazione/bollo/auto-calcola/:docId — ricalcola bollo leggendo le righe del documento e confrontando con la soglia normativa.
Le casse previdenziali professionali sono codificate secondo le specifiche Fattura Elettronica (TC01..TC22). Ogni cassa ha un'aliquota di default ed un flag che indica se il contributo concorre alla base IVA (regola generale) o se è separato (come INPS Gestione Separata e ENASARCO).
Seed delle 22 casse
| Codice | Cassa | Aliq. default | Concorre IVA |
|---|---|---|---|
| TC01 | Cassa Nazionale Avvocati (Forense) | 4% | Sì |
| TC02 | CNPADC (Dottori Commercialisti) | 4% | Sì |
| TC03 | Geometri | 5% | Sì |
| TC04 | INARCASSA (Ingegneri/Architetti) | 4% | Sì |
| TC05 | Notariato | 2% | Sì |
| TC06 | CNPR (Ragionieri) | 4% | Sì |
| TC07 | ENASARCO (Agenti) | 7,85% | NO |
| TC08 | ENPACL (Consulenti lavoro) | 4% | Sì |
| TC09 | ENPAM (Medici) | 4% | Sì |
| TC10 | ENPAF (Farmacisti) | 3% | Sì |
| TC11 | ENPAV (Veterinari) | 2% | Sì |
| TC12 | ENPAP (Psicologi) | 2% | Sì |
| TC13-TC20 | Altre casse specialistiche | 2-4% | Sì |
| TC21 | INPS Gestione Separata (rivalsa) | 4% | NO |
| TC22 | INPS (prestazioni occasionali) | 4% | NO |
Endpoint
GET /api/fatturazione/cassa-prev/categorie— elenco 22 categorie attivePATCH /api/fatturazione/cassa-prev/:docIdbody{tipoCassa, aliquota?}— sealiquotanon passata, viene presa dal default della categoriaGET /api/fatturazione/calcolo-netto/:docId— breakdown completo: imponibile + cassa (+base IVA se concorre) + IVA + rivalsa INPS + bollo − ritenuta = netto a pagare
Esempio calcolo completo (professionista psicologo)
Imponibile: 1.000,00
+ Cassa ENPAP 2% (TC12): 20,00 (concorre IVA)
= Base IVA: 1.020,00
+ IVA 22%: 224,40
+ Rivalsa INPS 4%: 40,00 (NON concorre IVA)
+ Bollo: 0,00
= Totale fattura: 1.284,40
- Ritenuta 20% su 1.000: -200,00 (base = imponibile)
= Netto a pagare: 1.084,40
Le fatture passive ricevute via SDI possono essere contabilizzate automaticamente, generando le righe di prima nota con il corretto pattern Dare/Avere in funzione del tipo documento. Il parsing robusto del XML FatturaElettronica è eseguito con xml2js (dipendenza aggiunta nel backend).
Flusso operativo
- La fattura passiva arriva da SDI e viene inserita in
fatture_passivecon statoRICEVUTA. POST /api/fatturazione/sdi-passive/:id/parse-xmlestrae le righe dal XML e le salva infattura_passiva_righe(con natura IVA, codice articolo, imponibile, imposta per riga).POST /api/fatturazione/sdi-passive/:id/contabilizzacrea le righe di prima nota con numero progressivo annualeAAAA/N, statoPROVVISORIO, tipoAUTO.
Pattern contabili applicati
| Tipo documento | Scenario | Registrazione generata |
|---|---|---|
| TD01 / TD04 | Fattura italiana standard | Dare: Acquisti (7000001) + IVA credito (2000001) — Avere: Debito fornitore (1500001) |
| TD17 | Acquisto servizi da estero (reverse charge) | Dare: Acquisti estero + IVA credito reverse — Avere: IVA debito reverse (2000002) + Debito fornitore estero |
| TD18 | Acquisto beni intra-UE (reverse charge) | Come TD17 (doppia annotazione IVA credito / debito) |
| TD19 | Integrazione art. 17 c.2 DPR 633/72 (reverse charge nazionale) | Come TD17 |
Note operative
- Il flag
contabilizzataIlsulla fattura passiva previene la doppia contabilizzazione; per forzare una nuova registrazione (es. correzione) passareforza: truenel body. - I codici conto sono parametrizzabili:
contoAcquisti,contoIvaCredito,contoFornitore. I default corrispondono a un piano conti standard (codificato 7xxx acquisti, 2xxx IVA, 1xxx fornitori). - Le righe create in prima nota sono inizialmente
PROVVISORIO: l'operatore puΓ² rivedere le allocazioni di conto prima di confermarle (DEFINITIVO) con il normale workflow di chiusura contabile. - L'elenco candidate alla contabilizzazione è disponibile via
GET /api/fatturazione/sdi-passive/candidati-contab.
Gestione completa dei ratei (quote di costo/ricavo maturate ma non ancora documentate) e dei risconti (quote giΓ fatturate relative a esercizi futuri), conformi al principio della competenza economica (art. 2423-bis CC).
- 4 tipologie:
RATEO_ATTIVO,RATEO_PASSIVO,RISCONTO_ATTIVO,RISCONTO_PASSIVO. - Calcolo quota automatico su base giorni: la quota di competenza dell'esercizio viene determinata proporzionalmente ai giorni compresi nell'esercizio rispetto al totale del periodo di competenza.
- Collegamento al documento (fattura) e al soggetto (cliente/fornitore) per tracciabilità.
- Storno automatico esercizio successivo: un click genera la scrittura contabile di storno nell'esercizio seguente, valorizzando la quota residua (es. risconto 1200β¬ su polizza 1/10-31/3 β 606.59β¬ quota 2025 + 593.41β¬ storno 2026).
- 3 stati:
APERTO→STORNATO→ANNULLATO. - API:
GET/POST/PUT /api/contabilita-v13/ratei-risconti,POST .../:id/storno-esercizio-succ.
Modulo cespiti completo con registro beni, piano ammortamento civilistico/fiscale e contabilizzazione annuale.
- Registro beni ammortizzabili: codice, descrizione, categoria (Immobili, Impianti, Macchinari, Attrezzature, Mobili, Elettronici, Autoveicoli, Software, Altro), data acquisto, costo storico, valore residuo, ubicazione, numero serie, fornitore, fattura di acquisto.
- Doppia aliquota: civilistica (per bilancio) + fiscale (per dichiarazione redditi) spesso divergenti.
- Metodi: LINEARE, DECRESCENTE. Gestione del primo esercizio dimezzato secondo art. 102 c. 2 TUIR.
- Piano ammortamento automatico: un endpoint genera l'intero piano quote fino all'esaurimento del valore ammortizzabile (es. bene 1500β¬ al 20% β 150β¬ anno 1 dimezzato, 300β¬/anno anni 2-5, 150β¬ residuo).
- Conti contabili parametrizzati: cespite (attivo), fondo ammortamento (rettificativo), quota ammortamento (costo).
- Contabilizzazione quota: genera scrittura Dare quota / Avere fondo al 31/12.
- 3 stati quota:
PIANIFICATA→CONFERMATA→CONTABILIZZATA. - Dismissioni: stato
DISMESSO/VENDUTO/DISTRUTTOcon data e motivo. - API:
GET/POST/PUT /api/contabilita-v13/beni,POST /beni/:id/genera-piano,POST /ammortamento-quote/:id/contabilizza.
Partitario dettagliato per ogni soggetto con saldi, movimenti, partite aperte (fatture da incassare/pagare) e possibilità di chiusura partita al match con l'incasso/pagamento.
- Partitario soggetto: movimenti ordinati per data con dare/avere, saldo progressivo, documento di riferimento.
- Elenco massivo: tabella aggregata per tutti i clienti o fornitori con totali dare/avere, saldo, numero movimenti, ultima movimentazione, partite aperte.
- Snapshot: tabella
partitari_snapshotpre-calcolata per esercizio (rigenerabile on-demand per performance report). - Marcatura partite aperte: ogni riga di prima nota (es. debito fornitore) può essere marcata come "aperta" per essere successivamente chiusa con il pagamento.
- Chiusura partita: match bidirezionale tra riga aperta (fattura) e riga di chiusura (incasso/pagamento).
- API:
GET /api/contabilita-v13/partitari/soggetto/:id,GET /partitari/elenco?tipo=CLIENTE,POST /partitari/chiudi-partita,POST /partitari/rigenera-snapshot.
Procedura guidata di chiusura esercizio con calcolo automatico del risultato economico (utile/perdita) e generazione delle scritture di apertura nell'esercizio successivo.
- Gestione esercizi: tabella
esercizi_contabilicon statiAPERTO→IN_CHIUSURA→CHIUSO→RIAPERTO. - Pre-calcolo risultato economico: endpoint
GET /esercizi/:anno/risultato-economicocalcola al volo totale ricavi, totale costi e utile/perdita d'esercizio. - Chiusura:
POST /esercizi/:anno/chiudigenera la scrittura di chiusura conti economici con causaleCHIUSURA, aggiorna stato dell'esercizio, registra il risultato. - Apertura esercizio successivo:
POST /esercizi/:anno/apri-successivocrea la scrittura di apertura con saldi riportati dal bilancio di chiusura. - Riapertura:
POST /esercizi/:anno/riapripermette il ripristino dello statoAPERTOcon motivazione obbligatoria (audit trail completo). - Log fasi:
chiusura_esercizio_logmemorizza tutte le fasi eseguite (chiusura conti economici, risultato, chiusura patrimoniali, apertura successivo).
Gestione dedicata dello split payment: l'IVA non viene incassata dal fornitore ma versata direttamente dalla PA all'erario. Il fornitore fattura imponibile + IVA con annotazione speciale.
- Flag documenti:
splitPaymentboolean +splitPaymentTipo(I = Istituzionale, II = Commerciale, V = Veicoli). - Registro dedicato: tabella
iva_split_paymentcon tracking imponibile/IVA/soggetto PA/mese-anno competenza. - Riepilogo F24:
GET /split-payment/riepilogo-f24?anno=Y&mese=Mrestituisce totale imponibile, IVA da versare, già versato, codice tributo 6040, scadenza 16 del mese successivo. - Marca versato: bulk update con data di versamento (POST
/split-payment/marca-versato). - API:
GET/POST /api/contabilita-v14/split-payment.
Interfaccia dedicata per la registrazione delle operazioni in reverse charge (edilizia, oro, rottami, elettronici, intra-UE, extra-UE) con doppia annotazione IVA automatica.
- Tipologie:
INTERNO(art. 17 c.5/6),INTRA_UE,EXTRA_UE,TD17/TD18/TD19autofatture. - Categorie: EDILIZIA, ORO, ROTTAMI, ELETTRONICI, SERVIZI, BENI, ALTRO.
- Calcolo IVA automatico: data imponibile e aliquota, l'IVA viene calcolata se non fornita.
- Doppia annotazione: contabilizzazione genera scrittura con Dare IVA credito reverse + Avere IVA debito reverse (risultato neutro, rispetto neutralità IVA).
- Natura IVA: N6.1..N6.9 per le varie categorie interne, N3 per esteri.
- Registri: l'operazione entra sia nel registro vendite che acquisti (flag
registrato_vendite+registrato_acquisti). - API:
GET/POST /api/contabilita-v14/reverse-charge,POST .../:id/contabilizza.
Definizione di scritture contabili ricorrenti (es. stipendi mensili, affitti, utenze) con schedulazione automatica e generazione automatica o manuale delle scritture.
- Frequenze:
GIORNALIERA,SETTIMANALE,MENSILE,TRIMESTRALE,ANNUALE,MANUALE. - Template righe JSONB: array di righe con conto/dare/avere pre-definito. Verifica bilanciamento (dare=avere) prima di generare.
- Modalità auto vs manuale: se
auto_contabilizza=truela scrittura esce in statoDEFINITIVO, altrimentiPROVVISORIOper revisione. - Esecuzioni tracciate: tabella
giroconti_esecuzionicon ogni run, numero registrazione generato, importo, stato (PROPOSTO/CONFERMATO/SCARTATO). - Contatori: data ultima esecuzione, esecuzioni totali.
- API:
GET/POST/PUT /api/contabilita-v14/giroconti,POST /giroconti/:id/esegui.
/giroconti/:id/esegui per i giroconti con prossima_esecuzione <= today e auto_contabilizza=true, automatizzando le scritture ricorrenti.Gestione dell'IVA a esigibilità differita per fatture verso enti pubblici e regime IVA per cassa: l'IVA diventa esigibile (e versabile) solo al momento dell'incasso o dopo un anno dall'emissione.
- 3 tipi:
DIFFERITA(art. 6 c.5 — enti pubblici, max 1 anno),PER_CASSA(art. 32-bis DL 83/2012 — fatturato < 2Mβ¬),SPLIT_PAYMENT. - Data esigibilità massima: auto-calcolata a 12 mesi dall'emissione.
- Marca incassata: endpoint
POST /esigibilita-differita/:id/incassaregistra data incasso e genera automaticamente giroconto IVA sospesa → IVA a debito nella prima nota. - Competenza IVA: popolata mese_esigibilità + anno_esigibilità al momento dell'incasso per la corretta liquidazione periodica.
- API:
GET/POST /api/contabilita-v15/esigibilita-differita,POST .../:id/incassa.
1.234,00
In precedenza, alcuni PDF generati lato server presentavano gli importi senza separatore migliaia
(es. 1234,00). Ora tutti i PDF di contabilità mostrano il formato italiano corretto
1.234,00: punto come separatore migliaia, virgola come decimale.
PDF allineati:
- Dichiarazione IVA annuale (§ 22) — quadri VE, VF, VJ, VL e volume d'affari.
- Modello Redditi (§ 25) — ricavi, costi, ammortamenti, plus/minus, reddito operativo.
- Certificazione Unica (§ 26) — compensi lordi, base imponibile, ritenute per percipiente e totali.
- Registro beni ammortizzabili (§ 23) — tabella beni (costo, fondo, quota, netto), totali e frase di chiusura.
- Report Fatture verso PA (split-payment).