Finance oversight Cross-tenant invoice and payment oversight, refunds and reconciliation. Pricing, subscriptions, dunning and bank import live in Billing & subscriptions ; MRR/churn analytics in Growth . Every money mutation requires sys_finance + fresh authentication + a written reason.
86 400 SEK
MRR (platform)
trend + per plan/country → /sys/growth
72 100 SEK
Net revenue (June)
after refunds
9 340 SEK
Platform fees (June)
issuer_type=platform
3
Unmatched payments
assign queue → /sys/billing (bank import)
Invoices & payments Refund workflow Fees & reconciliation
Cross-tenant invoices · status, amount, due date, dunning stage · filter + export · F21.07.02
Status: all open paid overdue refunded Tenant: all Nordvik Boule Skåne Bouleförbund Sjöstad PK Dunning: all stage 1 stage 2 frozen Export CSV Export PDF
Invoice Tenant Amount Due Status Dunning INV-8841 Skåne Bouleförbund 4 500 SEK 2026-07-15 open — INV-8839 Nordvik Boule 350 SEK 2026-06-30 paid — INV-8822 Sjöstad PK 1 200 SEK 2026-06-01 overdue dunning stage 2 INV-8807 Fjordkedjan Boule AB 14 200 SEK 2026-06-01 paid — INV-8791 Boule Provence (demo) 900 SEK 2026-05-15 partially_refunded refund 450 SEK
Payments · all tenants · detail: method, provider reference, linked invoice, refund timestamps · F21.07.03
Payment Method Amount Linked to Status PAY-77102 Swish 350 SEK INV-8839 · Nordvik Boule settled PAY-77098 Stripe card 14 200 SEK INV-8807 · Fjordkedjan settled PAY-77081 Bankgirot 4 500 SEK unmatched — see bank import unmatched PAY-77066 Stripe card 900 SEK INV-8791 · refunded 450 SEK 28 Jun 14:11 partially refunded
Unmatched bank transfers with fuzzy invoice suggestions (OCR / amount / tenant / due-window / counterparty) and assign / ignore actions live in Billing → Bank import (F21.07.04).
States
⏳ Loading invoices…
📭 No invoices in this window.
⚠ Could not load invoice list. Retry.
Refund · two-step preview → execute · idempotent on (payment, amount, actor) · F21.07.05
Recent refunds
28 Jun 14:11 · PAY-77066 · 450 SEK · jonas.holm · "#4462 double charge" · invoice → partially_refunded
12 Jun 09:40 · PAY-76911 · 1 200 SEK · maria.ek · "#4390 cancelled event" · invoice → refunded
Every refund is reversible only via a new counter-entry; the audit log keeps the undo path (cross-cutting reversibility rule).
Platform-fee report · group by tenant or country · F21.07.09
Churn report by reason / plan / country (F21.07.07) renders in Growth with revenue impact locked at cancellation.
Reconciliation · provider ledger vs internal AccountingEntry · tolerance 100 öre · F21.07.10
Provider Provider total Internal total Drift Status Stripe 61 400 SEK 61 400 SEK 0 SEK balanced Bankgirot 18 700 SEK 18 550 SEK 150 SEK drift flagged
1 h in-process cache · returns 503 with guidance when provider credentials are missing.
Bankgirot drift 150 SEK above tolerance. Likely cause: unmatched transfer BG-2026-0701-021 not yet assigned.
Open bank import →