Hej, sprawdzał ktoś status faktury po jakimś dłuższym czasie? Chodzi mi o to, że wysyłam fakturę, a potem sprawdzam jej status na /api/online/Invoice/Status/{NrKSeF} i dostaję normalnie odpowiedź, ale jak zamknę sesje i otworzę nową to mam błąd, że faktura o podanym numerze nie istnieje, z kolei jak użyję tokenu z poprzedniej sesji to mam błąd, że sesja została już zakończona. Das się jakoś sprawdzić status wysłanej faktury po zamknięciu sesji w której została ona wysłana?
Cześć
Mam problem z wysyłką wsadową. W batch/Finish dostaję
"exceptionCode": 21001,
"exceptionDescription": "Nieczytelna treść."
Czy to dotyczy błędnego Finish'a czy tego co wysłałem w Upload?
Czy dobrze rozumiem że w Upload robię PUT i dane binarne pliku zaszyfrowanego? ... czy zamienione na base64?
Dziękuję za odpowiedź
Witam
Dodaję korektę do faktury FVAT.
Dodając taką korektę w XML mam pole NrKSeF. Poniżej wycinek XML-a
<DaneFaKorygowanej>
<DataWystFaKorygowanej>2023-09-04</DataWystFaKorygowanej>
<NrFaKorygowanej>FV2023/09/04</NrFaKorygowanej>
<NrKSeF>1</NrKSeF>
<NrKSeFFaKorygowanej>1130128711-20230904-1E5B736D80A0-32</NrKSeFFaKorygowanej>
</DaneFaKorygowanej>
Według dokumentacji NrKSeF jest to:
"Numer identyfikujący fakturę korygowaną w KSeF"
Z tym że numerem identyfikującym faktruę VAT jest NrKSeFFaKorygowanej
Dodawałem przez https://ksef.mf.gov.pl/web/ i w tym miejscu w XML wstawił jedynkę.
Skąd mam pobrać wartość: NrKSeF ?
Gdy pobieram listę faktur: api/online/Query/Invoice/Sync
to faktura której dotyczyła korekta nie ma żadnego numeru 1
Witam,
Czy jest ktoś wstanie podpowiedzieć, jak powinno wyglądać body POST https://ksef-test.mf.gov.pl/api/online/Invoice/Send.
Na webinarze zobaczyłem, że używali takiego formatu i pytanie, czy coś się zmieniło, czy może to jest poprawna forma:
{
"invoiceHash": {
"hashSHA": {
"algorithm": "SHA-256",
"encoding": "Base64",
"value": "ndeJt2MSJXAPbidtqM8Hnq7c2iIa7qY/y/dgkJUaQT4="
},
"fileSize": 2135
},
"invoicePayload": {
"payloadtype": "plain",
"invoiceBody": "Base64 kodowanie faktury xml"
}
}
Edit1:
W yaml widzę coś takiego:
request example:
description: Przykład żądania
summary: Przykład żądania
value:
invoiceHash:
hashSHA:
algorithm: SHA-256
encoding: Base64
value: ndeJt2MSJXAPbidtqM8Hnq7c2iIa7qY/y/dgkJUaQT4=
fileSize: 2135
invoicePayload:
type: encrypted
encryptedInvoiceHash:
hashSHA:
algorithm: SHA-256
encoding: Base64
value: CpecTP+QmTAbzC4i1rlJ0VKVZwJSXp/cKxkkvdElFG0=
fileSize: 2144
encryptedInvoiceBody: {przykład}
Pozdrawiam.
Ma ktoś może jakikolwiek przykład pliku w strukturze FA(2), który KSeF zaakceptuje, albo wie czy KSeF gdzieś udostępnił przykładowy taki plik jak to zrobili dla struktury logicznej FA(1) ?
Pytanie:
Jeżeli chodzi o zakres dat gdzie jest mała ilość faktur to 3-4 min i generuję się odpowiedz online/Query/Invoice/Async/Status z kodem 200,
natomiast dla przedziału dat gdzie jest ponad 10 tyś FV, po kilku godzinach nadal zwrotka 325 "Zakończenie etapu podziału na podzapytania oraz inicjalizacja podprocesów przygotowania części odpowiedzi". czy też tak macie?
W końcu MF wydało opis do FA(2): https://www.gov.pl/web/kas/krajowy-system-e-faktur
Przepraszam za spam, ale mam taki xml, który próbuję wysłać do KSef, ale ciągle mam błąd schema. Czy jesteście w stanie mi powiedzieć co jej nie tak ?
Wczytując ten xml do Ksef ich apki, mam info że plik zawiera błędy, ale wszystko się wczytuje i przechodząć do wystawienia dokumentu nic nie zmieniam. Więc nie rozumiem dlaczego to nie działa.
This XML file does not appear to have any style information associated with it. The document tree is shown below.
<Faktura xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://crd.gov.pl/wzor/2023/06/29/12648/">
<Naglowek>
<KodFormularza kodSystemowy="FA (2)" wersjaSchemy="1-0E">FA</KodFormularza>
<WariantFormularza>2</WariantFormularza>
<DataWytworzeniaFa>2023-09-07T07:02:52.02Z</DataWytworzeniaFa>
<SystemInfo>System testowy</SystemInfo>
</Naglowek>
<Podmiot1>
<PrefiksPodatnika>PL</PrefiksPodatnika>
<DaneIdentyfikacyjne>
<NIP>5200485401</NIP>
<Nazwa>Najlepszy Bank na świecie</Nazwa>
</DaneIdentyfikacyjne>
<Adres>
<Kodkraju>PL</Kodkraju>
<AdresL1>ul. Krakowska 12/1 30-001 Kraków</AdresL1>
</Adres>
</Podmiot1>
<Podmiot2>
<DaneIdentyfikacyjne>
<NIP>1182089465</NIP>
<Nazwa>Miasto Świdnik</Nazwa>
</DaneIdentyfikacyjne>
<Adres>
<Kodkraju>PL</Kodkraju>
<AdresL1>Rynek Główny 2 03-332 Świdnik</AdresL1>
</Adres>
</Podmiot2>
<Fa>
<KodWaluty>PLN</KodWaluty>
<P_1>2023-09-07</P_1>
<P_2>00012/09/2023/P</P_2>
<P_6>2023-09-07</P_6>
<P_13_1>100.00</P_13_1>
<P_14_1>23.00</P_14_1>
<P_15>123.00</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>Serwis</P_7>
<P_8A>szt</P_8A>
<P_8B>1.00</P_8B>
<P_9A>100.00</P_9A>
<P_11>100.00</P_11>
<P_12>23</P_12>
<GTU>GTU_10</GTU>
</FaWiersz>
<Platnosc>
<TerminPlatnosci>
<Termin>2023-09-21</Termin>
<TerminOpis>Harmonogram płatności zgodnie z umową</TerminOpis>
</TerminPlatnosci>
<FormaPlatnosci>6</FormaPlatnosci>
<RachunekBankowy>
<NrRB>30160000030002000144365595</NrRB>
<RachunekWlasnyBanku>3</RachunekWlasnyBanku>
</RachunekBankowy>
</Platnosc>
</Fa>
</Faktura>
Ok, obiecałem zrobić testy związane z jednostkami. Jeśli ktoś chce sprawdzić, to daję też dane do logowania, jakie użyłem (o ile ktoś ich nie skasuje ;) )
Firma: 5170359458
Jednostka 1: 5170359458-00016
Jednostka 2: 5170359458-00029
Do wystawiania i odczytu faktur uprawnieni:
Jednostka 1: PESEL 00000000017
Jednostka 2: PESEL 11111111123
I już pierwsze spostrzeżenie - firma nadaje uprawnienia do administrowania jednostkami jakimś PESELom, ale nie może nadać sama sobie (czyli swojemu NIP). Administratorzy nie mają żadnych uprawnień poza tworzeniem użytkowników z uprawnieniami, więc sami nie mogą wystawiać faktur. Tym samym administratorem nie może być również użytkownik (lub vice versa, jak kto woli).
Wystawiłem faktury:
Firma: UPR_TEST/00 dla 1111111111
Jednostka 1: UPR_TEST/01 dla 1111111111
Jednostka 2: UPR_TEST/02 dla 1111111111
W przypadku wystawienia faktur przez jednostki, w Podmiot1 są dane firmy, w Podmiot3 występują dane jednostki (IDWew), jako rola 5,
Jednostki nie widzą żadnych faktur w ramach pytania o Podmiot1
Każda jednostka widzi tylko swoje faktury w ramach pytania o Podmiot3
Firma widzi wszystkie faktury wystawione przez siebie jak i jednostki w ramach pytania o Podmiot1
Jeśli wystawiamy fakturę dla jednostki, to dane tej jednostki wpadają do Podmiot3.
Teraz w drugą stronę:
NIP 6351063791 wystawia fakturę TEST_UPR/99 dla Jednostki 1
Firma: widzi fakturę przy pytaniu o Podmiot2
Jednostka 1: widzi fakturę przy pytaniu o Podmiot3 razem z fakturami sprzedaży
Jednostka 2: nie widzi faktury w żadnym zapytaniu.
Wniosek: jeśli faktura wystawiona jest dla jednostki (jako odbiorcy), to widzi ją zarówno cała firma jak i dana jednostka.
Niestety, pytając o podmiot3 trzeba dodatkowo rozróżniać, czy chcemy mieć faktury zakupowe czy sprzedażowe.
Pytanie mam do Was - jak Wy widzicie wykorzystywanie jednostek ale nie jako JST, ale jako działów firmy po to, aby wzajemnie ukrywać przed sobą faktury?
Hello. Is there some way to delete fully or partially documents from the test environment ? Throught an API service, manually from the web platform, etc....
Thanks
Czy uzupełnienie w fakturze tagów: P_13_4, P_14_4, P_14_4W (ryczałt dla taksówek osobowych) jest uzależnione od procedury marży i jaką stawkę VAT się tutaj stosuje? Z góry dzięki za info.
Cześć,
Mam takie pytanie, czy mogę całkowicie pominąć element FaWiersz w fakturze xml skoro jest polem opcjonalnym?
mam odpowiedź w sprawie niedziałającego endpointu do generowania identyfikatora zbiorczego. Przepięknie napisane, aż poczułem podniecenie oczekiwaniem na rozwiązanie problemu:
Uprzejmie informujemy, że problem dotyczący identyfikatora płatności został przez nas zidentyfikowany. Pracujemy nad rozwiązaniem problemu, aby pomóc Państwu w tej sprawie. Postaramy się dokonać stosownych zmian oraz korekty dokumentacji technicznej w najbliższym możliwym terminie.
Serdecznie przepraszamy za utrudnienia w korzystaniu z usługi.
I wystarczyły im na to tylko 2 miesiące...
Cześć,
mam pytanie dotyczące walidacji - czy można użyć schematu XSD aby w prosty sposób zwalidować wygenerowanego XML'a lub walidować już na etapie tworzenia pliku XML?
Pytanie prawne - ktoś kojarzy, czy faktury do paragonów (też onlinowych) też idą do KSeF?
Wystawianie korekty faktury zaliczkowej.
Chciałem dodac korekę do faktury zaliczkowej. Faktura zaliczkowa na kwotę 1.23 brutto z zaliczką 1 PLN
Uzupełniłem formularz na stronie ksef. Należało uzupęłnić korektę kwoty oraz wiersze. Gdy dodałem wiersze - korekta prze i korekta po system utworzyłm mi xmla w którym wstawił obydwa wiersze a w polu WartoscZamowienia wstał sumę wierszy. Według mnie coś jest nie tak. Powinno być jak przy korekcie faktury w której w wierszu było pole StanPrzed. W polu suma była aktualna suma a nie suma wierszy przed i po.
<?xml version="1.0" encoding="utf-8"?>
<Faktura xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://crd.gov.pl/wzor/2023/06/29/12648/">
<Naglowek>
<KodFormularza kodSystemowy="FA (2)" wersjaSchemy="1-0E">FA</KodFormularza>
<WariantFormularza>2</WariantFormularza>
<DataWytworzeniaFa>2023-09-11T14:44:34.6052105+02:00</DataWytworzeniaFa>
<SystemInfo>Aplikacja Podatnika KSeF</SystemInfo>
</Naglowek>
<Podmiot1>
<DaneIdentyfikacyjne>
<NIP>51222712</NIP>
<Nazwa>aaa </Nazwa>
</DaneIdentyfikacyjne>
<Adres>
<KodKraju>PL</KodKraju>
<AdresL1>ul. św. Filipa 31-150</AdresL1>
</Adres>
</Podmiot1>
<Podmiot2>
<DaneIdentyfikacyjne>
<NIP>62222371</NIP>
<Nazwa>fdfdfdfd</Nazwa>
</DaneIdentyfikacyjne><Adres>
<KodKraju>PL</KodKraju>
<AdresL1>ul. eeee 30-056 Kraków</AdresL1>
</Adres>
</Podmiot2>
<Fa>
<KodWaluty>PLN</KodWaluty>
<P_1>2023-09-11</P_1>
<P_2>FZK2023/09/11</P_2>
<P_13_1>0.08</P_13_1>
<P_14_1>0.02</P_14_1>
<P_15>0.1</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_ZAL</RodzajFaktury>
<PrzyczynaKorekty>Błędna kwota zaliczki</PrzyczynaKorekty>
<TypKorekty>1</TypKorekty>
<DaneFaKorygowanej>
<DataWystFaKorygowanej>2023-09-11</DataWystFaKorygowanej>
<NrFaKorygowanej>FZ2023/09/11</NrFaKorygowanej>
<NrKSeF>1</NrKSeF>
<NrKSeFFaKorygowanej>5XXX8712-20230911-F8959440EC82-86</NrKSeFFaKorygowanej>
</DaneFaKorygowanej>
<P_15ZK>1</P_15ZK>
<Zamowienie>
<WartoscZamowienia>2.46</WartoscZamowienia>
<ZamowienieWiersz>
<NrWierszaZam>1</NrWierszaZam>
<P_7Z>Usługa programistyczna</P_7Z>
<P_8AZ>usługa</P_8AZ>
<P_8BZ>1</P_8BZ>
<P_9AZ>1</P_9AZ>
<P_11NettoZ>1</P_11NettoZ>
<P_11VatZ>0.23</P_11VatZ>
<P_12Z>23</P_12Z>
</ZamowienieWiersz>
<ZamowienieWiersz>
<NrWierszaZam>2</NrWierszaZam>
<P_7Z>Usługa programistyczna</P_7Z>
<P_8AZ>usługa</P_8AZ>
<P_8BZ>1</P_8BZ>
<P_9AZ>1</P_9AZ>
<P_11NettoZ>1</P_11NettoZ>
<P_11VatZ>0.23</P_11VatZ>
<P_12Z>23</P_12Z>
</ZamowienieWiersz>
</Zamowienie>
</Fa>
</Faktura>
Pytanie: jak pobrać faktury innej firmy?
Mam firmę 1111111111, która dała firmie 2222222222 uprawnienia do pobierania faktur. Teraz na tokenie firmy 2222222222 chcę pobrać faktury zakupu lub sprzedaży firmy 1111111111. Jak powinno wyglądać QueryCriteriaInvoice
w /online/Query/Invoice/Sync
/ /online/Query/Invoice/Async/Init
?
Dla faktur zakupu daję:
{
"subjectType": "subject3",
"type": "detail",
"invoicingDateFrom": "2023-08-31T22:00:00+00:00",
"invoicingDateTo": "2023-09-11T17:59:32+00:00",
"subjectTo": {
"issuedToIdentifier": {
"type": "onip",
"identifier": "1111111111"
},
"issuedToName": null
}
}
i dostaję pustą listę
Dla faktur sprzedaży:
{
"subjectType": "subject3",
"type": "detail",
"invoicingDateFrom": "2023-08-31T22:00:00+00:00",
"invoicingDateTo": "2023-09-11T18:03:03+00:00",
"subjectBy": {
"issuedByIdentifier": {
"type": "onip",
"identifier": "1111111111"
},
"issuedByName": {
"tradeName": null,
"type": "none",
"fullName": null
}
}
}
dostaję błąd 21001: Nieczytelna treść
.
Źle konstruuję jsona, czy może uprawnienia zostały źle nadane czy jeszcze jakiś inny problem? Testowałem na DEMO bo TEST timeoutował. A może trzeba to robić na tokenie firmy 111111111?
Uprawnienia w KSEFie wyglądają jak na obrazku:
hej,
Czy próbował ktoś logować się do KSeF Demo profilem zaufanym kontem prezesa spółki? Chciałbym testować na Demo na koncie spółki. Mój prezes próbuje się uwierzytelnić, ale dostaje błąd uwierzytelniania po wykonaniu podpisu. Oczywiście używa tego podpisu zaufanego z powodzeniem od kilkunastu lat. Ktoś się z czymś takim spotkał? Z logowaniem na Demo w przypadku JDG nie ma problemu.
cześć, jak tam u Was nowa wysyłka faktur V2? rano wysłałem faktury i ciągle mają status 320 :) jedynie faktura V1 dostała finalny status 425, ale te V2 ciągle stoją.
i jeszcze kolejne pytanie, odpytujac o status faktury trzeba podac ElementReferenceNumber prawda? ksef mi ciagle zwraca blad "Faktura o podanym identyfikatorze nie istnieje." musze odpytywac o status sesji zeby zobaczyc co z moimi fakturami sie dzieje
Dzięki @Dzyszla. Nadal nie hula, więc najpierw odpowiem na pytania
- "Ale czemu Podmiot3?" - mój tok myślenia był taki, że jak działam na swoich fakturach to daję 1 jeśli jestem sprzedawcą i 2 jeśli nabywcą, więc tutaj dałem 3 bo nie jestem ani sprzedawcą ani nabywcą tylko kimś innym. Już zmieniłem na 1/2.
- "Przecież logujesz się w kontekście danej firmy, nie swojej." - nie jestem pewny co rozumiesz przez "danej" / "swojej". Jeśli "danej" oznacza firmę, której faktury chcę pobrać (1111111111), to chyba właśnie odwrotnie, logując się tokenem podaję nip firmy, która dostała uprawnienia do faktur, czyli 2222222222, token też jest od 2222222222. Próbowałem podawać nip 1111111111 i token 2222222222, ale miałem błąd autoryzacji. Czy firma 1111111111 musi udostępnić token firmie 2222222222 i musze się logować na tym udostępnionym tokenie z nipem 1111111111?
- "niepotrzebnie używasz
issuedToName
" - usunąłem - "niepotrzebnie używasz
issuedByName
" - próbowałem usunąć całe pole ale dostałem błąd schematu - to pole jest obowiązkowe (pic poniżej), ale usunąłem nullowetradeName
ifullName
Po poprawkach request/response dla faktur sprzedaży wyglądają tak:
{
"subjectType": "subject1",
"type": "detail",
"invoicingDateFrom": "2023-08-31T22:00:00+00:00",
"invoicingDateTo": "2023-09-12T08:16:25+00:00",
"subjectBy": {
"issuedByIdentifier": {
"type": "onip",
"identifier": "1111111111"
},
"issuedByName": {
"type": "none"
}
}
}
{
"exceptionDetailList": [
{
"exceptionCode": 31000,
"exceptionDescription": "Nieprawid\u0142owe wywo\u0142anie."
}
],
...
}
W issuedName
spróbowałem też podać type
FN
i błędu nie było (dostałem pustą listę). Pełna nazwa zgadza się z nazwą wystawcy faktury.
Dla faktur zakupu:
{
"subjectType": "subject2",
"type": "detail",
"invoicingDateFrom": "2023-08-31T22:00:00+00:00",
"invoicingDateTo": "2023-09-12T08:23:42+00:00",
"subjectTo": {
"issuedToIdentifier": {
"type": "onip",
"identifier": "1111111111"
}
}
}
{
"invoiceHeaderList": [],
...
}
JacekKKKK napisał(a):
Dzięki @Dzyszla. Nadal nie hula, więc najpierw odpowiem na pytania
- "Ale czemu Podmiot3?" - mój tok myślenia był taki, że jak działam na swoich fakturach to daję 1 jeśli jestem sprzedawcą i 2 jeśli nabywcą, więc tutaj dałem 3 bo nie jestem ani sprzedawcą ani nabywcą tylko kimś innym. Już zmieniłem na 1/2.
- "Przecież logujesz się w kontekście danej firmy, nie swojej." - nie jestem pewny co rozumiesz przez "danej" / "swojej". Jeśli "danej" oznacza firmę, której faktury chcę pobrać (1111111111), to chyba właśnie odwrotnie, logując się tokenem podaję nip firmy, która dostała uprawnienia do faktur, czyli 2222222222, token też jest od 2222222222. Próbowałem podawać nip 1111111111 i token 2222222222, ale miałem błąd autoryzacji. Czy firma 1111111111 musi udostępnić token firmie 2222222222 i musze się logować na tym udostępnionym tokenie z nipem 1111111111?
Zawsze zobaczysz faktury, w których jesteś (kontekst logowania) sprzedawcą/nabywcą. Jeśli faktura jest wystawiona przez jednostkę, to jednostka zobaczy tylko te, które są adresowane na nadrzędnego plus mają w podmiot3 wskazaną jednostkę (stąd w przypadku logowania na jednostkę, widać tylko po podmiot3 faktury). Natomiast w każdym przypadku liczy się kontekst logowania, a nie to, czym się zostało uwierzytelnionym. Zatem, jeśli dostaniesz token, to tak - logujesz się w kontekście 111111111, nie swoim.
- "niepotrzebnie używasz
issuedToName
" - usunąłem- "niepotrzebnie używasz
issuedByName
" - próbowałem usunąć całe pole ale dostałem błąd schematu - to pole jest obowiązkowe (pic poniżej), ale usunąłem nullowetradeName
ifullName
Generalnie, jeśli zalogowałeś się w kontekście firmy, to zapytanie o podmiot1 i podawanie danych podmiotu 1 w subjectBy
nie ma sensu. Proste zapytanie może wyglądać w ten sposób:
{"queryCriteria":
{"subjectType":"subject1",
"type":"range",
"invoicingDateFrom":"2023-09-01T00:00:00.000Z",
"invoicingDateTo":"2023-09-12T13:12:46.223Z"
}
}
Nie podaję tu żadnego z tagów odpowiedizalnych za filtrację po kontrahentach, ale jakbym chciał tylko te skierowane do konkretnej osoby, to wówczas mógłbym wykorzystać. Natomiast każdorazowo na pewną będą to faktury wystawione tylko przeze mnie, więc "by" nie ma sensu - to nabiera sensu dopiero, gdy będziesz pytał o podmiot3. Tak bardziej istotne będzie "to". No i vice versa przy pytaniu o podmiot2.
Po poprawkach request/response dla faktur sprzedaży wyglądają tak:
{ "subjectType": "subject1", "type": "detail", "invoicingDateFrom": "2023-08-31T22:00:00+00:00", "invoicingDateTo": "2023-09-12T08:16:25+00:00", "subjectBy": { "issuedByIdentifier": { "type": "onip", "identifier": "1111111111" }, "issuedByName": { "type": "none" } } }
{ "exceptionDetailList": [ { "exceptionCode": 31000, "exceptionDescription": "Nieprawid\u0142owe wywo\u0142anie." } ], ... }
Tak generalnie Tobie chyba brakuje obiektu queryCriteria
Cześć,
czy ktoś orientuje się czy istnieje możliwość aby po wysłaniu XML i otrzymaniu UPO przy pomocy API pobrać PDF faktury z KSEF np. za pomocą nr. KSEF faktury? Jeżeli tak to czy ten wydruk można edytować np. dodając logo swojej firmy?
Hej, czy dzis dziala Wam wysylanie na https://ksef-test.mf.gov.pl/api/online/Session/InitToken ?
Wysyłam:
<?xml version="1.0" encoding="UTF-8" ?>
<ns3:InitSessionTokenRequest xmlns="http://ksef.mf.gov.pl/schema/gtw/svc/online/types/2021/10/01/0001" xmlns:ns2="http://ksef.mf.gov.pl/schema/gtw/svc/types/2021/10/01/0001" xmlns:ns3="http://ksef.mf.gov.pl/schema/gtw/svc/online/auth/request/2021/10/01/0001">
<ns3:Context>
<Challenge>20230913-CR-1F0DEDCB23-3B799A4927-09</Challenge>
<Identifier xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ns2:SubjectIdentifierByCompanyType">
<ns2:Identifier>9999999999</ns2:Identifier>
</Identifier>
<DocumentType>
<ns2:Service>KSeF</ns2:Service>
<ns2:FormCode>
<ns2:SystemCode>FA (2)</ns2:SystemCode>
<ns2:SchemaVersion>1-0E</ns2:SchemaVersion>
<ns2:TargetNamespace>http://crd.gov.pl/wzor/2021/11/29/11089/</ns2:TargetNamespace>
<ns2:Value>FA</ns2:Value>
</ns2:FormCode>
</DocumentType> <Token>MnETOZWt4rxVSEFl2iSZsAN6Y+FCNXqynx6BG6Xn84X3nghGuk1lLHjQLM9yM9SCxybxj4cnz14wbA19zl4PL2X58XD2/ls7khpAoKF8elZZjgxvGl1Ibs7UagxdxInNKV9AlMiHwf1nqpx9MfpFaqIxL1pzEPfjMKrqLUzVxR8xaeGdQ7WpB9gx30keG7piMMN1t90AeIVrGjZfyV3Ua55rOMjqzD4OwurmDiEz/ax5CamO2aQbVPZ2gDsCqE3WaFzhpv1QISsKcIpNDG/vOfdcEbk8H3sGIFi4JIWT3/UnQVpzUYQhPPetEuLwwTKUusZtUoacMgiC8Z7WvveMRA==</Token>
</ns3:Context>
</ns3:InitSessionTokenRequest>
W odpowiedzi dostaje:
<html><head><title>Error</title></head><body>Bad Request</body></html>
token tworze:
$string = $tokenUtworzonyNaStronie.'|'.strtotime($this->gateTimestamp)*1000;
openssl_public_encrypt($string, $encrypted, $this->publicKey);
$tokenUtworzonyNaStronie - wygenerowany dla nipu 9999999999 (czyli niby zgodność z Identifier)
$this->gateTimestamp wynik poprzedniego challenge (https://ksef-test.mf.gov.pl/api/online/Session/AuthorisationChallenge)
$this->publicKey ze strony bramki testowej
jest to o tyle dziwne, że nie zwraca mi błędu opakowanego w jsona tylko taki prosty - jakieś pomysły co spartoliłem? :/
I mamy odpowiedź odnośnie zawieszających się faktur (pozostające w stanie 320) [szybko, bo po tygodniu zaledwie]:
(...) Powodem jest użycie niewłaściwych znaków w polu <telefon>. W polu występuje ciąg - "mąż", który pomimo zachowania długości - 16 znaków, biorąc pod uwagę konsekwencje kodowania-dekodowania UTF-8 powoduje przekroczenie długości pola. Faktura zostanie przetworzona dopiero po wdrożeniu kolejnej wersji API KSeF.
Komunikat o wdrożeniu poprawki zamieścimy na stronie: https://www.gov.pl/web/kas/komunikaty.
A może by tak zrobić oddzielną kategorie na forum zrobić z tego? Widzę od lat że same problemy z tym krajowym wytworem software'o'podobnym :)
Hej,
mam problem w wysyłce online faktury (środowisko testowe) :
przykładowy XML faktury
wysyłka za pomocą: PUT /online/Invoice/Send:
{
"invoiceHash": {
"fileSize": 2096,
"hashSHA": {
"algorithm": "SHA-256",
"encoding": "Base64",
"value": "bgUbCGpfxJ+LpLu4c9X79+jt2UBLaRDmDq0q9Oa+S38="
}
},
"invoicePayload": {
"type": "plain",
"invoiceBody": "PD94 .. yYT4="
}
}
Zwraca status 202 (OK), w podglądzie sesji na stronie KSEF jest błąd w wysyłce, bez żadnego opisu. Jak próbuje pobrać status via API (/common/Status/) to za każdym razem mam 205, w sierpniu wszystko chodziło poprawnie, problem się pojawił we wrześniu. Brak nr KSef oraz UPO dla wysłanej faktury.
Czy ktoś miał może podobny problem?
edit:
w załączeniu screen z testowego środowiska z wysłana fakturą:
Hello, can somebody help me out with how fill these fields when the document is a correcting invoice? What should I send in these fields about the corrected invoice ? The description of these fields are not clear enought for me.
Thanks in advance
No i są nareszcie udostępnione przykładowe pliki struktury FA(2): https://www.podatki.gov.pl/ksef/baza-wiedzy-ksef/pliki-do-pobrania-ksef/
Jestem ciekawy czy w najbliższym czasie pojawi się też porównanie FA(1) do obecnej FA(2).
Probuje zainicjować sesje , ale ciagle błąd 415. Co jest nie tak ?
import base64
import requests
import json
from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_v1_5
from datetime import datetime, timezone
from time import sleep
BASE_URL = "https://ksef-test.mf.gov.pl/api"
def authorisation_challenge(nip):
HEADERS = {
"Content-Type": "application/json",
"Accept": "application/json"
}
endpoint_url = f"{BASE_URL}/online/Session/AuthorisationChallenge"
request_body = {
"contextIdentifier": {
"type": "onip",
"identifier": nip
}
}
response = requests.post(endpoint_url, headers=HEADERS, data=json.dumps(request_body))
response.raise_for_status()
return response.json()
def iso_to_milliseconds(timestamp: str) -> int:
dt_obj = datetime.strptime(timestamp, "%Y-%m-%dT%H:%M:%S.%fZ")
dt_obj = dt_obj.replace(tzinfo=timezone.utc)
epoch = datetime(1970, 1, 1, tzinfo=timezone.utc)
delta = dt_obj - epoch
milliseconds = int(delta.total_seconds() * 1000)
return milliseconds
def round_to_nearest_thousand(milliseconds: int) -> int:
return round(milliseconds / 1000) * 1000
def encrypt(public_key_str, token, timestamp):
public_key = RSA.importKey(public_key_str)
e = public_key.e
n = public_key.n
pubkey = RSA.construct((n, e))
text = token + '|' + timestamp
cipher = PKCS1_v1_5.new(pubkey)
encrypted_text = cipher.encrypt(bytes(text, encoding='utf-8'))
return base64.b64encode(encrypted_text).decode('utf-8')
PUBLIC_KEY = """-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwocTwdNgt2+PXJ2fcB7k1kn5eFUTXBeep9pHLx6MlfkmHLvgjVpQy1/hqMTFfZqw6piFOdZMOSLgizRKjb1CtDYhWncg0mML+yhVrPyHT7bkbqfDuM2ku3q8ueEOy40SEl4jRMNvttkWnkvf/VTy2TwA9X9vTd61KJmDDZBLOCVqsyzdnELKUE8iulXwTarDvVTx4irnz/GY+y9qod+XrayYndtU6/kDgasAAQv0pu7esFFPMr83Nkqdu6JD5/0yJOl5RShQXwlmToqvpih2+L92x865/C4f3n+dZ9bgsKDGSkKSqq7Pz+QnhF7jV/JAmtJBCIMylxdxI/xfDHZ5XwIDAQAB
-----END PUBLIC KEY-----""" # [Insert your public key here]
AUTH_TOKEN = "E3A26812A60B13A6FB785439E13BB9E1C30D46D116C38BF20C4F0FAF66512465" # [Insert your auth token here]
response_data = authorisation_challenge("6666666666")
print(response_data)
challenge_time_iso = response_data['timestamp']
sleep(1)
challenge_time = iso_to_milliseconds(challenge_time_iso)
challenge_time = round_to_nearest_thousand(challenge_time)
combined_data = f"{AUTH_TOKEN}|{challenge_time}"
print(f"Combined token and challenge time (Token|ChallengeTime): {combined_data}")
result = encrypt(PUBLIC_KEY, AUTH_TOKEN, str(challenge_time))
print(f"Encoded token and challenge time: {result}")
sleep(1)
xml_template = """
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ns3:InitSessionTokenRequest xmlns="http://ksef.mf.gov.pl/schema/gtw/svc/online/types/2021/10/01/0001" xmlns:ns2="http://ksef.mf.gov.pl/schema/gtw/svc/types/2021/10/01/0001" xmlns:ns3="http://ksef.mf.gov.pl/schema/gtw/svc/online/auth/request/2021/10/01/0001">
<ns3:Context>
<Challenge>{challenge}</Challenge>
<Identifier xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ns2:SubjectIdentifierByCompanyType">
<ns2:Identifier>6666666666</ns2:Identifier>
</Identifier>
<DocumentType>
<ns2:Service>KSeF</ns2:Service>
<ns2:FormCode>
<ns2:SystemCode>FA (2)</ns2:SystemCode>
<ns2:SchemaVersion>1-0E</ns2:SchemaVersion>
<ns2:TargetNamespace>http://crd.gov.pl/wzor/2023/06/29/12648/</ns2:TargetNamespace>
<ns2:Value>FA</ns2:Value>
</ns2:FormCode>
</DocumentType>
<Token>{token}</Token>
</ns3:Context>
</ns3:InitSessionTokenRequest>
"""
formatted_xml = xml_template.format(challenge=challenge_time_iso, token=result)
init_token_endpoint = "https://ksef-test.mf.gov.pl/api/online/Session/InitToken"
xml_headers = {
"Content-Type": "application/xml",
"Accept": "application/json"
}
response = requests.post(init_token_endpoint, headers=xml_headers, data=formatted_xml)
print (response.status_code)
print (response.text)