API

API token:


1. Pobieranie danych faktury:

$input_xml = "
<dokument>
  <dokument_id>292324</dokument_id>
  <api_token></api_token>
</dokument>
"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://program.fakturaxl.pl/api/dokument_odczytaj.php'); curl_setopt($ch, CURLOPT_POSTFIELDS, $input_xml); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 300); $return_xml = curl_exec($ch); curl_close($ch); echo $return_xml; // otrzymane informacje XML można przerobić na tablice PHP np: $array_data = json_decode(json_encode(simplexml_load_string($return_xml)), true);

Przykładowe dane, które zwraca API:
Poprawne odczytanie dokumentu:

<dokument>
  <kod>5</kod>
  <typ_faktury>0</typ_faktury>
  <numer_faktury>FV 75/5/2026</numer_faktury>
  <rodzaj_faktury_koszty>1</rodzaj_faktury_koszty>
  <data_wystawienia>2026-11-01</data_wystawienia>
  <data_sprzedazy>2026-11-01</data_sprzedazy>
  <termin_platnosci_data>2026-11-08</termin_platnosci_data>
  <miejsce_wystawienia>Poznań</miejsce_wystawienia>
  <status>0</status>
  <unikatowy_kod>tbChukRcFtPancRYMFBeR6zhPywTFQkkzAScaZOVU8s1Yzv7Mvg4vvpHeDeged3f3dsameL5Af2OsH</unikatowy_kod>
  <data_oplacenia></data_oplacenia>
  <kwota_oplacona>0.00</kwota_oplacona>
  <uwagi></uwagi>
  <waluta>EUR</waluta>
  <kurs>4.22040000</kurs>
  <nr_tabeli_nbp>022/A/NBP/2024</nr_tabeli_nbp>
  <data_kursu>2026-11-01</data_kursu>
  <rodzaj_platnosci>Przelew</rodzaj_platnosci>
  <jezyk>0</jezyk>
  <szablon>0</szablon>
  <imie_nazwisko_wystawcy>Zbigniew Nazwiskoo</imie_nazwisko_wystawcy>
  <imie_nazwisko_odbiorcy></imie_nazwisko_odbiorcy>
  <nr_zamowienia></nr_zamowienia>
  <data_zamowienia></data_zamowienia>
  <nr_umowy></nr_umowy>
  <data_umowy></data_umowy>
  <dodatkowe_uwagi></dodatkowe_uwagi>
  <notatka_prywatna></notatka_prywatna>
  <qr_platnosc>0</qr_platnosc>
  <qr_offline>0</qr_offline>
  <wartosc_netto>224.43</wartosc_netto>
  <wartosc_vat>18.57</wartosc_vat>
  <wartosc_brutto>243.00</wartosc_brutto>
  <obliczaj_wartosc_faktury_od>0</obliczaj_wartosc_faktury_od>
  <magazyn_id>0</magazyn_id>
  <tresc_korygowana></tresc_korygowana>
  <tresc_prawidlowa></tresc_prawidlowa>
  <przyczyna_korekty></przyczyna_korekty>
  <id_faktury_korygowanej></id_faktury_korygowanej>
  <numer_faktury_korygowanej></numer_faktury_korygowanej>
  <sprzedawca>
    <nazwa>FIRMA TEST &quot;Najlepsza w mieście&quot; i już</nazwa>
    <nip>1111111111</nip>
    <rodzaj_identyfikatora>0</rodzaj_identyfikatora>
    <ulica_i_numer>ul. Testowa 8</ulica_i_numer>
    <kod_pocztowy>00-005</kod_pocztowy>
    <miejscowosc>Warszawa</miejscowosc>
    <kraj_id>PL</kraj_id>
    <email>[email protected]</email>
    <telefon>3123123123</telefon>
    <fax></fax>
    <www>www.wp.pl</www>
    <nr_konta_bankowego>PL0000000000000000000000000000000</nr_konta_bankowego>
  </sprzedawca>
  <nabywca>
    <firma_lub_osoba_prywatna>0</firma_lub_osoba_prywatna>
    <czlonek_grupy_vat>0</czlonek_grupy_vat>
    <jednostka_samorzadu_terytorialnego>0</jednostka_samorzadu_terytorialnego>
    <nazwa>Firma - nazwa nabywcy</nazwa>
    <imie></imie>
    <nazwisko></nazwisko>
    <nip></nip>
    <rodzaj_identyfikatora>0</rodzaj_identyfikatora>
    <ulica_i_numer></ulica_i_numer>
    <kod_pocztowy></kod_pocztowy>
    <miejscowosc></miejscowosc>
    <kraj_id>PL</kraj_id>
    <email></email>
    <telefon></telefon>
    <fax></fax>
    <www></www>
    <nr_konta_bankowego></nr_konta_bankowego>
    <klient_id></klient_id>
    <dodatkowa_informacja></dodatkowa_informacja>
    <rodzaj_konta></rodzaj_konta>
  </nabywca>
  <odbiorca>
    <nazwa>Firma - nazwa odbiorcy</nazwa>
    <nip>DE123456789</nip>
    <rodzaj_identyfikatora>1</rodzaj_identyfikatora>
    <ulica_i_numer>Hauptstrasse 1</ulica_i_numer>
    <kod_pocztowy>10115</kod_pocztowy>
    <miejscowosc>Berlin</miejscowosc>
    <kraj_id>DE</kraj_id>
    <ksef_rola>2</ksef_rola>
    <ksef_rola_str></ksef_rola_str>
    <ksef_idwew></ksef_idwew>
  </odbiorca>
  <faktura_pozycje>
    <nazwa>12312312, zzz</nazwa>
    <kod_produktu></kod_produktu>
    <produkt_id></produkt_id>
    <pkwiu></pkwiu>
    <symbol_gtu>0</symbol_gtu>
    <rabat>0.00</rabat>
    <ilosc>1.000</ilosc>
    <jm>szt.</jm>
    <netto>17.89</netto>
    <brutto>22.00</brutto>
    <vat>23</vat>
    <wartosc_netto>17.89</wartosc_netto>
    <wartosc_brutto>22.00</wartosc_brutto>
  </faktura_pozycje>
  <faktura_pozycje>
    <nazwa>111aa22dd</nazwa>
    <kod_produktu></kod_produktu>
    <produkt_id></produkt_id>
    <pkwiu></pkwiu>
    <symbol_gtu>5</symbol_gtu>
    <rabat>0.00</rabat>
    <ilosc>10.000</ilosc>
    <jm>szt.</jm>
    <netto>20.65</netto>
    <brutto>22.10</brutto>
    <vat>7</vat>
    <wartosc_netto>206.54</wartosc_netto>
    <wartosc_brutto>221.00</wartosc_brutto>
  </faktura_pozycje>
  <faktura_pozycje>
    <opis>dowolny opis</opis>
  </faktura_pozycje>
  <tagi>
    <tag>nazwa 1</tag>
    <tag>nazwa 2</tag>
    <tag>nazwa 3</tag>
  </tagi>

  <ksef>
    <status>1</status>
    <numer_ksef>1111111111-20260115-ABCD1234EF56-78</numer_ksef>
    <data_nadania_numeru>2026-01-15 14:30:00</data_nadania_numeru>
    <blad>
      <kod>440</kod>
      <opis>Duplikat faktury</opis>
    </blad>
  </ksef>

  <relacje>
    <rel_dokument_id>456</rel_dokument_id>
    <rel_dokument_id>789</rel_dokument_id>
  </relacje>

</dokument>
Błędne odczytanie dokumentu: <dokument>
  <kod>3</kod>
</dokument>

2. Wystawianie faktury:

Prosimy w XML używać kodowania znaków w formacie utf-8

Wartości pól tekstowych mogą być umieszczane w sekcji CDATA. Jest to przydatne, gdy zawartość zawiera znaki specjalne XML, np. &, <, > lub apostrof. Mechanizm ten działa dla wszystkich pól tekstowych w XML.
$input_xml = "
<dokument>
  <api_token></api_token>

  <typ_faktury>0</typ_faktury>
  <typ_faktur_podtyp>0</typ_faktur_podtyp>
  <obliczaj_sume_wartosci_faktury_wg>0</obliczaj_sume_wartosci_faktury_wg>
  <numer_faktury></numer_faktury>
  <data_wystawienia>2026-11-01</data_wystawienia>
  <data_sprzedazy>2026-11-01</data_sprzedazy>
  <termin_platnosci_data>2026-11-08</termin_platnosci_data>
  <data_oplacenia></data_oplacenia>
  <kwota_oplacona>0</kwota_oplacona>
  <uwagi><![CDATA[zamówienie 1234 & poprawki]]></uwagi>
  <waluta>EUR</waluta>
  <kurs>4.22040000</kurs>
  <rodzaj_platnosci>Przelew</rodzaj_platnosci>
  <jezyk>0</jezyk>
  <szablon>0</szablon>
  <imie_nazwisko_wystawcy>Jan Kowalski</imie_nazwisko_wystawcy>
  <imie_nazwisko_odbiorcy></imie_nazwisko_odbiorcy>
  <nr_zamowienia></nr_zamowienia>
  <data_zamowienia></data_zamowienia>
  <nr_umowy></nr_umowy>
  <data_umowy></data_umowy>
  <dodatkowe_uwagi></dodatkowe_uwagi>
  <id_dzialy_firmy></id_dzialy_firmy>
  <wyslij_dokument_do_klienta_emailem>1</wyslij_dokument_do_klienta_emailem>
  <magazyn_id></magazyn_id>
  <automatyczne_tworzenie_dokumentu_magazynowego></automatyczne_tworzenie_dokumentu_magazynowego>
  <obliczaj_wartosc_faktury_od>0</obliczaj_wartosc_faktury_od> 
  <notatka_prywatna></notatka_prywatna>
  <qr_platnosc></qr_platnosc>
  <qr_offline></qr_offline>
  
  <nabywca>
    <firma_lub_osoba_prywatna>0</firma_lub_osoba_prywatna>
    <czlonek_grupy_vat>0</czlonek_grupy_vat>
    <jednostka_samorzadu_terytorialnego>0</jednostka_samorzadu_terytorialnego>
    <nazwa><![CDATA[Firma - nazwa nabywcy]]></nazwa>
    <imie></imie>
    <nazwisko></nazwisko>
    <nip></nip>
    <rodzaj_identyfikatora>0</rodzaj_identyfikatora>
    <ulica_i_numer></ulica_i_numer>
    <kod_pocztowy></kod_pocztowy>
    <miejscowosc></miejscowosc>
    <kraj>PL</kraj>
    <email></email>
    <telefon></telefon>
    <fax></fax>
    <www></www>
    <nr_konta_bankowego></nr_konta_bankowego>
    <dodatkowa_informacja></dodatkowa_informacja>
  </nabywca>

  <faktura_pozycje>
    <nazwa>12312312, zzz</nazwa>
    <kod_produktu></kod_produktu>
    <produkt_id></produkt_id>
    <pkwiu></pkwiu>
    <symbol_gtu></symbol_gtu>
    <ilosc>1.000</ilosc>
    <jm>szt.</jm>
    <vat>23</vat>
    <wartosc_brutto>22.00</wartosc_brutto>
    <rodzaj_produktu></rodzaj_produktu>
  </faktura_pozycje>

  <faktura_pozycje>
    <nazwa>111aa22dd</nazwa>
    <kod_produktu></kod_produktu>
    <produkt_id></produkt_id>
    <pkwiu></pkwiu>
    <symbol_gtu>5</symbol_gtu>
    <ilosc>10.000</ilosc>
    <jm>szt.</jm>
    <vat>7</vat>
    <wartosc_brutto>221.00</wartosc_brutto>
    <rodzaj_produktu></rodzaj_produktu>
  </faktura_pozycje>

  <faktura_pozycje>
    <opis>dowolny opis</opis>
  </faktura_pozycje>

  <tag>nazwa 1</tag> 
  <tag>nazwa 2</tag> 


  <JPK_V7>MPP</JPK_V7> 
  <JPK_V7>SW</JPK_V7> 


</dokument>
"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://program.fakturaxl.pl/api/dokument_dodaj.php'); curl_setopt($ch, CURLOPT_POSTFIELDS, $input_xml ); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 300); $return_xml = curl_exec($ch); curl_close($ch); echo $return_xml; // otrzymane informacje XML można przerobić na tablice PHP np: $array_data = json_decode(json_encode(simplexml_load_string($return_xml)), true);

Przykładowe dane, które zwraca API:
Poprawne dodanie dokumentu:

<dokument>
  <kod>1</kod>
  <dokument_id>1460568</dokument_id>
  <dokument_nr>FV 76/5/2026</dokument_nr>
  <unikatowy_kod>FtfhN2ed5Jcd0gIJf4k0GixDvSgz6kHdg64fthRN4cLEYOdffqKq4Ja2ewJwOd4I3CNX63jdakRciq</unikatowy_kod>
</dokument>
Błędne dodanie dokumentu: <dokument>
  <kod>3</kod>
</dokument>

Kod QR do płatności na wydruku faktury <qr_platnosc> :
0 - wyłączony
1 - włączony

W sekcji `faktura_pozycje` można określić ceny pozycji faktury.
Sposób obliczania wartości pozycji zależy od wartości parametru ` <obliczaj_wartosc_faktury_od> `:
0 - obliczaj wartość faktury od ceny jednostkowej netto
1 - obliczaj wartość faktury od ceny jednostkowej brutto (zgodne z kasą fiskalną)


Dostępne opcje dla `<obliczaj_wartosc_faktury_od>=0`
należy wybrać jedną z nich:

Całkowita wartość brutto pozycji
<wartosc_brutto>123</wartosc_brutto>

Całkowita wartość netto pozycji
<wartosc_netto>100</wartosc_netto>

Cena jednostkowa netto pozycji
<cena_netto>50</cena_netto>

Cena jednostkowa netto pozycji z rabatem procentowym
<cena_netto>50</cena_netto>
<rabat>10</rabat>


---------------------------


Dostępne opcje dla `<obliczaj_wartosc_faktury_od>=1` 
należy wybrać jedną z nich:

Całkowita wartość brutto pozycji
<wartosc_brutto>123</wartosc_brutto>

Całkowita wartość netto pozycji
<wartosc_netto>100</wartosc_netto>

Cena jednostkowa brutto pozycji
<cena_brutto>50</cena_brutto>

Cena jednostkowa brutto pozycji z rabatem procentowym
<cena_brutto>50</cena_brutto>
<rabat>10</rabat>

Dla dokumentów typu „marża” proszę podać również poniższe pola:
( opcjonalnie pola te można dodać także dla faktur zaliczkowych i końcowych. )
<typ_marzy>1</typ_marzy>
<wartosc_marzy_brutto>100.00</wartosc_marzy_brutto>
<marza_stawka_vat>23</marza_stawka_vat>

Dla dokumentów typu:
Faktura VAT
Faktura korekta
Faktura marża
Faktura bez vat (rachunek) - tylko koszty
Faktura zaliczkowa
Paragon
PZ - Przyjęcie Zewnętrzne
PW - Przyjęcie Wewnętrzne
Faktura WDT
Faktura WNT
Eksport Towarów
Eksport Usług
Eksport Usług VAT-UE 28b
Import usług VAT-UE 28b

W sekcji <dokument> można dodać pole data_wplywu:
<data_wplywu>2026-11-01</data_wplywu>


Dla dokumentów przychodowych typu:
Faktura VAT
Faktura proforma
Faktura marża
Faktura bez vat (rachunek)
Faktura zaliczkowa
Zamówienie

Jeżeli została dodana integracja z przelewy24 lub PayU
to w sekcji <dokument> można dodać pole platnosci_elektroniczne
dzięki temu na dokumencie zostanie zaznaczona opcja "Pokaż płatności elektroniczne na fakturach"

<platnosci_elektroniczne>1</platnosci_elektroniczne>

W sekcji <dokument> można dodać pole zastosuj_mechanizm_podzielonej_platnosci, które oznacza fakturę adnotacją "mechanizm podzielonej płatności" (MPP, split payment):
0 - wyłączone ( wartość domyślna )
1 - włączone
<zastosuj_mechanizm_podzielonej_platnosci>1</zastosuj_mechanizm_podzielonej_platnosci>

W sekcji <dokument> można dodać pole rodzaj_faktury_koszty które określa rodzaj faktury:
1 - przychodowa ( wartość domyślna )
2 - kosztowa
<rodzaj_faktury_koszty>1</rodzaj_faktury_koszty>

W sekcji <dokument> można dodać pole miejsce_wystawienia, które określa miejsce wystawienia dokumentu:
<miejsce_wystawienia>Poznań</miejsce_wystawienia>

W sekcji <dokument> można dodać pole rodzaj_przeliczania_waluty.

1 - Narodowy Bank Polski
2 - Własny kurs
3 - EBC
<rodzaj_przeliczania_waluty>1</rodzaj_przeliczania_waluty>

W sekcji <rodzaj_kosztow> można wprowadzać wartości dostępne na stronie Ustawienia / Koszty.
Opcja dostępna jest dla dokumentów kosztowych typu:
0 - Faktura VAT
1 - Faktura proforma
3 - Faktura końcowa
4 - Faktura korekta
5 - Faktura marża
6 - Faktura bez vat (rachunek)
7 - Zamówienie
11 - Faktura zaliczkowa
21 - Dowód wewnętrzny
26 - Faktura WNT
29 - Import usług VAT-UE 28b
<rodzaj_kosztow>Paliwo 50% VAT</rodzaj_kosztow>

W sekcji <dokument> można wprowadzić numer konta bankowego sprzedawcy
<sprzedawca>
      <nr_konta_bankowego>43105000865982825875100235</nr_konta_bankowego>
</sprzedawca>

W sekcji <dokument> można opcjonalnie dodać dane odbiorcy (jeśli odbiorca jest inny niż nabywca):
<odbiorca>
    <nazwa>Firma - nazwa odbiorcy</nazwa>
    <nip></nip>
    <rodzaj_identyfikatora>0</rodzaj_identyfikatora>
    <ulica_i_numer></ulica_i_numer>
    <kod_pocztowy></kod_pocztowy>
    <miejscowosc></miejscowosc>
    <kraj>PL</kraj>
    <ksef_rola></ksef_rola>
    <ksef_rola_str></ksef_rola_str>
    <ksef_idwew></ksef_idwew>
</odbiorca>

Sekcję <odbiorca> można dodać maksymalnie 5 razy na jednym dokumencie. Sekcja jest dostępna wyłącznie dla dokumentów przychodowych:

<odbiorca>
    <nazwa>Pierwszy odbiorca</nazwa>
    <nip>5261040828</nip>
    <ulica_i_numer>ul. Przykładowa 1</ulica_i_numer>
    <kod_pocztowy>00-001</kod_pocztowy>
    <miejscowosc>Warszawa</miejscowosc>
    <kraj>PL</kraj>
    <ksef_rola>2</ksef_rola>
</odbiorca>
<odbiorca>
    <nazwa>Drugi odbiorca</nazwa>
    <nip>9876543210</nip>
    <ulica_i_numer>ul. Inna 7</ulica_i_numer>
    <kod_pocztowy>30-001</kod_pocztowy>
    <miejscowosc>Kraków</miejscowosc>
    <kraj>PL</kraj>
    <ksef_rola>5</ksef_rola>
</odbiorca>

W sekcji <dokument> można dodać pole numer_ksef, zawierające numer KSeF nadany w innym systemie:
<numer_ksef>1234567890-20250114-ABCD1234-EF56-78</numer_ksef>

Dla paragonu sekcja <nabywca> nie jest wymagana. Jeśli nie zostanie przesłana, paragon zostanie wystawiony dla odbiorcy "Odbiorca detaliczny".

Dla wszystkich dokumentów, z wyjątkiem korekt, w sekcjach <nabywca> i <odbiorca> można podać <id> klienta z kartoteki. W takim przypadku dane klienta zostaną pobrane z bazy, a pozostałe dane przesłane w tej sekcji zostaną pominięte.
<nabywca>
    <id>123456</id>
</nabywca>

Wystawianie faktury OSS:


Dla typu sprzedaży ( towar ):
<procedura_vat_oss>1</procedura_vat_oss>
<oss_typ_sprzedazy>1</oss_typ_sprzedazy>
<oss_kraj_wysylki>ES</oss_kraj_wysylki>

Dla typu sprzedaży ( usługa ):
<procedura_vat_oss>1</procedura_vat_oss>
<oss_typ_sprzedazy>0</oss_typ_sprzedazy>
<oss_dowod_potwierdzajacy_1>2</oss_dowod_potwierdzajacy_1>
<oss_dowod_potwierdzajacy_1_opis>opis 1 - niewymagany</oss_dowod_potwierdzajacy_1_opis>
<oss_dowod_potwierdzajacy_2>3</oss_dowod_potwierdzajacy_2>
<oss_dowod_potwierdzajacy_2_opis>opis 2 - niewymagany</oss_dowod_potwierdzajacy_2_opis>

Prosimy w XML używać kodowania znaków w formacie utf-8
$input_xml = "
<dokument>
  <api_token></api_token>

  <typ_faktury>0</typ_faktury>
  <typ_faktur_podtyp>0</typ_faktur_podtyp>
  <obliczaj_sume_wartosci_faktury_wg>0</obliczaj_sume_wartosci_faktury_wg>
  <numer_faktury></numer_faktury>
  <data_wystawienia>2026-11-01</data_wystawienia>
  <data_sprzedazy>2026-11-01</data_sprzedazy>
  <termin_platnosci_data>2026-11-08</termin_platnosci_data>
  <data_oplacenia></data_oplacenia>
  <kwota_oplacona>0</kwota_oplacona>
  <uwagi></uwagi>
  <waluta>EUR</waluta>
  <kurs>4.22040000</kurs>
  <rodzaj_platnosci>Przelewy24</rodzaj_platnosci>
  <jezyk>0</jezyk>
  <szablon>0</szablon>
  <imie_nazwisko_wystawcy>Zbigniew Nazwiskoo</imie_nazwisko_wystawcy>
  <imie_nazwisko_odbiorcy></imie_nazwisko_odbiorcy>
  <nr_zamowienia></nr_zamowienia>
  <data_zamowienia></data_zamowienia>
  <nr_umowy></nr_umowy>
  <data_umowy></data_umowy>
  <dodatkowe_uwagi></dodatkowe_uwagi>
  <id_dzialy_firmy></id_dzialy_firmy>
  <wyslij_dokument_do_klienta_emailem>1</wyslij_dokument_do_klienta_emailem>
  <magazyn_id></magazyn_id>
  <automatyczne_tworzenie_dokumentu_magazynowego></automatyczne_tworzenie_dokumentu_magazynowego>
  <obliczaj_wartosc_faktury_od>0</obliczaj_wartosc_faktury_od>
  <notatka_prywatna></notatka_prywatna>
  

  <procedura_vat_oss>1</procedura_vat_oss>
  <oss_typ_sprzedazy>1</oss_typ_sprzedazy>
  <oss_kraj_wysylki>ES</oss_kraj_wysylki>


  <nabywca>
    <firma_lub_osoba_prywatna>0</firma_lub_osoba_prywatna>
    <nazwa>Firma - nazwa nabywcy</nazwa>
    <imie></imie>
    <nazwisko></nazwisko>
    <nip></nip>
    <ulica_i_numer></ulica_i_numer>
    <kod_pocztowy></kod_pocztowy>
    <miejscowosc></miejscowosc>
    <kraj>DE</kraj>
    <email></email>
    <telefon></telefon>
    <fax></fax>
    <www></www>
    <nr_konta_bankowego></nr_konta_bankowego>
    <dodatkowa_informacja></dodatkowa_informacja>
  </nabywca>

  <faktura_pozycje>
    <nazwa>12312312, zzz</nazwa>
    <kod_produktu></kod_produktu>
    <produkt_id></produkt_id>
    <pkwiu></pkwiu>
    <symbol_gtu></symbol_gtu>
    <ilosc>1.000</ilosc>
    <jm>szt.</jm>
    <vat>19</vat>
    <wartosc_brutto>22.00</wartosc_brutto>
    <rodzaj_produktu></rodzaj_produktu>
  </faktura_pozycje>

  <faktura_pozycje>
    <nazwa>111aa22dd</nazwa>
    <kod_produktu></kod_produktu>
    <produkt_id></produkt_id>
    <pkwiu></pkwiu>
    <symbol_gtu>5</symbol_gtu>
    <ilosc>10.000</ilosc>
    <jm>szt.</jm>
    <vat>19</vat>
    <wartosc_brutto>221.00</wartosc_brutto>
    <rodzaj_produktu></rodzaj_produktu>
  </faktura_pozycje>

</dokument>
"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://program.fakturaxl.pl/api/dokument_dodaj.php'); curl_setopt($ch, CURLOPT_POSTFIELDS, $input_xml ); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 300); $return_xml = curl_exec($ch); curl_close($ch); echo $return_xml; // otrzymane informacje XML można przerobić na tablice PHP np: $array_data = json_decode(json_encode(simplexml_load_string($return_xml)), true);

Przykładowe dane, które zwraca API:
Poprawne dodanie dokumentu:

<dokument>
  <kod>1</kod>
  <dokument_id>1460568</dokument_id>
  <dokument_nr>FV 76/5/2026</dokument_nr>
  <unikatowy_kod>FtfhN2ed5Jcd0gIJf4k0GixDvSgz6kHdg64fthRN4cLEYOdffqKq4Ja2ewJwOd4I3CNX63jdakRciq</unikatowy_kod>
</dokument>
Błędne dodanie dokumentu: <dokument>
  <kod>3</kod>
</dokument>

Wystawianie faktury korygującej

Prosimy w XML używać kodowania znaków w formacie utf-8
$input_xml = "
<dokument>
  <api_token></api_token>

  <typ_faktury>4</typ_faktury>
  <obliczaj_sume_wartosci_faktury_wg>0</obliczaj_sume_wartosci_faktury_wg>
  <numer_faktury></numer_faktury>
  <data_wystawienia>2026-11-01</data_wystawienia>
  <data_sprzedazy>2026-11-01</data_sprzedazy>
  <termin_platnosci_data>2026-11-08</termin_platnosci_data>
  <data_oplacenia></data_oplacenia>
  <kwota_oplacona>0</kwota_oplacona>
  <uwagi></uwagi>
  <rodzaj_platnosci>Przelewy24</rodzaj_platnosci>
  <jezyk>0</jezyk>
  <szablon>0</szablon>
  <imie_nazwisko_wystawcy>Zbigniew Nazwiskoo</imie_nazwisko_wystawcy>
  <imie_nazwisko_odbiorcy></imie_nazwisko_odbiorcy>
  <nr_zamowienia></nr_zamowienia>
  <data_zamowienia></data_zamowienia>
  <nr_umowy></nr_umowy>
  <data_umowy></data_umowy>
  <dodatkowe_uwagi></dodatkowe_uwagi>
  <wyslij_dokument_do_klienta_emailem>0</wyslij_dokument_do_klienta_emailem>
  <notatka_prywatna></notatka_prywatna>


  <korekta>
    <id_faktury_korygowanej>30181451</id_faktury_korygowanej>
    <przyczyna_korekty>Przyczyna korekty</przyczyna_korekty>
    <tresc_korygowana></tresc_korygowana>
    <tresc_prawidlowa></tresc_prawidlowa>
  </korekta>


  <sprzedawca>
    <nazwa>Firma - nazwa sprzedawcy</nazwa>
    <nip>7582954326</nip>
    <ulica_i_numer>ul. Polna 22/12</ulica_i_numer>
    <kod_pocztowy>33-500</kod_pocztowy>
    <miejscowosc>Warszawa</miejscowosc>
    <kraj>PL</kraj>
    <inny_adres_korespondencyjny>Adres korespondencyjny</inny_adres_korespondencyjny>
    <dodatkowa_informacja>Informacja 1</dodatkowa_informacja>
    <email></email>
    <telefon>542175643</telefon>
    <fax></fax>
    <www>www.strona-twojej-firmy.pl</www>
    <nr_konta_bankowego></nr_konta_bankowego>
  </sprzedawca>


  <nabywca>
    <firma_lub_osoba_prywatna>0</firma_lub_osoba_prywatna>
    <nazwa>Firma - nazwa nabywcy</nazwa>
    <nip>5120593910</nip>
    <ulica_i_numer>ul. Szeroka 4/28</ulica_i_numer>
    <kod_pocztowy>11-300</kod_pocztowy>
    <miejscowosc>Wrocław</miejscowosc>
    <kraj>PL</kraj>
  </nabywca>


  <odbiorca>
    <nazwa>Firma - Odbiorcy</nazwa>
    <nip>5120593910</nip>
    <ulica_i_numer>ul. Nowa 21/22</ulica_i_numer>
    <kod_pocztowy>13-200</kod_pocztowy>
    <miejscowosc>Poznań</miejscowosc>
    <kraj>PL</kraj>
    <ksef_rola>2</ksef_rola>
    <ksef_rola_str></ksef_rola_str>
    <ksef_idwew></ksef_idwew>
  </odbiorca>


  <faktura_pozycje_bylo>
    <nazwa>Produkt 1</nazwa>
    <kod_produktu></kod_produktu>
    <produkt_id></produkt_id>
    <pkwiu></pkwiu>
    <symbol_gtu></symbol_gtu>
    <kod_cn></kod_cn>
    <ilosc>1.000</ilosc>
    <jm>szt.</jm>
    <vat>23</vat>
    <wartosc_brutto>22.00</wartosc_brutto>
    <rodzaj_produktu></rodzaj_produktu>
  </faktura_pozycje_bylo>

  <faktura_pozycje_bylo>
    <opis>dowolny opis</opis>
  </faktura_pozycje_bylo>


  <faktura_pozycje_powinno_byc>
    <nazwa>Produkt 2</nazwa>
    <kod_produktu></kod_produktu>
    <produkt_id></produkt_id>
    <pkwiu></pkwiu>
    <symbol_gtu>5</symbol_gtu>
    <kod_cn></kod_cn>
    <ilosc>10.000</ilosc>
    <jm>szt.</jm>
    <vat>7</vat>
    <wartosc_brutto>221.00</wartosc_brutto>
    <rodzaj_produktu></rodzaj_produktu>
  </faktura_pozycje_powinno_byc>

  <faktura_pozycje_powinno_byc>
    <opis>dowolny opis</opis>
  </faktura_pozycje_powinno_byc>


</dokument>
"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://program.fakturaxl.pl/api/dokument_dodaj.php'); curl_setopt($ch, CURLOPT_POSTFIELDS, $input_xml ); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 300); $return_xml = curl_exec($ch); curl_close($ch); echo $return_xml; // otrzymane informacje XML można przerobić na tablice PHP np: $array_data = json_decode(json_encode(simplexml_load_string($return_xml)), true);

Przykładowe dane, które zwraca API:
Poprawne dodanie dokumentu:

<dokument>
  <kod>1</kod>
  <dokument_id>1460568</dokument_id>
  <dokument_nr>KOR 76/5/2026</dokument_nr>
  <unikatowy_kod>FtfhN2ed5Jcd0gIJf4k0GixDvSgz6kHdg64fthRN4cLEYOdffqKq4Ja2ewJwOd4I3CNX63jdakRciq</unikatowy_kod>
</dokument>
Błędne dodanie dokumentu: <dokument>
  <kod>3</kod>
</dokument>

Przydatne informacje:
- Sekcja <faktura_pozycje_bylo>...</faktura_pozycje_bylo> nie jest wymagana. W przypadku braku dane zostaną automatycznie pobrana z dokumentu korygowanego.

- Sekcja <faktura_pozycje_powinno_byc>...</faktura_pozycje_powinno_byc> nie jest wymagana. W przypadku braku dane zostaną automatycznie pobrana z dokumentu korygowanego.

- Sekcja <sprzedawca>...</sprzedawca> można podać wszystkie dane lub tylko te które zostały zaktualizowane.

- Sekcja <nabywca>...</nabywca> można podać wszystkie dane lub tylko te które zostały zaktualizowane.

- Sekcja <odbiorca>...</odbiorca> można podać wszystkie dane lub tylko te które zostały zaktualizowane.

* w powyższym przykładzie dla testu zostały podane wszystkie możliwe informacje w sekcjach: sprzedawca, nabywca, odbiorca, faktura_pozycje_bylo, faktura_pozycje_powinno_byc

* pozycje <faktura_pozycje_bylo> oraz <faktura_pozycje_powinno_byc> będą wstawiane w takiej samej kolejności w jakiej znajdują się w przesłanym pliku XML

Pola <typ_marzy>, <wartosc_marzy_brutto> oraz <marza_stawka_vat> są opcjonalne.
Można je podać wyłącznie w przypadku korekty faktury marży, której wartość marży brutto jest większa od 0.
<typ_marzy>1</typ_marzy>
<wartosc_marzy_brutto>100.00</wartosc_marzy_brutto>
<marza_stawka_vat>23</marza_stawka_vat>

Wystawianie faktury korygującej do paragonu

Prosimy w XML używać kodowania znaków w formacie utf-8
$input_xml = "
<dokument>
  <api_token></api_token>

  <typ_faktury>36</typ_faktury>
  <obliczaj_sume_wartosci_faktury_wg>1</obliczaj_sume_wartosci_faktury_wg>
  <numer_faktury></numer_faktury>
  <data_wystawienia>2026-11-01</data_wystawienia>
  <data_sprzedazy>2026-11-01</data_sprzedazy>
  <termin_platnosci_data>2026-11-08</termin_platnosci_data>
  <data_oplacenia></data_oplacenia>
  <kwota_oplacona>0</kwota_oplacona>
  <uwagi></uwagi>
  <waluta>PLN</waluta>
  <kurs>1</kurs>
  <rodzaj_platnosci>Przelewy24</rodzaj_platnosci>
  <jezyk>0</jezyk>
  <szablon>0</szablon>
  <imie_nazwisko_wystawcy>Zbigniew Nazwiskoo</imie_nazwisko_wystawcy>
  <imie_nazwisko_odbiorcy></imie_nazwisko_odbiorcy>
  <nr_zamowienia></nr_zamowienia>
  <data_zamowienia></data_zamowienia>
  <nr_umowy></nr_umowy>
  <data_umowy></data_umowy>
  <dodatkowe_uwagi></dodatkowe_uwagi>
  <wyslij_dokument_do_klienta_emailem>0</wyslij_dokument_do_klienta_emailem>


  <korekta>
    <id_faktury_korygowanej>4155343</id_faktury_korygowanej>
    <przyczyna_korekty>Przyczyna korekty</przyczyna_korekty>
    <tresc_korygowana></tresc_korygowana>
    <tresc_prawidlowa></tresc_prawidlowa>
  </korekta>


  <sprzedawca>
    <nazwa>Firma - nazwa sprzedawcy</nazwa>
    <nip>7582954326</nip>
    <ulica_i_numer>ul. Polna 22/12</ulica_i_numer>
    <kod_pocztowy>33-500</kod_pocztowy>
    <miejscowosc>Warszawa</miejscowosc>
    <kraj>PL</kraj>
    <inny_adres_korespondencyjny>Adres korespondencyjny</inny_adres_korespondencyjny>
    <dodatkowa_informacja>Informacja 1</dodatkowa_informacja>
    <email></email>
    <telefon>542175643</telefon>
    <fax></fax>
    <www>www.strona-twojej-firmy.pl</www>
    <nr_konta_bankowego></nr_konta_bankowego>
  </sprzedawca>


  <nabywca>
    <firma_lub_osoba_prywatna>0</firma_lub_osoba_prywatna>
    <nazwa>Firma - nazwa nabywcy</nazwa>
    <nip>5120593910</nip>
    <ulica_i_numer>ul. Szeroka 4/28</ulica_i_numer>
    <kod_pocztowy>11-300</kod_pocztowy>
    <miejscowosc>Wrocław</miejscowosc>
    <kraj>PL</kraj>
  </nabywca>


  <odbiorca>
    <nazwa>Firma - Odbiorcy</nazwa>
    <nip>5120593910</nip>
    <ulica_i_numer>ul. Nowa 21/22</ulica_i_numer>
    <kod_pocztowy>13-200</kod_pocztowy>
    <miejscowosc>Poznań</miejscowosc>
    <kraj>PL</kraj>
    <ksef_rola>2</ksef_rola>
    <ksef_rola_str></ksef_rola_str>
    <ksef_idwew></ksef_idwew>
  </odbiorca>


  <faktura_pozycje_bylo>
    <nazwa>Produkt 1</nazwa>
    <kod_produktu></kod_produktu>
    <produkt_id></produkt_id>
    <pkwiu></pkwiu>
    <symbol_gtu></symbol_gtu>
    <kod_cn></kod_cn>
    <ilosc>1.000</ilosc>
    <jm>szt.</jm>
    <vat>23</vat>
    <wartosc_brutto>22.00</wartosc_brutto>
    <rodzaj_produktu></rodzaj_produktu>
  </faktura_pozycje_bylo>


  <faktura_pozycje_powinno_byc>
    <nazwa>Produkt 2</nazwa>
    <kod_produktu></kod_produktu>
    <produkt_id></produkt_id>
    <pkwiu></pkwiu>
    <symbol_gtu>5</symbol_gtu>
    <kod_cn></kod_cn>
    <ilosc>10.000</ilosc>
    <jm>szt.</jm>
    <vat>7</vat>
    <wartosc_brutto>221.00</wartosc_brutto>
    <rodzaj_produktu></rodzaj_produktu>
  </faktura_pozycje_powinno_byc>


</dokument>
"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://program.fakturaxl.pl/api/dokument_dodaj.php'); curl_setopt($ch, CURLOPT_POSTFIELDS, $input_xml ); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 300); $return_xml = curl_exec($ch); curl_close($ch); echo $return_xml; // otrzymane informacje XML można przerobić na tablice PHP np: $array_data = json_decode(json_encode(simplexml_load_string($return_xml)), true);

Przykładowe dane, które zwraca API:
Poprawne dodanie dokumentu:

<dokument>
  <kod>1</kod>
  <dokument_id>1460568</dokument_id>
  <dokument_nr>KOR 76/5/2026</dokument_nr>
  <unikatowy_kod>FtfhN2ed5Jcd0gIJf4k0GixDvSgz6kHdg64fthRN4cLEYOdffqKq4Ja2ewJwOd4I3CNX63jdakRciq</unikatowy_kod>
</dokument>
Błędne dodanie dokumentu: <dokument>
  <kod>3</kod>
</dokument>

Przydatne informacje:
- Sekcja <faktura_pozycje_bylo>...</faktura_pozycje_bylo> nie jest wymagana. W przypadku braku dane zostaną automatycznie pobrana z dokumentu korygowanego.

- Sekcja <faktura_pozycje_powinno_byc>...</faktura_pozycje_powinno_byc> nie jest wymagana. W przypadku braku dane zostaną automatycznie pobrana z dokumentu korygowanego.

- Sekcja <sprzedawca>...</sprzedawca> można podać wszystkie dane lub tylko te które zostały zaktualizowane.

- Sekcja <nabywca>...</nabywca> można podać wszystkie dane lub tylko te które zostały zaktualizowane.

- Sekcja <odbiorca>...</odbiorca> można podać wszystkie dane lub tylko te które zostały zaktualizowane.

* w powyższym przykładzie dla testu zostały podane wszystkie możliwe informacje w sekcjach: sprzedawca, nabywca, odbiorca, faktura_pozycje_bylo, faktura_pozycje_powinno_byc

* pozycje <faktura_pozycje_bylo> oraz <faktura_pozycje_powinno_byc> będą wstawiane w takiej samej kolejności w jakiej znajdują się w przesłanym pliku XML

Wystawianie faktury końcowej

Prosimy w XML używać kodowania znaków w formacie utf-8
$input_xml = "
<dokument>
  <api_token></api_token>

  <typ_faktury>3</typ_faktury>
  <obliczaj_sume_wartosci_faktury_wg>0</obliczaj_sume_wartosci_faktury_wg>
  <numer_faktury></numer_faktury>
  <data_wystawienia>2026-11-01</data_wystawienia>
  <data_sprzedazy>2026-11-01</data_sprzedazy>
  <termin_platnosci_data>2026-11-08</termin_platnosci_data>
  <data_oplacenia></data_oplacenia>
  <kwota_oplacona>0</kwota_oplacona>
  <uwagi></uwagi>
  <waluta>PLN</waluta>
  <kurs>1</kurs>
  <rodzaj_platnosci>Przelew</rodzaj_platnosci>
  <jezyk>0</jezyk>
  <szablon>0</szablon>
  <imie_nazwisko_wystawcy>Jan Kowalski</imie_nazwisko_wystawcy>
  <imie_nazwisko_odbiorcy></imie_nazwisko_odbiorcy>
  <nr_zamowienia></nr_zamowienia>
  <data_zamowienia></data_zamowienia>
  <nr_umowy></nr_umowy>
  <data_umowy></data_umowy>
  <dodatkowe_uwagi></dodatkowe_uwagi>
  <wyslij_dokument_do_klienta_emailem>0</wyslij_dokument_do_klienta_emailem>
  <notatka_prywatna></notatka_prywatna>
  <dokument_rel_id>123</dokument_rel_id>
  <dokument_rel_id>456</dokument_rel_id>


  <nabywca>
    <firma_lub_osoba_prywatna>0</firma_lub_osoba_prywatna>
    <nazwa>Firma - nazwa nabywcy</nazwa>
    <nip>5120593910</nip>
    <ulica_i_numer>ul. Szeroka 4/28</ulica_i_numer>
    <kod_pocztowy>11-300</kod_pocztowy>
    <miejscowosc>Wrocław</miejscowosc>
    <kraj>PL</kraj>
  </nabywca>


  <odbiorca>
    <nazwa>Firma - Odbiorcy</nazwa>
    <nip>5120593910</nip>
    <ulica_i_numer>ul. Nowa 21/22</ulica_i_numer>
    <kod_pocztowy>13-200</kod_pocztowy>
    <miejscowosc>Poznań</miejscowosc>
    <kraj>PL</kraj>
    <ksef_rola>2</ksef_rola>
    <ksef_rola_str></ksef_rola_str>
    <ksef_idwew></ksef_idwew>
  </odbiorca>


  <faktura_pozycje>
    <nazwa>Usługa - rozliczenie końcowe</nazwa>
    <kod_produktu></kod_produktu>
    <produkt_id></produkt_id>
    <pkwiu></pkwiu>
    <symbol_gtu></symbol_gtu>
    <ilosc>1</ilosc>
    <jm>szt.</jm>
    <vat>23</vat>
    <wartosc_brutto>10000.00</wartosc_brutto>
    <rodzaj_produktu></rodzaj_produktu>
  </faktura_pozycje>


</dokument>
"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://program.fakturaxl.pl/api/dokument_dodaj.php'); curl_setopt($ch, CURLOPT_POSTFIELDS, $input_xml ); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 300); $return_xml = curl_exec($ch); curl_close($ch); echo $return_xml; // the received XML information can be converted into PHP tables, e.g.: $array_data = json_decode(json_encode(simplexml_load_string($return_xml)), true);

Przykładowe dane, które zwraca API:
Poprawne dodanie dokumentu:

<dokument>
  <kod>1</kod>
  <dokument_id>1460568</dokument_id>
  <dokument_nr>FK 1/1/2026</dokument_nr>
  <unikatowy_kod>FtfhN2ed5Jcd0gIJf4k0GixDvSgz6kHdg64</unikatowy_kod>
</dokument>
Błędne dodanie dokumentu: <dokument>
  <kod>64</kod>
</dokument>

Przydatne informacje:
- Sekcja <dokument_rel_id>...</dokument_rel_id> służy do powiązania faktury końcowej z fakturami zaliczkowymi.

- Można podać wiele sekcji <dokument_rel_id> (maksymalnie 9 faktur zaliczkowych).

- Wartość w <dokument_rel_id> to ID faktury zaliczkowej (typ_faktury=11) z systemu.

- Faktury zaliczkowe muszą mieć tę samą walutę co faktura końcowa.

- Faktura zaliczkowa nie może być już powiązana z inną fakturą końcową.

Wystawianie noty obciążeniowej

Prosimy w XML używać kodowania znaków w formacie utf-8
$input_xml = "
<dokument>
  <api_token></api_token>

  <typ_faktury>19</typ_faktury>
  <rodzaj_faktury_koszty>1</rodzaj_faktury_koszty>
  <numer_faktury></numer_faktury>
  <data_wystawienia>2026-11-01</data_wystawienia>
  <data_sprzedazy>2026-11-01</data_sprzedazy>
  <termin_platnosci_data>2026-11-08</termin_platnosci_data>
  <data_oplacenia></data_oplacenia>
  <kwota_oplacona>0</kwota_oplacona>
  <uwagi></uwagi>
  <waluta>PLN</waluta>
  <kurs>1</kurs>
  <rodzaj_platnosci>Przelew</rodzaj_platnosci>
  <jezyk>0</jezyk>
  <szablon>0</szablon>
  <imie_nazwisko_wystawcy>Jan Kowalski</imie_nazwisko_wystawcy>
  <imie_nazwisko_odbiorcy></imie_nazwisko_odbiorcy>
  <nr_zamowienia></nr_zamowienia>
  <data_zamowienia></data_zamowienia>
  <nr_umowy></nr_umowy>
  <data_umowy></data_umowy>
  <dodatkowe_uwagi></dodatkowe_uwagi>
  <wyslij_dokument_do_klienta_emailem>0</wyslij_dokument_do_klienta_emailem>
  <notatka_prywatna></notatka_prywatna>


  <nabywca>
    <firma_lub_osoba_prywatna>0</firma_lub_osoba_prywatna>
    <nazwa>Firma - nazwa nabywcy</nazwa>
    <nip>5120593910</nip>
    <ulica_i_numer>ul. Szeroka 4/28</ulica_i_numer>
    <kod_pocztowy>11-300</kod_pocztowy>
    <miejscowosc>Wrocław</miejscowosc>
    <kraj>PL</kraj>
  </nabywca>


  <odbiorca>
    <nazwa>Firma - Odbiorcy</nazwa>
    <nip>5120593910</nip>
    <ulica_i_numer>ul. Nowa 21/22</ulica_i_numer>
    <kod_pocztowy>13-200</kod_pocztowy>
    <miejscowosc>Poznań</miejscowosc>
    <kraj>PL</kraj>
    <ksef_rola>2</ksef_rola>
    <ksef_rola_str></ksef_rola_str>
    <ksef_idwew></ksef_idwew>
  </odbiorca>


  <faktura_pozycje>
    <tresc>Niniejszym obciążamy Państwa kwotą</tresc>
    <kwota>500.00</kwota>
    <dalsza_tresc>tytułem kary umownej za nieterminową realizację umowy.</dalsza_tresc>
  </faktura_pozycje>


</dokument>
"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://program.fakturaxl.pl/api/dokument_dodaj.php'); curl_setopt($ch, CURLOPT_POSTFIELDS, $input_xml ); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 300); $return_xml = curl_exec($ch); curl_close($ch); echo $return_xml; // the received XML information can be converted into PHP tables, e.g.: $array_data = json_decode(json_encode(simplexml_load_string($return_xml)), true);

Przykładowe dane, które zwraca API:
Poprawne dodanie dokumentu:

<dokument>
  <kod>1</kod>
  <dokument_id>1460569</dokument_id>
  <dokument_nr>NO 1/11/2026</dokument_nr>
  <unikatowy_kod>VzUkoubDkPYAXmXUpZaepTU1dAQzB9HOOfkEjz1XWS6h</unikatowy_kod>
</dokument>
Błędne dodanie dokumentu: <dokument>
  <kod>3</kod>
</dokument>

Wystawianie faktury RR

Prosimy w XML używać kodowania znaków w formacie utf-8
$input_xml = "
<dokument>
  <api_token></api_token>

  <typ_faktury>16</typ_faktury>
  <rodzaj_faktury_koszty>2</rodzaj_faktury_koszty>
  <numer_faktury></numer_faktury>
  <data_wystawienia>2026-11-01</data_wystawienia>
  <data_sprzedazy>2026-11-01</data_sprzedazy>
  <termin_platnosci_data>2026-11-08</termin_platnosci_data>
  <data_oplacenia></data_oplacenia>
  <kwota_oplacona>0</kwota_oplacona>
  <uwagi>Oświadczam, że jestem rolnikiem ryczałtowym zwolnionym od podatku od towarów i usług na podstawie art. 43 ust. 1 pkt 3 ustawy o podatku od towarów i usług.</uwagi>
  <waluta>PLN</waluta>
  <kurs>1</kurs>
  <rodzaj_platnosci>Przelew</rodzaj_platnosci>
  <jezyk>0</jezyk>
  <szablon>0</szablon>
  <imie_nazwisko_wystawcy>Jan Kowalski</imie_nazwisko_wystawcy>
  <imie_nazwisko_odbiorcy></imie_nazwisko_odbiorcy>
  <nr_zamowienia></nr_zamowienia>
  <data_zamowienia></data_zamowienia>
  <nr_umowy></nr_umowy>
  <data_umowy></data_umowy>
  <dodatkowe_uwagi></dodatkowe_uwagi>
  <wyslij_dokument_do_klienta_emailem>0</wyslij_dokument_do_klienta_emailem>
  <notatka_prywatna></notatka_prywatna>
  <procent_na_fundusz>0</procent_na_fundusz>
  <fundusz_ochrony_rolnictwa>0</fundusz_ochrony_rolnictwa>


  <nabywca>
    <firma_lub_osoba_prywatna>0</firma_lub_osoba_prywatna>
    <nazwa>Gospodarstwo Rolne Jan Nowak</nazwa>
    <nip>5120593910</nip>
    <ulica_i_numer>ul. Polna 4</ulica_i_numer>
    <kod_pocztowy>63-400</kod_pocztowy>
    <miejscowosc>Ostrów Wielkopolski</miejscowosc>
    <kraj>PL</kraj>
    <nr_konta_bankowego>54 1930 1190 2013 1336 2472 0001</nr_konta_bankowego>
  </nabywca>


  <faktura_pozycje>
    <nazwa>Pszenica konsumpcyjna klasa I</nazwa>
    <kod_produktu></kod_produktu>
    <produkt_id></produkt_id>
    <pkwiu></pkwiu>
    <symbol_gtu></symbol_gtu>
    <ilosc>1000</ilosc>
    <jm>kg</jm>
    <vat>7</vat>
    <wartosc_netto>950.00</wartosc_netto>
    <rodzaj_produktu></rodzaj_produktu>
  </faktura_pozycje>


</dokument>
"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://program.fakturaxl.pl/api/dokument_dodaj.php'); curl_setopt($ch, CURLOPT_POSTFIELDS, $input_xml ); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 300); $return_xml = curl_exec($ch); curl_close($ch); echo $return_xml; // otrzymane informacje XML można przerobić na tablice PHP np: $array_data = json_decode(json_encode(simplexml_load_string($return_xml)), true);

Przykładowe dane, które zwraca API:
Poprawne dodanie dokumentu:

<dokument>
  <kod>1</kod>
  <dokument_id>1460570</dokument_id>
  <dokument_nr>RR 1/11/2026</dokument_nr>
  <unikatowy_kod>Kq8ZmW3pXn7RtYb2LcVd5HsJ9FgA1EuN4oTi6PwQx</unikatowy_kod>
</dokument>
Błędne dodanie dokumentu: <dokument>
  <kod>7</kod>
</dokument>

Przydatne informacje:
- Jeśli pole <numer_faktury> jest puste, numer zostanie nadany automatycznie zgodnie z numeracją faktur VAT RR. Podany numer musi być unikalny (kod błędu: 7).

- <procent_na_fundusz> - opłata na fundusz promocji:
  0 - nie pobieraj
  1 - 0,1%
  2 - 0,2%

- <fundusz_ochrony_rolnictwa> - opłata 0,125% na fundusz ochrony rolnictwa:
  0 - nie pobieraj
  1 - pobieraj

3. Pobieranie faktury w pdf:

Parametr "k" to unikatowy numer dokumentu który otrzymujemy podczas dodawania dokumentu za pomoca API. 
Można pobrać go również za pomocą API "Pobieranie listy dokumentów"


Pobieranie pliku PDF:
https://program.fakturaxl.pl/api/pdf.php?k=3UemoDtuGj1xJxogDk5cvWk5aYjrV04JJCN92kDhhRuhDyzncgpWNJEphsARGKspbzYneekqx2tV6150&pdf=1

Przykładowe dane, które zwraca API:
Błędne pobranie:

<dokument>
  <kod>4</kod>
</dokument>


Otwieranie pliku PDF:
https://program.fakturaxl.pl/api/pdf.php?k=3UemoDtuGj1xJxogDk5cvWk5aYjrV04JJCN92kDhhRuhDyzncgpWNJEphsARGKspbzYneekqx2tV6150&pdf=2

Przykładowe dane, które zwraca API:
Błędne otwarcie:

<dokument>
  <kod>4</kod>
</dokument>


Zapisanie pliku PDF:
$input_xml = "
<dokument>
  <api_token></api_token>
  <dokument_id>22204360</dokument_id>

</dokument>
"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://program.fakturaxl.pl/api/pdf_p.php'); curl_setopt($ch, CURLOPT_POSTFIELDS, $input_xml); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 300); $return_xml = curl_exec($ch); curl_close($ch); echo $return_xml; // otrzymane informacje XML można przerobić na tablice PHP np: $array_data = json_decode(json_encode(simplexml_load_string($return_xml)), true);

Przykładowe dane, które zwraca API:
Poprawne odczytanie dokumentu:

<dokument>
  <pdf>sdf23grehw45hwndfghdfhth45hrmfgdfghdfgh45hthdfg</pdf>
</dokument>


<pdf>...</pdf> to base64_encode zawartości pliku PDF
Przykładowy zapis pliku: $array_data["pdf"] = base64_decode($array_data["pdf"]);
file_put_contents("plik.pdf", $array_data["pdf"]);
Błędne otwarcie:

<dokument>
  <kod>4</kod>
</dokument>

4. Wysłanie faktury do klienta e-mailem:

$input_xml = "
<dokument>
  <dokument_id>292324</dokument_id>
  <zalacz_dokument_w_formacie_pdf>1</zalacz_dokument_w_formacie_pdf>
  <api_token></api_token>
</dokument>
"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://program.fakturaxl.pl/api/wyslanie_faktury_do_klienta_emailem.php'); curl_setopt($ch, CURLOPT_POSTFIELDS, $input_xml); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 300); $return_xml = curl_exec($ch); curl_close($ch); echo $return_xml; // otrzymane informacje XML można przerobić na tablice PHP np: $array_data = json_decode(json_encode(simplexml_load_string($return_xml)), true);

Przykładowe dane, które zwraca API:
Poprawnie wysłany e-mail:

<dokument>
  <kod>23</kod>
</dokument>
Błędnie wysłany email: <dokument>
  <kod>3</kod>
</dokument>

5. Dodanie relacji między dokumentami:

Możliwe jest dodanie relacji pomiędzy:
- Fakturą VAT <dokument_id> a Proformą, Zamówieniem, Paragonem, KP, Dowodem dostawy, Dowodem wewnętrznym, WZ lub Ofertą <rel_dokument_id>.
- Fakturą bez VAT (rachunek) <dokument_id> a Proformą, Fakturą marża, Zamówieniem, Paragonem, KP lub WZ <rel_dokument_id>.
- Fakturą zaliczkową <dokument_id> a Proformą <rel_dokument_id>.

Aktualnie w jednym wywołaniu można dodać tylko jedną relację.

$input_xml = "
<dokument>
  <api_token></api_token>
  <dokument_id>123</dokument_id>

  <relacje>
    <rel_dokument_id>456</rel_dokument_id>
  </relacje>

</dokument>
"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://program.fakturaxl.pl/api/dokument_relacje.php'); curl_setopt($ch, CURLOPT_POSTFIELDS, $input_xml); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 300); $return_xml = curl_exec($ch); curl_close($ch); echo $return_xml; // otrzymane informacje XML można przerobić na tablice PHP np: $array_data = json_decode(json_encode(simplexml_load_string($return_xml)), true);

Przykładowe dane, które zwraca API:
Poprawnie dodana relacja:

<dokument>
  <kod>301</kod>
</dokument>
Błędnie dodana relacja: <dokument>
  <kod>304</kod>
</dokument>

6. Usuwanie faktury:

$input_xml = "
<dokument>
  <api_token></api_token>
  <dokument_id>1234</dokument_id>

</dokument>
"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://program.fakturaxl.pl/api/dokument_del.php'); curl_setopt($ch, CURLOPT_POSTFIELDS, $input_xml); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 300); $return_xml = curl_exec($ch); curl_close($ch); echo $return_xml; // otrzymane informacje XML można przerobić na tablice PHP np: $array_data = json_decode(json_encode(simplexml_load_string($return_xml)), true);

Przykładowe dane, które zwraca API:
Poprawne usunięty dokument:

<dokument>
  <kod>20</kod>
</dokument>
Błąd podczas usuwania dokumentu: <dokument>
  <kod>4</kod>
</dokument>

7. Wysyłanie faktury do KSeF:

$input_xml = "
<dokument>
  <api_token></api_token>
  <dokument_id>1234</dokument_id>

</dokument>
"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://program.fakturaxl.pl/api/dokument_ksef_wyslanie.php'); curl_setopt($ch, CURLOPT_POSTFIELDS, $input_xml); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 300); $return_xml = curl_exec($ch); curl_close($ch); echo $return_xml; // otrzymane informacje XML można przerobić na tablice PHP np: $array_data = json_decode(json_encode(simplexml_load_string($return_xml)), true);

Przykładowe dane, które zwraca API:
Poprawne wysyłanie faktury do KSeF:

<dokument>
  <kod>49</kod>
</dokument>
Błąd podczas wysyłania faktury do KSeF: <dokument>
  <kod>50</kod>
  <komunikat>....</komunikat>
</dokument>

8. Pobieranie listy działów:

$input_xml = "
<dokument>
  <api_token></api_token>

</dokument>
"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://program.fakturaxl.pl/api/dokument_lista_dzialow.php'); curl_setopt($ch, CURLOPT_POSTFIELDS, $input_xml); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 300); $return_xml = curl_exec($ch); curl_close($ch); echo $return_xml; // otrzymane informacje XML można przerobić na tablice PHP np: $array_data = json_decode(json_encode(simplexml_load_string($return_xml)), true);

Przykładowe dane, które zwraca API:
Poprawne odczytanie listy działów:

<dokument>
  <dzial>
    <id>159</id>
    <nazwa>Pierwszy dział firmy</nazwa>
  </dzial>
  <dzial>
    <id>168</id>
    <nazwa>Drugi dział firmy</nazwa>
  </dzial>
</dokument>
Błędne odczytanie listy działów: <dokument>
  <kod>3</kod>
</dokument>

9. Pobieranie listy dokumentów:

$input_xml = "
<dokument>
  <api_token></api_token>
  <data_od>2026-01-01</data_od>
  <data_do>2026-01-30</data_do>
  <id_dzialy_firmy></id_dzialy_firmy>
  <wybrany_typ_dokumentu></wybrany_typ_dokumentu>
  <strona>1</strona>
  <na_stronie>500</na_stronie>

</dokument>
"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://program.fakturaxl.pl/api/lista_dokumentow.php'); curl_setopt($ch, CURLOPT_POSTFIELDS, $input_xml); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 300); $return_xml = curl_exec($ch); curl_close($ch); echo $return_xml; // otrzymane informacje XML można przerobić na tablice PHP np: $array_data = json_decode(json_encode(simplexml_load_string($return_xml)), true);

Przykładowe dane, które zwraca API:
Poprawne odczytanie listy dokumentów:

<dokumenty> 
    <dokument>                    
        <id>12345</id>
        <numer_faktury>FV 1/1/2020</numer_faktury>
        <typ_faktury>0</typ_faktury>
        <typ_faktury_str>Faktura VAT</typ_faktury_str>
        <id_dzialy_firmy>2</id_dzialy_firmy>
        <rodzaj_faktury_koszty>1</rodzaj_faktury_koszty>
        <nazwa_skrocona_odbiorcy>Nazwa firmy</nazwa_skrocona_odbiorcy>
        <klient_id>12345</klient_id>
        <data_wystawienia>2020-01-01</data_wystawienia>
        <data_sprzedazy>2020-01-01</data_sprzedazy>
        <data_wplywu>2020-01-01</data_wplywu>
        <miejsce_wystawienia>Poznań</miejsce_wystawienia>
        <wartosc_netto>100.00</wartosc_netto>
        <wartosc_vat>23.00</wartosc_vat>
        <wartosc_brutto>123.00</wartosc_brutto>
        <waluta_str>EUR</waluta_str>
        <kurs>4.25850000</kurs>
        <status>2</status>    
        <data_oplacenia>2020-01-05</data_oplacenia>
        <kwota_oplacona>123.00</kwota_oplacona>
        <ksef>
            <status>1</status>
            <numer_ksef>1111111111-20200105-ABCD1234-EF56-78</numer_ksef>
            <data_nadania_numeru>2020-01-05 10:30:00</data_nadania_numeru>
        </ksef>
    </dokument>

    <dokument>                    
        <id>12346</id>
        <numer_faktury>FV 2/1/2020</numer_faktury>
        <typ_faktury>0</typ_faktury>
        <typ_faktury_str>Faktura VAT</typ_faktury_str>
        <id_dzialy_firmy>2</id_dzialy_firmy>
        <rodzaj_faktury_koszty>1</rodzaj_faktury_koszty>
        <nazwa_skrocona_odbiorcy>Nazwa firmy</nazwa_skrocona_odbiorcy>
        <klient_id>12345</klient_id>
        <data_wystawienia>2020-01-02</data_wystawienia>
        <data_sprzedazy>2020-01-02</data_sprzedazy>
        <data_wplywu>2020-01-02</data_wplywu>
        <miejsce_wystawienia>Poznań</miejsce_wystawienia>
        <wartosc_netto>200.00</wartosc_netto>
        <wartosc_vat>46.00</wartosc_vat>
        <wartosc_brutto>246.00</wartosc_brutto>
        <waluta_str>EUR</waluta_str>
        <kurs>4.25850000</kurs>
        <status>1</status>    
        <data_oplacenia>2020-01-05</data_oplacenia>
        <kwota_oplacona>10.00</kwota_oplacona>
        <ksef>
            <status>1</status>
            <numer_ksef>1111111111-20200105-EFGH5678-IJ90-12</numer_ksef>
            <data_nadania_numeru>2020-01-05 11:45:00</data_nadania_numeru>
        </ksef>
    </dokument>    

    <paginacja>
        <strona>1</strona>
        <na_stronie>500</na_stronie>
        <wszystkie_strony>38</wszystkie_strony>
        <wszystkie_wyniki>3731</wszystkie_wyniki>
    </paginacja>

</dokumenty> 

Przykład 2
Można pobrać listę dokumentów, które zostały dodane lub zmienione od wybranej daty, na przykład od 15:00.
Jest to przydatna opcja, jeśli chcemy sprawdzić, czy np. w ostatniej godzinie dodano lub zmieniono dokumenty, bez konieczności ciągłego pobierania całej listy.
$input_xml = "
<dokument>
    <api_token></api_token>
    <data_aktualizacji_od>2026-11-06 10:45:00</data_aktualizacji_od>
    <id_dzialy_firmy></id_dzialy_firmy>
    <wybrany_typ_dokumentu></wybrany_typ_dokumentu>
    <strona>1</strona>
    <na_stronie>500</na_stronie>
</dokument>
"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://program.fakturaxl.pl/api/lista_dokumentow.php'); curl_setopt($ch, CURLOPT_POSTFIELDS, $input_xml); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 300); $return_xml = curl_exec($ch); curl_close($ch); echo $return_xml; // otrzymane informacje XML można przerobić na tablice PHP np: $array_data = json_decode(json_encode(simplexml_load_string($return_xml)), true);

Przykład 3
Można pobrać listę dodanych dokumentów w określonym czasie z dokładnością co do sekundy.
Jest to przydatna funkcja, jeśli chcesz sprawdzić, czy jakiś dokument został dodany na przykład w ciągu ostatnich trzech godzin lub innego dokładnie określonego przedziału czasowego.
$input_xml = "
<dokument>
    <api_token></api_token>
    <data_dodania_od>2026-11-06 10:45:00</data_dodania_od>
    <data_dodania_do>2026-11-06 15:45:00</data_dodania_do>
    <id_dzialy_firmy></id_dzialy_firmy>
    <wybrany_typ_dokumentu></wybrany_typ_dokumentu>
    <strona>1</strona>
    <na_stronie>500</na_stronie>
</dokument>
"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://program.fakturaxl.pl/api/lista_dokumentow.php'); curl_setopt($ch, CURLOPT_POSTFIELDS, $input_xml); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 300); $return_xml = curl_exec($ch); curl_close($ch); echo $return_xml; // otrzymane informacje XML można przerobić na tablice PHP np: $array_data = json_decode(json_encode(simplexml_load_string($return_xml)), true);

Przykład 4
Dodanie parametru "status" umożliwia pobranie dokumentów o określonym statusie.
Dostępne statusy:
0 - Nieopłacona
1 - Częściowo opłacona
2 - Opłacona
$input_xml = "
<dokument>
    <api_token></api_token>
    <data_od>2026-11-06 10:45:00</data_od>
    <data_do>2026-11-06 15:45:00</data_do>
    <id_dzialy_firmy></id_dzialy_firmy>
    <wybrany_typ_dokumentu></wybrany_typ_dokumentu>
    <status>0</status>
    <strona>1</strona>
    <na_stronie>500</na_stronie>
</dokument>
"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://program.fakturaxl.pl/api/lista_dokumentow.php'); curl_setopt($ch, CURLOPT_POSTFIELDS, $input_xml); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 300); $return_xml = curl_exec($ch); curl_close($ch); echo $return_xml; // otrzymane informacje XML można przerobić na tablice PHP np: $array_data = json_decode(json_encode(simplexml_load_string($return_xml)), true);

Example 5
Dodanie parametru "rodzaj_faktury_koszty" umożliwia pobranie wyłącznie faktur wybranego rodzaju.
Dostępne wartości:
1 - tylko faktury przychodowe ( sprzedażowe )
2 - tylko faktury kosztowe
Gdy parametr jest pusty lub nie zostanie podany, zwracane są oba rodzaje dokumentów ( zachowanie domyślne ).
$input_xml = "
<dokument>
    <api_token></api_token>
    <data_od>2026-11-06</data_od>
    <data_do>2026-11-06</data_do>
    <id_dzialy_firmy></id_dzialy_firmy>
    <wybrany_typ_dokumentu></wybrany_typ_dokumentu>
    <rodzaj_faktury_koszty>2</rodzaj_faktury_koszty>
    <strona>1</strona>
    <na_stronie>500</na_stronie>
</dokument>
"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://program.fakturaxl.pl/api/lista_dokumentow.php'); curl_setopt($ch, CURLOPT_POSTFIELDS, $input_xml); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 300); $return_xml = curl_exec($ch); curl_close($ch); echo $return_xml; // otrzymane informacje XML można przerobić na tablice PHP np: $array_data = json_decode(json_encode(simplexml_load_string($return_xml)), true);

Example 6
Dodanie parametru "klient_id" umożliwia pobranie wyłącznie faktur wystawionych dla wskazanego klienta.
Gdy parametr jest pusty lub nie zostanie podany, zwracane są faktury dla wszystkich klientów ( zachowanie domyślne ).
$input_xml = "
<dokument>
    <api_token></api_token>
    <data_od>2026-11-06</data_od>
    <data_do>2026-11-06</data_do>
    <id_dzialy_firmy></id_dzialy_firmy>
    <wybrany_typ_dokumentu></wybrany_typ_dokumentu>
    <klient_id>123</klient_id>
    <strona>1</strona>
    <na_stronie>500</na_stronie>
</dokument>
"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://program.fakturaxl.pl/api/lista_dokumentow.php'); curl_setopt($ch, CURLOPT_POSTFIELDS, $input_xml); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 300); $return_xml = curl_exec($ch); curl_close($ch); echo $return_xml; // otrzymane informacje XML można przerobić na tablice PHP np: $array_data = json_decode(json_encode(simplexml_load_string($return_xml)), true);

Example 7
Dodanie parametru "pokazuj_wedlug_daty" umożliwia wybór, według której daty ma być filtrowana lista dokumentów.
Dostępne wartości:
0 - data wystawienia
1 - data sprzedaży
2 - data wpływu
$input_xml = "
<dokument>
    <api_token></api_token>
    <data_od>2026-11-06</data_od>
    <data_do>2026-11-06</data_do>
    <id_dzialy_firmy></id_dzialy_firmy>
    <wybrany_typ_dokumentu></wybrany_typ_dokumentu>
    <pokazuj_wedlug_daty>1</pokazuj_wedlug_daty>
    <strona>1</strona>
    <na_stronie>500</na_stronie>
</dokument>
"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://program.fakturaxl.pl/api/lista_dokumentow.php'); curl_setopt($ch, CURLOPT_POSTFIELDS, $input_xml); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 300); $return_xml = curl_exec($ch); curl_close($ch); echo $return_xml; // otrzymane informacje XML można przerobić na tablice PHP np: $array_data = json_decode(json_encode(simplexml_load_string($return_xml)), true);

10. Pobieranie listy magazynów:

$input_xml = "
<dokument>
  <api_token></api_token>

</dokument>
"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://program.fakturaxl.pl/api/lista_magazynow.php'); curl_setopt($ch, CURLOPT_POSTFIELDS, $input_xml); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 300); $return_xml = curl_exec($ch); curl_close($ch); echo $return_xml; // otrzymane informacje XML można przerobić na tablice PHP np: $array_data = json_decode(json_encode(simplexml_load_string($return_xml)), true);

Przykładowe dane, które zwraca API:
Poprawne odczytanie listy magazynów:

<dokumenty>
  <magazyn>
    <id>1456</id>
    <nazwa>Główny</nazwa>
    <magazyn_glowny>1</magazyn_glowny>
  </magazyn>
  <magazyn>
    <id>1477</id>
    <nazwa>Drugi magazyn</nazwa>
    <magazyn_glowny>0</magazyn_glowny>
  </magazyn>
</dokumenty>
Błędne odczytanie listy magazynów: <dokument>
  <kod>3</kod>
</dokument>

11. Pobieranie listy produktów:

$input_xml = "
<dokument>
  <api_token></api_token>
  <strona>1</strona>
  <na_stronie>500</na_stronie>

</dokument>
"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://program.fakturaxl.pl/api/lista_produktow.php'); curl_setopt($ch, CURLOPT_POSTFIELDS, $input_xml); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 300); $return_xml = curl_exec($ch); curl_close($ch); echo $return_xml; // otrzymane informacje XML można przerobić na tablice PHP np: $array_data = json_decode(json_encode(simplexml_load_string($return_xml)), true);

Przykładowe dane, które zwraca API:
Poprawne odczytanie listy produktów:

<dokumenty>
  <produkt>
    <id>1532345</id>
    <nazwa>Pomarańczka</nazwa>
    <cena_sprzedazy_netto>10.00</cena_sprzedazy_netto>
    <vat>23</vat>
    <cena_sprzedazy_brutto>123.00</cena_sprzedazy_brutto>
    <waluta_id>1</waluta_id>
    <jm>szt.</jm>
    <kod_produktu></kod_produktu>
    <towar_usluga>0</towar_usluga>
    <rodzaj_produktu>0</rodzaj_produktu>
    <cena_zakupu_netto>7.00</cena_zakupu_netto>
    <vat_zakupu>23</vat_zakupu>
    <cena_zakupu_brutto>8.61</cena_zakupu_brutto>
    <kod_kreskowy>123abc</kod_kreskowy>
  </produkt>
  <produkt>
    <id>234333</id>
    <nazwa>Mandarynka</nazwa>
    <cena_sprzedazy_netto>20.00</cena_sprzedazy_netto>
    <vat>0</vat>
    <cena_sprzedazy_brutto>20.00</cena_sprzedazy_brutto>
    <waluta_id>1</waluta_id>
    <jm>szt.</jm>
    <kod_produktu></kod_produktu>
    <towar_usluga>0</towar_usluga>
    <rodzaj_produktu>2</rodzaj_produktu>
    <cena_zakupu_netto>7.00</cena_zakupu_netto>
    <vat_zakupu>23</vat_zakupu>
    <cena_zakupu_brutto>8.61</cena_zakupu_brutto>
    <kod_kreskowy>45tfc</kod_kreskowy>
  </produkt>
  <paginacja>
        <strona>1</strona>
        <na_stronie>500</na_stronie>
        <wszystkie_strony>38</wszystkie_strony>
        <wszystkie_wyniki>3731</wszystkie_wyniki>
  </paginacja>
</dokumenty>
Błędne odczytanie listy produktów: <dokument>
  <kod>3</kod>
</dokument>

Przykład 2
Można pobrać listę pozycji, które zostały dodane lub zmienione od wybranej daty, na przykład od 15:00.
Jest to przydatna opcja, jeśli chcemy sprawdzić, czy np. w ostatniej godzinie dodano lub zmieniono produkty, bez konieczności ciągłego pobierania całej listy.
$input_xml = "
<dokument>
    <api_token></api_token>
    <data_aktualizacji_od>2026-11-06 10:45:00</data_aktualizacji_od>
    <strona>1</strona>
    <na_stronie>500</na_stronie>
</dokument>
"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://program.fakturaxl.pl/api/lista_produktow.php'); curl_setopt($ch, CURLOPT_POSTFIELDS, $input_xml); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 300); $return_xml = curl_exec($ch); curl_close($ch); echo $return_xml; // otrzymane informacje XML można przerobić na tablice PHP np: $array_data = json_decode(json_encode(simplexml_load_string($return_xml)), true);

Przykład 3
Można pobrać listę dodanych produktów w określonym czasie z dokładnością co do sekundy.
Jest to przydatna funkcja, jeśli chcesz sprawdzić, czy jakiś produkt został dodany na przykład w ciągu ostatnich trzech godzin lub innego dokładnie określonego przedziału czasowego.
$input_xml = "
<dokument>
    <data_dodania_od>2026-11-06 10:45:00</data_dodania_od>
    <data_dodania_do>2026-11-06 15:45:00</data_dodania_do>
    <api_token></api_token>
    <strona>1</strona>
    <na_stronie>500</na_stronie>
</dokument>
"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://program.fakturaxl.pl/api/lista_produktow.php'); curl_setopt($ch, CURLOPT_POSTFIELDS, $input_xml); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 300); $return_xml = curl_exec($ch); curl_close($ch); echo $return_xml; // otrzymane informacje XML można przerobić na tablice PHP np: $array_data = json_decode(json_encode(simplexml_load_string($return_xml)), true);

12. Pobieranie danych produktu:

Zwraca dane jednego produktu, w tym opis. Zwracane są również produkty nieaktywne - informacja w polu status ( 1 - aktywny, 0 - nieaktywny ).
Pola cena_zakupu_netto, vat_zakupu i cena_zakupu_brutto zwracane są tylko przy aktywnym pakiecie magazynowym.
$input_xml = "
<dokument>
    <api_token></api_token>
    <produkt_id>1532345</produkt_id>
</dokument>
"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://program.fakturaxl.pl/api/produkt_odczytaj.php'); curl_setopt($ch, CURLOPT_POSTFIELDS, $input_xml); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 300); $return_xml = curl_exec($ch); curl_close($ch); echo $return_xml; // otrzymane informacje XML można przerobić na tablice PHP np: $array_data = json_decode(json_encode(simplexml_load_string($return_xml)), true);
Przykładowe dane, które zwraca API:
Poprawne odczytanie produktu:

<dokument>
  <kod>97</kod>
  <id>1532345</id>
  <nazwa>Pomarańczka</nazwa>
  <opis>Pomarańcze z Hiszpanii, kaliber 3</opis>
  <cena_sprzedazy_netto>10.00</cena_sprzedazy_netto>
  <vat>23</vat>
  <cena_sprzedazy_brutto>12.30</cena_sprzedazy_brutto>
  <waluta_id>1</waluta_id>
  <jm>kg</jm>
  <kod_produktu>POM-01</kod_produktu>
  <kod_kreskowy>123abc</kod_kreskowy>
  <gtin>5901234123457</gtin>
  <pkwiu>01.23.13.0</pkwiu>
  <kod_cn>0805</kod_cn>
  <symbol_gtu>0</symbol_gtu>
  <towar_usluga>0</towar_usluga>
  <rodzaj_produktu>0</rodzaj_produktu>
  <ilosc_domyslna>1.00000</ilosc_domyslna>
  <waga>1.0000</waga>
  <waga_jm>kg</waga_jm>
  <status>1</status>
  <cena_zakupu_netto>7.00</cena_zakupu_netto>
  <vat_zakupu>23</vat_zakupu>
  <cena_zakupu_brutto>8.61</cena_zakupu_brutto>
  <data_dodania>2026-09-01 10:15:00.000000</data_dodania>
  <data_aktualizacji>2026-09-20 14:30:00.000000</data_aktualizacji>
</dokument>
Błędne odczytanie produktu: <dokument>
  <kod>87</kod>
</dokument>

13. Pobieranie ilości produktów w magazynie:

$input_xml = "
<dokument>
  <api_token></api_token>
  <strona>1</strona>
  <na_stronie>500</na_stronie>

</dokument>
"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://program.fakturaxl.pl/api/ilosc_produktow_w_magazynie.php'); curl_setopt($ch, CURLOPT_POSTFIELDS, $input_xml); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 300); $return_xml = curl_exec($ch); curl_close($ch); echo $return_xml; // otrzymane informacje XML można przerobić na tablice PHP np: $array_data = json_decode(json_encode(simplexml_load_string($return_xml)), true);

Przykładowe dane, które zwraca API:
Poprawne odczytanie listy produktów:

<dokumenty>
  <produkt>
    <produkt_id>1532345</produkt_id>
    <magazyn_id>1456</magazyn_id>
    <ilosc_w_magazynie>25</ilosc_w_magazynie>
  </produkt>
  <produkt>
    <produkt_id>1477</produkt_id>
    <magazyn_id>1456</magazyn_id>
    <ilosc_w_magazynie>2</ilosc_w_magazynie>
  </produkt>
  <paginacja>
        <strona>1</strona>
        <na_stronie>500</na_stronie>
        <wszystkie_strony>38</wszystkie_strony>
        <wszystkie_wyniki>3731</wszystkie_wyniki>
  </paginacja>
</dokumenty>
Błędne odczytanie ilości produktów w magazynie: <dokument>
  <kod>3</kod>
</dokument>

Przykład 2
Można pobrać listę pozycji, które zostały dodane lub zmienione od wybranej daty, na przykład od 15:00.
Jest to przydatna opcja, jeśli chcemy sprawdzić, czy np. w ostatniej godzinie dodano lub zmieniono ilości w produktach, bez konieczności ciągłego pobierania całej listy.
$input_xml = "
<dokument>
  <api_token></api_token>
  <data_zmian_od>2026-11-01 20:00:00</data_zmian_od>
  <strona>1</strona>
  <na_stronie>500</na_stronie>

</dokument>
"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://program.fakturaxl.pl/api/ilosc_produktow_w_magazynie.php'); curl_setopt($ch, CURLOPT_POSTFIELDS, $input_xml); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 300); $return_xml = curl_exec($ch); curl_close($ch); echo $return_xml; // otrzymane informacje XML można przerobić na tablice PHP np: $array_data = json_decode(json_encode(simplexml_load_string($return_xml)), true);

14. Pobieranie listy klientów:

$input_xml = "
<dokument>
  <api_token></api_token>
  <strona>1</strona>
  <na_stronie>500</na_stronie>

</dokument>
"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://program.fakturaxl.pl/api/lista_klientow.php'); curl_setopt($ch, CURLOPT_POSTFIELDS, $input_xml); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 300); $return_xml = curl_exec($ch); curl_close($ch); echo $return_xml; // otrzymane informacje XML można przerobić na tablice PHP np: $array_data = json_decode(json_encode(simplexml_load_string($return_xml)), true);

Przykładowe dane, które zwraca API:
Poprawne odczytanie listy klientów:

<dokumenty>
  <klient>
        <id>12345678</id>
        <nazwa>Nazwa firmy A</nazwa>
        <nazwa_skrocona>FrimaA</nazwa_skrocona>
        <nip>111111111</nip>
        <ulica_i_numer>ul. Nowa 71</ulica_i_numer>
        <kod_pocztowy>22-200</kod_pocztowy>
        <miejscowosc>Kraków</miejscowosc>
        <kraj_id>PL</kraj_id>
        <email>[email protected]</email>
        <telefon>555111222</telefon>
        <nr_konta_bankowego></nr_konta_bankowego>
  </klient>
  <klient>
        <id>12345679</id>
        <nazwa>Nazwa firmy B</nazwa>
        <nazwa_skrocona>FrimaB</nazwa_skrocona>
        <nip>222222222</nip>
        <ulica_i_numer>ul. Nazwa 21</ulica_i_numer>
        <kod_pocztowy>22-100</kod_pocztowy>
        <miejscowosc>Kraków</miejscowosc>
        <kraj_id>PL</kraj_id>
        <email>[email protected]</email>
        <telefon>555222333</telefon>
        <nr_konta_bankowego></nr_konta_bankowego>
  </klient>
  <paginacja>
        <strona>1</strona>
        <na_stronie>500</na_stronie>
        <wszystkie_strony>38</wszystkie_strony>
        <wszystkie_wyniki>3731</wszystkie_wyniki>
  </paginacja>  
</dokumenty>
Błędne odczytanie listy klientów <dokument>
  <kod>3</kod>
</dokument>

Przykład 2
Można pobrać listę pozycji, które zostały dodane lub zmienione od wybranej daty, na przykład od 15:00.
Jest to przydatna opcja, jeśli chcemy sprawdzić, czy np. w ostatniej godzinie dodano lub zmieniono klientów, bez konieczności ciągłego pobierania całej listy.
$input_xml = "
<dokument>
  <api_token></api_token>
  <data_aktualizacji_od>2026-11-06 06:45:00</data_aktualizacji_od>
  <strona>1</strona>
  <na_stronie>500</na_stronie>

                                </dokument>
"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://program.fakturaxl.pl/api/lista_klientow.php'); curl_setopt($ch, CURLOPT_POSTFIELDS, $input_xml); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 300); $return_xml = curl_exec($ch); curl_close($ch); echo $return_xml; // otrzymane informacje XML można przerobić na tablice PHP np: $array_data = json_decode(json_encode(simplexml_load_string($return_xml)), true);

Przykład 3
Można pobrać listę dodanych klientów w określonym czasie z dokładnością co do sekundy.
Jest to przydatna funkcja, jeśli chcesz sprawdzić, czy jakiś klient został dodany na przykład w ciągu ostatnich trzech godzin lub innego dokładnie określonego przedziału czasowego.
$input_xml = "
<dokument>
    <data_dodania_od>2026-11-06 10:45:00</data_dodania_od>
    <data_dodania_do>2026-11-06 15:45:00</data_dodania_do>
    <api_token></api_token>
    <strona>1</strona>
    <na_stronie>500</na_stronie>
</dokument>
"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://program.fakturaxl.pl/api/lista_klientow.php'); curl_setopt($ch, CURLOPT_POSTFIELDS, $input_xml); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 300); $return_xml = curl_exec($ch); curl_close($ch); echo $return_xml; // otrzymane informacje XML można przerobić na tablice PHP np: $array_data = json_decode(json_encode(simplexml_load_string($return_xml)), true);

15. Pobieranie danych klienta:

Zwraca dane jednego klienta. Zwracani są również klienci nieaktywni - informacja w polu status ( 1 - aktywny, 0 - nieaktywny ).
Pole kraj_id zwracane jest jako skrót kraju ( np. PL ).
$input_xml = "
<dokument>
    <api_token></api_token>
    <klient_id>4512367</klient_id>
</dokument>
"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://program.fakturaxl.pl/api/klient_odczytaj.php'); curl_setopt($ch, CURLOPT_POSTFIELDS, $input_xml); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 300); $return_xml = curl_exec($ch); curl_close($ch); echo $return_xml; // otrzymane informacje XML można przerobić na tablice PHP np: $array_data = json_decode(json_encode(simplexml_load_string($return_xml)), true);
Przykładowe dane, które zwraca API:
Poprawne odczytanie klienta:

<dokument>
  <kod>99</kod>
  <id>4512367</id>
  <nazwa>Firma Przykładowa Sp. z o.o.</nazwa>
  <nazwa_skrocona>Firma Przykładowa</nazwa_skrocona>
  <imie></imie>
  <nazwisko></nazwisko>
  <firma_lub_osoba_prywatna>0</firma_lub_osoba_prywatna>
  <rodzaj>0</rodzaj>
  <nip>5252445767</nip>
  <ulica_i_numer>ul. Przykładowa 1</ulica_i_numer>
  <kod_pocztowy>00-001</kod_pocztowy>
  <miejscowosc>Warszawa</miejscowosc>
  <kraj_id>PL</kraj_id>
  <email>[email protected]</email>
  <telefon>500600700</telefon>
  <fax></fax>
  <www>www.przyklad.pl</www>
  <nr_konta_bankowego>12 1020 1026 0000 0002 0000 0000</nr_konta_bankowego>
  <inny_adres_korespondencyjny></inny_adres_korespondencyjny>
  <dodatkowa_informacja></dodatkowa_informacja>
  <uwagi></uwagi>
  <gln></gln>
  <nr_klienta>K-001</nr_klienta>
  <ksef_idwew></ksef_idwew>
  <ksef_rola>0</ksef_rola>
  <ksef_rola_str></ksef_rola_str>
  <przyjmujacy_faktury></przyjmujacy_faktury>
  <rodzaj_platnosci>Przelew</rodzaj_platnosci>
  <termin_platnosci_dni>14</termin_platnosci_dni>
  <czlonek_grupy_vat>0</czlonek_grupy_vat>
  <jednostka_samorzadu_terytorialnego>0</jednostka_samorzadu_terytorialnego>
  <status>1</status>
  <data_dodania>2026-09-01 10:15:00.000000</data_dodania>
  <data_aktualizacji>2026-09-20 14:30:00.000000</data_aktualizacji>
</dokument>
Błędne odczytanie klienta: <dokument>
  <kod>95</kod>
</dokument>

16. Zmiana statusu dokumentu:

Istnieją trzy sposoby zmiany statusu dokumentu:


1. Poprzez dodanie pojedynczej wpłaty lub wpłat:

$input_xml = "
<dokument>
    <api_token></api_token>
    <dokument_id>4742746</dokument_id>

    <dodaj_wplate>
        <kwota_oplacona>10.50</kwota_oplacona>
        <rodzaj_platnosci>Przelew</rodzaj_platnosci>
        <data_oplacenia>2021-10-26</data_oplacenia>
    </dodaj_wplate> 

    <dodaj_wplate>
        <kwota_oplacona>12.10</kwota_oplacona>
        <rodzaj_platnosci>Przelew</rodzaj_platnosci>
        <data_oplacenia>2021-10-26</data_oplacenia>
    </dodaj_wplate> 

</dokument> 
"; 2. Poprzez ustawienie statusu dokumentu jako opłacony: $input_xml = " <dokument>
    <api_token></api_token>
    <dokument_id>4742746</dokument_id>
    <data_oplacenia>2021-11-08</data_oplacenia>
    
    <status>2</status>
    <rodzaj_platnosci>Przelew</rodzaj_platnosci>

</dokument> 
"; 3. Poprzez ustawienie statusu dokumentu jako nieopłacony: $input_xml = " <dokument>
    <api_token></api_token>
    <dokument_id>4742746</dokument_id>
    
    <status>0</status>

</dokument> 
"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://program.fakturaxl.pl/api/dokument_edycja.php'); curl_setopt($ch, CURLOPT_POSTFIELDS, $input_xml); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 300); $return_xml = curl_exec($ch); curl_close($ch); echo $return_xml; // otrzymane informacje XML można przerobić na tablicę PHP np: $array_data = json_decode(json_encode(simplexml_load_string($return_xml)), true);

Przykładowe dane, które zwraca API:
Poprawna zmiana statusu: 

<dokument>
  <kod>33</kod>
  <status>2</status>
  <kwota_oplacona>1000.51</kwota_oplacona>
</dokument>
Błędna zmiana statusu: <dokument>
  <kod>37</kod>
</dokument>

17. Dodawanie tagów:

Wartości pól tekstowych mogą być umieszczane w sekcji CDATA. Jest to przydatne, gdy zawartość zawiera znaki specjalne XML, np. &, <, > lub apostrof. Mechanizm ten działa dla wszystkich pól tekstowych w XML.
$input_xml = "
<dokument>
    <api_token></api_token>
    <dokument_id>4742746</dokument_id>

    <tag><![CDATA[nazwa 1]]></tag>
    <tag><![CDATA[nazwa 2]]></tag>

</dokument> 
"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://program.fakturaxl.pl/api/tagi_dodawanie.php'); curl_setopt($ch, CURLOPT_POSTFIELDS, $input_xml); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 300); $return_xml = curl_exec($ch); curl_close($ch); echo $return_xml; // otrzymane informacje XML można przerobić na tablicę PHP np: $array_data = json_decode(json_encode(simplexml_load_string($return_xml)), true);

Przykładowe dane, które zwraca API:
Poprawne dodanie tagów: 

<dokument>
  <kod>61</kod>
</dokument>

18. Usuwanie tagów:

Wartości pól tekstowych mogą być umieszczane w sekcji CDATA. Jest to przydatne, gdy zawartość zawiera znaki specjalne XML, np. &, <, > lub apostrof. Mechanizm ten działa dla wszystkich pól tekstowych w XML.
$input_xml = "
<dokument>
    <api_token></api_token>
    <dokument_id>4742746</dokument_id>

    <tag><![CDATA[nazwa 1]]></tag>
    <tag><![CDATA[nazwa 2]]></tag>

</dokument> 
"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://program.fakturaxl.pl/api/tagi_kasowanie.php'); curl_setopt($ch, CURLOPT_POSTFIELDS, $input_xml); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 300); $return_xml = curl_exec($ch); curl_close($ch); echo $return_xml; // otrzymane informacje XML można przerobić na tablicę PHP np: $array_data = json_decode(json_encode(simplexml_load_string($return_xml)), true);

Przykładowe dane, które zwraca API:
Poprawne usunięcie tagów: 

<dokument>
  <kod>62</kod>
</dokument>

19. Dodawanie produktów:

Prosimy w XML używać kodowania znaków w formacie utf-8

Wartości pól tekstowych mogą być umieszczane w sekcji CDATA. Jest to przydatne, gdy zawartość zawiera znaki specjalne XML, np. &, <, > lub apostrof. Mechanizm ten działa dla wszystkich pól tekstowych w XML.

Jeżeli jednocześnie podano cenę netto i brutto, cena netto jest wyliczana z brutto.
$input_xml = "
<dokument>
    <api_token></api_token>

    <nazwa><![CDATA[Nazwa produktu]]></nazwa>

    <cena_sprzedazy_netto>33</cena_sprzedazy_netto>
    <vat>23</vat>
    <cena_sprzedazy_brutto>40.59</cena_sprzedazy_brutto>
    <waluta>EUR</waluta>

    <cena_zakupu_netto>451.22</cena_zakupu_netto>
    <vat_zakupu>23</vat_zakupu>
    <cena_zakupu_brutto>555.00</cena_zakupu_brutto>

    <pkwiu></pkwiu>
    <ilosc_domyslna>1</ilosc_domyslna>
    <jm>szt.</jm>
    <rodzaj_produktu>0</rodzaj_produktu>
    <usluga>0</usluga>
    <towar_usluga>2</towar_usluga>
    <stawka_ryczaltu></stawka_ryczaltu>
    <symbol_gtu>0</symbol_gtu>
    <kod_produktu></kod_produktu>
    <kod_cn></kod_cn>
    <kod_kreskowy></kod_kreskowy>
    <gtin></gtin>
    <waga>0</waga>
    <waga_jm>kg</waga_jm>
    <opis><![CDATA[]]></opis>
    <dodaj_opis_podczas_wyboru_na_fakturze>0</dodaj_opis_podczas_wyboru_na_fakturze>

</dokument> 
"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://program.fakturaxl.pl/api/produkt_dodaj.php'); curl_setopt($ch, CURLOPT_POSTFIELDS, $input_xml); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 300); $return_xml = curl_exec($ch); curl_close($ch); echo $return_xml; // otrzymane informacje XML można przerobić na tablicę PHP np: $array_data = json_decode(json_encode(simplexml_load_string($return_xml)), true);

Przykładowe dane, które zwraca API:
Poprawne dodanie produktu:

<dokument>
  <kod>84</kod>
  <produkt_id>1532345</produkt_id>
</dokument>
Błędne dodanie produktu: <dokument>
  <kod>12</kod>
</dokument>

20. Kasowanie produktów:

Jeżeli produkt jest używany na dokumentach lub posiada ruchy magazynowe, nie zostaje skasowany, tylko otrzymuje status nieaktywny.

$input_xml = "
<dokument>
    <api_token></api_token>
    <produkt_id>1532345</produkt_id>
</dokument> 
"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://program.fakturaxl.pl/api/produkt_kasowanie.php'); curl_setopt($ch, CURLOPT_POSTFIELDS, $input_xml); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 300); $return_xml = curl_exec($ch); curl_close($ch); echo $return_xml; // otrzymane informacje XML można przerobić na tablicę PHP np: $array_data = json_decode(json_encode(simplexml_load_string($return_xml)), true);
Przykładowe dane, które zwraca API:
Poprawne skasowanie produktu:

<dokument>
  <kod>86</kod>
  <produkt_id>1532345</produkt_id>
</dokument>
Błędne skasowanie produktu: <dokument>
  <kod>87</kod>
</dokument>

21. Dodawanie klientów:

Prosimy w XML używać kodowania znaków w formacie utf-8

Wartości pól tekstowych mogą być umieszczane w sekcji CDATA. Jest to przydatne, gdy zawartość zawiera znaki specjalne XML, np. &, <, > lub apostrof. Mechanizm ten działa dla wszystkich pól tekstowych w XML.

Dla firmy wymagane jest pole nazwa. Dla osoby prywatnej wymagane są pola imie oraz nazwisko.

$input_xml = "
<dokument>
    <api_token></api_token>
    <firma_lub_osoba_prywatna>0</firma_lub_osoba_prywatna>
    <rodzaj>0</rodzaj>
    <nazwa><![CDATA[Nazwa firmy]]></nazwa>
    <imie></imie>
    <nazwisko></nazwisko>
    <nip>1111111111</nip>
    <nazwa_skrocona></nazwa_skrocona>
    <ulica_i_numer>ul. Testowa 8</ulica_i_numer>
    <kod_pocztowy>00-005</kod_pocztowy>
    <miejscowosc>Warszawa</miejscowosc>
    <kraj>PL</kraj>
    <email>[email protected]</email>
    <telefon>555111222</telefon>
    <fax></fax>
    <www></www>
    <nr_konta_bankowego></nr_konta_bankowego>
    <dodatkowa_informacja></dodatkowa_informacja>
    <termin_platnosci_dni>14</termin_platnosci_dni>
    <przyjmujacy_faktury></przyjmujacy_faktury>
    <rodzaj_platnosci>Przelew</rodzaj_platnosci>
    <uwagi></uwagi>
    <gln></gln>
    <nr_klienta></nr_klienta>
    <ksef_idwew></ksef_idwew>
    <ksef_rola>0</ksef_rola>
    <ksef_rola_str></ksef_rola_str>
    <czlonek_grupy_vat>0</czlonek_grupy_vat>
    <jednostka_samorzadu_terytorialnego>0</jednostka_samorzadu_terytorialnego>
</dokument> 
"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://program.fakturaxl.pl/api/klient_dodaj.php'); curl_setopt($ch, CURLOPT_POSTFIELDS, $input_xml); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 300); $return_xml = curl_exec($ch); curl_close($ch); echo $return_xml; // otrzymane informacje XML można przerobić na tablicę PHP np: $array_data = json_decode(json_encode(simplexml_load_string($return_xml)), true);
Przykładowe dane, które zwraca API:
Poprawne dodanie klienta:

<dokument>
  <kod>91</kod>
  <klient_id>123456</klient_id>
</dokument>
Błędne dodanie klienta: <dokument>
  <kod>9</kod>
</dokument>

22. Kasowanie klientów:

Kasowanie działa tak samo jak na liście klientów. Dane firmowe sprzedawcy nie mogą zostać skasowane.

$input_xml = "
<dokument>
    <api_token></api_token>
    <klient_id>123456</klient_id>
</dokument> 
"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://program.fakturaxl.pl/api/klient_kasowanie.php'); curl_setopt($ch, CURLOPT_POSTFIELDS, $input_xml); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 300); $return_xml = curl_exec($ch); curl_close($ch); echo $return_xml; // otrzymane informacje XML można przerobić na tablicę PHP np: $array_data = json_decode(json_encode(simplexml_load_string($return_xml)), true);
Przykładowe dane, które zwraca API:
Poprawne skasowanie klienta:

<dokument>
  <kod>94</kod>
  <klient_id>123456</klient_id>
</dokument>
Błędne skasowanie klienta: <dokument>
  <kod>95</kod>
</dokument>

23. Pobieranie wizualizacji KSeF:

Zwraca wizualizację KSeF w PDF dla faktury kosztowej pobranej z KSeF.
<dokument_id> to ID faktury kosztowej.

$input_xml = "
<dokument>
    <api_token></api_token>
    <dokument_id>123456</dokument_id>
</dokument> 
"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://program.fakturaxl.pl/api/dokument_ksef_wizualizacja.php'); curl_setopt($ch, CURLOPT_POSTFIELDS, $input_xml); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 300); $return_xml = curl_exec($ch); curl_close($ch); echo $return_xml; // otrzymane informacje XML można przerobić na tablicę PHP np: $array_data = json_decode(json_encode(simplexml_load_string($return_xml)), true);
Przykładowe dane, które zwraca API:
Poprawne odczytanie dokumentu:

<dokument>
  <pdf>sdf23grehw45hwndfghdfhth45hrmfgdfghdfgh45hthdfg</pdf>
</dokument>


<pdf>...</pdf> to base64_encode zawartości pliku PDF
Przykładowy zapis pliku: $array_data["pdf"] = base64_decode($array_data["pdf"]);
file_put_contents("plik.pdf", $array_data["pdf"]);
Błędne pobranie:

<dokument>
  <kod>322</kod>
</dokument>

24. Pobieranie listy dokumentów z KSeF które mogą zostać dodane do kosztów:

Zwraca listę faktur pobranych z KSeF, które nie zostały jeszcze dodane do kosztów.

<rodzaj_faktury> to rodzaj faktury z KSeF (VAT, KOR, ZAL, ROZ, UPR, KOR_ZAL, KOR_ROZ).

$input_xml = "
<dokument>
    <api_token></api_token>
    <data_od></data_od>
    <data_do></data_do>
    <strona>1</strona>
    <na_stronie>100</na_stronie>
</dokument> 
"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://program.fakturaxl.pl/api/lista_dokumentow_z_ksef.php'); curl_setopt($ch, CURLOPT_POSTFIELDS, $input_xml); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 300); $return_xml = curl_exec($ch); curl_close($ch); echo $return_xml; // otrzymane informacje XML można przerobić na tablice PHP np: $array_data = json_decode(json_encode(simplexml_load_string($return_xml)), true);
Przykładowe dane, które zwraca API:
Poprawne pobranie listy dokumentów z KSeF:

<dokumenty>
    <dokument>
        <id>123456</id>
        <numer_ksef>1111111111-20260105-ABCD1234EF56-78</numer_ksef>
        <numer_faktury>FV 1/01/2026</numer_faktury>
        <rodzaj_faktury>VAT</rodzaj_faktury>
        <id_dzialy_firmy>2</id_dzialy_firmy>
        <sprzedawca_nazwa>Nazwa firmy</sprzedawca_nazwa>
        <sprzedawca_nip>1111111111</sprzedawca_nip>
        <data_wystawienia>2026-01-05</data_wystawienia>
        <data_nadania_numeru_ksef>2026-01-05 10:30:00</data_nadania_numeru_ksef>
        <data_pobrania_z_ksef>2026-01-06 06:15:00</data_pobrania_z_ksef>
        <wartosc_netto>100.00</wartosc_netto>
        <wartosc_vat>23.00</wartosc_vat>
        <wartosc_brutto>123.00</wartosc_brutto>
        <waluta_str>PLN</waluta_str>
    </dokument>

    <paginacja>
        <strona>1</strona>
        <na_stronie>100</na_stronie>
        <wszystkie_strony>1</wszystkie_strony>
        <wszystkie_wyniki>1</wszystkie_wyniki>
    </paginacja>
</dokumenty>
Błędne pobranie:

<dokument>
  <kod>13</kod>
</dokument>

25. Dodanie faktury pobranej z KSeF:

Umożliwia wystawienie nowej faktury kosztowej na podstawie faktury pobranej z KSeF.
Parametr <id> oznacza identyfikator faktury pobranej z KSeF, na podstawie której ma zostać utworzona faktura kosztowa. Identyfikator ten jest zwracany w sekcji „Pobieranie listy dokumentów z KSeF”.

Parametry opcjonalne – jeśli zostaną pominięte, faktura kosztowa zostanie utworzona z ustawieniami domyślnymi:
  • <kpir_rodzaje_kosztow> – rodzaj kosztów w KPiR: 0 – Towary handlowe, 1 – Pozostałe wydatki (uwzględniany, gdy w ustawieniach KSeF włączono wybór rodzaju kosztów).
  • <magazyn_id> – ID magazynu. Domyślnie magazyn główny.
  • <id_dzialy_firmy> – ID działu firmy. Domyślnie dział przypisany do faktury pobranej z KSeF.
<dokument_id> – ID nowo utworzonej faktury kosztowej.

$input_xml = "
<dokument>
    <api_token></api_token>
    <id>123456</id>
    <kpir_rodzaje_kosztow></kpir_rodzaje_kosztow>
    <magazyn_id></magazyn_id>
    <id_dzialy_firmy></id_dzialy_firmy>
</dokument> 
"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://program.fakturaxl.pl/api/dodanie_faktury_pobranej_z_ksef.php'); curl_setopt($ch, CURLOPT_POSTFIELDS, $input_xml); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 300); $return_xml = curl_exec($ch); curl_close($ch); echo $return_xml; // otrzymane informacje XML można przerobić na tablice PHP np: $array_data = json_decode(json_encode(simplexml_load_string($return_xml)), true);
Przykładowe dane, które zwraca API:
Poprawne wystawienie faktury:

<dokument>
    <kod>1</kod>
    <dokument_id>654321</dokument_id>
    <numer_faktury>FV 1/01/2026</numer_faktury>
</dokument>
Faktura została już wcześniej dodana do kosztów:

<dokument>
    <kod>329</kod>
    <dokument_id>654321</dokument_id>
</dokument>
Błędne pobranie:

<dokument>
    <kod>326</kod>
</dokument>

Zwracane kody:

1 - Dokument został poprawnie dodany
2 - Przekroczono dozwoloną liczbę zapytań w określonym czasie dla tego typu zapytań. Spróbuj ponownie później.
3 - Nie istnieje taki api_token
4 - Nie istnieje dokument o takim ID
5 - Dokument został poprawnie odczytany
6 - Błędny typ dokumentu
7 - Dokument o takim numerze już istnieje
8 - Nie istnieje taki id_dzialy_firmy
9 - Nazwa Nabywcy nie może być pusta
10 - Nieprawidłowy NIP
11 - Błędny kraj
12 - Nazwa produktu nie może być pusta
13 - Data musi mieć postać yyyy-mm-dd
14 - Błędny status
15 - Błędna waluta
16 - Brak kursu dla tej daty, nie mozna wystawić faktury
17 - Błędny język
18 - Błędny rodzaj_platnosci
19 - Limit bezpłatnych faktur w darmowym pakiecie został osiągnięty - prosimy o zakup Pakietu Pełnego
20 - Dokument został poprawnie skasowany
21 - Miesiąc został zamknięty nie można w nim dodawać ani wprowadzać nowych faktur
22 - Wysłanie faktury na email nie powiodło się z powodu braku adresu email nabywcy na fakturze
23 - Poprawne wysłanie dokumentu emailem
24 - Nieprawidłowe pole magazyn_id
210 - Dokument magazynowy nie został automatycznie zaktualizowany ponieważ ilość nie może być mniejsza od 0
211 - Dokument magazynowy nie został automatycznie dodany ponieważ ilość nie może być mniejsza od 0
25 - Przekroczono maksymalny rozmiar przesyłanego pliku
26 - Nie istnieje produkt o takiej nazwie
27 - Dział o takim ID nie istnieje
28 - Maksymalny zakres dat do 31 dni
29 - Brak numeru dokumentu
30 - Dokument główny posiada już relację z innym dokumentem
31 - Dokument podłączany posiada już relację z innym dokumentem
33 - Dokument został poprawnie zapisany
34 - Nie została wprowadzona żadna zmiana w dokumencie
35 - Kwota wpłaty musi być większa od 0
36 - Za duża ilość wpłat
37 - Dokument został już wcześniej opłacony
38 - Imię nie może być puste
39 - Nazwisko nie może być puste
40 - Nie istnieje dokument korygowany o tym ID
41 - Waluta w dokumencie korygującym musi być taka sama jak w dokumencie korygowanym
42 - Nieprawidłowe wykorzystanie API prosimy o kontakt z [email protected]
43 - Nie można korygować tego typu dokumentu
44 - Brak wystarczającej ilości produktów w magazynie
45 - Nie można skasować dokumentu ponieważ został już przesłany do KSeF
46 - Dokument nie został skasowany
47 - Maksymalna ilość pozycji na dokumencie to 700
48 - Nie można wysłać dokumentu ponieważ nie został jeszcze nadany numer KSeF.
49 - Dokument został prawidłowo przesłany do KSeF
50 - Błąd podczas wysyłania dokumentu do KSeF
51 - Dokument został już wcześniej wysłany do KSeF
52 - W celu wysyłania i pobierania faktur z Krajowego Systemu e-Faktur należy w ustawieniach dodać połączenie do KSeF.
53 - Numer KSeF został poprawnie nadany
54 - Numer KSeF nie został poprawnie nadany
55 - Dokument o tym ID nie został wcześniej wysłany do KSeF
56 - OSS - NIP nabywcy musi być pusty
57 - OSS - kraj nabywcy musi należeć do jednego z krajów UE z wyłączeniem Polski
58 - OSS - nieprawidłowa wybrana stawka VAT dla wybranego kraju
59 - OSS - prosimy o podanie parametru oss_kraj_wysylki_id
60 - Brak podanego produkt_id
61 - Tagi zostały poprawnie dodane
62 - Tagi zostały skasowane
63 - Wysyłanie emaili prze API dostępne jest tylko dla kont z pakietem pełnym
64 - Nie istnieje taki dokument_rel_id
65 - Dokument dokument_rel_id musi mieć taką samą walutę jak wystawiany dokument
66 - Dokument dokument_rel_id ma już relacje z innym dokumentem
67 - Nieprawidłowy typ dokumentu dokument_rel_id
68 - Nieprawidłowy format daty
69 - Prosimy o aktualizację wtyczki do nowej wersji
70 - Klucz API został zablokowany prosimy o kontakt z biurem obsługi klienta
71 - Dokument musi zawierać co najmniej jeden produkt
72 - Dokument został wcześniej wysłany do KSeF i obecnie oczekuje na nadanie numeru
73 - Usługa chwilowo niedostępna
74 - IDWew odbiorcy nie może być dłuższe niż 5 znaków
75 - IDWew odbiorcy wymaga podania NIP odbiorcy
76 - Dokument nie został przesłany do KSeF z powodu braku numeru NIP nabywcy
77 - Nieprawidłowy numer KSeF
78 - Maksymalna ilość wysłanych emaili dla jednej faktury wynosi 50
79 - W jednym dokumencie można użyć tylko jednej ze stawek: 0 WDT, 0 KR, 0 EX, np I lub np II
80 - Opis roli odbiorcy jest wymagany po wybraniu roli innej
81 - Opis roli odbiorcy nie może być dłuższy niż 256 znaków
82 - Produkt o tej nazwie już istnieje
83 - Numer GTIN nie może być dłuższy niż 20 znaków
84 - Produkt został poprawnie dodany
85 - Limit produktów w darmowym pakiecie został osiągnięty - prosimy o zakup Pakietu Pełnego
86 - Produkt został poprawnie skasowany
87 - Nie istnieje produkt o takim ID
88 - Produkt nie może zostać skasowany, ponieważ jest używany na dokumentach - otrzymał status nieaktywny
89 - Adres Email jest nieprawidłowy
90 - Numer GLN musi zawierać 13 cyfr
91 - Klient został poprawnie dodany
92 - Klient o tych danych już istnieje
93 - Limit klientów w darmowym pakiecie został osiągnięty - prosimy o zakup Pakietu Pełnego
94 - Klient został poprawnie skasowany
95 - Nie istnieje klient o takim ID
96 - Limit tagów w darmowym pakiecie został osiągnięty - prosimy o zakup Pakietu Pełnego
97 - Produkt został poprawnie odczytany
98 - Nieprawidłowy numer VAT UE - numer powinien zaczynać się od skrótu kraju UE
99 - Klient został poprawnie odczytany
301 - Relacja została poprawnie dodana
304 - Nie istnieje dokument o takim ID ( dokument_id )
305 - Nie istnieje dokument o takim ID ( dokument_rel_id )
306 - Typ dokumentu dokument_id nie może być użyty jako dokument główny relacji
307 - Typ dokumentu dokument_rel_id nie pozwala na relację z przesłanym typem dokumentu dokument_id
308 - Dokument dokument_id posiada już relację z dokumentem tego typu
309 - Relacja pomiędzy tymi dokumentami już istnieje
310 - Dokument dokument_rel_id posiada już relację z dokumentem tego typu
311 - Limit relacji w darmowym pakiecie został osiągnięty - prosimy o zakup Pakietu Pełnego
312 - Dokument WZ posiada już relację z dokumentem sprzedaży (Faktura VAT, Rachunek, Paragon, Faktura marża lub Faktura zaliczkowa)
321 - Faktura nie została pobrana z KSeF
322 - Wizualizacja KSeF nie jest jeszcze gotowa - spróbuj ponownie później
323 - Błąd podczas pobierania wizualizacji KSeF - spróbuj ponownie później
324 - Nabywca o podanym id nie istnieje
325 - Odbiorca o podanym id nie istnieje
326 - Nie istnieje dokument pobrany z KSeF o takim ID
327 - Dokument nie został jeszcze pobrany z KSeF - spróbuj ponownie później
328 - Dokument jest oznaczony jako Nie dodawaj
329 - Dokument został już dodany do kosztów
330 - Nieobsługiwany rodzaj faktury z KSeF
331 - Przed wystawieniem faktury końcowej należy najpierw wystawić powiązaną fakturę zaliczkową
332 - Błąd podczas wystawiania faktury pobranej z KSeF
333 - Pola marży ( typ_marzy, wartosc_marzy_brutto, marza_stawka_vat ) można podać tylko dla korekty faktury marży, której wartość marży brutto jest większa od 0.
900 - Trwają prace konserwacyjne, zapraszamy za kilka minut.

id_dzialy_firmy:

21 - Główny
111 - Oddział 2

typ_faktury - typy dokumentów:

0 - Faktura VAT
1 - Faktura proforma
2 - Faktura MP (metoda kasowa)
3 - Faktura końcowa
4 - Faktura korekta
5 - Faktura marża
6 - Faktura bez vat (rachunek)
7 - Zamówienie
9 - KP dowód wpłaty
10 - KW dowód wypłaty
11 - Faktura zaliczkowa
14 - Paragon
21 - Dowód wewnętrzny
31 - PZ - Przyjęcie Zewnętrzne
34 - PW - Przyjęcie Wewnętrzne
30 - WZ - Wydanie Zewnętrzne
22 - Faktura WDT
23 - Eksport Towarów
24 - Eksport Usług
25 - Eksport Usług VAT-UE 28b
26 - Faktura WNT
29 - Import usług VAT-UE 28b

typ_faktur_podtyp - podtyp dokumentu używany w paragonach:

0 - Niefiskalny
1 - Fiskalny

obliczaj_sume_wartosci_faktury_wg:

Parametr można wykorzystać w dokumentach:
Faktura VAT
Faktura proforma
Faktura końcowa
Faktura korekta
Zamówienie
Faktura zaliczkowa
Paragon
WZ - Wydanie Zewnętrzne
PZ - Przyjęcie Zewnętrzne
0 - sumy netto, vat i brutto pozycji (domyślnie)
1 - sumy brutto z pozycji (zgodnie z kasą fiskalną)
2 - sumy netto z pozycji

rodzaj_platnosci:

Przelew
Gotówka
Karta płatnicza
Barter
BLIK
Czek
DotPay
Kompensata
Opłata za pobraniem
PayPal
PayU
Płatność elektroniczna
Przelewy24
Bon
Kredyt
Mobilna

Pokazuj według daty ( pokazuj_wedlug_daty ):

0 - data wystawienia
1 - data sprzedaży
2 - data wpływu ( wartość domyślna )

Rodzaj dokumentu ( rodzaj_faktury_koszty ):

							
1 - przychody ( domyślna )
2 - koszty

status dokumentu ( status ):

0 - Nieopłacona
1 - Częściowo opłacona
2 - Opłacona

status ksef:

0 - Wysyłanie w toku
1 - Numer KSeF został nadany
2 - Błąd wysyłki

status produktu ( status ):

0 - Nieaktywny
1 - Aktywny

status klienta ( status ):

0 - Nieaktywny
1 - Aktywny

jezyk:

1 - Angielski
3 - Angielski/Polski
8 - Angielski/Niemiecki
9 - Angielski/Francuski
10 - Angielski/Rosyjski
11 - Angielski/Czeski
48 - Angielski/Hiszpański
0 - Polski
2 - Polski/Angielski
4 - Polski/Niemiecki
5 - Polski/Francuski
6 - Polski/Rosyjski
7 - Polski/Czeski
47 - Polski/Hiszpański
30 - Niemiecki
31 - Niemiecki/Angielski
32 - Niemiecki/Polski
33 - Niemiecki/Francuski
34 - Niemiecki/Rosyjski
35 - Niemiecki/Czeski
46 - Niemiecki/Hiszpański
12 - Rosyjski
13 - Rosyjski/Angielski
14 - Rosyjski/Polski
15 - Rosyjski/Francuski
16 - Rosyjski/Niemiecki
17 - Rosyjski/Czeski
45 - Rosyjski/Hiszpański
18 - Francuski
19 - Francuski/Angielski
20 - Francuski/Polski
21 - Francuski/Rosyjski
22 - Francuski/Niemiecki
23 - Francuski/Czeski
44 - Francuski/Hiszpański
24 - Czeski
25 - Czeski/Angielski
26 - Czeski/Polski
27 - Czeski/Rosyjski
28 - Czeski/Niemiecki
29 - Czeski/Francuski
43 - Czeski/Hiszpański
36 - Hiszpański
37 - Hiszpański/Angielski
38 - Hiszpański/Polski
39 - Hiszpański/Rosyjski
40 - Hiszpański/Niemiecki
41 - Hiszpański/Francuski
42 - Hiszpański/Czeski

Szablon wydruku ( szablon ):

0 - Podstawowy
1 - Prosty
2 - Ekonomiczny

automatyczne_tworzenie_dokumentu_magazynowego

Do dodawanej faktury zostanie automatycznie wystawiony dokument magazynowy WZ lub PZ
w zależności od tego, czy wystawiana faktura była fakturą kosztową czy przychodową.
W celu aktywowania tej opcji konieczne jest również podanie parametru magazyn_id:
0 - nie wystawiaj 
1 - wystawiaj

waluta:

PLN
EUR
USD
GBP
AED
AFN
ALL
AMD
ANG
AOA
ARS
AUD
AWG
AZN
BAM
BBD
BDT
BGN
BHD
BIF
BND
BOB
BRL
BSD
BWP
BYN
BZD
CAD
CDF
CHF
CLP
CNY
COP
CRC
CUP
CVE
CZK
DJF
DKK
DOP
DZD
EGP
ERN
ETB
FJD
GEL
GHS
GIP
GMD
GNF
GTQ
GYD
HKD
HNL
HRK
HTG
HUF
IDR
ILS
INR
IQD
IRR
ISK
JMD
JOD
JPY
KES
KGS
KHR
KMF
KRW
KWD
KZT
LAK
LBP
LKR
LRD
LSL
LYD
MAD
MDL
MGA
MKD
MMK
MNT
MOP
MRU
MUR
MVR
MWK
MXN
MYR
MZN
NAD
NGN
NIO
NOK
NPR
NZD
OMR
PAB
PEN
PGK
PHP
PKR
PYG
QAR
RON
RSD
RUB
RWF
SAR
SBD
SCR
SDG
SEK
SGD
SLL
SOS
SRD
SSP
STN
SVC
SYP
SZL
THB
TJS
TMT
TND
TOP
TRY
TTD
TWD
TZS
UAH
UGX
UYU
UZS
VES
VND
VUV
WST
XAF
XCD
XDR
XOF
XPF
YER
ZAR
ZMW
ZWL

rodzaj_produktu:

0 - Sprzedawane i kupowane
1 - Sprzedawane
2 - Kupowane

usluga:

0 - Towar
1 - Usługa

towar_usluga:

0 - Towary handlowe
1 - Pozostałe wydatki
2 - Koszty uboczne zakupu

symbol_gtu:

1 - GTU_01
2 - GTU_02
3 - GTU_03
4 - GTU_04
5 - GTU_05
6 - GTU_06
7 - GTU_07
8 - GTU_08
9 - GTU_09
10 - GTU_10
11 - GTU_11
12 - GTU_12
13 - GTU_13

firma_lub_osoba_prywatna:

0 - Firma
1 - Osoba prywatna

czlonek_grupy_vat:

1 - członek grupy VAT

jednostka_samorzadu_terytorialnego:

1 - jednostka samorządu terytorialnego

obliczaj_wartosc_faktury_od:

0 - Ceny jednostkowej netto (domyślna)
1 - Ceny jednostkowej brutto - zgodne z kasą fiskalną

qr_platnosc:

0 - Kod QR do płatności wyłączony (domyślnie)
1 - Kod QR do płatności włączony na wydruku faktury

qr_offline:

0 - Kody QR offline wyłączone (domyślnie)
1 - Kody QR offline włączone na wydruku faktury

oss_dowod_potwierdzajacy_1:

1 - Adres IP
2 - Adres na fakturze
3 - Karta płatnicza
4 - Konto bankowe
5 - Numer telefonu
6 - Inny

oss_dowod_potwierdzajacy_2:

1 - Adres IP
2 - Adres na fakturze
3 - Karta płatnicza
4 - Konto bankowe
5 - Numer telefonu
6 - Inny

oss_typ_sprzedazy:

0 - Usługi
1 - Towary

wybrany_typ_dokumentu - pokaż wybrane typy dokumentów:

0 - Faktura VAT
1 - Faktura proforma
4 - Faktura korekta
11 - Faktura zaliczkowa
3 - Faktura końcowa
5 - Faktura marża
6 - Faktura bez vat (rachunek)
2 - Faktura MP (metoda kasowa)
12 - Faktura Odwrotne Obciążenie
16 - Faktura VAT RR
35 - Oferta
14 - Paragon
36 - Korekta paragonu
7 - Zamówienie
8 - Nota korygująca
15 - Nota odsetkowa
17 - Nota uznaniowa
19 - Nota obciążeniowa
9 - KP dowód wpłaty
10 - KW dowód wypłaty
18 - Wezwanie do zapłaty
20 - Dowód dostawy
21 - Dowód wewnętrzny
22 - Faktura WDT
23 - Eksport Towarów
24 - Eksport Usług
25 - Eksport Usług VAT-UE 28b
26 - Faktura WNT
27 - Import Towarów
28 - Import Usług
29 - Import usług VAT-UE 28b
30 - WZ - Wydanie Zewnętrzne
31 - PZ - Przyjęcie Zewnętrzne
32 - MM - Przesunięcie Pomiędzy Magazynami
33 - RW - Rozchód Wewnętrzny
34 - PW - Przyjęcie Wewnętrzne

typ_marzy:

1 - Margin procedure for travel agencies
2 - Margin procedure - used goods
3 - Margin procedure - works of art
4 - Margin procedure - collector's items and antiques

JPK_V7:

MPP
IMP
SW
EE
TP
TT_WNT
TT_D
MR_T
MR_UZ
I_42
I_63
B_SPV
B_SPV_DOSTAWA
B_MPV_PROWIZJA
MK
WEW
FP
WSTO_EE
IED
DI

ksef_rola:

Brak
1 - Faktor
2 - Odbiorca
3 - Podmiot pierwotny
4 - Dodatkowy nabywca
5 - Wystawca faktury
6 - Płatnik (dokonujący płatności)
7 - JST Wystawca
8 - JST Odbiorca
9 - Grupa VAT wystawca
10 - Grupa VAT odbiorca
11 - Pracownik
Rola inna

Rola 100 (Rola inna) oznacza rolę własną - w takim wypadku trzeba dodatkowo przesłać pole ksef_rola_str z opisem roli (maksymalnie 256 znaków). Opis trafia do faktury w KSeF jako <RolaInna>1</RolaInna> oraz <OpisRoli>treść</OpisRoli>.
Dla pozostałych ról pole ksef_rola_str jest pomijane.

rodzaj_identyfikatora:

0 - NIP
1 - VAT UE
2 - Nr. ident. podatkowej

Pole określa, jaki identyfikator podatkowy jest podany w polu <nip>. Można go przesłać w sekcji <nabywca> i <odbiorca>. Brak pola oznacza wartość 0 (NIP).


rodzaj_konta:

0 - Sprzedawca i nabywca
1 - Sprzedawca
2 - Nabywca

Jak często można odpytać API:

1 Pobieranie danych faktury co 1 sekundę
2 Wystawianie faktury co 2 sekundy
3 Pobieranie faktury w pdf co 1 sekundę
4 Wysłanie faktury do klienta e-mailem co 1 sekundę
5 Dodanie relacji między dokumentami co 1 sekundę
6 Usuwanie faktury co 1 sekundę
7 Wysyłanie faktury do ksef co 1 sekundę
8 Pobieranie listy działów co 1 sekundę
9 Pobieranie listy dokumentów co 5 sekund
10 Pobieranie listy magazynów co 1 sekundę
11 Pobieranie listy produktów co 10 sekund
12 Pobieranie danych produktu co 1 sekundę
13 Pobieranie ilości produktów w magazynie co 10 sekund
14 Pobieranie listy klientów co 10 sekund
15 Pobieranie danych klienta co 1 sekundę
16 Zmiana statusu dokumentu co 1 sekund
17 Dodawanie tagów co 1 sekund
18 Usuwanie tagów co 1 sekund
19 Dodawanie produktów co 1 sekundę
20 Kasowanie produktów co 1 sekundę
21 Dodawanie klientów co 1 sekundę
22 Kasowanie klientów co 1 sekundę
23 Pobieranie wizualizacji KSeF co 1 sekundę
24 Pobieranie listy dokumentów z KSeF co 10 sekund
25 Dodanie faktury pobranej z KSeF co 2 sekundy