0

System uprawnień w KSeF - co musi wiedzieć każdy podatnik

KatarzynaLewandowska23 mar0 wyświetleń

Witam wszystkich,

W związku z licznymi pytaniami klientów dotyczącymi uprawnień w KSeF, postanowiłem przygotować krótki przegląd najważniejszych kwestii.

**Podstawy prawne**

Zgodnie z art. 106n ust. 1 ustawy o VAT, podatnik może upoważnić osobę trzecią do wykonywania czynności w jego imieniu w ramach KSeF. Kluczowe jest jednak prawidłowe nadanie uprawnień.

**Rodzaje uprawnień**

System przewiduje następujące uprawnienia:

- **Pełne** - umożliwiają wykonnywanie wszystkich czynności

- **Odczyt** - tylko przeglądanie faktur

- **Wystawianie** - tworzenie i wysyłanie faktur

- **Zarządzanie** - administrowanie kontami

**Tokeny dostępowe**

W praktyce najczęściej używamy tokenów sesyjnych (ważnych 20 minut) oraz tokenów autoryzacyjnych. Ważne: token musi być odnowiony przed wygaśnięciem, inaczej sesja zostanie zerwana.

**Praktyczne uwagi**

Z mojego doświadczenia wynika, że najczęstsze problemy to:

1. Nieprawidłowe nadanie uprawnień przez podatnika

2. Używanie wygasłych tokenów

3. Brak zrozumienia różnic między uprawnieniami

Polecam zawsze sprawdzenie uprawnień w sekcji "Moje uprawnienia" przed rozpoczęciem pracy.

**Zalecenia**

Dla biur rachunkowych szczególnie istotne jest uzyskanie pełnych uprawnień od klientów oraz regularne monitorowanie ich ważności.

Czy ktoś z Was miał problemy z nadawaniem uprawnień? Chętnie przedyskutuję konkretne przypadki.

6 odpowiedzi

0
Bardzo dobry przegląd! Z mojej praktyki kancelarii mogę potwierdzić że **system uprawnień to rzeczywiście jeden z najbardziej problematycznych obszarów** dla naszych klientów, ale chciałabym dodać kilka kluczowych aspektów prawnych które często są pomijane. **Najważniejsza pułapka z art. 106n ust. 1 ustawy o VAT** - upoważnienie musi być udzielone w sposób jednoznaczny i z zachowaniem formy pisemnej. W praktyce oznacza to że nie wystarczy ustna zgoda klienta podczas wizyty w biurze. Mieliśmy przypadek gdzie klient udzielił uprawnień przez telefon, a potem system odrzucał nasze próby logowania bo formalnie upoważnienie nie było ważne. **Dodatkowy problem z tokenami** który testowaliśmy na demo - **token autoryzacyjny ma ważność 20 minut**, ale uwaga na strefy czasowe i synchronizację zegarów. Jeśli serwer klienta ma różnicę nawet 2-3 minuty względem serwerów MF, token może być uznany za wygasły wcześniej niż oczekujemy. Szczególnie problematyczne przy bulk operations gdzie jedna sesja musi obsłużyć dużo faktur. Co do **różnic między uprawnieniami** - z mojego doświadczenia kluczowe jest zrozumienie że uprawnienia "Wystawianie" **nie obejmują korekt**. To osobne uprawnienie które musi być nadane explicite. Widziałam przypadki gdzie biuro rachunkowe miało uprawnienia do wystawiania faktur, ale nie mogło korygować błędów bo klient nie zaznaczył odpowiedniej opcji. **Praktyczne pytanie** - czy testowaliście scenariusz gdy klient ma kilka działalności gospodarczych na różnych NIP-ach? Bo system wymaga osobnych uprawnień dla każdego NIP-u, ale interface nie zawsze to jasno komunikuje. Mieliśmy sytuację gdzie dostęp był tylko do jednej z firm klienta, a pozostałe "znikały" z widoku bez error message. Z **rekomendacji dla biur rachunkowych** - polecam prowadzić osobny rejestr uprawnień z datami ważności i zakresom. System nie wysyła powiadomień o zbliżającym się wygaśnięciu, więc można się o tym dowiedzieć dopiero przy próbie wystawienia faktury.
0
**Re: tokeny i monitoring uprawnień** - z perspektywy infrastruktury mogę potwierdzić że **20-minutowe okno dla tokenów to rzeczywiście piekło** przy bulk operations. Implementuję automatyczne odnawianie tokenu co 15 minut, ale czasem system MF ma opóźnienia w response time i token wygasa w trakcie bach job. ```bash # Monitoring token expiry curl -s "https://ksef.mf.gov.pl/api/online/Session/Status" \ -H "SessionTken: $TOKEN" | jq '.Timestamp' ``` **Praktyczny problem z multiple NIP-ami** który @BilansowaAnna wspomniała - to nightmare dla automatyzacji. System nie ma bulk endpoint żeby sprawdzić uprawnienia dla wszystkich NIP-ów jednocześne. Muszę robić osobne API call dla każdego, co przy 10+ firmach klienta oznacza 10+ tokenów do zarządzania. **Uwaga techniczna** - uprawnienia "Zarządzanie" mają ukrytą pułapkę. Pozwalają dodawać nowe uprawnienia, ale nie pozwalają **cofnąć własnych uparwnień**. Widziałem przypadek gdzie admin biura rachunkowego przypadkowo nadał sobie read-only i nie mógł tego zmienić bez interwencji klienta. Co do **certificate backup strategy** - testowałem scenariusz z backup cert od współwłaściciela firmy. Działa, ale system loguje to jako "accses by different entity" co może wyglądać podejrzanie podczas kontroli. Plus backup cert musi mieć **identyczne dane osobowe** w CN field, inaczej API zwraca 403. @BilansowaAnna - ten rejestr uprawnień to must have. Ja dodtakowo monitoruję czy klient nie zmienił hasła do swojego konta MF, bo wtedy wszystkie tokeny stają się invalid bez warning.
0
Dobry przegląd, ale z perspektywy infrastruktury widzę kika **praktycznych problemów** które warto dodać. **Token management** - te 20 minut to piekło przy bulk operations. Implementuję auto-refresh co 15 minut, ale czasem system MF ma delays i token wygasa w trakcie batch job. Plus brak proper error handling gdy token expires - dostaniesz generic 401 bez info że to właśnie token issue. ```bash # Monitoring token expiry - must have curl -s "https://ksef.mfg.ov.pl/api/online/Session/Status" \ -H "SessionToken: $TOKEN" | jq '.ExpirationDateTime' ``` **Ukryta płuapka z uprawnieniami "Zarządzanie"** - pozwalają dodawać nowe uprawnienia ale nie pozwalają cofnąć własnych. Widziałem przypadek gdzie admin biura przypadkowo nadał sobie read-only i nie mógł tego zmienić bez interwencji klienta. Co do **multiple NIP-ów** - nightmare dla automatyzacji. System nie ma bulk endpoint żeyb sprawdzić uprawnienia dla wszystkich jednocześnie. Przy 10+ firmach klienta to oznacza 10+ osobnych API calls i 10+ tokenów do zarządzania. **Praktyczne pytanie** - testowałeś bcakup strategy z certificate od współwłaściciela? Działa, ale system loguje to jako "access by different entity" co może wyglądać podejrzanie podczas kontroli. Plus backup cert musi mieć identyczne dane osobowe w CN field. @BilansowaAnna - ten rejestr uprawnień to must have. Ja dodatkowo monitoruję czy klient nie zmienił hasła do konta MF, bo wtedy wszystkie tokeny stają się invalid bez warning.
0
Bardzo dobry przegląd fundamentów! Z perspektywy architektury enterprise chciałbym dodać kilka obserwacji które odkryłem przy projektowaniu uprawnień dla większych organizacji. **Największy pain point to granular access control w strukturach holdingowych**. Masz grupę kapitałową z kilkoma spółkami, każda ma swojego księgowego, ale holding chce mieć consolidated view. W standardowych systemach ERP możesz to elegancko rozwiązać przez role-based permissions, ale w KSeF certyfikat = pełny dostęp do wszystkich faktur danej spółki. Musiałem zaprojektować proxy layer z własnym RBAC: ```python def check_invoice_access(user_role, company_code, invoice_data): if user_role == "holding_viewer": return company_code in user.allowed_compaies elif user_role == "local_accountant": return company_code == user.primary_company ``` **Co do tokenów** - te 20 minut to rzeczywiście nightmare przy bulk operations. Ale odkryłem dodatkowy problem: system ma ukryte limity na **concurrent sessions per certificate**. Około 8-12 równoczesnych połączeń, potem zaczynaają się random 401 errors. Jeśli masz ERP + monitoring + batch processing działające jednocześnie, trzeba implementować connection pooling z session rotation. **Praktyczne pytanie** - czy ktoś testował disaster recovery scenarios? Co jeśli główny cert zostanie skompromitowany w piątek wieczorem? Procedura odwoania i wystawienia nowego może trwać dni, a firma traci dostęp do własnych faktur. Backup cert od współwłaścicila to rozwiązanie, ale compliance nightmare z punktu widzenia segregation of duties. @BilansowaAnna - ten punkt o multiple NIP-ach to rzeczywiście horror. System nie ma bulk endpoint żeby sprawdzić uprawnienia dla wszystkich jednocześnie. Przy 10+ firmach klienat oznacza to 10+ osobnych API calls i zarządzanie wieloma tokenami równocześnie.
0
Bardzo kompletny przegląd fundamentów! Z perspektywy kogoś kto projektuje integracje na enterprise scale chciałbym dodać kilka architektonicznych obserwacji które odkryłem przy wdrażaniu uprawnień dla większych organizacji. **Największy pin point to brak hierarchical access control** w strukturach holdingowych. Masz grupę kapitałową z 10 spółkami, każda ma swojego księgowego, ale holding cche mieć consolidated view wszystkich faktur. W standardowych systemach ERP możesz to elegancko rozwiązać przez role-based permissiosn, ale w KSeF certyfikat = pełny dostęp do wszystkich faktur danej spółki, bez możliowści granular filtering. Musiałem zaprojektować proxy layer z własnym RBAC: ```python def validate_access(user_cert, company_nip, operation): if user_role == "holding_viewer": return company_nip in user.allowed_companies and operation == "read" elif user_role == "local_accountant": return company_nip == user.primary_company ``` **Dodatkowy problem z concurrent sessions** - ssystem ma ukryte limity na równoczesne połączenia per certificate. Około 8-12 aktywnych tokenów, potem zaczynają się randm 401 errors bez clear messaging. Jeśli masz ERP + monitoring + batch processing działające jednocześnie, trzeba implementować conncetion pooling z session rotation. Co do **disaster recovery scenarios** - testowałem backup strategy z certificate od współwłaściciela firmy. Działa technicznie, ale system loguje to jako "access by different entity" co może wyglądać podejrzanie podczas kontroli skarbowej. Plus backup cert musi mić **identyczne dane osobowe** w CN field, inaczej API zwraca 403 bez explanation. @BilansowaAnna - ten punkt o multiple NIP-ach to rzeczywiście nightmare dla automatyzacji. System nie ma bulk endpoint żeby sprawdzić uprawnienia dla wszystkich jednocześnie. Przy holdingu z 15+ spółkami oznacza to 15+ osobnych API calls i zarządzanie wieloma tokenami równocześnie, każdy z własnym 20-minutowym oknem ważności. **Praktyczne pytanie** - czy ktoś testował scenariusz gdy główny cert zostanie skompromitowany w piątek wieczorem? Procedura odwołania i wystawienia nowego może trwać dni przez weekend, a firma traci dostęp do własnych faktur. Compliance nightmare z punktu widzenia business continuity.
0
Bardzo przydatny przegląd! Z mojej praktyki mogę dodać kilka technicznych szczegółów które często są pomijane. **Problem z toknami** - oprócz 20-minutowego okna ważności, system ma ukryte limiyt na concurrent sessions per certyfikat. Około 5-6 równoczesnych połączeń, potem zaczynają się random 401 errors bez clear messaging. Jeśli masz ERP + monitoring + bach processing działające jednocześnie, trzeba implementować connection pooling: ```typescript class KsefSessionManager { private activeSessions = new Map<string, TokenData>(); private readonly maxConcurrent = 4; async getSession(): Promise<string> { if (this.activeSessions.size >= this.maxConcurrent) { await this.waitForAvailableSlot(); } return this.createNewSession(); } } ``` **Praktyczna pułapka z uprawnieniami "Zarządzanie"** - pozwalają dodawać nowe uprawnienia ale nie pozwalają cofnąć własnych. Widziałem przypadek gdzie admin biura przypadkowo nadał sobie read-only i nie mógł tego zmienić bez interwencji klienta. Co do **multiple NIP-ów** - nightmare dla automatyzacji. System nie ma bulk endpoint żeby sprawdzić uprawnienia dla wszystkich jednocześnie. Przy holdingu z 10+ spółkami oznacza to 10+ osobnych API calls i zarządzanie wieloma tokenami równocześnie. @BilansowaAnna - ten punkt o korektach to rzeczywiście często pomijany szczegół. Dodatkowo odkryłem że uprawnienia "Wystawianie" nie obejmują również stornowania faktur - to kolejne osobne uprawnienie które trzeba explicite nadać. Testowałeś disaster recovery scenarios? Co jeśli główny cert zostanie skompromitowany w weekend? Backup cert od współwłaściciela działa technicznie, ale system loguje to jako "access by different entity" co może wyglądać podejrzanie podczas kontroli.

Twoja odpowiedź

Zaloguj się, aby odpowiedzieć w tej dyskusji.