Krajowy system e-Faktur

Dzyszla
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 264
ZY
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1
0

Cz nie macie problemów z tokenami wersji demo i test ?

GigaKatowice
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 36
0

Hej.

Czy ktoś wie (albo może wskazać informację) w jaki sposób liczony jest VAT na fakturze w Aplikacji Podatnika?

Klient mi zarzuca, że źle kalkuluję VAT.

Po analizie przypadku wychodzi mi, że w AP VAT jest liczony od sumy netto.
W mojej aplikacji VAT jest liczony dla każdej pozycji faktury osobno.

Oba sposoby są oczywiście zgodne z prawem i ja z tym nie mam problemu.

Szukam tylko jawnej informacji o tym, że AP liczy właśnie tak, bo nie potrafię znaleźć opcji, która pozwala to zmienić.

Dzięki za pomoc

S8
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 106
0

No i na czym stanęły te wszystkie dyskusje o wgrywanie certów czy upraweniania ?:) Widzę, że jednak dużo firm postawiło jednak na wgrywanie certów i każdy olewa to i bierze normalnie klucze prywatne.

bbhzp
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 108
0

Cześć,
szukam i pobieram faktury w następujący sposób:

  1. Loguję się certyfikatem
  2. Pobieram w pętli listę metadanych faktur (dopóki hasMore == true), gdzie limit pozycji na stronę mam ustawiony na 50
  3. Dla każdego wyszukanego numeru KSeF (jeśli nie istnieje on już w mojej bazie), pobieram XML'a w pętli i wstawiam go do bazy.

Niestety, dzisiaj dostałem informację, że mój program zwrócił błąd 429 too many requests. Zakres filtrów był ustawiony na cały kwiecień i wyszukiwanie zwróciło tylko jedną stronę - czyli nie więcej niż 50 faktur. Jak to jest możliwe, że zostałem ograniczony przez limit? Według dokumentacji API, pobieranie faktur po nr ksef jest ograniczone do 80 pozycji na sekundę.

PA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3902
0

Pytanie: czy da się skorygować datę wystawienia, klient wysłał korektę z datą wcześniejszą niż faktura korygowana...

RA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 125
1

https://businessinsider.com.pl/prawo/podatki/ksef-nowe-sygnaly-ws-kar-i-odroczen-co-czeka-mikroprzedsiebiorcow/jmn484c

"zostanie przeanalizowana zasadność ewentualnego utrzymania niektórych rozwiązań liberalizujących warunki wdrożenia KSeF dla najmniejszych podmiotów czy też dokonania ew. ewaluacji narzędzi do autoryzacji w KSeF. Jednak obecnie jest za wcześnie, by o tym decydować."

I teraz nie wiadomo - cieszyć się bo tokeny zostaną, czy płakać bo przeorka uwierzytelnienia się szykuje xd

PX
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 17
0

czy tylko u mnie ksef ma czkawkę i czka 150-tkami ?

W1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 10
0

#JST#Uprawnienia

Mam bardzo dziwną sytuacje u klienta, i nawet nie wiem gdzie szukać informacji! Ale fakt że na portalu ministerstwa to działa!
Mam:

NIP1 - 1111111111 (Gmina)
NIP2 - 222222222 (Szkoła)
PESEL - 333333333 (Pani księgowa)

Gmina -> nadała uprawniania szkole za pomocą !!!Pisma do US!!!. Niestety nie widziałem tego pisma
Szkoła -> nadała uprawnienia na pesel księgowej do pracy w kontekście !!!Szkoły!!!
Księgowa -> zalogowała się na NIP Szkoły i wygenerowała certyfikat. W "moje uprawnienia" widzi, że ma uprawnienia na wystawianie faktur w kontekście Szkoły!

I tutaj się zaczyna magia! :)

Pani księgowa - będąc zalogowana w kontekście Szkoły, mając uprawnienia na wystawianie faktur w kontekście Szkoły, wchodzi w "Wystaw fakturę", wpisuje jako NIP Sprzedawcy - NIP Szkoły, i dostaje komunikat, że nie może wystawić fakturę dla tego NIPu. Wpisuje NIP Gminy i wszystko przechodzi!

Czyli w uprawnieniach w prost napisano, że może wystawiać faktury jako Szkoła, ale de fakto nie może. W uprawnieniach nie ma żadnego słowa o nipie Gminy, ale może wystawić fakturę jako Gmina.

Zwykłą ścieżkę uprawnień (Gmina -> Szkoła -> Pesel) mam ogarniętą.

Czy ktoś miał podobną sytuacje? Czy może chociażby wie jak taki scenariusz się nazywa?

Z góry dziękuję za każdą podpowiedż!!!

ZB
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 92
0

Proszę o pomoc w rozwikłaniu niuansów JST.

  1. W strukturze FA(3) w węźle Podmiot2 pole JST określa, czy faktura dotyczy jednostki podrzędnej . Wartość pola to integer z możliwymi wartościami 1 i 2. Czy zgodnie z opisem w .xsd 1 = "TAK (faktura dotyczy)" i 2 = "NIE (faktura nie dotyczy)" jednostki podrzędnej? Czy jest jednak odwrotnie (1 - nie dotyczy, 2 - dotyczy) jak mówią niektóre źródła?

  2. Jeśli pole Podmiot2.JST mówi "dotyczy" to wtedy musi istnieć węzeł Podmiot3 z rolą 8 (JST odbiorca) z NIPem innym niż NIP Podmiotu2. I z jego istnienia wynika potrzeba ustawienia w Podmiot2 pola JST na "dotyczy". Czy tak jest?

  3. Istnienie węzła Podmiot3 z rolą 7 (JST Wystawca) nie wpływa na wartość pola JST w Podmiot2, po prostu znaczy to tyle że fakturę też wystawia jednostka podrzędna. Czy tak jest?

  4. Przyjmijmy takich aktorów na scenie jak poniżej. Proszę o potwierdzenie poprawności "kombinacji" Podmiotów1, 2 i 3 w wynikowym pliku XML.
    Aktorzy:
    Sprzedawca (JST nadrzędna) - Województwo
    Sprzedawca - jednostka podległa (tech. wystawca) - Wojewódzki Ośrodek Metodyczny
    Nabywca (JST nadrzędna) - Gmina
    Nabywca - jednostka podległa (odbiorca) - Szkoła w Gminie
    Nabywca Inny - randomowa firma ABC, niezwiązana w żaden sposób z nikim

sytuacja a)
Wojewódzki Ośrodek Metodyczny wystawia fakturę randomowej firmie ABC
W tym przypadku Wojewódzki Ośrodek Metodyczny jest wystawcą operacyjnym, działającym w imieniu JST nadrzędnej (Województwa), a nabywca nie jest jednostką JST.
Podmiot1: Dane JST nadrzędnej (Województwo).
Podmiot2: Dane firmy ABC.
Podmiot3: Dane Wojewódzkiego Ośrodka Metodycznego z rolą 7 (Jednostka samorządu terytorialnego - wystawca)
Pole JST w Podmiot2: "nie dotyczy"

sytuacja b)
Wojewódzki Ośrodek Metodyczny wystawia fakturę dla Szkoły
Jest to transakcja między jednostkami podległymi różnym JST (Województwo -> Gmina).
Podmiot1: Dane JST nadrzędnej sprzedawcy (Województwo)
Podmiot2: Dane JST nadrzędnej nabywcy (Gmina)
Pole JST w Podmiot2: "dotyczy"
Podmiot3 (wystąpienie nr 1): Dane Wojewódzkiego Ośrodka Metodycznego z rolą 7 (JST - wystawca)
Podmiot3 (wystąpienie nr 2): Dane Szkoły z rolą 8 (JST - odbiorca)

sytuacja c)
Randomowa firma ABC wystawia fakturę dla Szkoły
Standardowy zakup jednostki podrzędnej JST od zewnętrznego dostawcy.
Podmiot1: Dane firmy ABC.
Podmiot2: Dane JST nadrzędnej nabywcy (Gmina)
Pole JST w Podmiot2: "dotyczy"
Podmiot3: Dane Szkoły z rolą 8 (JST - odbiorca)

RA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 125
0

Tak z ciekawości, gdyż zakładam, że macie już jakieś obserwacje: jaką kreatywnością wykazali się wystawcy faktur, która spowodowała u was wydanie dźwięku "ehh..."?
U mnie (zakładam, że u wszystkich w sumie) FaWiersz to zagadka logiczna: podawanie cen netto i brutto, wiadomo... rabat itp. Najbardziej frustrujące z operacyjnego punktu widzenia jest pakowanie w pole Indeks po przecinku wszystkiego co się da w 50 znakach zmieścić (id dostawcy, data przydatności, nr partii i czasem o dziwo kod towaru), co u tych samych dostawców nie miało miejsca przed ksefem i teraz rzeźbić trzeba w module magazynowym.

Poza tym (jak się cieszę, że to wyłączyłem) wystawianie faktur na IdWew w Nabywcy. Jak? TPodmiot2.KodKraju = PL, TPodmiot2.NrId = identyfikator wew i wtedy hura: nie trzeba odbiorcy wpisywać

Faktury opłacone wystawiane w ksef jako nieopłacone (ponownie - wcześniej Ci sami dostawcy wystawiali poprawnie)

O tym, że są dwa obiegi pewnie wspominać nie trzeba: faktura jest w ksef ale również: na mailu albo przez kierowcę tira przywieziona (i to taka bez qr bez numeru ksef i też nie jest to WZ'ka)

TR
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: 700m n.p.m.
  • Postów: 687
0

Czołem,

mam cały czas od wielu godzin pewien problem z długością XML faktur na endpoint:

https://api-test.ksef.mf.gov.pl/docs/v2/index.html#tag/Wysylka-interaktywna/paths/~1sessions~1online~1%7BreferenceNumber%7D~1invoices/post

czyli tworzenie faktury w sesji interaktywnej.

  • Inicjalizacja sesji OK (i potem jej zamknięcie)
  • wysłanie faktury OK

Następnie kiedy weryfikuje fakturę / pobieram status z endpoint:

https://api-test.ksef.mf.gov.pl/docs/v2/index.html#tag/Status-wysylki-i-UPO/paths/~1sessions~1%7BreferenceNumber%7D~1invoices~1%7BinvoiceReferenceNumber%7D/get

Zawsze mam błąd 430:

[status] => stdClass Object
(
[code] => 430
[description] => Błąd weryfikacji pliku faktury
[details] => Array
(
[0] => Rozmiar faktury nie zgadza się z zadeklarowaną wartością: '2024'.
)

)

Funkcja która koduje XML (na początku XML to obiekt klasy \SimpleXMLElement):

Kopiuj
public function &encrypt() {
    // 1. Wygeneruj surowy XML
    $xml = $this->xml->asXML();
    
    // 2. ABSOLUTNE CZYSZCZENIE
    // Usuwamy BOM, wszystkie znaki nowej linii i powrotu karetki.
    // Robimy to, aby XML był jednym ciągłym ciągiem bajtów.
    $xml = str_replace(["\xEF\xBB\xBF", "\r", "\n"], "", trim($xml));
    $xml = preg_replace('/>\s+</', '><', $xml);

    // 3. ZAPISZ TYMCZASOWY PLIK "CZYSTY"
    $tmpXml = tempnam(sys_get_temp_dir(), 'k_xml_');
    $tmpEnc = tempnam(sys_get_temp_dir(), 'k_enc_');
    file_put_contents($tmpXml, $xml);

    // 4. POBIERZ ROZMIAR I HASH Z PLIKU (To jest jedyna pewna wartość dla KSeF)
    $this->invoiceSize = (int)filesize($tmpXml);
    $this->invoiceHash = base64_encode(hash_file('sha256', $tmpXml, true));

    // 5. RĘCZNY PADDING PKCS#7 na bazie ROZMIARU Z PLIKU
    $blockSize = 16;
    $pad = $blockSize - ($this->invoiceSize % $blockSize);
    $xmlPadded = $xml . str_repeat(chr($pad), $pad);
    
    // Nadpisujemy plik wersją z paddingiem
    file_put_contents($tmpXml, $xmlPadded);

    // 6. Szyfrowanie OpenSSL 3
    $aesKeyBin = $this->session->symmetricKey; 
    $ivBin = random_bytes(16); 

    $cmdEnc = sprintf(
        'openssl enc -aes-256-cbc -K %s -iv %s -in %s -out %s -nosalt -nopad 2>&1',
        strtoupper(bin2hex($aesKeyBin)),
        strtoupper(bin2hex($ivBin)),
        escapeshellarg($tmpXml),
        escapeshellarg($tmpEnc)
    );

    exec($cmdEnc, $out, $code);
    if ($code !== 0) throw new \Exception("AES Error: " . implode("\n", $out));

    // 7. Budowa paczki do wysłania
    $ciphertext = file_get_contents($tmpEnc);
    $fullPayloadBin = $ivBin . $ciphertext; 

    $this->encryptedInvoiceContent = base64_encode($fullPayloadBin);
    $this->encryptedInvoiceSize    = (int)strlen($fullPayloadBin);
    $this->encryptedInvoiceHash    = base64_encode(hash('sha256', $fullPayloadBin, true));

    @unlink($tmpXml);
    @unlink($tmpEnc);

    return true;
}

Później używam oczywiście $this->encryptedInvoiceContent i reszty do payloadu, $this->cmdCreate->jsonBody to payload na którym jest potem \json_encode

$this->cmdCreate->jsonBody = new \stdClass();
$this->cmdCreate->jsonBody->invoiceHash = $this->invoiceHash;
$this->cmdCreate->jsonBody->invoiceSize = $this->invoiceSize;
$this->cmdCreate->jsonBody->encryptedInvoiceContent = $this->encryptedInvoiceContent;
$this->cmdCreate->jsonBody->encryptedInvoiceSize = $this->encryptedInvoiceSize;
$this->cmdCreate->jsonBody->encryptedInvoiceHash = $this->encryptedInvoiceHash;

Zamiast $this->invoiceSize = (int)filesize($tmpXml);

próbowałem $this->invoiceSize = strlen(xml)
albo $this->invoiceSize = mc_strlen(xml, '8bit');
albo $this->invoiceSize = mc_strlen(xml, 'UTF-8');

nic nie pomaga KSEF cały czas po rokodowaniu po swojej stronie ma inną długość XML niż moje $this->invoiceSize

Jakieś pomysły o co chodzi?

Środowisko to Debian 12, OpenSSL 3, PHP 7.4

TR
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: 700m n.p.m.
  • Postów: 687
0

Przerobiłem funkcję, aby korzystała z natywnej funkcji PHP:

Kopiuj
public function &encrypt() {
    
      // 1. Pobranie XML (wyczyść string przed szyfrowaniem)
      $xml = $this->xml->asXML();
      $xml = str_replace(["\xEF\xBB\xBF", "\r", "\n"], "", trim($xml));
      $xml = preg_replace('/>\s+</', '><', $xml);

      // 2. Metadane oryginału
      // Używamy strlen(), ponieważ openssl_encrypt operuje na bajtach
      $this->invoiceSize = (int)strlen($xml);
      $this->invoiceHash = base64_encode(hash('sha256', $xml, true));

      // 3. Przygotowanie kluczy
      $aesKeyBin = $this->session->symmetricKey; 
      $ivBin = random_bytes(16); 

      // 4. Szyfrowanie natywne PHP
      /**
       * openssl_encrypt z opcją 0 (domyślną) automatycznie:
       * - nakłada padding PKCS#7
       * - szyfruje AES-256-CBC
       * - zwraca wynik zakodowany w Base64 (dlatego używamy OPENSSL_RAW_DATA, by dostać binaria)
       */
      $ciphertext = openssl_encrypt(
          $xml,
          'aes-256-cbc',
          $aesKeyBin,
          OPENSSL_RAW_DATA, // zwraca surowe bajty zamiast base64
          $ivBin
      );

      if ($ciphertext === false) {
          throw new \Exception("Błąd openssl_encrypt: " . openssl_error_string());
      }

      // 5. Budowa paczki do wysłania: [16B IV] + [Szyfrogram]
      $fullPayloadBin = $ivBin . $ciphertext; 

      // 6. Przypisanie wartości do pól obiektu
      $this->encryptedInvoiceContent = base64_encode($fullPayloadBin);

      // Rozmiar zaszyfrowany to zawsze IV (16B) + Ciphertext (z dopełnieniem do 16B)
      $this->encryptedInvoiceSize = (int)strlen($fullPayloadBin);

      // Hash zaszyfrowany liczony z paczki IV + Szyfrogram
      $this->encryptedInvoiceHash = base64_encode(hash('sha256', $fullPayloadBin, true));

      return true;
  }

Dalej to samo, weryfikacja faktury zwraca błąd:

Kopiuj
[status] => stdClass Object
(
    [code] => 430
    [description] => Błąd weryfikacji pliku faktury
    [details] => Array
        (
            [0] => Rozmiar faktury nie zgadza się z zadeklarowaną wartością: '2024'.
        )

)

Enigma

Nawet jak "chamsko" zrobię coś takiego, czyli krótki XML który nie ma polskich znaków, to dalej to samo, długość XML po stronie KSEF się nie zgadza, WTF?

Kopiuj
$xml = $this->xml->asXML();
$xml = '<?xml version="1.0" encoding="UTF-8"?><Faktura xmlns="http://crd.gov.pl/wzor/2025/06/25/13775/"></faktura>';
$xml = str_replace(["\xEF\xBB\xBF", "\r", "\n"], "", trim($xml));
$xml = preg_replace('/>\s+</', '><', $xml);
Dzyszla
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 264
1

Jeśli by do kogoś nie dotarło, to pozwolę sobie dać tu info też:

W dniu 22.04.2026 (środa) w godzinach 18:00 - 18:30 zostanie przeprowadzona symulacja braku przetwarzania faktur po stronie API KSeF (środowisko TEST).
W trakcie symulacji:

  • API będzie dostępne,
  • możliwe będzie przesyłanie faktur oraz paczek faktur (sesja interaktywna i wsadowa),
  • przyjęte dokumenty nie będą przetwarzane.

Efektem będzie:

  • brak nadawania numerów KSeF,
  • brak generowania UPO dla faktur,
  • brak generowania UPO dla paczek.

Po zakończeniu symulacji przetwarzanie zostanie wznowione, a wszystkie wcześniej przyjęte faktury i paczki faktur zostaną obsłużone.

Próbujemy ustalić, co miało miejsce w piątek od ok 12:50 do 13:40, czego efektem było ponowne wysłanie faktur przez systemy i oznaczenie tych wysokiej jako duplikatów.

Osobiście nie wierzę, że to, co ma być symulowane. Wg mnie zamykanie sesji wsadowej zwracało błędny status http mimo, iż operacja przebiegła pomyślnie.


I z ostatniej chwili, są planowane też kolejne testy:

W następnym tygodniu zrobimy scenariusz zatrzymania obsługi exportów, co doprowadzi do błędu 21182 - Osiągnięto limit trwających eksportów.

K2
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 35
0

Czy i ew. skąd można teraz pobrać aktualny pdf pt. "Specyfikacja interfejsów Krajowego Systemu e-Faktur (KSEF)" ?
(kiedyś było pod adresem: https://ksef-test.mf.gov.pl/document/InterfaceSpecification/1.8/PL )

PX
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 17
0

czy mieliście przypadek braku <FP>1</FP> w XML KSeF dla faktury wystawionej do paragonu fiskalnego? czy trzeba to korygować skoro to pole fakultatywne - czy lepiej skorygować żeby nie było traktowane jako osobna faktura i podwójne opodatkowanie ?

GS
  • Rejestracja: dni
  • Ostatnio: dni
0

@akodo23
w statusie duplikatu mam info że ta faktura była już wysłana w poprzedniej sesji (interaktywnej) sprzed kilku minut (20260417-SO-25861A8000-54CD3E2ACB-EF), w której to sesji była wysłana poprzednia faktura

resource:
sessions/20260417-SB-265705C000-7E8F5FED15-19
response:

Kopiuj
{"status":{"code":445,"description":"Błąd weryfikacji, brak poprawnych faktur"},"dateCreated":"2026-04- 7T11:10:02.3321401+00:00","dateUpdated":"2026-04- 17T11:10:05+00:00","validUntil":"2026-04- T23:10:02.3321401+00:00","invoiceCount":1,"successfulInvoiceCount":0,"failedInvoiceCount":1}

resource:
sessions/20260417-SB-265705C000-7E8F5FED15-19/invoices
response:

Kopiuj
{"invoices":[{"ordinalNumber":1,"invoiceNumber":"FV/00001870","referenceNumber":"20260417-EE- 26578A6001-49D26C481C-7E","invoiceHash":"nt9MBxPxqS99QRPYlPW8MW2tS5u0Tr5OperqPJuY +Nc=","invoiceFileName":"zip_0.xml","invoicingDate":"2026-04- 17T11:10:02.3321401+00:00","status":{"code":440,"description":"Duplikat faktury","details": ["Duplikat faktury. Faktura o numerze KSeF: 8150002938-20260417-5BA7E700000F-CD została już prawidłowo przesłana do systemu w sesji: 20260417-SO-25861A8000-54CD3E2ACB- EF"],"extensions":{"originalSessionReferenceNumber":"20260417-SO-25861A8000-54CD3E2ACB- EF","originalKsefNumber":"8150002938-20260417-5BA7E700000F-CD"}}}]}
Dzyszla
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 264
0

https://github.com/CIRFMF/ksef-docs/issues/794
KSeF 3.0 :) [a właściwie to próba dokończenia tego, co było opisane]

TR
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: 700m n.p.m.
  • Postów: 687
0

Dynamiczne/złośliwe limity w środowisku testowym?

Od wczoraj mam cały czas dziwny nierozwiązany problem z weryfikacją faktury (https://api-test.ksef.mf.gov.pl/docs/v2/index.html#tag/Status-wysylki-i-UPO/paths/~1sessions~1%7BreferenceNumber%7D~1invoices~1%7BinvoiceReferenceNumber%7D/get), cały czas mam błąd 430:

[status] => stdClass Object
(
[code] => 430
[description] => Błąd weryfikacji pliku faktury
[details] => Array
(
[0] => Rozmiar faktury nie zgadza się z zadeklarowaną wartością: '2032'.
)

)

Pomijając to, że nie ma tu żadnych szczegółów tego błędu - np. jaka wartość jest po stronie KSEF, to w dodatku od dzisiaj nagle pojawiły się niesamowicie restrykcyjne limity.

Wczoraj intensywnie testowałem robiąc około 100 sesji na godzinę (i zamykając je), dzisiaj nagle mam ogromne ograniczenia które uniemożliwiają mi testowanie:

Otwarcie sesji interaktywnej (https://api-test.ksef.mf.gov.pl/docs/v2/index.html#tag/Wysylka-interaktywna/paths/~1sessions~1online/post)

W API limit: 1200 na godzinę
Ja dostaję: 10 na godzinę

Pobranie statusu sesji (https://api-test.ksef.mf.gov.pl/docs/v2/index.html#tag/Status-wysylki-i-UPO/paths/~1sessions~1%7BreferenceNumber%7D/get)
W API limit: 100 na sekundę, 12000 na godzinę
Ja dostaję: 1 na sekundę (!!!) i 2 na godzinę (!!!!)

Czyli w przypadku pobierania sesji, 6000 razy większy limit niż zadeklarowany w dokumentacji.

Dlaczego tak jest? To co robiłem wczoraj i tak jest wielokrotnie poniżej limitów z dokumentacji.

Zmienili nagle globalnie te limity bez poprawiania dokumentacji, czy ktoś specjalnie uniemożliwia mi testowanie?

TR
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: 700m n.p.m.
  • Postów: 687
0

PROBLEM ROZWIĄZANY

Nadal mam problem z błędem 430 otrzymywany z endpoint https://api-test.ksef.mf.gov.pl/docs/v2/index.html#tag/Status-wysylki-i-UPO/paths/~1sessions~1%7BreferenceNumber%7D~1invoices~1%7BinvoiceReferenceNumber%7D/get

Mam taki XML testowy, w którym dodatkowo usunąłem wszystkie polskie znaki diakrytyczne i zastąpiłem znakiem x aby zmniejszyć prawdopodobieństwo jakiegoś błędu kodowania:

Kopiuj
<?xml version="1.0" encoding="UTF-8"?><Faktura xmlns="http://crd.gov.pl/wzor/2025/06/25/13775/"><Naglowek><KodFormularza kodSystemowy="FA (3)" wersjaSchemy="1-0E">FA</KodFormularza><WariantFormularza>3</WariantFormularza><DataWytworzeniaFa>2026-04-22T13:26:49Z</DataWytworzeniaFa><SystemInfo>Testowy generator</SystemInfo></Naglowek><Podmiot1><DaneIdentyfikacyjne><NIP>5170359458</NIP><Nazwa>Testowy 69e8cc9925776</Nazwa></DaneIdentyfikacyjne><Adres><KodKraju>PL</KodKraju><AdresL1>Ulica testowa 69e8cc9925780, 43-502 Czechowice-Dziedzice</AdresL1></Adres></Podmiot1><Podmiot2><DaneIdentyfikacyjne><NIP>5250000000</NIP><Nazwa>Testowy 69e8cc9925787</Nazwa></DaneIdentyfikacyjne><Adres><KodKraju>PL</KodKraju><AdresL1>Ulica testowa 69e8cc9925785, 66-200 xwiebodzin</AdresL1></Adres><JST>2</JST><GV>2</GV></Podmiot2><Fa><KodWaluty>PLN</KodWaluty><P_1>2026-04-17</P_1><P_2>FV-1/4/2026</P_2><P_6>2026-04-17</P_6><P_15>25.98</P_15><Adnotacje><P_16>2</P_16><P_17>2</P_17><P_18>2</P_18><P_18A>2</P_18A><Zwolnienie><P_19N>1</P_19N></Zwolnienie><NoweSrodkiTransportu><P_22N>1</P_22N></NoweSrodkiTransportu><P_23>2</P_23><PMarzy><P_PMarzyN>1</P_PMarzyN></PMarzy></Adnotacje><RodzajFaktury>VAT</RodzajFaktury><FaWiersz><NrWierszaFa>1</NrWierszaFa><P_7>Opus O.CLICK /25/ 6mm biaxe zamykane</P_7><GTIN>5903868703012</GTIN><P_8A>szt</P_8A><P_8B>1</P_8B><P_9A>8.12</P_9A><P_9B>9.99</P_9B><P_11>8.12</P_11><P_11Vat>1.87</P_11Vat><P_12>23.00</P_12></FaWiersz><FaWiersz><NrWierszaFa>2</NrWierszaFa><P_7>Kurier DPD</P_7><P_8A>szt</P_8A><P_8B>1</P_8B><P_9A>13.00</P_9A><P_9B>15.99</P_9B><P_11>13.00</P_11><P_11Vat>2.99</P_11Vat><P_12>23.00</P_12></FaWiersz></Fa></Faktura>

Po zapisie do pliku, jego długość to 1651

Do KSeF też wysyłam taką długość, to mój payload:

Kopiuj
Array
(
    [invoiceHash] => DcmiI5DuIhq0AWYvBQX4hmtfrqc/Mqrszhqek5YZyoM=
    [invoiceSize] => 1651
    [encryptedInvoiceContent] => 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
    [encryptedInvoiceSize] => 1680
    [encryptedInvoiceHash] => lz2m1k6bVy31AuA+ksv45/986WWY/mEhsGCFYFXojEw=
)

Ten sam payload po konwersji przez JSON: \json_encode($payload, \JSON_UNESCAPED_UNICODE | \JSON_UNESCAPED_SLASHES);

Kopiuj
[jsonBody] => {"invoiceHash":"EUYaa16WSC+J4jiCNtPpC5TBVcvob6TvWOLUoUUvSow=","invoiceSize":1651,"encryptedInvoiceContent":"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","encryptedInvoiceSize":1680,"encryptedInvoiceHash":"U5gvHLU+rw+8a3Dri+XWW7B+6KWREcDsIXPDAJynw+c="}

Czyli: zapisany surowy XML do pliku dla testu: długość 1651, do KSEF wysyłam też 1651.

Symetryczny klucz oraz IV jest taki sam dla sesji jak i zakodowania faktury.

Nic więcej się z tym XML przed wysyłką dalej nie dzieje, TUTAJ funkcja która to koduje:

Kopiuj
public function encrypt() {
    
  // 1. Wygeneruj XML
  $xml = $this->xml->asXML();

  // 2. ABSOLUTNE CZYSZCZENIE (KSeF 430 Fix)
  // Zamieniamy polskie znaki na x
  $polskie = ['ą', 'ć', 'ę', 'ł', 'ń', 'ó', 'ś', 'ź', 'ż', 'Ą', 'Ć', 'Ę', 'Ł', 'Ń', 'Ó', 'Ś', 'Ź', 'Ż'];
  $xml = str_replace($polskie, 'x', $xml);

  // Usuwamy BOM i WSZYSTKIE znaki białe między tagami
  $xml = str_replace(["\xEF\xBB\xBF", "\r", "\n"], "", trim($xml));
  $xml = preg_replace('/>\s+</', '><', $xml);

  if ($this->debug) {
      echo 'Wysyłany XML = ' . \PHP_EOL;
      echo $xml;
      echo \PHP_EOL;
  }

  // 3. MIERZENIE I HASZOWANIE
  // Ważne: mierzymy surowy XML przed nałożeniem szyfrowania/paddingu
  $this->invoiceSize = (int)strlen($xml); 
  $this->invoiceHash = base64_encode(hash('sha256', $xml, true));

  // 4. PRZYGOTOWANIE KLUCZY
  $aesKeyBin = $this->session->symmetricKey; 
  $ivBin = $this->session->iv;

  if ($this->debug) {
      echo "DEBUG ENC : " . bin2hex($aesKeyBin) . "\n";
      echo "DEBUG ENC IV : " . bin2hex($ivBin) . "\n";
  }

  // 5. SZYFROWANIE AES (phpseclib3)
  try {
      $aes = new \phpseclib3\Crypt\AES('cbc');
      $aes->setKey($aesKeyBin);
      $aes->setIV($ivBin);

      // USUNIĘTO: manualny padding i disablePadding()
      // phpseclib3 domyślnie używa PKCS#7, co jest zgodne z KSeF
      $ciphertext = $aes->encrypt($xml); 

  } catch (\Exception $e) {
      throw new \Exception("Błąd AES: " . $e->getMessage());
  }

  // 6. PACZKA DLA KSeF
  // Paczka musi zawierać IV (16 bajtów) na początku, a potem zaszyfrowaną treść
  $fullPayloadBin = $ivBin . $ciphertext; 

  $this->encryptedInvoiceContent = base64_encode($fullPayloadBin);
  $this->encryptedInvoiceSize    = (int)strlen($fullPayloadBin);
  $this->encryptedInvoiceHash    = base64_encode(hash('sha256', $fullPayloadBin, true));

  return true;
}

Używam do zakodowania sprawdzonej i stabilnej biblioteki phpseclib3 zamiast natywnych funkcji php lub linii poleceń, aby się bardziej uniezależnić od środowiska serwera.

Nie rozumiem dlaczego jest ten błąd, co ja robię źle, skoro długość XML jest dokładnie taka jak wysyłam.

Proszę o pomoc, bo zaraz oszaleję. Zdarzało mi się tu w ostatnich latach kilkanaście razy komuś pomoc w PHP, może znajdzie się ktoś kto się nad tym pochyli i przez chwilę zastanowi, co może być źle?

SI
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 31
0

Mam taki problem i wyrywam sobie włosy z głowy próbując go rozwiązać. Firma dostała 2 pisma z powiatu w którym zostały zawarte 2 różne ID wewnętrzne których musimy użyć w fakturze. Więc tworzę fakturkę która w podmiocie 3cim zamiast pola NIP używa pole IDWEW w formacie NIP-000IDWEW (Idwew jest 2 cyfrowe w obu przypadkach). No i na demo wysłałem te faktury i bajka, przeszło i cud miód. Na produkcji w obu tych i tylko tych przypadkach dostaję błąd że Identyfikator wewnętrzny podmiotu trzeciego: 'NIP-000IDWEW jest nieprawidłowy. Inne faktury z Idwew wysyłają się normalnie. Nie jestem w stanie zidentyfikować przyczyny problemu, XMLe między demo a produkcją są identyczne. Jedyne co mi przychodzi do głowy obecnie to że to powiat nam wysłał niepoprawne ID wewnętrzne dlatego na demo przeszło a na produkcji nie, ale z drugiej strony kierownik działu faktur mówi ze powinno być wszystko ok. Więc ja nie wiem co robić.

K2
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 35
0

17.03.2026 opisałem problem w PHP z generowaniem Csr z pieczęci - tutaj: https://4programmers.net/Forum/Nietuzinkowe_tematy/355933-krajowy_system_e_faktur?p=2015321#id2015321
ROZWIĄZANY
Informacje dla ciekawych/potrzebujących:

  • wszystko działało ok z użyciem openssl ale problem był gdy nazwa firmy była dłuższa niż 64 znaki (nie udało mi się tego obejść również przez plik konfiguracyjny openssl)
  • przeszedłem na phpseclib3 z użyciem X509 - tutaj działało ale nie dla pieczęci
  • okazało się, że X509 "nie zna pola organizationIdentifier" i go nie dawał w Csr, nawet przez podanie jako OID 2.5.4.97
  • nie udało się go do tego zmusić przez ASN1::loadOIDS
  • dopiero udało się przez X509->setDN( ['rdnSequence'] => [ ..... ] ) z podaniem OID'a.
    Dziękuję wszystkim, którzy się odezwali w tym temacie :)
Dzyszla
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 264
1

Nowa wizualizacja
Umie ktoś powiedzieć, o co może chodzić? Kompiluje się, ale uruchamiając jest:

Kopiuj
node:internal/process/promises:288
            triggerUncaughtException(err, true /* fromPromise */);
            ^

[UnhandledPromiseRejection: This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason "Unrecognized document structure: {"alignment":"right"}".] {
  code: 'ERR_UNHANDLED_REJECTION'
}

nie mam pojęcia czego i gdzie szukać :| po zmianach nic szczególnego nie widzę...

K8
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 6
0

Hej,
mieliście przypadki korygowania danych podmiot3?
Z jednej stony schema nie przewiduje, z drugiej korekta do zera i nowa faktura jest niezasadna i problematyczna księgowo.

ME
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2
0

Hej,

Czy mieliście kiedyś potrzebę skorygowania samej sekcji Odliczenia/Obciążenia? Mam klienta, który niepotrzebnie wpisał do Obciążeń pewną opłatę na 100PLN. Teraz chce wystawić korektę usuwającą to obciążenie i mam problem z tym jakie wartości powinienem wstawić w DoZaplaty/DoRozliczenia ponieważ z jednej strony logiczne byłoby wstawienie 100PLN w DoRozliczenia, z drugiej strony nie jest to zgodne z opisem "Podaje się kwotę nadpłaconą do rozliczenia/zwrotu stanowiącą wynik powiększenia kwoty należności ogółem, wynikającej z faktury (P_15) o sumę obciążeń i pomniejszenia jej o sumę odliczeń" ponieważ zarówno P_15 jak i SumaObciazen i SumaOdliczen mam teraz na 0

Oczywiście odpowiedź z pomocy technicznej ograniczyła się do zacytowania powyższego opisu...

S8
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 106
0

Hm też zgłaszają Wam ze na nowych wydrukach nie ma stawki vat w pozycjach ?

TR
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: 700m n.p.m.
  • Postów: 687
0

Jeżeli mamy kilka korekt do tej samej faktury:

  • pierwsza korekta obniża wartość o 20 zł brutto
  • druga korekta obniża wartość o 30 zł brutto

Czy w drugiej korekcie w polu P_15 wpisujemy -30, czy robimy podsumowanie z wszystkich poprzednich korekt i powinno być -50?

To dotyczy też oczywiście pól związanych z kwotami netto, oraz VATem.

Mam niejednoznaczne odpowiedzi od AI, i ciężko też dowiedzieć się tego z dokumentacji.

Mirosław Tomczyk
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 7
0

Czy ma ktoś aktualny plik styl.xsl (http://crd.gov.pl/wzor/2025/06/25/13775/) .Chodzi mi o widok faktur jak aktualnie w ksef (xml + xsl->hml)

Mirosław Tomczyk
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 7
0

Witaj Witold:) .Tak idzie mi o "jak w Aplikacji Podatnika" i o ten fragment -->>
<xsl:if test="tns:Fa/tns:Rozliczenie/tns:Odliczenia">
<xsl:variable name="WrapperOdl">
xsl:choose
<xsl:when test="tns:Fa/tns:Rozliczenie/tns:Obciazenia">
<xsl:value-of select="'section-data__wrapper-right'"/>
</xsl:when>
xsl:otherwise<xsl:value-of select="'section-data__wrapper-left'"/></xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="KeepTogetherOdl">
xsl:choose
<xsl:when test="tns:Fa/tns:Rozliczenie/tns:Obciazenia">
<xsl:value-of select="'keep-together to-right to-right--with-margin'"/>
</xsl:when>
xsl:otherwise<xsl:value-of select="'keep-together to-left to-left--with-margin'"/></xsl:otherwise>
</xsl:choose>
</xsl:variable> też to znalazłem i nie miałem pewności czy warto się tym zająć. Dzięki jeszcze raz za rekomendację.

Mirosław Tomczyk
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 7
0

Jeszcze jeden temat, w schemat,xsd mamy ->> <xsd:element name="TypKorekty" type="tns:TTypKorekty" minOccurs="0">
xsd:annotation
xsd:documentationTyp skutku korekty w ewidencji dla podatku od towarów i usług</xsd:documentation>
</xsd:annotation>
</xsd:element>
TypKorekty pole w xml nieobowiązkowe. Czy ma ktoś doświadczenie czy formalnie walidowany(status ok) przez plik xsd plik xml(fa3) może zostać odrzucony w ksef. Tak się dzieje w przypadku np nip formalnie(1-9\d{7}-\d{5}) jest ok(zgodnie z plikiem xsd) ale jest błędny(https://sprawdznip.podatki.gov.pl/) i ksef to odrzuca. Czy mają coś dodatkowego na serwerze ksef, co może odrzucić xml faktuy korygującej gdy nie podamy typKorekty(1,2,3) ??? Na berdyczów nie piszę bo szkoda czasu.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.