fix(vat): danstillställningar 25% → 6% from 2026-07-01 in guidance and suggestions (#1491)

* fix(vat): danstillställningar 25% to 6% from 2026-07-01 in guidance and suggestions (#1483)

From 2026-07-01 tillträde till danstillställningar is 6% VAT, aligned with
other cultural events. 6% was already a supported rate; every guidance
surface was silent on the change, so a dance-event customer plausibly got
25% suggested.

- swedish-vat skill: rate table row + a July 2026 change note under rate
  misclassification (cutover date, mixed-venue split vs 25% alcohol), and
  the 2631 account table mentions dance admission
- revenue_reduced_6 descriptor: dans/danstillstallning/dansband/entre
  keywords and updated description, which flows to both the UI suggestions
  and gnubok_suggest_categories via findMatchingTemplates
- atom seed regenerated; the generator now emits a version-downgrade guard
  on the ON CONFLICT so two branches each carrying a full 108-atom seed can
  no longer clobber each other's atom bodies depending on merge order

Closes #1483

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* review(vat): drop overbroad entré keyword, cite SkU25 and the prepayment rule

Two findings from the Swedish compliance review bot:
- bare 'entré' matched generic admission that is not always reduced-rate;
  the dance-specific keywords stay
- the rate claim now cites its primary sources (riksdagen 2025/26:SkU25,
  Skatteverket halvårsskiftet 2026) and records that tickets sold and paid
  before 2026-07-01 keep 25%

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* review(vat): admission-specific keywords only, explicit cutoff wording, seed rebuilt post-merge

- bare 'dans' also matched dance courses and artist fees; keep
  danstillställning/dansband and add danskväll
- rate table states the boundary explicitly: 25% through 30 June 2026
- atom seed regenerated from the tree that now includes #1489, emitted as
  20260810121001

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

---------

Co-authored-by: Jakob Wennberg <311770904+jakobwennberg-oss@users.noreply.github.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Jakob Wennberg
2026-08-10 14:18:23 +02:00
committed by GitHub
parent c77367ac1a
commit 0d0415e19c
7 changed files with 35119 additions and 8 deletions
+1 -1
View File
@@ -36,7 +36,7 @@ Always read the full reference before answering ANY question about:
|------|-----------|
| 25% | Default rate, most goods and services |
| 12% | Food, hotel, restaurant, camping (drops to 6% for food from April 2026) |
| 6% | Books, newspapers, transport, cultural events, sports, repairs (bicycles/shoes/clothing) |
| 6% | Books, newspapers, transport, cultural events, sports, repairs (bicycles/shoes/clothing), dance events (tillträde till danstillställningar, from 1 July 2026; 25% through 30 June 2026) |
| 0% | Exports outside EU, intra-EU supplies (with conditions) |
## Quick reference: Key BAS accounts
@@ -379,7 +379,7 @@ Complete mapping for SKV 4700.
| Account | Name | Purpose | Ruta |
|------|------|------|------|
| 2630 | Utgående moms, 6% | Summary account | 12 |
| 2631 | Utgående moms försäljning inom Sverige, 6% | Books, transport, culture | 12 |
| 2631 | Utgående moms försäljning inom Sverige, 6% | Books, transport, culture (incl. danstillställningar from 2026-07-01) | 12 |
| 2632 | Utgående moms egna uttag, 6% | Owner withdrawals | 12 |
| 2633 | Utgående moms uthyrning, 6% | Rental | 12 |
| 2634 | Utgående moms omvänd betalningsskyldighet, 6% | Reverse charge | **32** |
@@ -418,6 +418,8 @@ Complete mapping for SKV 4700.
Wrong VAT rate is the most common SME error. Confusion points: restaurant vs. takeaway food (both 12% but alcohol triggers 25% splitting), digital products (e-books 6% vs. SaaS 25%), mixed hotel packages, repair services (reduced rates only for specific categories: bicycles, shoes, leather goods, clothing, household linen).
**July 2026 change: danstillställningar.** From 2026-07-01, tillträde till danstillställningar (dance events: dansband evenings, club nights with dance character, dance courses with tillställning character) drops from 25% to 6%, aligning dance admission with other cultural events (riksdagen 2025/26:SkU25; Skatteverket "Nya lagar från halvårsskiftet 2026"). Tickets sold and paid before 2026-07-01 keep 25% even if the event is later: the prepayment follows the rate at payment. Watch the split at mixed venues: admission is 6%, but alcohol sales stay 25% and food/serving follows its own rate, so the entrance fee must be separated from serving revenue, same pattern as concert venues.
### EU trade errors
Forgetting reverse charge on EU purchases entirely (neither output nor input VAT reported). Common for IT services, advertising platforms (Google, Meta), consulting from EU suppliers. Also: missing periodisk sammanställning, not validating buyer VAT via VIES, zero-rating without transport documentation.
+1
View File
@@ -854,3 +854,4 @@ One line per decision: `[YYYY-MM-DD] <decision>: <why>`. Appended by agents and
[2026-08-10] Receipt hunt cron keeps searchMail=false: the mailbox leg stays manual until its time budget is proven. A sweep of one 172-message mailbox took over 600s while the route's maxDuration is 300, so enabling it nightly would time out mid-run. Flip both this flag and RECEIPT_HUNT_COMPANY_IDS together once the per-company budget is measured.
[2026-08-10] Account 2012 reverted from BAS_REFERENCE and the EF F-skatt template moved to 2013 (#1409): the primary source (bas.se BAS 2026 v2 PDF) has no 2012 anywhere; the EF equity block is 2010/2011/2013/2017/2018/2019. 2012 "Avräkning för skatter och avgifter" is a Visma/Bokio/BL program convention that the swedish-year-end-closing skill had absorbed as if standard. Kept per-company charts that already have 2012 untouched (their history is legal and the account is a valid free slot); only the reference, the seeded template and the skill guidance change.
[2026-08-10] committed_at overrides audited via a dedicated COMMITTED_AT_OVERRIDE action and a SECURITY DEFINER writer (#1444): reusing SECURITY_EVENT would overload attack semantics onto a sanctioned backdate, and a plain INSERT inside set_committed_at() fails under the pg harness where SET ROLE service_role has no BYPASSRLS and audit_log has no INSERT policy. EXECUTE revoked from anon/authenticated so PostgREST cannot expose the writer as an audit-noise RPC.
[2026-08-10] Atom seed migrations gained a version-downgrade guard in the generator (#1483): each seed is a full 108-atom upsert built from its branch's tree, so two parallel PRs each carrying a seed meant the last-applied one silently reverted the other's atom bodies while skills:check stayed green (it compares files to the manifest, never the DB). The ON CONFLICT now skips rows whose registry version is newer than the seed's. Dance-event VAT stayed guidance-plus-descriptor only: no rate cutover logic in the engine, since 6% already exists as a treatment and the entry date decides the rate the user picks.
+8 -2
View File
@@ -1281,14 +1281,20 @@ export const BOOKING_TEMPLATES: readonly BookingTemplate[] = [
vat_rate: 0.06,
deductibility: 'full',
mcc_codes: [],
keywords: ['bok', 'böcker', 'tidning', 'tidskrift', 'e-bok', 'persontransport', 'taxi', 'buss', 'tåg', 'kultur', 'konsert', 'teater', 'museum', 'bio', 'idrott', 'books', 'culture', 'transport'],
// Dance keywords: tillträde till danstillställningar dropped from 25% to
// 6% on 2026-07-01 (2025/26:SkU25, aligned with other cultural events).
// Admission sold and paid before that stays 25%; the descriptor reflects
// current law only. Deliberately admission-specific terms only: bare
// 'dans' or 'entré' would also match dance courses, artist fees and
// generic entrance charges, which are not all reduced-rate. (#1483)
keywords: ['bok', 'böcker', 'tidning', 'tidskrift', 'e-bok', 'persontransport', 'taxi', 'buss', 'tåg', 'kultur', 'konsert', 'teater', 'museum', 'bio', 'idrott', 'danstillställning', 'dansband', 'danskväll', 'books', 'culture', 'transport'],
risk_level: 'NONE',
requires_review: false,
impact_score: 5,
auto_match_confidence: 0.75,
default_private: false,
fallback_category: 'income_services',
description_sv: 'Intäkter med 6% moms (böcker, persontransport, kultur, idrott)',
description_sv: 'Intäkter med 6% moms (böcker, persontransport, kultur, idrott, danstillställningar fr.o.m. 2026-07-01)',
common: true,
},
{
+4 -4
View File
@@ -232,12 +232,12 @@
"version": 1
},
"horizontal/swedish-vat": {
"hash": "e0b55b8c5fafa4dd6bb28f71616637470c72f31df2cb7f8894bfbc40f49bf578",
"version": 3
"hash": "adb1b84256e9a17c8c54741530f529f9d0afa645c1f3ff2c77d13d44053544dc",
"version": 4
},
"horizontal/swedish-vat/vat-compliance-reference": {
"hash": "12cf0d3b485b506dc52ad44a251e1c4507948ad3378cd70210ef972b9f482c87",
"version": 1
"hash": "4fa3e4b047b15d3630a7cff41b1a96091daff32bcaa13410f2c4b964b57d0771",
"version": 2
},
"horizontal/swedish-year-end-closing": {
"hash": "ec90a8ecb3b36379350c7d7ae4e93bb50197d41a38a4c2091538320e59fc83b9",
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff