gnubok
← Registry

Skill

Kvartalsmoms på 12 minuter

SKILL.md som stänger ett kvartals moms från okategoriserat till 'redo att lämna in' i 12 minuter. Identifierar blockers via gnubok_vat_close_check, föreslår kategorisering, returnerar ifyllt SKV 4700 från gnubok_get_vat_report.

SkillLiveSkriver till huvudboken
Byggt avgnubok· TeamSenast uppdaterad: 12 maj 2026v1.0.0

TL;DRSKILL.md som stänger ett kvartals moms från okategoriserat till 'redo att lämna in' i 12 minuter. Identifierar blockers via gnubok_vat_close_check, föreslår kategorisering, returnerar ifyllt SKV 4700 från gnubok_get_vat_report.

Stegen

Skillen stänger ett kvartals moms i ett anrop till gnubok_vat_close_check. Inte fem separata rapporter, utan en strukturerad förfrågan som returnerar exakt vad du behöver veta för att fylla i SKV 4700.

Stegen, mestadels parallella:

  1. gnubok_vat_close_check(period: "2026-Q1"). Drar blocker-rapport.
  2. Om uncategorized_transactions: gnubok_list_uncategorized_transactions(period: ...) följt av gnubok_categorize_transaction per post.
  3. Om unapproved_supplier_invoices: peklänk till godkännandekön i appen.
  4. Om reverse_charge_input_missing: gnubok_query_journal(accounts: [2614, 2624, 2634, 2645], period: ...). Visar felaktiga rader.
  5. Om missing_high_value_receipts: peklänk till transaktioner saknande underlag ≥ 4 000 kr.
  6. Om bank_unreconciled: peklänk till bankavstämningen i appen.
  7. När blockers = 0: gnubok_get_vat_report(period: ...). Returnerar fyllt SKV 4700.
  8. Skillen visar rutornas värden mot förra kvartalets snitt (drift-check via warnings: output_vat_ratio_drift, input_vat_ratio_drift, revenue_drop, revenue_spike).
  9. Skillen flaggar ruta 49 = att betala/återfå.
  10. Returnerar SKV 4700-värdena. Inlämning sker manuellt i Skatteverkets e-tjänst.

Inget skrivs till huvudboken utan godkännande. Skatteverket-inlämning sker manuellt; ingen MCP-bro för momsdeklaration finns idag.

SKV 4700: rutorna skillen fyller i

RutaVad det ärgnubok-konto
05Försäljning Sverige3001, 3002, 3041
10Utgående moms 25%2611
11Utgående moms 12%2621
12Utgående moms 6%2631
20Försäljning av varor till annat EU-land3105
21Försäljning av tjänster till annat EU-land3106
22Försäljning av varor utanför EU3108
23Försäljning av tjänster utanför EU3109
30Inköp av tjänster från EU (reverse-charge utg)2614
31Inköp av varor från EU (reverse-charge utg)2624
32Inköp från annat EU-land (övrigt)2634
35Inköp från konsument2680
39Vinstmarginalbeskattning utgående moms2616
40Vinstmarginalbeskattning beskattningsunderlag
48Ingående moms att dra av2641, 2645
49Att betala / få tillbaka(beräknad)
60Beräknad importmoms 25% (varor icke-EU)2615
61Beräknad importmoms 12%2625
62Beräknad importmoms 6%2635

Konton hänvisar till BAS 2026. Om du använder en avvikande kontoplan läser skillen den via gnubok_list_accounts och anpassar mappningen.

Installera

git clone https://github.com/erp-mafia/gnubok
cd gnubok/skills/kvartalsmoms-pa-12-minuter

I Claude Desktop:

Cmd-Shift-P → Skills: Add from folder → välj mappen

Kräver att gnubok MCP är ansluten med scopes reports:read, transactions:read, transactions:write.

Köra skillen

@kvartalsmoms-pa-12-minuter stäng Q1 2026

Agenten:

  1. Kör vat_close_check, listar blockers (säg 12 uncategorized_transactions, 2 reverse_charge_input_missing, 0 övriga).
  2. Föreslår kategoriseringar för okategoriserade.
  3. Peklänkar reverse-charge-obalanserna.
  4. Du godkänner i appen.
  5. Skillen kör om vat_close_check. Blockers = 0.
  6. Returnerar get_vat_report med fyllda rutor.
  7. Visar diff mot Q4 2025 om någon av warnings triggar.
  8. Frågar: "Filen är klar för upload."

Tar 9–14 minuter beroende på antal blockers. Snittet vi ser är 12 minuter på en period med 200 transaktioner.

Blockers och vad de betyder

uncategorized_transactions: transaktioner i perioden som inte är bokförda. Skillen erbjuder en kategoriseringssession.

unapproved_supplier_invoices: leverantörsfaktura i status "registered" men inte "approved". Räknas inte in i ingående moms förrän approved.

bank_unreconciled: bankavstämningen i perioden har diff. Måste balansera innan moms-snapshot är trovärdig.

missing_high_value_receipts: BFL 5 kap 6§ kräver originalverifikat för utgift ≥ 4 000 kr inkl moms. Saknas det blir det revisor-anmärkning.

reverse_charge_input_missing: en EU-leverantörsfaktura kategoriserades som 2641 + 4010 istället för split 2614/2645 + 4010. Utgående (2614) saknar speglande ingående (2645) på samma belopp.

Begränsningar

  • Skillen lämnar inte in moms till Skatteverket. Det sker manuellt i e-tjänsten med BankID.
  • Skillen räknar inte om historiska perioder. Den jobbar med en period i taget.
  • Skillen försöker inte minska din moms-att-betala. Det är skatteplanering, inte momshantering.
  • Skillen hanterar inte vinstmarginalbeskattning (begagnade varor, konst, antikviteter). Använd gnubok_create_voucher manuellt för det.

Vad du får

Momsstängning som tar 12 minuter istället för 90. Och en audit-logg per anrop, så att när Skatteverket frågar "varför hamnade den här på ruta 48?", svaret finns på rad i gnubok_audit_package-zippen: actor, scope, tidsstämpel, before/after.

Inte snabbare moms. Moms som är revisionsbar.

OAuth-scopes

  • reports:read
  • transactions:read
  • transactions:write

gnubok-verktyg

  • gnubok_vat_close_check
  • gnubok_get_vat_report
  • gnubok_list_uncategorized_transactions
  • gnubok_categorize_transaction
  • gnubok_query_journal
  • gnubok_vat_review_widget

Vanliga frågor

Vad är skillnaden mellan ruta 30 och ruta 60? Jag har importmoms från Stripe.
Ruta 30 är reverse-charge utgående moms på EU-tjänster (AWS, Linear, Stripe-avgifter, Vercel). Ruta 60 är beräknad importmoms på varor från länder utanför EU. Stripe-avgiften är ett EU-tjänsteinköp om Stripe-bolaget är i Irland, då hamnar det i ruta 30, inte 60. Skillen läser leverantörens land från extracted_data och mappar enligt din kontomappning.
Min reverse-charge är inte balanserad, vad menas det?
Reverse-charge ska spegla sig: 2614 (utgående 25%) ska motsvaras av 2645 (beräknad ingående) på samma belopp. Är de inte lika är något bokfört fel. `gnubok_vat_close_check` returnerar blockern `reverse_charge_input_missing` med peklänk till transaktionen.
Hur ofta råkar man flytta 2641 till 2645 för EU-tjänster?
Det är den vanligaste momsfel-typen för svenska SaaS-grundare. Generic AI-kategoriserare lär sig inte skillnaden mellan 2641 (vanlig ingående) och 2645 (omvänd skattskyldighet). När du kör skillen för Q1 kommer den retroaktivt flagga rader från tidigare kvartal som hamnat fel via blockern `reverse_charge_input_missing`.
Behöver jag stänga kvartalet manuellt efteråt?
Nej. Skillen stagar inte close_period. Den producerar bara SKV 4700-paketet och säger 'redo att lämna in'. Själva inlämningen sker manuellt i Skatteverkets e-tjänst (BankID). Skatteverket har ingen MCP-yta för momsinlämning idag.
Vad händer om jag har en pågående tvist om kreditfaktura?
Skillen flaggar omtvistade fakturor som blockers. De räknas inte in i den föreslagna ruta 49-summan. När tvisten löser sig kör du skillen igen och ruta 49 uppdateras. BFL 5 kap 1§: moms får inte rapporteras på något du själv inte håller med om.
Nästa steg

Klar att testa själv?

Manuell-versionen är gratis. Open source, ingen bindningstid. Importera SIE4 i tio minuter.