FA(3) field reference

KodWaluty in FA(3): the invoice currency code

How to fill KodWaluty (the currency code) in a KSeF FA(3) invoice: ISO 4217 code, where it lives and a valid XML example.

Updated

Overview

KodWaluty is the currency code of the invoice, expressed as a three-letter ISO 4217 code such as PLN, EUR or USD. It lives directly inside the Fa section of the FA(3) XML, at /Faktura/Fa/KodWaluty, and applies to the whole invoice — every amount on the document is in that currency.

KodWaluty is required on every FA(3) invoice. Its type in the XSD is TKodWaluty, which is a closed enumeration of ISO 4217 currency codes plus the special value XXX, which means "no currency" (BRAK WALUTY in Polish). You cannot invent a code; the value must be one of the codes listed in the enumeration or the document fails XSD validation.

For invoices issued to Polish buyers by a Polish seller, the code is almost always PLN. The Polish złoty is the default because the KSeF register and the seller's VAT reporting run in that currency. That said, nothing in the schema forces PLN: if you legitimately bill a customer in euro or US dollars, you put EUR or USD in KodWaluty and write every amount on the invoice in that same currency.

The one rule to respect is consistency. If KodWaluty says EUR, then the unit net prices (P_9A), the line net values (P_11), the summary amounts (P_13_x and P_14_x) and the total (P_15) must all be in euro. Mixing PLN amounts with an EUR code produces a document that is formally valid but factually wrong, and it will confuse both the buyer and any auditor.

KodWaluty is distinct from the contractual-currency field (WalutaUmowna), which appears only in certain correction or advance-payment cases and describes a currency that differs from the invoice currency. For a standard VAT invoice, only KodWaluty is relevant.

In Notaly you do not write KodWaluty directly as an XML field. You send a currency property in the JSON payload, and Notaly maps it to KodWaluty in the generated FA(3) XML. If the value is not a supported ISO 4217 code, the API rejects the payload with a 422 validation error before anything reaches KSeF.

A complete, valid FA(3) example appears below, with KodWaluty set to PLN.

<Faktura xmlns="http://crd.gov.pl/wzor/2025/06/25/13775/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <Naglowek>
    <KodFormularza kodSystemowy="FA (3)" wersjaSchemy="1-0E">FA</KodFormularza>
    <WariantFormularza>3</WariantFormularza>
    <DataWytworzeniaFa>2026-10-12T07:23:07Z</DataWytworzeniaFa>
    <SystemInfo>einvoice-api</SystemInfo>
  </Naglowek>
  <Podmiot1>
    <DaneIdentyfikacyjne><NIP>2745013933</NIP><Nazwa>Example Sp. z o.o. (FICTIONAL)</Nazwa></DaneIdentyfikacyjne>
    <Adres><KodKraju>PL</KodKraju><AdresL1>ul. Testowa 1, 00-001 Warszawa</AdresL1></Adres>
  </Podmiot1>
  <Podmiot2>
    <DaneIdentyfikacyjne><NIP>1234563218</NIP><Nazwa>Test Customer S.A. (FICTIONAL)</Nazwa></DaneIdentyfikacyjne>
    <Adres><KodKraju>PL</KodKraju><AdresL1>ul. Probna 2, 30-001 Kraków</AdresL1></Adres>
    <JST>2</JST>
    <GV>2</GV>
  </Podmiot2>
  <Fa>
    <KodWaluty>PLN</KodWaluty>
    <P_1>2026-10-12</P_1>
    <P_2>FV/2026/10/001</P_2>
    <P_13_1>1000.00</P_13_1><P_14_1>230.00</P_14_1>
    <P_13_2>301.00</P_13_2><P_14_2>24.08</P_14_2>
    <P_15>1555.08</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>SaaS subscription - October</P_7>
      <P_8A>pcs.</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>
    <FaWiersz>
      <NrWierszaFa>2</NrWierszaFa>
      <P_7>Support</P_7>
      <P_8A>hrs.</P_8A>
      <P_8B>2</P_8B>
      <P_9A>150.50</P_9A>
      <P_11>301.00</P_11>
      <P_12>8</P_12>
    </FaWiersz>
  </Fa>
</Faktura>

Sources

Source: crd.gov.pl

Frequently asked questions

What currency code do I use for a Polish invoice?

PLN, which is the ISO 4217 code for the Polish złoty.

Can I invoice in EUR through KSeF?

Yes. KodWaluty accepts any ISO 4217 code listed in the TKodWaluty enum, including EUR and USD.

Where does KodWaluty live in the XML?

Directly inside the Fa section, at /Faktura/Fa/KodWaluty.

Issue your first KSeF test invoice today

Create a sandbox account: API key in seconds, 3 free test invoices on KSeF TEST, no credit card.