Krajowy system e-Faktur

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

Jest już dostępna treść interpelacji dot. JST posła Janusza Kowalskiego:
https://www.sejm.gov.pl/Sejm10.nsf/InterpelacjaTresc.xsp?key=DPLFB2&view=5

Bardzo słusznie zauważa, że weryfikacja poprawności przy JST w zasadzie nie istnieje. Ciekawe, jaka będzie odpowiedź.

A ode mnie na Gwiazdkę macie kolejną interpelację: https://www.sejm.gov.pl/Sejm10.nsf/interpelacja.xsp?documentId=152A6B32ED37E8DDC1258D68003E1855&view=S
Będzie ona odnosić się do tych elementów, których zabrakło w (a w zasadzie - które pojawiły się po) poprzedniej interpelacji. Niestety, treść najprawdopodobniej będzie dopiero za tydzień, a do tego czasu nie chcę Wam udostępniać czegoś, co nie będzie oficjalne, więc trzeba się wstrzymać. Ale mam nadzieję, że poprawi humor na Święta. 🎄

Tym samym wszystkim życzę odksefowania się i aby każdy mógł pozwolić sobie na Święta z dala od takich przewrotów!

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

To ja zapraszam programistów Delphi, którzy szanują swój czas i szukają kompleksowego gotowca do obsługi KSeF w Delphi.
Tu więcej szczegółów, także pod koniec wątku:
https://4programmers.net/Forum/Og%C5%82oszenia_drobne/371082-modul_ksef_w_delphi_sprzedam_licencje_na_wykorzystanie_kodu_na_uzytek_wewnetrzny_bez_prawa_udostepniania?p=2010546

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

Znów się zakręciłem i pewnie niemądre pytanie: czy i jak można sprawdzić uprawnienia właścicielskie?
Bo z tego miejsca (nie używając żadnych filtrów, tylko stronicowanie w GET: "?pageOffset=0&pageSize=100"):
https://ksef-test.mf.gov.pl/docs/v2/index.html#tag/Wyszukiwanie-nadanych-uprawnien/paths/~1permissions~1query~1personal~1grants/post
będąc zautoryzowanym jako Nip / certificateSubject na konkretny NIP, dostaję pustą listę: permissions:[]

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

Jak u Was? Robiliście forka? Korzystacie z gotowych paczek?
Murray zostawił laurkę. Ciekawe, że tylko zagranica chwali :)
https://github.com/CIRFMF/ksef-client-csharp/issues/167

AL
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 12
0

Pracuję nad odbiorem faktur. Jeśli ktoś miałby czas to poproszę o przesłanie jakiś faktur na środowisku TEST, na NIP: 9853400719
Dzięki!

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

Dzień dobry.

Mam oto taki kod, który ma za zadanie zalogować się do środowiska testowego KSeF. Niestety cały czas otrzymuje błąd 9105 "Nieprawidłowy podpis".
Certyfikat (.crt) z kluczem (.key) wygenerowałem wcześniej na tej stronie: https://web2te-ksef.mf.gov.pl/web/home
Proszę o pomoc i wskazanie gdzie leży błąd, bo nawet AI sobie nie radzi 😄
Z góry dzięki :)

import requests
import base64
from lxml import etree
from signxml import XMLSigner
from cryptography.hazmat.primitives import serialization
from cryptography.hazmat.primitives.asymmetric import ec
from cryptography.hazmat.primitives.asymmetric.utils import decode_dss_signature

class KSeFClient:
def init(self, nip, cert_path, key_path, key_password, environment='test'):
self.nip = nip
self.cert_path = cert_path
self.key_path = key_path
self.key_password = key_password
self.base_url = "https://api-test.ksef.mf.gov.pl/v2" if environment == 'test' else "https://api.ksef.mf.gov.pl/v2"

def get_challenge(self):
    print("[1/4] Pobieranie challenge...")
    url = f"{self.base_url}/auth/challenge"
    payload = {"contextIdentifier": {"type": "on", "identifier": self.nip}}
    response = requests.post(url, json=payload)
    response.raise_for_status()
    data = response.json()
    print(f"   -> Challenge: {data['challenge']}")
    return data['challenge']

def load_private_key_safely(self):
    print("[2/4] Wczytywanie klucza...")
    try:
        with open(self.key_path, "r", encoding='utf-8', errors='ignore') as f:
            raw_content = f.read().strip()
        if '\ufeff' in raw_content: raw_content = raw_content.replace('\ufeff', '')
        header = "-----BEGIN ENCRYPTED PRIVATE KEY-----"
        footer = "-----END ENCRYPTED PRIVATE KEY-----"
        if header not in raw_content: raise ValueError("Brak nagłówka klucza")
        body = raw_content.replace(header, "").replace(footer, "").strip()
        body = "".join(body.split())
        clean_pem = f"{header}\n{body}\n{footer}".encode('utf-8')
        return serialization.load_pem_private_key(clean_pem, password=self.key_password.encode('utf-8'))
    except Exception as e:
        print(f"   [BLAD KLUCZA] {e}")
        raise

def create_signed_xml(self, challenge, private_key):
    print("[3/4] Podpisywanie XML (ECDSA-SHA256)...")
    # 1. Namespace KSeF 2.0
    ns_ksef = "http://ksef.mf.gov.pl/auth/token/2.0"
    ns_map = {None: ns_ksef, 'xsi': "http://www.w3.org/2001/XMLSchema-instance"}

    root = etree.Element(f"{{{ns_ksef}}}AuthTokenRequest", nsmap=ns_map)
    etree.SubElement(root, f"{{{ns_ksef}}}Challenge").text = challenge
    ctx = etree.SubElement(root, f"{{{ns_ksef}}}ContextIdentifier")
    etree.SubElement(ctx, f"{{{ns_ksef}}}Nip").text = self.nip
    etree.SubElement(root, f"{{{ns_ksef}}}SubjectIdentifierType").text = "certificateSubject"

    with open(self.cert_path, "rb") as f:
        cert_data = f.read()

    # 2. KONFIGURACJA SIGNERA - PEŁNE ADRESY URI (TO JEST KLUCZ DO SUKCESU)
    # KSeF wymaga konkretnych stringów w <SignedInfo>, skróty nie działają.
    signer = XMLSigner(
        signature_algorithm="http://www.w3.org/2001/04/xmldsig-more#ecdsa-sha256",
        digest_algorithm="http://www.w3.org/2001/04/xmlenc#sha256",
        c14n_algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"
    )
    
    signed_root = signer.sign(root, key=private_key, cert=cert_data)

    # 3. Weryfikacja formatu RAW (64 bajty)
    ns_dsig = {"ds": "http://www.w3.org/2000/09/xmldsig#"}
    sig_value_node = signed_root.find(".//ds:SignatureValue", namespaces=ns_dsig)
    
    if sig_value_node is not None:
        current_sig = base64.b64decode(sig_value_node.text)
        if len(current_sig) != 64:
            # Jeśli signxml wypluł DER (np. 70-72 bajty), konwertujemy na RAW
            try:
                r, s = decode_dss_signature(current_sig)
                raw_sig = r.to_bytes(32, 'big') + s.to_bytes(32, 'big')
                sig_value_node.text = base64.b64encode(raw_sig).decode('utf-8')
            except Exception:
                pass # Jeśli się nie uda, wysyłamy co mamy

    # Zwracamy czysty XML
    return etree.tostring(signed_root, encoding='utf-8', xml_declaration=True)

def login(self):
    try:
        challenge = self.get_challenge()
        private_key = self.load_private_key_safely()
        signed_xml = self.create_signed_xml(challenge, private_key)

        print("[4/4] Wysyłanie do KSeF...")
        url = f"{self.base_url}/auth/xades-signature"
        headers = {"Content-Type": "application/xml", "Accept": "application/json"}
        
        response = requests.post(url, data=signed_xml, headers=headers)
        
        if response.status_code == 202:
            print("\n" + "="*50)
            print(" [!!!] SUKCES - TOKEN OTRZYMANY [!!!]")
            print("="*50)
            return response.json()
        else:
            print(f"\n[BŁĄD KSeF] Kod: {response.status_code}")
            # Debug: wypisz odpowiedź, czasem zawiera podpowiedź w 'exceptionDescription'
            try:
                print(response.json())
            except:
                print(response.text)
            return None
    except Exception as e:
        print(f"\n[STOP] {e}")
        return None

if name == "main":
MOJ_NIP = "XXXXXXXXXX"
CERT_FILE = "XXXXX.crt"
KEY_FILE = "XXXXX.key"
HASLO = "XXXXX"

klient = KSeFClient(MOJ_NIP, CERT_FILE, KEY_FILE, HASLO)
result = klient.login()

if result:
    print(f"Twój Token Sesyjny: {result['authenticationToken']['token']}")
WS
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 11
0

W jaki sposób przyjąć rolę właściciela dla danego numeru NIP (nip spółki) w środowisku demo
W środowisku produkcyjnym rolę właściciela przyjmuje osoba wskazana na zgłoszeniu ZAW-FA
W środowisku testowym widzę operacje takie jak https://api-test.ksef.mf.gov.pl/v2/testdata/person - Tworzenie nowej osoby fizycznej, której system nadaje uprawnienia właścicielskie. Nie widzę takiej opcji w środowisku ksef-demo

Mateusz Jaracz
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 11
0

Cześć aktualnie do uwierzytelnienia używam ksef-tokenu, czy ktoś w php próbował już robić certyfikaty ? mógłby chociaż ogółowo przybliżyć flow jak je uzyskiwać ? 😀

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

Działa Wam kompilowanie do js npm run build:cli w tej bilbiotece generującej PDF-y? https://github.com/lukasz-wojtanowski-softvig/ksef-pdf-generator/blob/feature/cli/src/cli/CLI-README.md#u%C5%BCycie-z-plikiem-exe-bez-nodejs. Mi niestety nie, wersja Node taka jak zalecana 22.14.0 ale wyrzuca Error [ERR_MODULE_NOT_FOUND]: Cannot find module 'C:\Program Files\nodejs\ksef-pdf-generator\dist\shared\consts\const' imported from C:\Program Files\nodejs\ksef-pdf-generator\dist\lib-public\generators\FA1\Podmiot1.js
Może da się jakoś skontaktować z autorem żeby coś podpowiedział.

marian pazdzioch
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 804
1

Podoba mi się że polski rzont dba o programistów i tworzy takie rzeczy jak ksef. Trzeba pracować tak żeby praca była.

Dzyszla
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 264
2

Dostałem odpowiedź na pytanie zadane 18 grudnia, dlaczego nie działają nowe adresy AP:

dziękujemy za pytanie. Zagadnienie to jest przez nas wyjaśniane. Udzielimy Panu odpowiedzi w możliwie najkrótszym terminie.

xD

(a reklam w tych odpowiedziach więcej niż na Polsacie)

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

Czy w exporcie faktur https://ksef-test.mf.gov.pl/docs/v2/index.html#tag/Pobieranie-faktur/paths/~1invoices~1exports/post zrobili limit zakresu from - to do 3 miesięcy? jeżeli jest większy wyrzuca mi błąd.

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

W chwili obecnej w metadanych do faktury idą następujące znaczniki czasowe:

     "issueDate":"2025-11-30",
     "permanentStorageDate":"2025-12-29T19:19:50.831978+00:00",
     "invoicingDate":"2025-12-29T19:19:50.476+00:00",
     "acquisitionDate":"2025-12-29T19:19:50.618+00:00",

Któryś z tych znaczników czasowych, określa datę od której liczony jest termin płatności. Ponieważ te znaczniki czasowe mogą się różnić o ileś tam milisekund, może się zdarzyć, że na przełomie dnia jeden znacznik będzie wskazywał na 29 grudnia, a drugi na 30 grudnia. Pytanie brzmi: który znacznik czasowych, z powyżej wymienionych, określa moment od którego biegnie liczony jest termin płatności ?

S8
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 106
R1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 8
0
rasalom1985 napisał(a):

@rasalom1985:

rasalom1985 napisał(a):

@TomekK9 sprawdziłem mechanizm eksportu i odszyfrowania paczki w PHP

Miałem małą paczkę więc w tablicy parts miałem jeden plik, jeszcze nie testowałem odszyfrowania gdy paczka zawiera wiele elementów w tablicy parts ale poprawnie otrzymuję ZIP z plikami XML i _matadata.json

Eksport faktur:

  1. pobieram certyfikat SymmetricKeyEncryption i eksportuję klucz publiczny PEM z /api/v2/security/public-key-certificates
  2. generuje wektor i klucz symetryczny
Kopiuj

$symmetricKey = random_bytes(32); // AES-256
$initializationVector = random_bytes(16); // IV

$publicKeyPem = file_get_contents($publicKeyFile);
$publicKey = PublicKeyLoader::load($publicKeyPem)
                ->withPadding(RSA::ENCRYPTION_OAEP)
                ->withHash('sha256')
                ->withMGFHash('sha256');

$encryptedSymmetricKey = $publicKey->encrypt($symmetricKey);
  1. wysyłam do API request i jak zwróci numer referencyjny to zapisuję sobie razem z $symmetricKey oraz $initializationVector jako base64 (/api/v2/invoices/exports)
  2. wywołuję /api/v2/invoices/exports/{referenceNumber} i zapisuję pliki aes w katalogu
  3. odszyfrowuję i otrzymuję ZIP na podstawie zapisanego wektrora i klucza symetrycznego
Kopiuj
$directoryPath = scieżka do katalogu z plikami AES;
$key = base64_decode($item['symmetric_key']);
$iv  = base64_decode($item['initialization_vector']);

// === Znajdź plik .aes ===
$aesFiles = glob(rtrim($directoryPath, '/') . '/*.aes');

$aesFile = $aesFiles[0];
$encryptedData = file_get_contents($aesFile);

// === Deszyfrowanie ===
$decrypted = openssl_decrypt(
                $encryptedData,
                'aes-256-cbc',
                $key,
                OPENSSL_RAW_DATA,
                $iv
            );
V2
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 43
0

Wiem, że temat był wielokrotnie poruszany i zgłaszany, ale nie mogę się nadziwić jaką bzdurą jest umieszczanie "skrótu faktury" w QR2. Weryfikację przechodzi dowolny tekst (choćby "dupa") wpisany jako ten skrót, nawet jeśli jego długość wyklucza że jest to prawidłowy skrót.
QR2 potwierdza tylko że właściciel certyfikatu KSeF ma uprawnienie do fakturowania w danej firmie. NIc poza tym.

xoree
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Poraj
  • Postów: 57
2

Taki e-mail otrzymałem dziś z działu bezpieczeństwa naszej firmy (pracuję w sektorze finansowym), dlatego postanowiłem się nim podzielić.


Uwaga dla klientów i integratorów

W ostatnim czasie powstaje wiele stron internetowych, które rzekomo oferują integrację z KSeF. Część z nich jest tworzona wyłącznie w celu kolokacji danych oraz ich zbierania, a nie faktycznego świadczenia usług.

Zwracajcie szczególną uwagę na regulamin takich stron. Sprawdźcie, czy zawiera on pełne dane firmowe, w tym:

nazwę firmy,

formę prawną,

adres siedziby,

numer NIP, który można zweryfikować w systemach publicznych.

Należy zachować szczególną ostrożność wobec stron działających poza Polską lub takich, które nie posiadają regulaminu albo nie podają dokładnych danych właściciela. Serwisy tego typu często nie posiadają wymaganych danych, a ich celem może być manipulacja lub pozyskiwanie informacji, a nie realne wykonanie usługi.

Dodatkowo część tych stron korzysta z wadliwych lub niezgodnych rozwiązań technicznych, co może prowadzić do problemów prawnych lub technicznych po stronie użytkownika.

Zalecana jest dokładna weryfikacja dostawcy przed rozpoczęciem jakiejkolwiek integracji.


Od razu zaznaczam, że nasz serwis:

https://ksefservice.pl/regulamin.php
https://ksefservice.pl/privacy.php

spełnia wszystkie wymagania – posiadamy kompletne dane firmowe, jesteśmy fizycznie dostępni, a za świadczone usługi ponosimy pełną odpowiedzialność. Działamy transparentnie i zgodnie z obowiązującymi przepisami.

Uważamy, że w obecnej sytuacji rynkowej szczególnie istotne jest zwracanie uwagi na wiarygodność podmiotów oferujących integracje z KSeF oraz dokładne sprawdzanie regulaminów i danych właścicielskich serwisów.

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

Siemka, czy ktoś może na portalu demo pobrać xml z istniejącej w ksef faktury, zmienić numer faktury (P_2) i spróbować wciągnąć jako nową fakturę do ksef? U mnie wygląda to tak, że po wczytaniu xml wyświetla się komunikat o błędzie ale mimo to faktura wczytuje się do ksef i dostaje numer ksef.

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

No to już oficjalnie, jakby ktoś jeszcze miał skrupuły co robić z kluczem prywatnym > https://pomoc.wfirma.pl/-autoryzacja-za-pomoca-certyfikatow-w-ksef-w-systemie-wfirma-pl

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

Czy jest lub jest zapowiedziane jakieś API KSeF zwracające kody QR? Chyba gdzieś kiedyś widziałem taką zapowiedź, ale od dawna nikt nic nie pisał w tym temacie.

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

Ktoś tu próbował na wykopie... To weszło:
https://wykop.pl/link/7861305/wielka-luka-w-ksef-ktora-umozliwia-ddos-na-przedsiebiorce

Tylko jaka "pierwsza"? Ja widzę przynajmniej jako trzydziestą drugą.

SZ
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3
0

Dzień dobry
Szukam prostej biblioteki php do integracji sklepu internetowego z ksef.
Dostałem w nowej firmie 'w spadku' sklep, który robiła im jakaś zewnętrzna firma. Firma już nie istnieje, ale sklep działa dobrze i nie opłaca się go robić na nowo. Kod trochę rozszyfrowałem i mniej więcej wiem co i gdzie się dzieje. A że programista ze mnie marny, to nie biorę się za samodzielną integrację z ksef. Dlatego potrzebuję gotową bibliotekę i najlepiej razem ze wsparciem przy wdrażaniu. Oczywiście za to wsparcie płacimy.
Co w naszym sklepie się dzieje?

  • Klient może zaznaczyć opcję, że chce fakturę. Jak zaznaczy to ją dostanie. Jak poda nip to faktura jest na firmę. Jak nie poda, to faktura jest imienna.
  • Wystawiamy korekty. Jak klient coś zwróci, to korekta z nową kwotą. Jak zrezygnuje całkowicie z zamówienia, to korekta do 0.
  • Jak pomyli dane to też wystawiamy korekty. Z tego co czytałem, teraz trzeba zrobić korektę do 0 i wystawić nową na nowe dane.

W zeszłym roku sklep wystawił trochę ponad 600 faktur, więc nie jest to specjalnie dużo.
Jeszcze taki bonus. Sklep jest uruchamiany okresowo od marca do końca października. W pozostałe miesiące nie sprzedaje. Zatem termin 1 lutego jakby nas nie dotyczy;).

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

pytanko do FA3 dot. pozycji faktury: czy w polach P_9A, P_9B, P_11, P_11A, P_11Vat podajecie wartości netto i brutto czy tylko netto (P_9A, P_11) dla pozycji faktury liczonej od netto i tylko brutto (P_9B, P_11A, P_11Vat) dla pozycji faktury liczonej od brutto?

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

Dostałem odpowiedź na pytanie z 15.12 (tylko pół miesiąca!) dotyczące, czy podawać pole PrefiksPodatnika dla faktur eksportowych oraz czy w ogóle logować się jako identyfikator VAT-UE. Była dyskusja o tym tutaj:
https://4programmers.net/Forum/Nietuzinkowe_tematy/355933-krajowy_system_e_faktur?p=2010914#id2010914

Oto, co otrzymałem:

w przypadku uwierzytelniania się w systemie celem wystawienia faktury przez polskiego podatnika na rzecz podatnika mającego siedzibę na terytorium innego państwa członkowskiego, do uwierzytelnienia się w systemie polski podatnik posługuje się numerem NIP

Czyli 1: zawsze i wszędzie logujemy się tylko po NIP. Czemu więc służy logowanie po VAT-UE? Obecnie wybierając ten rodzaj pojawia się tekst NIP podmiotu, który nadał uprawnienia do samofakturowania więc to coś z tym samofakturowaniem tylko związane. Dałbym głowę, że wcześniej niczego takiego nie było, stąd pytanie powstawało.

Elementy faktury
Zgodnie z art. 106e ust.1 pkt. 24 ustawy o VAT w przypadkach o których mowa w art. 97 ust. 10 pkt 2 i 3 ustawy o VAT faktura powinna zawierać:
a) numer, za pomocą którego podatnik jest zidentyfikowany na potrzeby podatku, poprzedzony kodem PL,
b) numer, za pomocą którego nabywca towaru lub usługi jest zidentyfikowany na potrzeby podatku od wartości dodanej w danym państwie członkowskim, zawierający dwuliterowy kod stosowany na potrzeby podatku od wartości dodanej właściwy dla tego państwa członkowskiego.

Tyle to ja sam umiem przeczytać :) No, ale dalej:

Pole "PrefiksPodatnika" wypełnia się w przypadkach określonych w art. 97 ust. 10 pkt 2 i 3 ustawy o VAT oraz w przypadku, o którym mowa w art. 136 ust. 1 pkt 3 ustawy o VAT.
Należy podać literowy kod kraju „PL” podatnika w przypadku wystawienia faktury dokumentującej:

  • wewnątrzwspólnotową dostawę towarów,
  • świadczenie usług, do których stosuje się art. 100 ust. 1 pkt 4 ustawy o VAT, dla podatników podatku od wartości dodanej lub osób prawnych niebędących takimi podatnikami, zidentyfikowanych na potrzeby podatku od wartości dodanej,
  • dostawę realizowaną w ramach transakcji trójstronnej uproszczonej, przez drugiego w kolejności podatnika, o którym mowa w art. 135 ust. 1 pkt 4 lit. b i c ustawy o VAT.

Czyli 2: odpowiedź brzmi: TAK, dla eksportowych należy podawać pole PrefiksPodatnika (choć to było dość oczywiste).

Ale teraz widzę, że zrobiłem błąd w pytaniu, bo nie dopytałem o sytuację, czy można podawać zawsze, ale wg zapisu wydaje mi się, że nie.

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

Te 3 m-ce do tyłu, które w API zostały okrojone z 2 lat, gdy pobieramy faktury wstecz to jest liczone jak konkretnie?
Liczymy -90 dni od dziś czy dzień dzisiejszy (np. 2 stycznia) -3 mce, czyli 2 października?
Wie ktoś?

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

A czy ktoś się orientuje, czy można wystawić fakturę na NIP działalności, która została zamknięta?
Bo taka sytuacja mi przyszła do głowy:

  1. Kupujesz coś za gotówkę, niech to będzie z datą 31 grudnia. Podałeś przy kasie swój NIP, ale osoba fakturująca się pomyliła i wklepała inny nip. Wystąpił błąd ludzki - pytanie jest nie czy, tylko kiedy takie coś w realnym świecie się zdarzy. Odchodzisz od kasy, z towarem i bez gotówki, bo przecież faktura jest w KSeF. Szkoda tylko, że w tym momencie nie wiesz, że jest błędna, no bo skąd to możesz wiedzieć.
  2. Jest 16 stycznia, chcesz rozliczyć poprzedni miesiąc z gotówki. Mówisz szefowi, Stary, oddaj mi ten tysiak za zakupy z 31 grudnia.
  3. Szef mówi - ale ja nie widzę faktury, chcesz mnie oszukać?
  4. Idziesz do sklepu gdzie wydałeś ten tysiak, mówisz co i jak i teraz może być tak:

dwa możliwe przypadki:

  1. Kliencie spadaj, fakturę na pewno wystawiliśmy dobrze, my się nie mylimy, a pewnie sam zły NIP podałeś i to twoja wina, albo po prostu chcesz nas oszukać i wymusić fakturę - środkowy palec.
  2. Tak, Drogi Kliencie, pomyliliśmy się, wystawimy korektę. Ale... nie możemy wystawić korekty zerujacej, bo jest po 15 stycznia i NIP na który wytawiliśmy pierwszą fakturę jest zawieszony od 1 stycznia.
GR
  • Rejestracja: dni
  • Ostatnio: dni
0

Cześć Integratorzy :) W jaki sposób radzicie sobie z wizualizacją faktur? Potrzebuję wykonać konwersję faktury do PDF. Wiem, że CIRFMF udostępniło PDF generator ale on jest w TypeScript. Ja po swojej stronie mam aplikację .NET. Wiem, że przykładach jest projekt umożliwiający konwersję do PDF przez wywołanie procesu Node.js ale wydaje mi się takie rozwiązanie niekoszerne. Próbowałem z Microsoft.ClearScript.V8 ale poległem. Czy ktoś z Was ma to przetrenowane jakoś sprytniej? Może wiecie gdzie znajdę szablon XSLT, który wydaje się że byłby najlepszym rozwiązaniem. Będę wdzięczny za wszelkie sugestie.

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

https://archive.is/20260102164822/https://wyborcza.biz/biznes/7,147582,32503905,szykuje-sie-bunt-przeciwko-ksef-ludzie-w-sieci-nawoluja-sie.html

Chyba ktoś źle pojął ideę tego buntu. On miał ukazać przede wszystkim nieszczelność i brak obiecywanych funkcji już w momencie uruchomienia.

PK_64
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Warszawa
  • Postów: 36
0

Witam

Czy ktoś ma wisualizację XML FA3 ? gdzie można pobrać faktura_FA3.xslt ? a może to tajemnica państwowa ?
Paweł

asoio
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 26
1

Dla @PK_64 i innych zainteresowanych w załączeniu transformata dla FA(3) z placeholderami na numer KSeF faktury i QRCode I.

W wygenerowanym HTMLu fragment:

Kopiuj
<!--{{nrkseftemplate}}-->

trzeba zamienić na:

Kopiuj
<span class="label-data-info"><span class="label-data-info--name">Numer KSeF: </span><span class="label-data-info--value">{{nrkseffaktury}}</span></span>

gdzie {{nrkseffaktury}} to numer KSeF faktury,

natomiast fragment:

Kopiuj
<!--{{qrcodetemplate}}-->

trzeba zamienić na:

Kopiuj
<div class="line-basic"></div><div class="section-data"><span class="section-data__header section-data__header--h1">Sprawdź, czy Twoja faktura znajduje się w KSeF!</span><div class="section-data__qr-wrapper"><img height="207" alt="qrcode" src="{{qrcode}}" /><span class="label-data-info label-data-info--height1 label-data-info--text-center"><span class="label-data-info--name">{{nrkseffaktury}}</span></span></div><div style="float: left; width: 70%;"><div class="label-data-info label-data-info--height2"><span class="label-data-info--name">Nie możesz zeskanować kodu z obrazka? Kliknij w link weryfikacyjny i przejdź do weryfikacji faktury!</span></div><div class="label-data-info label-data-info--height1"><span class="label-data-info--value"><a style="text-decoration: none;" href="{{verlink}}">{{verlink}}</a></span></div></div></div>

gdzie: {{qrcode}} to QRCode w base64 poprzedzony ciągiem 'data:image/png;base64,', {{nrkseffaktury}} jak wyżej, a {{verlink}} to link weryfikacyjny.

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.