Krajowy system e-Faktur

Stefan Olszewski
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3
0
Stefan Olszewski napisał(a):

Jako że jest to mój pierwszy post witam wszystkich bardzo serdecznie.
A teraz do sedna i pytania które mnie nurtują:

  1. czy szyfrowanie encryptedSymmetricKey używanego przy otwarciu sesji interaktywnej oraz Tokena KsEF pobranego w aplikacji MF i używanego do uwierzytelniania wykonuje się tą samą metoda tzn RSA_OAEP z SHA256
  2. W jakim formacie ma być encryptedSymmetricKey wysyłany do szyfrowania (ciąg bajtów, ciąg bajtów przekształcony do HEX, coś innego ) ?

Do zaszyfrowania używam openssl.

Zadałem pytanie o szyfrowanie przy uwierzytelnianiu i szyfrowanie klucza symetrycznego, bo szyfrując klucz symetryczny identycznie jak token+timestamp i wysyłając go wraz z IV aby otworzyć sesję interaktywną otrzymuję:

Kopiuj
{
  "referenceNumber": "20251119-SO-4AE6762000-17B3E3AB18-BA",
  "validUntil": "2025-11-20T09:48:58.5944994+00:00"
}`

Sprawdzam status tej sesji i otrzymuję:

Kopiuj
  "status": {
    "code": 415,
    "description": "Błąd odszyfrowania dostarczonego klucza",
    "details": [
      "Rozszyfrowania klucza symetrycznego zakończone błędem"
    ]
  },
  "validUntil": "2025-11-20T09:48:58.5944994+00:00"
}

W dokumentacji wyczytałem, że szyfrowanie klucza symetrycznego ma być odbywać się algorytmem RSAES-OAEP (padding OAEP z funkcją MGF1 opartą na SHA-256 oraz skrótem SHA-256), token+timestamp zaś algorytmem RSA-OAEP z funkcją skrótu SHA-256 (MGF1), więc to chyba to samo.
Niestety zaszyfrowany tokena+timestamp pozwala się bez problemu uwierzytelnić ale zaszyfrowanie klucza symetrycznego i użycie go do otwarcia sesji już kończy się niepowodzeniem.
Dla porządku zamieszczam jeszcze batch który używam do szyfrowania:

Kopiuj
openssl ^
 pkeyutl ^
 -encrypt ^
 -inkey ksef_public_key.key ^
 -in plik_do_zakodowania.bin^
 -out plik_zakodowany.bin ^
 -pubin ^
 -pkeyopt rsa_padding_mode:oaep ^
 -pkeyopt rsa_oaep_md:sha256

Ma ktoś pomysł co robię źle ?

WS
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 7
0

Witam kolegów i koleżanki
mam następujący problem myślowy

mój ContextToken to

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.
eyJ0eXAiOiJDb250ZXh0VG9rZW4iLCJjaXQiOiJOaXAiLCJjaXYiOiI1NzExMzI3NDQyIiwiYXVtIjoiUXVhbGlmaWVkU2lnbmF0dXJlIiwiYXJuIjoiMjAyNTExMDQtQVUtNDk4RjVBNDAwMC00MEU2NTdCMTFCLUVEIiwic3VkIjoie1wic3ViamVjdElkZW50aWZpZXJcIjp7XCJ0eXBlXCI6XCJOaXBcIixcInZhbHVlXCI6XCI1NzExMzI3NDQyXCJ9LFwiZ2l2ZW5OYW1lXCI6XCJBXCIsXCJzdXJuYW1lXCI6XCJSXCIsXCJzZXJpYWxOdW1iZXJcIjpcIlRJTlBMLTU3MTEzMjc0NDJcIixcImNvbW1vbk5hbWVcIjpcIkEgUlwiLFwiY291bnRyeU5hbWVcIjpcIlBMXCJ9IiwicGVyIjoiW1wiT3duZXJcIl0iLCJwZWMiOiJbXSIsInJvbCI6IltdIiwicGVwIjoiW10iLCJpb3AiOiJbXSIsImV4cCI6MTc2MjI5MjQzMywiaWF0IjoxNzYyMjkxNTMzLCJpc3MiOiJrc2VmLWFwaS10ZSIsImF1ZCI6ImtzZWYtYXBpLXRlIn0.
AF7vg9mJF69rKGXjvr36Jkr9Fj5gqzIpIyfypehEW0Y

co strona jwt.io rozkodowuje na
{"typ":"ContextToken","cit":"Nip","civ":"5711327442","aum":"QualifiedSignature","arn":"20251104-AU-498F5A4000-40E657B11B-ED","sud":"{"subjectIdentifier":{"type":"Nip","value":"5711327442"},"givenName":"A","surname":"R","serialNumber":"TINPL-5711327442","commonName":"A R","countryName":"PL"}","per":"["Owner"]","pec":"[]","rol":"[]","pep":"[]","iop":"[]","exp":1762292433,"iat":1762291533,"iss":"ksef-api-te","aud":"ksef-api-te"}
oczywiście na początku nagłówek
{"alg":"HS256","typ":"JWT"}

jak rozumiem wartość AF7vg9mJF69rKGXjvr36Jkr9Fj5gqzIpIyfypehEW0Y na końcu tokena to SHA256 od rozkodowanego tokena bez nagłówka

tylko mi wychodzi jG8HtpR75wtp5bLtTBbVs8B8lSEG72jDRLpFr1kbTtA= kiedy próbuję z tej wartości (niezakodowany Payload tokena) uzyskać SHA256

ktoś zechciałby podpowiedzieć gdzie popełniam błąd

Krzysztof Stasiak
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1
0

Czy kogoś też drażni schema fa(3) chodzi mi o głownie o xsl, Nie mam wielkiego doświadczenia z xml (używam do wymiany danych między integracjami i w zasadzie tyle)
Chciałem zrobić wizualizację xml do xhtml (php:XSLTProcessor), ale to nie wygląda dobrze.
Zakładałem że ta wizualizacja będzie spójna z tym co jest w aplikacji podatnika po kliknięciu pobierz html/pdf (tzn przypuszczałem że nie będzie tam qr i nr-ksef, ale reszta myślałem że będzie w miarę podobna).
Nie jest to problem zrobić własną wizualizację, ale po coś te style xsl chyba są? czy to mój brak doświadczenia i błędne myślenie, czy ktoś faktycznie po drugiej stronie zrobił to na szybko?

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

Czy ja dobrze widzę, zlikwidowali termin na wysyłkę faktury do 15 następnego miesiąca i teraz jest 1 dzień dla trybu offline (oprócz awaryjnego)?

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

Pewnie głupie pytanie ale już się zakręciłem: czy poza danymi z api/v2/sessions/{referenceNumber}/invoices gdzieś jeszcze można zobaczyć/sprawdzić czy i ew. jak konkretna faktura ma ustawione pole "invoicingMode"? (czyli offline/online...)
Patrzę, patrzę... i nie widzę ;)
EDIT: chodzi o wysłane faktury.

EDIT 2: Jako, że wcześniej był poruszany temat offline/online, to zrobiłem test. Dla zainteresowanych:: otworzyłem parę minut temu sesje interaktywną, wysłałem fakturę z P_1=dzisiaj i ustawiłem offlineMode=true. Zamknąłem sesję. Zarówno w api/v2/sessions/{referenceNumber}/invoices jak i przeglądając w aplikacji web faktura ta ma oznaczenie "offline".

K7
  • Rejestracja: dni
  • Ostatnio: dni
0

Panowie potrzebuję pomocy
Mam problem z Autoryzacją w KSEF
Zrobiłem to w PHP i działa więc token jest prawidłowy.

Mam niestety ograniczenie Net Framework 4.8 i nie mogę korzystać z przykładu.

Podpowiedzcie jak w 4.8 zrobić szyfrowanie OaepSHA256.
Z tego co wyczytałem można to zrobić poprzez klasę

RSACng

Kopiuj




RSACryptoServiceProvider RSA = new RSACryptoServiceProvider();
RSACng RSACng = new RSACng();

string encryptedToken = Convert.ToBase64String(
    RSACng.Encrypt(tokenBytes, RSAEncryptionPadding.OaepSHA256)
);

Ale jak załadować klucz publiczny

Lub tak

Kopiuj
var plain = Encoding.UTF8.GetBytes(tokenWithTimestamp);
var pemReader = new PemReader(new StringReader(Convert.ToString(Convert.FromBase64String(klucz.Certificate))));            
var rsaPub = (Org.BouncyCastle.Crypto.Parameters.RsaKeyParameters)pemReader.ReadObject();
// create encrypter
var encrypter = new OaepEncoding(new RsaEngine(), new Sha256Digest(), new Sha256Digest(), null);
encrypter.Init(true, rsaPub);
var cipher = encrypter.ProcessBlock(plain, 0, plain.Length);

„Not an RSA key”

TZ
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1
0

Cześć wszystkim.
Próbuję autoryzować się certyfikatem KSeF dla Demo. Po zalogowaniu się do wersji DEMO wygenerowałem certyfikaty Authentication i Offilne, dla każdego z nich otrzymałem *.crt i *.key.
W jaki sposób ich użyć, bo w dokumentacji nic na ten temat nie widzę?

Używam Biblioteki .NET udostępnionej przez MF i .NET9 w C#.
Próbowałem z tych plików *.crt i *.key utworzyć certyfikat pfx (openssl.exe pkcs12 -export -in "C:\KSeF\demo.crt" -inkey "C:\KSeF\demo.key" -out "C:\KSeF\deno_cert.pfx" -passout pass:*****) ale i to nie pomogło, ponieważ przy podpisywaniu XML za pomocą Sign z KSeF.Client\Api\Services\SignatureService.cs w linii signedXml.ComputeSignature();
otrzymuję błąd: System.Security.Cryptography.CryptographicException: 'SignatureDescription could not be created for the signature algorithm supplied.'

Dla testów, gdzie miałem własny certyfikat pxf wszystko działało.

Może ktoś z Was rozwiązał ten problem? Za każdą pomoc już teraz dziękuję

TA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 13
0

w KSEF TEST:

Wykonuję auth/challenge
i dostaję: {"challenge":"20251120-CR-25F0F94000-6096D2D49A-15","timestamp":"2025-11-20T11:03:04.3402883+00:00"}
timestamp 2025-11-20T11:03:04.3402883+00:00 zamieniam na 1763636584340, łączę z tokenem:
20251105-EC-316437C000-FF89B9FC39-EF|nip-7272387999|fc976b2ac2e045548b4a791cd590a74f907507ec009e4182bea11f66fdbe3d66|1763636584340
zapisuję do tekst_in.txt
wykonuję polecenie (różne ustawienia próbowałem, używam libssl-3.dll):
openssl pkeyutl -encrypt -inkey publicKey.pem -in tekst_in.txt -out tekst_out.txt -pubin -pkeyopt rsa_oaep_md:sha256
openssl base64 -in tekst_out.txt -out base64_out.txt

jako publicKey.pem używam (myślę, że jest dobry zresztą pobrałem certyfikat z security/public-key-certificates i przekonwertowałem na różne sposoby i nic to zmienia):
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuWosgHSpiRLadA0fQbzshi5TluliZfDsJujPlyYqp6A3qnzS3WmHxtwgO58uTbemQ1HCC2qwrMwuJqR6l8tgA4ilBMDbEEtkzgbjkJ6xoEqBptgxivP/ovOFYYoAnY6brZhXytCamSvjY9KI0g0McRk24pOueXT0cbb0tlwEEjVZ8NveQNKT2c1EEE2cjmW0XB3UlIBqNqiY2rWF86DcuFDTUy+KzSmTJTFvU/ENNyLTh5kkDOmB1SY1Zaw9/Q6+a4VJ0urKZPw+61jtzWmucp4CO2cfXg9qtF6cxFIrgfbtvLofGQg09Bh7Y6ZA5VfMRDVDYLjvHwDYUHg2dPIk0wIDAQAB
-----END PUBLIC KEY-----

potem auth/ksef-token
{"challenge": "20251120-CR-25F0F94000-6096D2D49A-15",
"contextIdentifier": {
"type": "Nip",
"value": "7272387999"
},
"encryptedToken": "Tutaj tekst z base64_out.txt"}
i dostaję: {"referenceNumber":"20251120-AU-25F4DB4000-589E8E3C4B-5B","authenticationToken":{"token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0eXAiOiJBdXRoZW50aWNhdGlvblRva2VuIiwiYXJuIjoiMjAyNTExMjAtQVUtMjVGNERCNDAwMC01ODlFOEUzQzRCLTVCIiwiZXhwIjoxNzYzNjM5MzAwLCJpYXQiOjE3NjM2MzY2MDAsImlzcyI6ImtzZWYtYXBpLXRlIiwiYXVkIjoia3NlZi1hcGktdGUifQ.S57YdgSxgnG4CY6GtCc3XMo9t-eNb6LPs7D_hPChYNs","validUntil":"2025-11-20T11:48:20.2576039+00:00"}}

następnie auth/20251120-AU-25F4DB4000-589E8E3C4B-5B
i dostaję: {"startDate":"2025-11-20T11:03:20.2330976+00:00","authenticationMethod":"Token","status":{"code":450,"description":"Uwierzytelnianie zakończone niepowodzeniem z powodu błędnego tokenu","details":["Invalid token encryption."]}}

Kombinuję i ciągle mam 450
Szyfruję za pomocą openssl, bo chciałem najpierw uzyskać dobry efekt, a nie wiem jak zaszyfrować za pomocą certyfikatu z security/public-key-certificates w Delphi 10.4

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

Takie tam info dla "wzrokowców", którzy walczą z QR "Kod I":
a) w dokumentacji https://github.com/CIRFMF/ksef-docs/blob/main/kody-qr.md#generowanie-linku opisano:
Link składa się z:
- adresu URL: https://ksef-test.mf.gov.pl/client-app/invoice,
- daty wystawienia faktury (pole P_1) w formacie DD-MM-RRRR,
- NIP-u sprzedawcy,
- skrótu pliku faktury obliczonego algorytmem SHA-256 (wyróżnik pliku faktury) w formacie Base64URL.

Co prawda nie napisano "składa się kolejno z" ale jak ktoś odhacza wg podanej kolejności, to się przejedzie (najpierw w linku jest nip a potem data), bo już nieco niżej przykładowy link to pokazuje:
https://ksef-test.mf.gov.pl/client-app/invoice/1111111111/01-02-2026/UtQp9Gpc51y-u3xApZjIjgkpZ01js-J8KflSPW8WzIE
b) inna jest prezentacja tego kodu w PDF niż w HTML w aplikacji web - ale link docelowy z nich jest taki sam (tak piszę bo jak sobie porównamy z web a swoje żeby się od razu nie przestraszyć, że jest źle)
;)

NK
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1
0

Cześć, czy ktoś z was próbował używać implementacji generatora PDF dodanego na dniach do klienta csharp? Osobiście wyskakują mi błędy związane z nodem i chciałbym się upewnić czy jest sens żeby to debugować czy może implementacja jest jeszcze po prostu niedorobiona. Zanim ta opcja się pojawiła w kliencie, utworzyłem lokalnie działające api webowe do konwersji .xml do .pdf na podstawie aplikacji ksef-pdf-generator i teraz jestem w rozkroku; czy brnąć w to dalej czy czekać na integrację z oficjalnym klientem czy może już teraz to jest gotowa a ja jestem dzbanem.

Sorry za chaos posta ale szukam kogokolwiek kto próbował ten moduł KSeF.Client.Tests.PdfTestApp odpalać.

JK
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 39
0

Jak robicie podgląd faktury, która jeszcze nie jest wysłana do ksef? Ktoś może chcieć zobaczyć jak będzie wyglądała bo może wygodniej jej sprawdzić PDFa niż formularz w aplikacji, albo bo po prostu chce. Jeśli już sobie taki podgląd otworzy to nic nie stoi na przeszkodzie, żeby wysłać taką fakturę do klienta, czyli wg. tego co tu niektórzy piszą muszę ją wtedy już wysłać do ksef jako offline. Czy w momencie generowania podglądu od razu oznaczacie fakturę w systemie jako offline? Czy może generujecie podgląd z jakimś watermarkiem? Czy jeszcze inaczej?

JR
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 25
0

Cześć.
Czy mozna pobrać upo dla wysłanej fv na podstawie nr_ksef?

GS
  • Rejestracja: dni
  • Ostatnio: dni
0

Przeglądam dokumentację API KSEF v2.0 pod kątem pobierania z KSeF paczki faktur zawierającej wyłącznie faktury wystawione dla podatnika (Podmiot2) , ale widzę że nie ma takiej możliwości.
Filtry w żądaniu pobrania paczki faktur mają bardzo niewielkie możliwości zawężenia pobranego zbioru faktur i sprowadzają się tylko do daty dokumentu.
Dopiero po stronie aplikacji można wyselekcjonować pobrane faktury wg treści faktury (Podmiot2).
Można pobrać metadane faktur z warunkiem filtrowania na polu Podmiot2 (nabywca) i potem pojedynczo pobierać fakturę po fakturze

B1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1
0

Część,

Próbuje wysłać fakturę z użyciem klienta nuget ksef.
Tworzę request analogicznie jak jest to robione w przykładach (testach) klienta ksef. Niestety przy próbie wysyłki na metodzie pobierania faktury dla sesji dostaje błąd 435 „Błąd odszyfrowania pliku”
Details „plik niepoprawnie zaszyfrowany”
Bardzo mnie to martwi, bo szyfrowaniem zajmuje się kod z klienta i nie ma tam za bardzo możliwości konfiguracji i ingerencji w szyfrowanie. Może mnie ktoś nakierować co mogę robić źle?

Kopiuj
var encryptionData = ksefCryptoService.GetEncryptionData();
var invoiceBytes = Encoding.UTF8.GetBytes(invoiceToSend.InvoiceXml);
var encryptedInvoice = ksefCryptoService.EncryptBytesWithAES256(invoiceBytes,
    encryptionData.CipherKey, encryptionData.CipherIv);
var invoiceMetadata = ksefCryptoService.GetMetaData(invoiceBytes);
var encryptedInvoiceMetadata = ksefCryptoService.GetMetaData(encryptedInvoice);
var sendOnlineInvoiceRequest = SendInvoiceOnlineSessionRequestBuilder
    .Create()
    .WithInvoiceHash(invoiceMetadata.HashSHA, invoiceMetadata.FileSize)
    .WithEncryptedDocumentHash(encryptedInvoiceMetadata.HashSHA, encryptedInvoiceMetadata.FileSize)
    .WithEncryptedDocumentContent(Convert.ToBase64String(encryptedInvoice))
    .Build();
AE
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 6
0

Chciałem zapytać tak orientacyjnie - jak tworzycie xml faktury to tworzycie od podstaw? Czy korzystacie z templatów? Jak z templatów to rozumiem, że nieużywane części usuwane są?

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

Witam wszystkich,

przy próbie otwarcia sesji (/api/v2/sessions/online) dostaję odpowiedź 403. Środowisko przed-produkcyjne (demo) - https://ksef-demo.mf.gov.pl.

Po kolei lecę z takimi wywołaniami:

  1. /api/v2/auth/challenge
  2. /api/v2/auth/xades-signature (tutaj przesyłam, podpisane wcześniej wygenerowanym certyfikatem, dane autoryzacyjne) - certyfikat 'Authentication'
  3. /api/v2/auth/20251121-XX-XXXXXXXXXX-XXXXXXXXXX-XX
  4. /api/v2/auth/token/redeem (zapisuje sobie w sesji token)
  5. /api/v2/sessions/online - błąd 403

Token na pewno podstawiam prawidłowym bo bez problemu mogę wywołać /api/v2/certificates/limits czy chociażby /api/v2/certificates/retrieve.

Na wersji testowej działał wszystko prawidłowo. Na przed produkcyjnej 403. Miał ktoś podobny przypadek?

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

Hej. Czy testował ktoś w ksefie taki scenariusz:

  1. Wystawiam fakturę VAT numer FV001
  2. Wystawiam fakturę VAT numer FV003
  3. Oj oj oj, ominąłem numer faktury więc wystawiam fakturę korekta VAT numer KOR001 do faktury FV003 z poprawnym numerem FV002
  4. Wystawiam fakturę VAT numer FV???? - zakładałbym, że FV003 bo teraz jest to poprawny numer. Jednak dostaję w statusie error, że to duplikat faktury z kroku 2.
    Może w prawdziwym życiu też jakoś inaczej się to ogarnia... Jaki flow powinien być w tej sytuacji? I ewentualnie co powinienem w numeracji faktur uwzględnić jeśli ktoś wie ;)?

[edit]
Błędna faktura z kroku 2 - po przetworzeniu ma nr ksef 7335255579-20251121-0100E05BED4B-0B:

Kopiuj
<Naglowek>
<KodFormularza kodSystemowy="FA (3)" wersjaSchemy="1-0E">FA</KodFormularza>
<WariantFormularza>3</WariantFormularza>
<DataWytworzeniaFa>2025-11-21T12:03:25+01:00</DataWytworzeniaFa>
</Naglowek>
<Podmiot1>
<DaneIdentyfikacyjne>
<NIP>7335255579</NIP>
<Nazwa>Domyślny sprzedawca</Nazwa>
</DaneIdentyfikacyjne>
<Adres>
<KodKraju>PL</KodKraju>
<AdresL1>ul. Sprzedawcowa</AdresL1>
<AdresL2>00-000 Sprzedawcowo</AdresL2>
</Adres>
</Podmiot1>
<Podmiot2>
<DaneIdentyfikacyjne>
<NIP>9526304114</NIP>
<Nazwa>kupujący</Nazwa>
</DaneIdentyfikacyjne>
<Adres>
<KodKraju>PL</KodKraju>
<AdresL1>kup 2</AdresL1>
<AdresL2>22-222 kupcowo</AdresL2>
</Adres>
<JST>2</JST>
<GV>2</GV>
</Podmiot2>
<Fa>
<KodWaluty>PLN</KodWaluty>
<P_1>2025-11-21</P_1>
<P_2>FV003</P_2>
<P_6>2025-11-21</P_6>
<P_13_1>3.25</P_13_1>
<P_14_1>0.75</P_14_1>
<P_15>4</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>sdfsdf</P_7>
<P_8A>2</P_8A>
<P_8B>2</P_8B>
<P_9B>2</P_9B>
<P_11A>4</P_11A>
<P_12>23</P_12>
</FaWiersz>
<Platnosc>
<RachunekBankowy>
<NrRB>PL44109024023458628838425744</NrRB>
<NazwaBanku>banq S.A.</NazwaBanku>
</RachunekBankowy>
</Platnosc>
</Fa>
<Stopka>
<Rejestry>
<KRS>1234567890</KRS>
</Rejestry>
</Stopka>
</Faktura>

Korekta :

Kopiuj
<Faktura>
<Naglowek>
<KodFormularza kodSystemowy="FA (3)" wersjaSchemy="1-0E">FA</KodFormularza>
<WariantFormularza>3</WariantFormularza>
<DataWytworzeniaFa>2025-11-21T12:14:42+01:00</DataWytworzeniaFa>
</Naglowek>
<Podmiot1>
<DaneIdentyfikacyjne>
<NIP>7335255579</NIP>
<Nazwa>Domyślny sprzedawca</Nazwa>
</DaneIdentyfikacyjne>
<Adres>
<KodKraju>PL</KodKraju>
<AdresL1>ul. Sprzedawcowa</AdresL1>
<AdresL2>00-000 Sprzedawcowo</AdresL2>
</Adres>
</Podmiot1>
<Podmiot2>
<DaneIdentyfikacyjne>
<NIP>9526304114</NIP>
<Nazwa>kupujący</Nazwa>
</DaneIdentyfikacyjne>
<Adres>
<KodKraju>PL</KodKraju>
<AdresL1>kup 2</AdresL1>
<AdresL2>22-222 kupcowo</AdresL2>
</Adres>
<JST>2</JST>
<GV>2</GV>
</Podmiot2>
<Fa>
<KodWaluty>PLN</KodWaluty>
<P_1>2025-11-21</P_1>
<P_2>KOR/001/2025</P_2>
<P_13_1>0</P_13_1>
<P_14_1>0</P_14_1>
<P_15>0</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>KOR</RodzajFaktury>
<PrzyczynaKorekty>błędny numer</PrzyczynaKorekty>
<DaneFaKorygowanej>
<DataWystFaKorygowanej>2025-11-21</DataWystFaKorygowanej>
<NrFaKorygowanej>FV003</NrFaKorygowanej>
<NrKSeF>1</NrKSeF>
<NrKSeFFaKorygowanej>7335255579-20251121-0100E05BED4B-0B</NrKSeFFaKorygowanej>
</DaneFaKorygowanej>
<NrFaKorygowany>FV002</NrFaKorygowany>
<FP>1</FP>
<FaWiersz>
<NrWierszaFa>1</NrWierszaFa>
<P_7>sdfsdf</P_7>
<P_8A>2</P_8A>
<P_8B>2</P_8B>
<P_9B>2</P_9B>
<P_11A>4</P_11A>
<P_12>23</P_12>
<StanPrzed>1</StanPrzed>
</FaWiersz>
<FaWiersz>
<NrWierszaFa>1</NrWierszaFa>
<P_7>sdfsdf</P_7>
<P_8A>2</P_8A>
<P_8B>2</P_8B>
<P_9B>2</P_9B>
<P_11A>4</P_11A>
<P_12>23</P_12>
</FaWiersz>
<Platnosc>
<RachunekBankowy>
<NrRB>PL44109024023458628838425744</NrRB>
<NazwaBanku>banq S.A.</NazwaBanku>
</RachunekBankowy>
</Platnosc>
</Fa>
<Stopka>
<Rejestry>
<KRS>1234567890</KRS>
</Rejestry>
</Stopka>
</Faktura>
SI
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 28
0

Ja na bardzo szybko:

Kopiuj
    "status": {
        "code": 445,
        "description": "Błąd weryfikacji, brak poprawnych faktur"
    },
    "validUntil": "2025-11-22T00:20:29.5144842+00:00",
    "invoiceCount": 1,
    "successfulInvoiceCount": 0,
    "failedInvoiceCount": 1
}

Chciałbym się upwenić, jeżeli dostaję taki komunikat po wywołaniu Sessions/{referencenumber} po wysłaniu paczki sesji batchowej, to oznacza że wysyłka przebiegła poprawnie, tylko struktura faktur była zła?

Johann
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1
0

Implementuję własną wizualizację faktur KSeF na potrzeby firmowego systemu. Większość funkcjonalności mam już gotową, ale zatrzymałem się na generowaniu linku wykorzystywanego w kodzie QR, np.: https://ksef-test.mf.gov.pl/client-app/invoice/7918510681/11-11-2025/0sofqgdMh9eo0US4HpqPSNdRVR1G7zqBZOpgaBAGV7s
Zastanawiam się, na jakiej podstawie należy wyliczyć ostatni fragment URL, czyli wartość skrótu: 0sofqgdMh9eo0US4HpqPSNdRVR1G7zqBZOpgaBAGV7s
Ktoś ma jakiś pomysł?

V2
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 33
0

W KSeF-online.yaml do KSeF 1.0 było napisane, że data (i czas) końcowa okresu podawanego w filtrach, to maksymalnie aktualna plus 6 godzin. Czy w KSeF 2.0 jest tak samo, i czy jest to gdzieś napisane w dokumentacji? Bo nie mogę znaleźć.

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

Hej wszystkim. Weźcie powiedzcie bo nie mogę się zdecydować. Co robicie z xml'em po wysłaniu faktury? Trzymacie ten plik, czy tylko zapisujecie datę wytworzenia żeby ewentualnie odtworzyć xml, czy w ogóle nie trzymacie, czy jeszcze coś innego?

Dzyszla
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 205
0

https://github.com/CIRFMF/ksef-docs/issues/184#issuecomment-3563775396

Obecnie pracujemy nad implementacją rozwiązania optymalnego dla tak dużego i złożonego systemu jakim jest KSeF. Chcielibyśmy poinformować, że na środowisku testowym od pewnego czasu dostępna jest już wersja, która minimalizuje to zjawisko w przypadku nowo przysłanych faktur. W niedługim czasie dostępna będzie wersja docelowa trwale eliminująca ten problem.

Cóż tam pod maską jeszcze zachodzi i zachodzić będzie?
W teorii wszystko wiadomo, ale nic nie działa.
W praktyce wszystko jakoś się trzyma, choć nikt nie wie, jakim cudem.

Oby w lutym nie połączyli błędnie teorii z praktyką :)

JR
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 25
0

Autoryzuje się ktoś certyfikatem KSEF w Delphi, przez Openssl?
Potrzebuję to ogarnąć.

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

Jakie stosujecie kryterium uznania faktury za offline/offline 24 ?

N1ebieski
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 27
0

Pytanie o faktury offline.

  1. Jeśli wysyłam fakturę "online" (czyli z aktualną datą wystawienia) i powiedzmy KSEF zwraca błąd tej faktury to czy mogę ją uznać za nieistniejącą? W sensie czy mogę następnego dnia poprawić tę fakturę i wysłać jako nową, znów jako "online" z aktualną datą wystawienia?

  2. Jeśli wysyłam fakturę "online", ale z datą wystawienia o 1 dzień wcześniejszą, więc system KSEF z automatu oznacza ją jako "offline", ale ja nie przekazałem jej jeszcze klientowi w postaci kodów QR i KSEF zwraca błąd tej faktury to czy muszę bawić się w korektę techniczną z chainem do poprzedniej?

Jan Zynio
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3
0

Programisze:

Ma już parę miesięcy ale za każdym razem bawi tak samo :D

Dzyszla
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 205
0

Trochę prawniczych tematów? Bo są już dostępne treści interpelacji w/s KSeF. To co ciekawesze fragmenty:

Najpoważniejsze wątpliwości budzi wprowadzenie do podręcznika pojęcia tzw. potwierdzenia transakcji, które miałoby być wystawiane przed dokonaniem czynności opodatkowanej i jeszcze przed wystawieniem faktury ustrukturyzowanej. Z konstrukcji przedstawionej w dokumencie wynika, że miałby to być dokument generowany i przekazywany nabywcy jeszcze przed powstaniem obowiązku podatkowego. Takie rozwiązanie nie znajduje podstawy w przepisach prawa podatkowego i może prowadzić do mylnego przekonania, że wystawienie tego rodzaju dokumentu ma skutki prawne tożsame z wystawieniem faktury w rozumieniu art. 2 pkt 31 ustawy z dnia 11 marca 2004 r. o podatku od towarów i usług.
Na jakiej podstawie Ministerstwo Finansów wprowadziło do materiałów dotyczących KSeF pojęcie „potwierdzenia transakcji”, które nie wynika z przepisów ustawy o VAT, i jakie konsekwencje prawne ma – zdaniem resortu – posługiwanie się tym terminem w obrocie gospodarczym?

(interpelacja 13544 autorstwa Janusza Kowalskiego)
Mam nadzieję, że się wycofają z tego durnego świstka (bo nawet dokumentem tego nie można nazwać).

Udostępnione w październiku 2025 r. środowisko testowe (przedprodukcyjne) KSeF 2.0 niemal natychmiast ujawniło awarie i problemy techniczne. Sytuacja ta podważa wiarygodność zapewnień o stabilności oraz gotowości systemu. Wprowadzenie obowiązku korzystania z wadliwego narzędzia grozi paraliżem procesów fakturowania w skali całej gospodarki, prowadzącym do zatorów płatniczych, błędów w rozliczeniach i chaosu operacyjnego.
Czy w Ministerstwie Finansów dostrzega się, że KSeF jest projektem niedopracowanym, ryzykownym i wdrażanym, w sposób który zagraża stabilności polskiej gospodarki?
Czy ministerstwo rozważa wstrzymanie prac nad obligatoryjnym wdrożeniem KSeF do czasu pełnego rozwiązania zidentyfikowanych problemów technicznych i wydajnościowych?
Czy ministerstwo rozważa utrzymanie KSeF jako systemu dobrowolnego do czasu pełnego rozwiązania zidentyfikowanych problemów technicznych i wydajnościowych?

(interpelacja 13534 autorstwa Bartłomieja Pejo)
Generalnie cała interpelacja jest bardzo rozbudowana.

Z naszego (mojego) punktu widzenia, wciąż jednak zbyt mały nacisk kładzie się na kwestie techniczne i nieprzygotowanie. Wspomina się o tym dość ogólnie.

W czwartek pojawiły się też dwie nowe intrygujące interpelacje: nr 13661 autorstwa aż 10 posłów oraz 13656 w/s przesunięcia KSeF autorstwa 5 posłów. Niestety, treści na ten moment nieznane.

MA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1
0

Dzień drobny 😀

Czy ktoś dostał taki błąd:
{
"continuationToken": null,
"invoices": [
{
"ordinalNumber": 1,
"invoiceNumber": null,
"ksefNumber": null,
"referenceNumber": "20251123-EE-363489C000-42A881B09A-E0",
"invoiceHash": "mFTr59kq5wLxhHET8Q2yyj+RttL0xTRq+yPWll08zpg=",
"invoiceFileName": null,
"acquisitionDate": null,
"invoicingDate": "2025-11-23T15:47:18.3009137+00:00",
"permanentStorageDate": null,
"upoDownloadUrl": null,
"status": {
"code": 430,
"description": "Błąd weryfikacji pliku faktury",
"details": [
"Wykryto BOM w pliku."
]
},
"invoicingMode": "online",
"upoDownloadUrlExpirationDate": null
}
]
}
Nie wiem o co chodzi. W pliku nie ma ani jednego "ukrytego" znaku. Żeby było śmieszniej w KSeF API na stronie plik się wczytuje i po przejściu wszystkich kroków wystawiania faktury, faktura dostaje numer KSeF ID (wszystko się dzieje w środowisku DEMO) Będę wdzięczny za każdą sugestię.
Pozdr

N1ebieski
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 27
1

Drobne info dotyczące klienta PHP. W wersji v0.14 dodałem integrację z https://github.com/lukasz-wojtanowski-softvig/ksef-pdf-generator/tree/feature/cli więc możliwe jest generowanie plików PDF faktur z kodami QR oraz PDF dla UPO.

Instrukcja w README:

https://github.com/N1ebieski/ksef-php-client?tab=readme-ov-file#generate-pdf-for-the-invoice-and-the-upo-file
https://github.com/N1ebieski/ksef-php-client?tab=readme-ov-file#generate-pdf-for-the-offline-invoice-file-with-both-qr-codes

Ogromne podziękowania dla Łukasza za fantastyczną pracę. Niestety nie mamy co liczyć na akceptację PR ze strony KSEFu > https://github.com/CIRFMF/ksef-pdf-generator/pull/5#issuecomment-3562488370

Załączam przykładową fakturkę z kodami QR wygenerowaną przez klienta.

INV-69234568441C4.pdf

V2
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 33
0

Przypuśćmy że użytkownik wystawił fakturę w Aplikacji Podatnika, a potem chce dane tej faktury, w tym daty przesłania i przyjęcia do KSeF oraz numer sesji, zapisać także (odzyskać) w aplikacji fakturującej, której zwykle używa. Zna tylko numer KSeF faktury, bo ma go na jej wydruku. Jakie endpointy i jak odpytać żeby mu w tym pomóc? Ja już do KSeF 1.0 zgłaszałem postulat żeby był endpoint zwracający numer sesji dla podanego numeru KSeF. Jak widać - nie ma. @Dzyszla pisał że można w tym celu pobrać listę sesji. Nie za bardzo. Z numeru KSeF możemy co prawda wziąć datę, ale, ponieważ sesja interaktywna może trwać 12 godzin, trzeba by sprawdzić sesje z dwóch dni. Może tego być dużo. Gdyby potem dla każdej z tych sesji pobrać jej faktury lub pobrać UPO faktury z sesji na podstawie numeru KSeF, to praktycznie nie ma szans żeby na to pozwoliły limity. Ma ktoś pomysł jak to rozwiązać?

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.