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/2024</numer_faktury>
  <rodzaj_faktury_koszty>1</rodzaj_faktury_koszty>
  <data_wystawienia>2024-11-01</data_wystawienia>
  <data_sprzedazy>2024-11-01</data_sprzedazy>
  <termin_platnosci_data>2024-11-08</termin_platnosci_data>
  <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>2024-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>
  <dodatkowe_uwagi></dodatkowe_uwagi>
  <notatka_prywatna></notatka_prywatna>
  <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>
  <numer_ksef>xxx-xxxx-xxxx-xxxx</numer_ksef>
  <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>
    <ulica_i_numer>ul. Testowa 8</ulica_i_numer>
    <kod_pocztowy>00-005</kod_pocztowy>
    <miejscowosc>Warszawa</miejscowosc>
    <kraj_id>PL</kraj_id>
    <email>dasdas@fff.pl</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>
    <nazwa>Firma - nazwa nabywcy</nazwa>
    <imie></imie>
    <nazwisko></nazwisko>
    <nip></nip>
    <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>
  </nabywca>
  <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>

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

$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>2024-11-01</data_wystawienia>
  <data_sprzedazy>2024-11-01</data_sprzedazy>
  <termin_platnosci_data>2024-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>
  <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>


  <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>PL</kraj>
    <email></email>
    <telefon></telefon>
    <fax></fax>
    <www></www>
    <nr_konta_bankowego></nr_konta_bankowego>
  </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>
  </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>
  </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/2024</dokument_nr>
  <unikatowy_kod>FtfhN2ed5Jcd0gIJf4k0GixDvSgz6kHdg64fthRN4cLEYOdffqKq4Ja2ewJwOd4I3CNX63jdakRciq</unikatowy_kod>
</dokument>
Błędne dodanie dokumentu: <dokument>
  <kod>3</kod>
</dokument>
Dla dokumentów typu marża prosimy o podanie dodatkowo:

<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
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>2024-11-01</data_wplywu>


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

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 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 dokument_rel_id które daje możliwość dodania relacji z innymi dokumentami.
Dla faktury końcowej, możliwość dodania relacji z dokumentami:
- faktury zaliczkowe

<dokument_rel_id>19322342</dokument_rel_id>

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>2024-11-01</data_wystawienia>
  <data_sprzedazy>2024-11-01</data_sprzedazy>
  <termin_platnosci_data>2024-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>
  <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>
  </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>
  </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>
  </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/2024</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>2024-11-01</data_wystawienia>
  <data_sprzedazy>2024-11-01</data_sprzedazy>
  <termin_platnosci_data>2024-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>
  <dodatkowe_uwagi></dodatkowe_uwagi>
  <wyslij_dokument_do_klienta_emailem>0</wyslij_dokument_do_klienta_emailem>
  <notatka_prywatna></notatka_prywatna>


  <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>
  </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>
  </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>
  </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/2024</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 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>2024-11-01</data_wystawienia>
  <data_sprzedazy>2024-11-01</data_sprzedazy>
  <termin_platnosci_data>2024-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>
  <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>
  </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>
  </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>
  </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/2024</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


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 "lista 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>NvxTVFLmdWe7OE4u8UutrcQSD1fiKP3aMWxFIlGT5PHOO0LEeHYMmE2zO3oTFJh7XPqeNBml6sM1Eavs</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. 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>

6. 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>

7. Pobranie nadanego numeru KSeF:

Czas na nadanie numeru KSeF przez Krajowy System e-Faktur po wysłaniu dokumentu ( w punkcie 7 ) to przeważnie od 0.5 do 3 sekund

$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_pobranie_nadanego_numeru.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 nadanie numeru KSeF:

<dokument>
  <kod>53</kod>
  <numer_ksef>xxxxxxxxxx-xxxxxxxxx-xxxxxx-xxxxxx-xx</numer_ksef>
</dokument>
Błąd podczas pobierania numeru KSeF: <dokument>
  <kod>54</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. Lista dokumentów:


$input_xml = "
<dokument>
  <data_od>2024-01-01</data_od>
  <data_do>2024-01-30</data_do>
  <id_dzialy_firmy></id_dzialy_firmy>
  <wybrany_typ_dokumentu></wybrany_typ_dokumentu>
  <api_token></api_token>
</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>
        <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>
    </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>
        <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>
    </dokument>        
</dokumenty> 

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>

</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.000000</cena_sprzedazy_netto>
    <vat>23</vat>
    <cena_sprzedazy_brutto>123.000000</cena_sprzedazy_brutto>
    <waluta_id>1</waluta_id>
    <jm>szt.</jm>
    <kod_produktu></kod_produktu>
    <towar_usluga>0</towar_usluga>
  </produkt>
  <produkt>
    <id>234333</id>
    <nazwa>Mandarynka</nazwa>
    <cena_sprzedazy_netto>20.000000</cena_sprzedazy_netto>
    <vat>0</vat>
    <cena_sprzedazy_brutto>20.000000</cena_sprzedazy_brutto>
    <waluta_id>1</waluta_id>
    <jm>szt.</jm>
    <kod_produktu></kod_produktu>
    <towar_usluga>0</towar_usluga>
  </produkt>
</dokumenty>
Błędne odczytanie listy produktów: <dokument>
  <kod>3</kod>
</dokument>

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


$input_xml = "
<dokument>

  <api_token></api_token>

</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>
</dokumenty>
Błędne odczytanie ilości produktów w magazynie: <dokument>
  <kod>3</kod>
</dokument>

13. Pobieranie listy klientów:


$input_xml = "
<dokument>

  <api_token></api_token>

</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>
        <kraj_id>PL</kraj_id>
        <email>email@firmya.pl</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>
        <kraj_id>PL</kraj_id>
        <email>email@firmyb.pl</email>
        <telefon>555222333</telefon>
        <nr_konta_bankowego></nr_konta_bankowego>
  </klient>
</dokumenty>
Błędne odczytanie listy klientów <dokument>
  <kod>3</kod>
</dokument>

14. 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>

15. Dodawanie tagów:



$input_xml = "
<dokument>

    <api_token></api_token>
    <dokument_id>4742746</dokument_id>

    <tag>
        nazwa 1
    </tag> 

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

16. Usuwanie tagów:



$input_xml = "
<dokument>

    <api_token></api_token>
    <dokument_id>4742746</dokument_id>

    <tag>
        nazwa 1
    </tag> 

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

Zwracane kody:


1 - Dokument został poprawnie dodany
2 - Przekroczono ilość zapytań na sekundę, prosimy spróbować za 5 sekund
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 pomoc@fakturaxl.pl
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
900 - Trwają prace konserwacyjne, zapraszamy za kilka minut.

typ_faktury - typy dokumentów:


0 - Faktura VAT
1 - Faktura proforma
2 - Faktura MP (metoda kasowa)
3 - Faktura końcowa
4 - Faktura korygująca
5 - Faktura marża
6 - Rachunek (Faktura bez vat)
7 - Zamówienie
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 - Faktura eksportowa
24 - Eksport Usług
25 - Eksport Usług VAT-UE 28b
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 używany w paragonach:


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

Rodzaj dokumentu ( rodzaj_faktury_koszty ) parametr opcjonalny:

							
1 - przychody ( domyślna )
2 - koszty


status:


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

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

id_dzialy_firmy:


21 - Główny
111 - Oddział 2

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

obliczaj_wartosc_faktury_od:

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

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ż wybrany typy dokumentów:


0 - Faktura VAT
1 - Faktura proforma
4 - Faktura korygująca
11 - Faktura zaliczkowa
3 - Faktura końcowa
5 - Faktura marża
6 - Rachunek (Faktura bez vat)
2 - Faktura MP (metoda kasowa)
12 - Faktura Odwrotne Obciążenie
16 - Faktura VAT RR
14 - Paragon
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 - Faktura eksportowa
24 - Eksport Usług
25 - Eksport Usług VAT-UE 28b
26 - Faktura WNT
30 - WZ - Wydanie Zewnętrzne
31 - PZ - Przyjęcie Zewnętrzne
34 - PW - Przyjęcie Wewnętrzne
29 - Import usług VAT-UE 28b

typ_marzy:


1 - Procedura marży dla biur podróży
2 - Procedura marży - towary używane
3 - Procedura marży - dzieła sztuki
4 - Procedura marży - przedmioty kolekcjonerskie i antyki

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

Jak często można odpytać API:


1. POBIERANIE DANYCH FAKTURY:  co 1 sekundę 

2. WYSTAWIANIE FAKTURY:  co 1 sekundę 

5. WYSŁANIE FAKTURY DO KLIENTA E-MAILEM:  co 1 sekundę 

6. USUWANIE FAKTURY:  co 1 sekundę 

7. POBIERANIE LISTY DZIAŁÓW:  co 1 sekundę 

8. LISTA DOKUMENTÓW:  co 5 sekund

9. POBIERANIE LISTY MAGAZYNÓW:  co 1 sekundę 

10. POBIERANIE LISTY PRODUKTÓW:  co 60 sekund 

11. POBIERANIE ILOŚCI PRODUKTÓW W MAGAZYNIE:  co 60 sekund

12. ZMIANA STATUSU DOKUMENTU:  co 1 sekund