Jpk submit
AI Asystent Księgowy dla JDG (Polska) — faktury, KSeF 2.0, JPK_V7M/EWP, ZUS, ryczałt. OpenClaw + Ollama + Claude.
npx -y skills add dithiothreitol/jdg-ksiegowy --skill jpk-submitAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 5 stars5 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Wysyła wygenerowany plik JPK_V7M lub JPK_EWP do bramki Ministerstwa Finansów (REST API e-dokumenty.mf.gov.pl) z autoryzacją "danymi autoryzującymi" (bez podpisu kwalifikowanego). Zwraca numer referencyjny i UPO (Urzędowe Poświadczenie Odbioru). Użyj gdy user mówi "wyślij JPK do MF", "złóż deklarację VAT", "wyślij JPK_V7M", "wyślij ewidencję ryczałtu", "submituj JPK", lub bezpośrednio po wygenerowaniu pliku JPK.
SKILL.md
3.3 KB, as published. Nobody here has run it
Wysyłka JPK do bramki MF
Pełny flow: szyfrowanie XML (AES-256-CBC + RSA klucz publiczny MF) → init upload → PUT na Azure Blob → finish → polling status → pobranie UPO.
Wymagane dane
- xml-path — ścieżka do pliku JPK (zwykle z
data/jpk/JPK_V7M_*.xmllubdata/jpk/JPK_EWP_*.xml)
W .env muszą być:
MF_PESEL— PESEL podatnikaMF_PRIOR_INCOME— kwota przychodu z PIT za rok N-2 (dla wysyłki w 2026 → PIT za 2024). Pozycje zgodnie z formularzem PIT-37/28/36/36L. Brak zeznania →0.MF_CERT_PATH— ścieżka do klucza publicznego MF (PEM/DER) — pobierz z podatki.gov.pl, sekcja klucze publiczneMF_ENV=test(domyślnie) lubprodSELLER_FIRST_NAME,SELLER_LAST_NAME,SELLER_BIRTH_DATE,SELLER_NIP
Wywołanie — DRY-RUN (zalecane przed pierwszą wysyłką)
python3 skills/jpk-submit/scripts/submit.py --xml-path data/jpk/JPK_V7M_2026_04.xml --dry-run
Pokazuje co byłoby wysłane (rozmiar, env, fingerprint danych autoryzujących) bez dotykania bramki.
Wywołanie — wysyłka
python3 skills/jpk-submit/scripts/submit.py --xml-path data/jpk/JPK_V7M_2026_04.xml
Zwraca JSON:
{
"success": true,
"reference_number": "20260417-...",
"status_code": 200,
"upo_path": "data/upo/UPO_20260417-...bin",
"mf_env": "test"
}
Polling statusu trwa do 10 minut (interwał 15s). Status 200 = sukces + UPO; 401-420 = błędy MF (zła XSD, certyfikat, autoryzacja).
⚠️ KRYTYCZNE — przed wysyłką na PROD
- Najpierw przetestuj na bramce TEST (
MF_ENV=test). Bramka prod =e-dokumenty.mf.gov.pl, test =test-e-dokumenty.mf.gov.pl. - Zweryfikuj kwotę przychodu z PIT za rok N-2 — błąd → odrzucenie autoryzacji. Konkretne pozycje: PIT-37 poz. 50/83, PIT-28 poz. 20/22/24/62/73, PIT-36 poz. 67-75/131, PIT-36L poz. 23/25/27/28/33. Brak zeznania = 0. Nie wolno sumować z różnych zeznań.
- Sprawdź certyfikat MF — aktualizowany okresowo (ostatnio 18.07.2025). Nieaktualny → init zwróci błąd
404. - Zachowaj UPO —
data/upo/UPO_*.binto dowód złożenia. Bez UPO uznaje się że JPK nie został złożony. - Termin — JPK_V7M do 25-go następnego miesiąca; JPK_EWP do 30.04 następnego roku.
Po sukcesie
Pokaż userowi: reference_number, mf_env, ścieżkę UPO (jako klikalny link).
Jeśli mf_env=test — wyraźnie zaznacz że to wysyłka TESTOWA, nie produkcyjna.
Implementacja MVP — disclaimer
Klient został napisany od zera (brak oficjalnego SDK MF dla Pythona). Jeśli MF zmieni format InitUploadSigned (do potwierdzenia: nazwa endpointu dla danych autoryzujących vs. podpis kwalifikowany) — wymaga to aktualizacji src/jdg_ksiegowy/mf_gateway/client.py.