agentsclimarketplace

Jpk submit

Skill dithiothreitol/jdg-ksiegowy/.claude/skills/jpk-submit

AI Asystent Księgowy dla JDG (Polska) — faktury, KSeF 2.0, JPK_V7M/EWP, ZUS, ryczałt. OpenClaw + Ollama + Claude.

Install
npx -y skills add dithiothreitol/jdg-ksiegowy --skill jpk-submit

Assembled 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_*.xml lub data/jpk/JPK_EWP_*.xml)

W .env muszą być:

  • MF_PESEL — PESEL podatnika
  • MF_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 publiczne
  • MF_ENV=test (domyślnie) lub prod
  • SELLER_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

  1. Najpierw przetestuj na bramce TEST (MF_ENV=test). Bramka prod = e-dokumenty.mf.gov.pl, test = test-e-dokumenty.mf.gov.pl.
  2. 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ń.
  3. Sprawdź certyfikat MF — aktualizowany okresowo (ostatnio 18.07.2025). Nieaktualny → init zwróci błąd 404.
  4. Zachowaj UPOdata/upo/UPO_*.bin to dowód złożenia. Bez UPO uznaje się że JPK nie został złożony.
  5. 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.

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.