Riferimento delle regole di validazione
Ogni regola che SAFTCheck applica al tuo SAF-T (PT) XML, in linguaggio chiaro. Ogni pagina spiega cosa richiede l'AT, i modi più comuni in cui la regola fallisce e come correggerla.
Dichiarazione di codifica XML (Windows-1252)
L'AT richiede la codifica Windows-1252. Le dichiarazioni UTF-8 vengono rifiutate silenziosamente.
encoding.declaration
Byte Order Mark (BOM) all'inizio del file
L'AT rifiuta i file SAF-T che iniziano con un BOM UTF-8 o UTF-16.
encoding.bom
Verificare un NIF portoghese: controllo gratuito e regole Mod-11
Verifica subito qualsiasi NIF portoghese: 9 cifre, prefisso valido e cifra di controllo Mod-11. Più come funziona l'algoritmo e gli errori più comuni.
nif.mod11
Formato dell'ATCUD: controllo gratuito e regole dal 2023
Codice univoco di documento obbligatorio: codice di validazione di almeno 8 caratteri, trattino e numero del documento. Include un controllo ATCUD gratuito.
atcud.format
Date dell'header: StartDate, EndDate, FiscalYear, DateCreated
Invarianti temporali che l'AT impone sul blocco Header del SAF-T.
header.dates
Editor inline: correggi NIF, ATCUD e date dell'header sul posto
Modifica il valore problematico accanto all'anomalia, riconvalida subito, senza tornare a esportare dall'ERP.
feature.inline-editor
Controllo VIES: NIF registrato nel sistema IVA UE
Il NIF dell'header viene verificato contro il servizio VIES della UE e il nome registrato è confrontato con CompanyName del SAF-T.
nif.vies
Data del documento dentro la finestra di reporting dell'header
Ogni data di Invoice / Payment / WorkDocument / StockMovement deve ricadere dentro Header.StartDate – Header.EndDate.
invoice.date.out_of_range
I totali di blocco riconciliano con i documenti figli
NumberOfEntries conta tutti i documenti (annullati inclusi); TotalDebit e TotalCredit devono corrispondere agli importi delle righe senza IVA, esclusi i documenti annullati, con tolleranza di 0,01.
totals.reconciliation
I documenti in valuta estera richiedono un blocco <Currency> completo
Quando un documento dichiara una valuta diversa da EUR, CurrencyCode + CurrencyAmount + ExchangeRate devono essere tutti presenti.
invoice.currency.exchange
Coerenza tra codice di stato e data della fattura
InvoiceStatus deve essere uno tra N/S/A/R/F e InvoiceStatusDate deve essere >= InvoiceDate.
invoice.status
Cerchi approfondimenti narrativi? Vai al blog per i flussi completi di correzione.