Extra KSeF Fields (Advanced)

Ability to add Specific Information

Additional Structured Descriptions - DodatkowyOpis - (Header +Lines)

You may want to add additional descriptions, with a specific structure or signification.

Below the method:

  • Is included in Billit Json on header level, stored in KSeF XML on header level
  • Refers to :
    • an Invoice line
    • the invoice header
  • Multiple occurrencies are possible, even for one invoice line
  • Billit Added a Sequence Numbering:
    • e.g. DodatkowyOpis1, DodatkowyOpis2 : this for verification of the coherence by Billit.
    • This sequence number is mandatory. If not used, invoices will go in error.
  • Data elements:
DescriptionBillit API Header Custom FieldMax lengthMandatory
Key : the signification of your fieldFaktura.FA.DodatkowyOpis1.Klucz256Mandatory
The value / (content of the field)Faktura.FA.DodatkowyOpis1.Wartosc256Mandatory
Link to invoice line number. When added : linked to a line. When not present : linked to the headerFaktura.FA.DodatkowyOpis2.NrWierszaOptional

Example:

    "CustomFields": 
    {
        "Faktura.FA.DodatkowyOpis1.NrWiersza": "2", // Link to invoice line number  
        "Faktura.FA.DodatkowyOpis1.Klucz": "Numer awiza",  //key
        "Faktura.FA.DodatkowyOpis1.Wartosc": "SIRL12040454042",  // the value - content for that key
        "Faktura.FA.DodatkowyOpis2.NrWiersza": "2",  // second reference linked to the line 
        "Faktura.FA.DodatkowyOpis2.Klucz": "Numer pozycji zamówienia klienta",
        "Faktura.FA.DodatkowyOpis2.Wartosc": "001000",
        "Faktura.FA.DodatkowyOpis3.NrWiersza": "3",
        "Faktura.FA.DodatkowyOpis3.Klucz": "Numer pozycji zamówienia klienta",
        "Faktura.FA.DodatkowyOpis3.Wartosc": "002000"
    },
	"CustomFields": {
		"Faktura.FA.DodatkowyOpis1.Klucz": "BDO",     
		"Faktura.FA.DodatkowyOpis1.Wartosc": "000040999", //Header value
		"Faktura.FA.DodatkowyOpis2.Klucz": "TEST1",
		"Faktura.FA.DodatkowyOpis2.Wartosc": "0000565", //Header value
    "Faktura.FA.DodatkowyOpis3.Klucz": "TEST2",
		"Faktura.FA.DodatkowyOpis3.Wartosc": "0000569",
		"Faktura.FA.DodatkowyOpis3.NrWiersza": "1",  //For Line 1
    "Faktura.FA.DodatkowyOpis4.Klucz": "TEST3",
		"Faktura.FA.DodatkowyOpis4.Wartosc": "0000560",
		"Faktura.FA.DodatkowyOpis4.NrWiersza": "1", //For Line 1
    "Faktura.FA.DodatkowyOpis5.Klucz": "TEST4",
		"Faktura.FA.DodatkowyOpis5.Wartosc": "0000561",
		"Faktura.FA.DodatkowyOpis5.NrWiersza": "2", //For Line 2
    "Faktura.FA.DodatkowyOpis6.Klucz": "TEST5",
		"Faktura.FA.DodatkowyOpis6.Wartosc": "0000562",
		"Faktura.FA.DodatkowyOpis6.NrWiersza": "2" //For Line 2
    "Faktura.FA.DodatkowyOpis7.Klucz": "Sample Key",     
		"Faktura.FA.DodatkowyOpis7.Wartosc": "000050103" //Header value
	},

Alternative Payment Term Information (Header)

The due date is filled in the normal KSeF area : Platnosc / TerminPlatnosci / Termin.

There are legal scenario's where the althernative TermOpis can be used. So on request and via API, this specific information can be included.

Example:

    "CustomFields": 
    {
        "Faktura.Fa.Platnosc.TerminPlatnosci.TerminOpis.Ilosc" : "14", // this is the quantity
        "Faktura.Fa.Platnosc.TerminPlatnosci.TerminOpis.Jednostka" : "day", // this I a unit as free text
        "Faktura.Fa.Platnosc.TerminPlatnosci.TerminOpis.ZdarzeniePoczatkowe" : "Payment deadline description"  // free text, maximum 256 characters

    },
    <Platnosc>
      <TerminPlatnosci>
        <Termin>2026-04-17</Termin>
        <TerminOpis>
          <Ilosc>14</Ilosc>
          <Jednostka>day</Jednostka>
          <ZdarzeniePoczatkowe>Payment deadline description</ZdarzeniePoczatkowe>
        </TerminOpis>
      </TerminPlatnosci>
    </Platnosc>

Add Payment Method (Header)

Payment methods exist in KSeF to compare with Peppol PaymentMeanscode. This appears in the segment Platnosc, field FormaPlatnosci. Following information: • Not a mandatory field • KSeF verification : must be in a list of allowed values

Table with the values:

ValueDescriptionPayment Method Description at Billit
1GotówkaCash
2KartaBancontact
3Bon
4Czek
5KredytVisa
6PrzelewWired (= bank transfer, is most common value)
7Mobilna

Example:

    "CustomFields": 
    {
        "Faktura.Fa.Platnosc.FormaPlatnosci" : "6" 
    },

Delivery Address in Transport Segment (Header)

In the transport segment, Billit supports a number of fields via custom Fields on header level.

BillitDescriptonMandatory
Faktura.Fa.WarunkiTransakcji.Transport.RodzajTransportuType of transport : set value from listyes
Faktura.Fa.WarunkiTransakcji.Transport.OpisLadunkuType of cargo : set value from listyes
Faktura.Fa.WarunkiTransakcji.Transport.WysylkaDo.KodKrajuCountry codeyes
Faktura.Fa.WarunkiTransakcji.Transport.WysylkaDo.AdresL1Street and street numberyes
Faktura .Fa.WarunkiTransakcji.Transport.WysylkaDo.AdresL2"Zip and Cityyes

Example below.

    "CustomFields": 
    {
               "Faktura.Fa.WarunkiTransakcji.Transport.RodzajTransportu" : "3", // TransportType 3: Road transport (most common type).  This is from a list (value 1 to 8)
        "Faktura.Fa.WarunkiTransakcji.Transport.OpisLadunku" : "13", // Cargo type 13: Pallet.  This is from a list (value 1 to 20)
        // "Faktura.Fa.WarunkiTransakcji.Transport.JednostkaOpakowania" : "1 cardboard box/40 pieces", // Packing unit
        "Faktura.Fa.WarunkiTransakcji.Transport.WysylkaDo.KodKraju" : "PL",  //Country
        "Faktura.Fa.WarunkiTransakcji.Transport.WysylkaDo.AdresL1" : "ul. Sadowa 1 lok. 3",  //Street and number
        "Faktura .Fa.WarunkiTransakcji.Transport.WysylkaDo.AdresL2" : "00-002 Kraków"  // Zip and City
    },
 <WarunkiTransakcji>
      <Zamowienia />
      <Transport>
        <RodzajTransportu>3</RodzajTransportu>
        <OpisLadunku>13</OpisLadunku>
        <WysylkaDo>
          <KodKraju>PL</KodKraju>
          <AdresL1>ul. Sadowa 1 lok. 3</AdresL1>
        </WysylkaDo>
      </Transport>
    </WarunkiTransakcji>

List of other values for TransportTypes: See KSeF documentation.