ValidateFin

KSeF FA(3) — bad NIP check digit and mismatched total (warnings only)

Estruturalmente perfeita face ao esquema oficial e, ainda assim, o NIP do vendedor falha o dígito de controlo mod-11 e o P_15 não corresponde à soma da repartição do IVA. O ValidateFin reporta ambos como avisos, não erros: nenhuma das regras é normativa, e o exemplo n.º 1 do Ministério está ele próprio desviado um grosz.

FA(3) 1-0E — Válido

Estruturalmente perfeita face ao esquema oficial e, ainda assim, o NIP do vendedor falha o dígito de controlo mod-11 e o P_15 não corresponde à soma da repartição do IVA. O ValidateFin reporta ambos como avisos, não erros: nenhuma das regras é normativa, e o exemplo n.º 1 do Ministério está ele próprio desviado um grosz.

Fatura KSeF (Polónia, FA(3)) FA(3) 1-0E KSeF — Polish Ministry of FinanceResultado esperado: Válido — 2 avisos

O que este ficheiro mostra

Estruturalmente perfeita face ao esquema oficial e, ainda assim, o NIP do vendedor falha o dígito de controlo mod-11 e o P_15 não corresponde à soma da repartição do IVA. O ValidateFin reporta ambos como avisos, não erros: nenhuma das regras é normativa, e o exemplo n.º 1 do Ministério está ele próprio desviado um grosz.

Transações3
TotalPLN 64.379,92
Última verificação: Licença: CC-BY-4.0

Todas as partes, IBAN e montantes abaixo são fictícios. Os IBAN são estruturalmente válidos — passam no mod-97 — mas não correspondem a nenhuma conta real.

Conteúdo do ficheiro

<?xml version="1.0" encoding="UTF-8"?>
<!--
  DELIBERATELY IMPERFECT — but note the verdict: this file is still VALID.

  It is structurally correct against the official FA(3) schema, yet it carries two
  defects that the schema cannot see:
    · the seller's NIP (9999999998) fails the mod-11 check digit;
    · P_15 (64379.92) does not match the sum of P_13_* + P_14_* (64279.92).

  ValidateFin reports both as WARNINGS, not errors — because neither is a normative
  KSeF rule, and treating them as fatal would reject the Ministry's own example files
  (their example 1 is itself 1 grosz off). This sample exists to show that distinction.
-->
<Faktura xmlns:etd="http://crd.gov.pl/xml/schematy/dziedzinowe/mf/2022/01/05/eD/DefinicjeTypy/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://crd.gov.pl/wzor/2025/06/25/13775/">
	<Naglowek>
		<KodFormularza kodSystemowy="FA (3)" wersjaSchemy="1-0E">FA</KodFormularza>
		<WariantFormularza>3</WariantFormularza>
		<DataWytworzeniaFa>2026-02-01T00:00:00Z</DataWytworzeniaFa>
		<SystemInfo>SamploFaktur</SystemInfo>
	</Naglowek>
	<Podmiot1>
		<DaneIdentyfikacyjne>
			<NIP>9999999998</NIP>
			<Nazwa>ABC AGD sp. z o. o.</Nazwa>
		</DaneIdentyfikacyjne>
		<Adres>
			<KodKraju>PL</KodKraju>
			<AdresL1>ul. Kwiatowa 1 m. 2</AdresL1>
			<AdresL2>00-001 Warszawa</AdresL2>
		</Adres>
		<DaneKontaktowe>
			<Email>[email protected]</Email>
			<Telefon>667444555</Telefon>
		</DaneKontaktowe>
	</Podmiot1>
	<Podmiot2>
		<DaneIdentyfikacyjne>
			<NIP>1111111111</NIP>
			<Nazwa>CDE sp. j.</Nazwa>
		</DaneIdentyfikacyjne>
		<Adres>
			<KodKraju>PL</KodKraju>
			<AdresL1>ul. Sadowa 1 lok. 3</AdresL1>
			<AdresL2>00-002 Kraków</AdresL2>
		</Adres>
		<DaneKontaktowe>
			<Email>[email protected]</Email>
			<Telefon>555777999</Telefon>
		</DaneKontaktowe>
		<NrKlienta>fdfd778343</NrKlienta>
		<JST>2</JST>
		<GV>2</GV>
	</Podmiot2>
	<Podmiot3>
		<DaneIdentyfikacyjne>
			<NIP>2222222222</NIP>
			<Nazwa>Bank Bankowości Bankowej S. A. BBB Faktoring</Nazwa>
		</DaneIdentyfikacyjne>
		<Adres>
			<KodKraju>PL</KodKraju>
			<AdresL1>ul. Bankowa 1</AdresL1>
			<AdresL2>00-003 Łódź</AdresL2>
		</Adres>
		<DaneKontaktowe>
			<Email>[email protected]</Email>
			<Telefon>666888999</Telefon>
		</DaneKontaktowe>
		<Rola>1</Rola>
	</Podmiot3>
	<Fa>
		<KodWaluty>PLN</KodWaluty>
		<P_1>2026-02-15</P_1>
		<P_1M>Warszawa</P_1M>
		<P_2>FV2026/02/150</P_2>
		<WZ>44343434/2026</WZ>
		<P_13_1>52260.10</P_13_1>
		<P_14_1>12019.82</P_14_1>
		<P_15>64379.92</P_15>
		<Adnotacje>
			<P_16>2</P_16>
			<P_17>2</P_17>
			<P_18>2</P_18>
			<P_18A>2</P_18A>
			<Zwolnienie>
				<P_19N>1</P_19N>
			</Zwolnienie>
			<NoweSrodkiTransportu>
				<P_22N>1</P_22N>
			</NoweSrodkiTransportu>
			<P_23>2</P_23>
			<PMarzy>
				<P_PMarzyN>1</P_PMarzyN>
			</PMarzy>
		</Adnotacje>
		<RodzajFaktury>VAT</RodzajFaktury>
		<FaWiersz>
			<NrWierszaFa>1</NrWierszaFa>
			<UU_ID>aaaa111133339990</UU_ID>
			<P_6A>2026-01-03</P_6A>
			<P_7>lodówka Zimnotech mk1</P_7>
			<CN>8418 21 91</CN>
			<P_8A>szt.</P_8A>
			<P_8B>10</P_8B>
			<P_9A>1626.01</P_9A>
			<P_11>16260.10</P_11>
			<P_12>23</P_12>
		</FaWiersz>
		<FaWiersz>
			<NrWierszaFa>2</NrWierszaFa>
			<UU_ID>aaaa111133339991</UU_ID>
			<P_6A>2026-01-10</P_6A>
			<P_7>zamrażarka Zimnotech mk2</P_7>
			<CN>8418 40 20</CN>
			<P_8A>szt.</P_8A>
			<P_8B>20</P_8B>
			<P_9A>1000</P_9A>
			<P_10>100</P_10>
			<P_11>18000</P_11>
			<P_12>23</P_12>
		</FaWiersz>
		<FaWiersz>
			<NrWierszaFa>3</NrWierszaFa>
			<UU_ID>aaaa111133339992</UU_ID>
			<P_6A>2026-01-15</P_6A>
			<P_7>zmywarka Bryza 100</P_7>
			<CN>8422 11 00</CN>
			<P_8A>szt.</P_8A>
			<P_8B>15</P_8B>
			<P_9A>1200</P_9A>
			<P_11>18000</P_11>
			<P_12>23</P_12>
		</FaWiersz>
		<Rozliczenie>
			<Odliczenia>
				<Kwota>1000</Kwota>
				<Powod>nadwyżka salda nierozliczonych środków</Powod>
			</Odliczenia>
			<SumaOdliczen>1000</SumaOdliczen>
			<DoZaplaty>63279.92</DoZaplaty>
		</Rozliczenie>
		<Platnosc>
			<TerminPlatnosci>
				<Termin>2026-03-15</Termin>
			</TerminPlatnosci>
			<FormaPlatnosci>6</FormaPlatnosci>
			<RachunekBankowyFaktora>
				<NrRB>73111111111111111111111111</NrRB>
				<RachunekWlasnyBanku>2</RachunekWlasnyBanku>
				<NazwaBanku>Bank Bankowości Bankowej S. A.</NazwaBanku>
				<OpisRachunku>PLN</OpisRachunku>
			</RachunekBankowyFaktora>
		</Platnosc>
		<WarunkiTransakcji>
			<Zamowienia>
				<DataZamowienia>2026-01-26</DataZamowienia>
				<NrZamowienia>4354343</NrZamowienia>
			</Zamowienia>
			<NrPartiiTowaru>2312323/2026</NrPartiiTowaru>
			<WarunkiDostawy>CIP</WarunkiDostawy>

160 / 200 lines shown — the complete file is in the download above.

Como sabemos que estes resultados se mantêm

Cada ficheiro desta biblioteca passa pelo próprio validador do site em cada build. O resultado esperado indicado acima é verificado por um teste automatizado: se um ficheiro deixasse de corresponder ao que esta página afirma, o build falharia. Duas fixtures herdadas foram reparadas assim antes da publicação: três IBAN falhavam o mod-97 e vários nomes usavam caracteres fora do conjunto SEPA básico.

Fatura KSeF (Polónia, FA(3))