Files
accounted/.claude/skills/swedish-accounting-compliance/references/changes-2025-2026.md
T
Jakob Wennberg c74b19df1b Accounted rebrand + swarm-skill cleanup + bank-reconciliation fixes (#643)
* feat(reconciliation): close the bank-feed loop on voucher links and re-tag mis-typed opening balances

Two related fixes to bank reconciliation correctness:

1. Auto-reconcile on voucher link. Linking an invoice or supplier invoice to
   an existing voucher previously advanced only the invoice — the bank
   transaction that paid it kept sitting in the Transactions inbox with a null
   journal_entry_id. linkInvoiceToVoucher / linkSupplierInvoiceToVoucher now
   call autoReconcileTransactionForLinkedVoucher (lib/reconciliation), which
   links the bank transaction to the same verifikat when exactly one unbooked
   line matches it. Best-effort and post-commit: a failure here never fails the
   link. The result surfaces reconciledTransactionId; the inbox row leaves the
   list and the UI shows link_success_tx_reconciled.

2. Re-tag mis-typed opening balances. getReconciliationStatus and the GL-line
   matching RPCs identify a cash account's ingående balans solely by
   journal_entries.source_type='opening_balance'. Companies migrated from other
   systems often booked the bank IB as an ordinary voucher (source_type
   'import' or 'manual'), so it was never excluded and surfaced as a phantom
   reconciliation difference equal to the opening balance. Adds:
   - migration mark_entry_as_opening_balance: a GUC-gated carve-out in the
     immutability trigger plus a SECURITY DEFINER RPC that validates the entry
     (balance-sheet lines only, dated on a fiscal-period boundary), flips the
     source_type, and writes an audit row — no blanket data sweep.
   - POST /api/reconciliation/bank/mark-opening-balance + MarkOpeningBalanceSchema.
   - BankReconciliationView action to trigger it from the IB diff.

The gnubok_create_voucher executor now accepts a typed is_opening_balance flag
and derives source_type='opening_balance' only after validating class 1/2 lines
on the period start, so new IBs land correctly typed.

Covered by lib/reconciliation auto-reconcile tests, voucher-executors tests,
and a mark-entry-as-opening-balance pg-real test.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* chore: rebrand gnubok → Accounted and prune swarm agent skills

Product rebrand and skills housekeeping. No runtime behaviour change.

Rebrand: replace user-visible "gnubok" with "Accounted" across docs, READMEs,
in-code comments, doc-site content, MCP skill/resource prose, and the
gnubok-mcp package description. The MCP resource URI scheme is moved gnubok://
→ Accounted:// consistently across resource registrations, the event-type
comment, and the resource/skill tests. Deliberately preserved as stable
identifiers (NOT rebranded): the gnubok-company-id cookie, gnubok_sk_ / gnubok_inv_
token prefixes, the gnubok-mcp npm bridge name, and the AGI <gem:Programnamn>
value (kept 'gnubok' per its source comment — it is the software identifier sent
to Skatteverket and must not churn across visual rebrands).

Skills: remove the 27 swarm-* agent SKILL.md atoms (no longer used; already
absent from the agent_atom_registry in prod), refresh the remaining skill docs,
add the .claude/rules/ path-scoped rule set, and regenerate the
seed_agent_atom_bodies migration + .skill-body-manifest.json via
`npm run skills:generate` so the DB-backed skill bodies match the trimmed set.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-03 10:52:01 +02:00

6.6 KiB
Raw Blame History

Regulatory Changes 2024-2026

Recent and upcoming changes to Swedish accounting law, tax rules, and reporting requirements. Organized chronologically.


Already in effect

1 July 2024: Pappersfritt bokföring (SFS 2024:494)

BFL 7 kap 6§ updated.

  • No longer required to keep paper originals after digitization
  • Applies retroactively to material digitized before 1 July 2024
  • The digital copy must be a faithful reproduction
  • Must still preserve for 7 years
  • Software implication: receipt OCR/scanning is now the primary archival path, not supplementary. Your digitization workflow must ensure completeness and immutability.

1 January 2025: Momsregistreringsgräns höjd

  • Threshold raised from 30 000 to 80 000 kr per 12-month period
  • Companies with momspliktig omsättning under 80 000 kr need not register for moms
  • Can still register voluntarily
  • Software implication: update validation logic for momsregistrering recommendations.

1 January 2025: AGI föräldraledighet/VAB

  • Employers must report monthly to Skatteverket when employees take föräldraledighet or vård av sjukt barn (VAB)
  • Reported as part of arbetsgivardeklaration
  • Software implication: add föräldraledighet/VAB fields to AGI submission.

Effective 1 January 2026

3:12-reglerna reformed

Major overhaul of fåmansföretagsreglerna:

New gränsbelopp calculation (3 components):

  1. Grundbelopp: 4 IBB = 4 × 83 400 = 333 600 kr, divided equally among shares
  2. Lönebaserat utrymme: 50% × (andel av löneunderlag - 8 IBB per delägare). Max: 50 × egen/närstående lön
  3. Ränta på omkostnadsbelopp: statslåneränta + 9% on omkostnadsbelopp > 100 000 kr

Key changes:

  • Löneuttagskravet slopat (no minimum salary requirement for 2025)
  • Replaced by löneavdrag: 8 IBB (667 200 kr for 2026) per delägare subtracted from löneunderlag
  • 4-procentsspärren borta: all delägare can use löneunderlag regardless of ownership share
  • Karensti shortened from 5 to 4 years
  • Ränteuppräkning of sparat utdelningsutrymme abolished
  • Index- och kapitalunderlagsreglerna phased out (can still be used until 2029 for old shares)

Software implication: K10-blanketten for 2025 (filed spring 2027) uses new rules. If your software calculates utdelningsutrymme, the entire calculation engine needs rebuilding.

K2/K3 changes (BFN decision June 2025)

Applies to räkenskapsår starting after 31 December 2025 (i.e., 2026 calendar year onwards).

Excluded from K2:

  • Bostadsrättsföreningar and bostadsföreningar (must use K3)
  • Companies where byggnader generate >= 75% of nettoomsättning (must use K3)
  • Nystartade företag starting after 30 June 2025 with förlängt first räkenskapsår ending 31 Dec 2026 or later must apply new rules immediately

K3 changes:

  • Updated rules for aktierelaterade ersättningar (ch. 26)
  • Updated rules for eventualtillgångar (ch. 21.15): must now be "så gott som säkert" for recognition
  • New transitional provisions for applying changes

Software implication: if your system helps companies choose K-regelverk, update the decision logic. If you generate årsredovisning, BRF templates need K3 format.

Belopp och gränser 2026

Item 2025 2026
Prisbasbelopp 58 800 59 200
Förhöjt prisbasbelopp 59 900 60 500
Inkomstbasbelopp 80 600 83 400
Inventarier av mindre värde 29 400 29 600
Traktamente heldag 290 300
Traktamente halvdag 145 150
Nattraktamente 145 150

Ålderspensionsavgift

  • Persons who are 67+ at year start (born 1959 or earlier): only ålderspensionsavgift 10.21%
  • Previous threshold was 66 years (born 1958 or earlier)

F-skatt changes

  • Applicant can request tidsbegränsat godkännande
  • Skatteverket gains right to demand documentation proving eligibility
  • Intended to combat missbruk of F-skatt

ROT-avdrag

  • Returns to 30% of arbetskostnad (was temporarily 35% during 2024)
  • Max 50 000 kr per person per year
  • Combined ROT+RUT max: 75 000 kr

Reseavdrag

  • Threshold for avdrag for resor between bostad och arbetsplats raised from 11 000 to 15 000 kr

CSRD hållbarhetsrapportering

  • From 2026 (for reporting year 2025): larger companies beyond listed must comply with CSRD
  • Criteria: 2 of 3: >250 employees, >40 MSEK balansomslutning, >80 MSEK nettoomsättning
  • Smaller listed companies from 2027 (reporting year 2026)
  • Software implication: not directly accounting, but some customers may need help with data collection

Effective 1 April 2026

Sänkt livsmedelsmoms (Prop. 2025/26:55)

  • Livsmedel: 12% -> 6% (tillfälligt)
  • Period: 1 April 2026 - 31 December 2027
  • Restaurang/servering: stays at 12%
  • Transition rule: rate based on leveransdatum, not fakturadatum
  • Take-away/avhämtning: 6%. Servering/förtäring på plats: 12%

Critical implementation details:

  • Invoices spanning the transition date: split by delivery date
  • Advance payments (förskott): apply the rate valid when the supply actually occurs
  • Credit notes: apply the rate that was valid for the original transaction
  • BAS accounts: livsmedel output VAT moves from 2621 (12%) to 2631 (6%)
  • Momsdeklaration: ruta 31 (12%) decreases, ruta 32 (6%) increases

Software implication: your system needs a date-aware momssats lookup. Hard-coding rates is not viable. Store momssatser with giltighetstid (valid_from, valid_to).


Expected mid-2026

Skatteverket digital granskning (Prop. 2025/26:107)

  • Proposed effective date: 1 July 2026 (pending riksdag vote spring 2026)
  • Skatteverket may access digital bokföring directly via internet during revision
  • Only when legal ground for kontroll already exists
  • Removes the ban on telenät-based granskning in skatteförfarandelagen

Software implication: your system should support read-only access for Skatteverket during revision. Accounted's immutable audit_log, WORM document storage, and immutability of posted entries naturally support this. Consider building a dedicated API endpoint or export mechanism.


On the horizon (2027+)

Obligatorisk e-fakturering B2B

EU directive ViDA (VAT in the Digital Age) will likely require structured e-invoicing for B2B transactions. Sweden expected to implement 2028-2030. Standards: Peppol BIS Billing 3.0, EN 16931.

Software implication: start supporting Peppol e-invoicing format now. It's already used by the public sector (offentlig sektor requires e-faktura since 2019). B2B mandate will make it universal.

Livsmedelsmoms reversion

Expected 1 January 2028: livsmedel reverts from 6% to 12%. Your system must handle the reversion date. Make sure momssats lookup is date-driven.