ValidateFin

KSeF FA(3) — mandatory element missing (rejected by the official XSD)

Uma fatura FA(3) à qual falta um elemento obrigatório: P_2, o número da fatura. Nada parece errado — XML bem formado, namespace correto, repartição de IVA plausível — e só o XSD oficial do Ministério das Finanças o apanha: «Element P_6: this element is not expected. Expected is P_2.» O KSeF rejeita liminarmente um ficheiro destes.

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

Uma fatura FA(3) à qual falta um elemento obrigatório: P_2, o número da fatura. Nada parece errado — XML bem formado, namespace correto, repartição de IVA plausível — e só o XSD oficial do Ministério das Finanças o apanha: «Element P_6: this element is not expected. Expected is P_2.» O KSeF rejeita liminarmente um ficheiro destes.

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

O que este ficheiro mostra

Uma fatura FA(3) à qual falta um elemento obrigatório: P_2, o número da fatura. Nada parece errado — XML bem formado, namespace correto, repartição de IVA plausível — e só o XSD oficial do Ministério das Finanças o apanha: «Element P_6: this element is not expected. Expected is P_2.» O KSeF rejeita liminarmente um ficheiro destes.

Transações1
TotalPLN 1.230,00
Data no ficheiro2026-07-12
Ú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 BROKEN — against the OFFICIAL Ministry of Finance FA(3) schema.

  Everything here is well-formed XML, in the right namespace, with the right root
  element. What is missing is one mandatory child of <Fa>: <P_2>, the invoice number.
  It sits between <P_1M> and <P_6> on every other sample, and the XSD declares it with
  no minOccurs — so it must be there.

  This is the whole point of the sample: nothing about the file LOOKS wrong. Only the
  schema catches it, which is why ValidateFin runs the Ministry's own XSD as layer 1
  instead of re-encoding FA(3)'s cardinalities by hand. KSeF will reject the invoice
  outright with a structural error; there is no "accepted with a remark" here.
-->
<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-07-12T11:05:00Z</DataWytworzeniaFa>
		<SystemInfo>ValidateFin</SystemInfo>
	</Naglowek>
	<Podmiot1>
		<DaneIdentyfikacyjne>
			<NIP>9999999999</NIP>
			<Nazwa>Zimnotech AGD sp. z o.o.</Nazwa>
		</DaneIdentyfikacyjne>
		<Adres>
			<KodKraju>PL</KodKraju>
			<AdresL1>ul. Kwiatowa 1 m. 2</AdresL1>
			<AdresL2>00-001 Warszawa</AdresL2>
		</Adres>
	</Podmiot1>
	<Podmiot2>
		<DaneIdentyfikacyjne>
			<NIP>1111111111</NIP>
			<Nazwa>CDE sp. j.</Nazwa>
		</DaneIdentyfikacyjne>
		<Adres>
			<KodKraju>PL</KodKraju>
			<AdresL1>ul. Sadowa 1 lok. 3</AdresL1>
			<AdresL2>30-002 Kraków</AdresL2>
		</Adres>
		<JST>2</JST>
		<GV>2</GV>
	</Podmiot2>
	<Fa>
		<KodWaluty>PLN</KodWaluty>
		<P_1>2026-07-12</P_1>
		<P_1M>Warszawa</P_1M>
		<!-- <P_2> — the invoice number — is MISSING. The schema requires it. -->
		<P_6>2026-07-12</P_6>
		<P_13_1>1000.00</P_13_1>
		<P_14_1>230.00</P_14_1>
		<P_15>1230.00</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>
			<P_7>zmywarka Bryza 100</P_7>
			<P_8A>szt.</P_8A>
			<P_8B>1</P_8B>
			<P_9A>1000.00</P_9A>
			<P_11>1000.00</P_11>
			<P_12>23</P_12>
		</FaWiersz>
	</Fa>
</Faktura>

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))