Varmeregnskab for selskabsudlejere — professionel ejendomsadministration
Varmeregnskab for selskaber og professionelle udlejere: juridisk ansvar, revision, OIOUBL, multi-ejendom administration, intern kontrol og platformintegration.
Af M-Bus Gateway
Selskaber med mange udlejningsejendomme har særlige krav til intern kontrol, revision og systemintegration. Her er guiden til professionel ejendomsadministration.
Juridisk ansvar i selskab
Selskab som udlejer (ApS/A/S):
Ledelsesansvar:
→ Direktøren er ansvarlig for korrekt varmeregnskab
→ BEK 563-overtrædelse: Kan medføre erstatningsansvar
→ Huslejenævnsafgørelser: Bindende for selskabet
Revision:
→ Selskaber med regnskabspligt (ApS over grænse): Revision kræves
→ Varmeregnskaber er del af årsregnskabet
→ Revisor kontrollerer: AnnualInput dokumentation, BEK 563-compliance
GDPR:
→ Selskabet er dataansvarlig for lejerdata
→ Databehandleraftale med platform nødvendig
→ Platform auto-genererer databehandleraftale ved oprettelse
OIOUBL-fakturering:
→ Kræves ved leverance til offentlige selskaber/kommuner
→ Ejendom skal have EAN-nummer
→ Platform: `/api/v1/settlements/{id}/oioubl` eksport
Multi-ejendom administration
Typisk portefølje:
Selskab med 15 ejendomme × 20 lejligheder = 300 lejemål
Administration-udfordringer:
→ 300 individuelle varmeafregninger pr. år
→ 15 × fjernvarmefakturaer + OCR-scanning
→ 15 × årsafregningsperioder (kan afvige)
→ Varierende kommuner → varierende huslejenævn
Platform-løsning:
→ Portefølje-dashboard: Overblik over alle 15 ejendomme
→ Batch-generering: Generer alle afregninger for én periode
→ Alarmcentral: Konsolideret alarm-feed på tværs af portefølje
→ Deadline-kalender: Alle frister for alle ejendomme i én visning
Intern kontrol: 4-øjne princip
# Platform understøtter 4-øjne princip via roller:
# Workflow: Udlejer (landlord) genererer → Revisor (external_admin) godkender
# Trin 1: Landlord genererer settlement-udkast:
@router.post("/settlements/generate")
async def generate_settlement(
body: GenerateSettlementIn,
user: TokenPayload = Depends(require_role("landlord")),
session: AsyncSession = Depends(get_session),
):
draft = await _generate_draft(session, body, user.tenant_id)
# Status: "draft" — ikke sendt endnu
return draft
# Trin 2: External admin reviewer og godkender:
@router.post("/settlements/{id}/approve")
async def approve_settlement(
settlement_id: UUID,
user: TokenPayload = Depends(require_role("external_admin", "super_admin")),
session: AsyncSession = Depends(get_session),
):
settlement = await _get_settlement(session, settlement_id)
settlement.status = "approved"
settlement.approved_by = user.sub
settlement.approved_at = datetime.now(timezone.utc)
await session.commit()
# Audit log:
await _log_audit(session, "settlement_approved", {
"settlement_id": str(settlement_id),
"approved_by": user.sub,
})
# Trin 3: Landlord sender (kun efter godkendelse):
@router.post("/settlements/{id}/send")
async def send_settlement(
settlement_id: UUID,
user: TokenPayload = Depends(require_role("landlord")),
session: AsyncSession = Depends(get_session),
):
settlement = await _get_settlement(session, settlement_id)
if settlement.status != "approved":
raise HTTPException(400, "Afregning skal godkendes inden afsendelse")
# ... send email
Revision og dokumentation
Revisor-venlig platform-eksport:
1. CSV-eksport af alle aflæsninger:
GET /api/v1/export/readings?property_id=...&period_start=...&period_end=...
Indeholder: Tidsstempel, måler-ID, driver, HCA-værdi, status
2. Settlement-oversigt:
GET /api/v1/export/settlements?year=2025
Indeholder: Lejlighed, lejer, periode, á conto, afregning, tillæg/tilbagebetaling
3. Audit log:
GET /api/v1/audit-log?tenant_id=...&from=...&to=...
Append-only log — kan ikke manipuleres
4. OIOUBL XML pr. afregning:
GET /api/v1/settlements/{id}/oioubl
Til ERP-integration (e-conomic, Business Central)
Revisorens tjekliste:
□ AnnualInput dokumenteret (fjernvarmefaktura vedhæftet)
□ 30/70-fordeling korrekt
□ Pro-rata beregning verificeret for ind/fraflyttede
□ Afregning udsendt inden 4-måneder-frist
□ Klagevejledning inkluderet i PDF
□ HCA-aflæsninger specificeret pr. lejlighed
ERP-integration
# Platform webhook til e-conomic / Business Central:
@router.post("/webhooks/settlement-sent")
async def settlement_sent_webhook(payload: WebhookPayload):
"""
Sendes til udlejerens ERP-system når afregning er sendt.
Bruges til automatisk bogføring.
"""
# payload indeholder:
# settlement_id, property_id, unit_id, tenant_name,
# amount, period_start, period_end, sent_at
async def post_to_economic(settlement: Settlement) -> None:
"""Opret debitorpost i e-conomic ved tillægsbetaling."""
if settlement.amount_due <= 0:
return # Tilbagebetaling — kreditnota i stedet
payload = {
"debtor": {"debtorNumber": settlement.tenant_economic_id},
"date": datetime.now().strftime("%Y-%m-%d"),
"currency": "DKK",
"paymentTerms": {"paymentTermsNumber": 14}, # 14 dages betalingsfrist
"lines": [{
"lineNumber": 1,
"product": {"productNumber": "VARME-2025"},
"description": f"Varmeregnskab {settlement.period_start}–{settlement.period_end}",
"quantity": 1,
"unitNetPrice": settlement.amount_due,
}],
}
await httpx.post(
"https://restapi.e-conomic.com/invoices/drafts",
json=payload,
headers={"X-AgreementGrantToken": ECONOMIC_TOKEN},
)
Portefølje-rapportering til bestyrelse
Månedlig portefølje-rapport (platform auto-genererer):
Selskab: Holdingselskabet A/S
Periode: April 2026
Ejendomme: 15
Lejligheder: 300
Aktive lejemål: 291 (97%)
Tom i april: 9 (3%)
Varmeregnskab status:
Afregnet 2025 (periode juni–maj): 14/15 ejendomme (93%)
Udestående: Nørrebrogade 15 (AnnualInput mangler)
Næste frist: 30. september 2026
Gateway status:
Online (seneste 24t): 14/15 (93%)
Offline: Roskildevej 28 (siden 22. april)
Stille målere (> 72t): 3 installationer
Økonomi (estimat):
Á conto modtaget april: 387.000 DKK
Forventet varmeomkostning: 412.000 DKK
Estimeret underdækning: 25.000 DKK (6,4%)
Anbefaling: Overvej á conto-forhøjelse på 8-10 ejendomme
Alarmer:
CRITICAL: 2 (MID-udløb Nørrebro gade 8, offline gateway)
WARNING: 7 (stille målere, lav batteri)
Konklusion
Selskabsudlejere med mange ejendomme kræver systematisering: batch-generering af afregninger, 4-øjne godkendelsesflow, revisionsvenlig CSV/OIOUBL-eksport og ERP-integration. Platformen håndterer alt dette under ét API — monthly digest email giver bestyrelse månedlig status. Multi-tenant isolation sikrer at data aldrig blandes på tværs af kundeforhold.
Se ejendomsadministration digital guide eller CSV-eksport guide.