Initial import: 10 Radix skills across 3 categories
Kategoriserer danske regnskabs-/ERP-skills, ERP-data-afstemnings-
skill og to devops-workflows (gitea-issue-agent, kanban-workflows)
som Radix-medlemmers AI-agenter kan dele.
Struktur:
skills/<kategori>/<skill-navn>/SKILL.md
skills/<kategori>/<skill-navn>/{references,templates,scripts}/
Indekseret af index.json (genereret af scripts/rebuild_index.py).
Kør `python3 scripts/rebuild_index.py --check` i CI for at fange
synkroniseringsfejl.
This commit is contained in:
@@ -0,0 +1,198 @@
|
||||
---
|
||||
name: coop-bankimport
|
||||
description: >
|
||||
Reconcilier Coop Danmark-bankbetalinger mod Uniconta- eller e-conomic-fakturaer (og kreditnotaer,
|
||||
bonus, modregninger) — aktiveres ved "Coop afstemning", "Coop bankbetaling", "Coop opgørelse",
|
||||
"forenel Coop betaling med faktura", "Coop kreditnota".
|
||||
version: 0.2.0
|
||||
author: radix-accountant
|
||||
license: MIT
|
||||
metadata:
|
||||
hermes:
|
||||
tags: [accounting, dansk-regnskab, coop-danmark, uniconta, e-conomic, reconciliation, bankafstemning]
|
||||
related: [dansk-csv-import, kontoplan-mapping, resultatopgoerelse, e-conomic-integration]
|
||||
---
|
||||
|
||||
# Coop Danmark-bankimport & afstemning (Uniconta eller e-conomic)
|
||||
|
||||
Specifikt workflow til **Coop Danmark ↔ [Uniconta|e-conomic]-afstemning**. Hver bankbetaling fra Coop følges af en specifikation (opgørelse) der viser præcis hvilke fakturaer, kreditnotaer, bonusser og modregninger beløbet dækker. Målet er at matche **bankbetalinger (Coop) → opgørelseslinjer → bogføringssystem-bilag** og producere bogføringsklare posteringer.
|
||||
|
||||
## Hvilket bogføringssystem?
|
||||
|
||||
| System | Fordel ved Coop-afstemning | Ulempe |
|
||||
|---|---|---|
|
||||
| **Uniconta** | Lokal data, ingen API-rate-limit, kender hele kontohistorik | Manuel CSV-eksport nødvendig |
|
||||
| **e-conomic** | Cloud-baseret, kan bogføre direkte via API, kunde 1 (Coop) findes typisk allerede | Rate-limit, kræver AppSecretToken |
|
||||
|
||||
**Spørg brugeren** hvilket system de bruger — svaret bestemmer hvordan data hentes og hvordan bogføringsforslaget præsenteres.
|
||||
|
||||
## Aktiveres ved
|
||||
|
||||
- "Forenel denne Coop-bankbetaling med Uniconta"
|
||||
- "Importer Coop-opgørelse for uge 22"
|
||||
- "Hvorfor matcher Coop-bankbetalingen ikke Uniconta-saldoen?"
|
||||
- "Generer bogføringsforslag for denne Coop-indbetaling"
|
||||
|
||||
## Forventede input
|
||||
|
||||
Brugeren leverer typisk:
|
||||
1. **Coop bankbetalings-CSV** (Sydbank, Jyske Bank eller Danske Bank — særskilt format for Coop)
|
||||
2. **Coop-specifikation** (PDF eller Excel) — viser linjer for hver faktura
|
||||
3. **Bogføringssystem-data** (ét af):
|
||||
- **Uniconta-eksport** (fakturaer, kreditnotaer, åbne poster) — typisk Excel
|
||||
- **e-conomic API-kald** (se `e-conomic-integration` skill): `/invoices/booked?filter=balance$gt:0&filter=customer.name$like:Coop`
|
||||
|
||||
## Coops bankbetalingsformat (typisk)
|
||||
|
||||
```
|
||||
Bogføringsdato;Posteringstekst;Beløb;Saldo
|
||||
15-06-2026;"Coop Danmark A/S Bankbetaling 12345678";-23.456,78;100.000,00
|
||||
```
|
||||
- **Negativ beløb** = du har modtaget penge fra Coop (kredit på din konto)
|
||||
- **Reference** = Coops bankaftale-id (8 cifre typisk)
|
||||
- **Dato** = afregningsdato
|
||||
|
||||
## Coops specifikation (Excel/PDF, eksempel)
|
||||
|
||||
| Fakturanr | Fakturadato | Beløb | Moms | Total | Type |
|
||||
|---|---|---|---|---|---|
|
||||
| 2026-1234 | 01-06-2026 | 1.000,00 | 250,00 | 1.250,00 | Faktura |
|
||||
| 2026-1235 | 02-06-2026 | 2.500,00 | 625,00 | 3.125,00 | Faktura |
|
||||
| KN-2026-100 | 03-06-2026 | -500,00 | -125,00 | -625,00 | Kreditnota |
|
||||
| Bonus-2026-06 | 30-06-2026 | -1.000,00 | 0,00 | -1.000,00 | Bonus |
|
||||
| Modregning-2026-06 | 30-06-2026 | -250,00 | 0,00 | -250,00 | Modregning |
|
||||
| **Total** | | **1.750,00** | **750,00** | **2.500,00** | |
|
||||
|
||||
Bankbetalingen på 2.500,00 kr. dækker altså: 2 fakturaer − 1 kreditnota − bonus − modregning.
|
||||
|
||||
## Workflow
|
||||
|
||||
### Fase 1: Importér bankbetaling
|
||||
1. **Modtag Coop-CSV** (typisk Sydbank-format)
|
||||
2. **Filtrér Coop-poster** (tekst matcher `Coop Danmark`)
|
||||
3. **Vis hver bankbetaling** med reference, dato, beløb
|
||||
|
||||
### Fase 2: Importér opgørelse (specifikation)
|
||||
1. **Modtag specifikationsfil** (PDF eller Excel)
|
||||
2. **Parse linjer**: fakturaer, kreditnotaer, bonus, modregninger
|
||||
3. **Beregn totaler** og verificer at de matcher bankbetalingen
|
||||
4. **Hvis differens**: marker som "afventer manuel kontrol"
|
||||
|
||||
### Fase 3: Match mod bogføringssystem
|
||||
|
||||
**Variant A: Uniconta**
|
||||
1. **Hent Uniconta-fakturaer** (via API eller eksport) for samme periode
|
||||
2. **For hver faktura i opgørelsen**: søg i Uniconta efter match på:
|
||||
- **Primær match**: fakturanr + beløb (høj confidence)
|
||||
- **Sekundær match**: beløb + dato ±7 dage (medium confidence)
|
||||
- **Ingen match**: marker som "mangler i Uniconta"
|
||||
|
||||
**Variant B: e-conomic**
|
||||
1. **Hent bogførte fakturaer** via API:
|
||||
```
|
||||
GET /invoices/booked?filter=balance$gt:0&filter=customer.name$like:Coop
|
||||
```
|
||||
2. **Filtrér på kunde** (Coop Danmark A/S) — de fleste Coops kunder findes som kunde 1, men tjek
|
||||
3. **For hver faktura i opgørelsen**: søg i e-conomic-respons efter match på:
|
||||
- **Primær match**: `bookedInvoiceNumber` + `grossAmount` (høj confidence)
|
||||
- **Sekundær match**: `grossAmount` + `date` ±7 dage (medium confidence)
|
||||
- **Ingen match**: marker som "mangler i e-conomic"
|
||||
|
||||
**Vis match-status** for hver linje (uanset variant):
|
||||
- ✅ Matchet (faktura fundet)
|
||||
- ⚠️ Forskelligt beløb (faktura fundet, men beløb afviger)
|
||||
- ❌ Manglende (faktura ikke fundet)
|
||||
|
||||
### Fase 4: Generer bogføringsforslag
|
||||
For hver matchet bankbetaling:
|
||||
|
||||
```
|
||||
BOGFØRINGSFORSLAG — Coop bankbetaling [reference]
|
||||
═══════════════════════════════════════════════════
|
||||
Dato: [dd-MM-yyyy]
|
||||
Bankbeløb: 2.500,00 kr. (positivt = indbetaling)
|
||||
───────────────────────────────────────────────────
|
||||
|
||||
DEBET (kontonr / navn) BELØB
|
||||
───────────────────────────────────────────────────
|
||||
[56200] Bank, Sydbank 2.500,00
|
||||
|
||||
KREDIT (kontonr / navn) BELØB
|
||||
───────────────────────────────────────────────────
|
||||
[10120] Tilgodehavender, salg 1.250,00 (faktura 2026-1234)
|
||||
[10120] Tilgodehavender, salg 3.125,00 (faktura 2026-1235)
|
||||
[10120] Tilgodehavender, salg −625,00 (kreditnota KN-2026-100)
|
||||
[52100] Bonus og rabatter 1.000,00 (bonus)
|
||||
[58000] Modregning 250,00 (modregning)
|
||||
|
||||
Total debet: 2.500,00
|
||||
Total kredit: 2.500,00
|
||||
═══════════════════════════════════════════════════
|
||||
Diff: 0,00 ✅ Balanceret
|
||||
═══════════════════════════════════════════════════
|
||||
```
|
||||
|
||||
### Fase 5: Bruger-godkendelse
|
||||
⚠️ **Vis altid bogføringsforslaget og vent på eksplicit godkendelse** før der postes til Radix/Uniconta/e-conomic.
|
||||
|
||||
**Hvis brugeren vil bogføre direkte i e-conomic** (se `e-conomic-integration` skill):
|
||||
1. Vis bogføringsforslaget med konkrete kontonumre
|
||||
2. Generer `entries` JSON-objekt klar til `/journals/:id/vouchers/:n/entries` POST
|
||||
3. Generer et UUID v4 Idempotency-Key
|
||||
4. Vent på "ja, bogfør" — udfør derefter API-kald
|
||||
5. Verificer at svaret er 201 Created og at `entries` indeholder bogførings-ID
|
||||
|
||||
## Almindelige problemer
|
||||
|
||||
- ❌ **Bankbeløb matcher ikke opgørelse-total**: typisk fordi opgørelsen kun viser netto (efter Coops egne fradrag som emballage-pant, kampagnerabat, mv.)
|
||||
- ❌ **Faktura findes ikke i Uniconta**: kan skyldes at fakturaen er bogført i forkert regnskabsår, eller at Uniconta-eksporten er ufuldstændig
|
||||
- ❌ **Kreditnota findes, men med forkert fortegn**: dobbelt-negativ bliver positivt — håndtér dette eksplicit
|
||||
- ❌ **Coop-bonus mangler konto**: virksomheder der ikke har en dedikeret bonuskonto bruger typisk 52100 (Bonus/rabatter) — bekræft med brugeren
|
||||
- ❌ **Modregning uden specifikation**: spørg brugeren — kan være emballage-pant, reklamation, eller andet
|
||||
- ✅ ALTID verificer at bankbeløb = sum(opgørelseslinjer) ±0,01 kr. (afrundingstolerance)
|
||||
- ✅ ALTID vis match-status per linje (matchet / afvigende / manglende)
|
||||
- ✅ ALTID vent på brugerens "ja, bogfør" før API-kald
|
||||
|
||||
## Kontering (typisk dansk kontoplan)
|
||||
|
||||
| Kontotype | Kontonr (SUM/DG) | Bruges til |
|
||||
|---|---|---|
|
||||
| Bank | 56200 | Bank, Sydbank/Jyske/Danske (pengebevægelsen) |
|
||||
| Tilgodehavender | 10120 | Åbne fakturaer der betales af Coop |
|
||||
| Bonus/rabatter | 52100 | Coops bonus, årsbonus, kampagnerabat |
|
||||
| Modregning | 58000 | Emballage-pant, reklamation, Cops egne fradrag |
|
||||
| Kreditnotaer | 10120 (negativ) | Coops kreditnotaer (vareretur mv.) |
|
||||
|
||||
Tallene er eksempler — bekræft altid med virksomhedens egen kontoplan.
|
||||
|
||||
## Eksempel-aktivering
|
||||
|
||||
**Bruger:** "Jeg har lige fået en Coop-betaling på 12.345,67 kr. d. 15-06-2026. Her er opgørelsen — kan du finde ud af hvad der dækker hvad?"
|
||||
|
||||
**Svar (forkortet):**
|
||||
> ✅ Bankbetaling genkendt: 12.345,67 kr. d. 15-06-2026
|
||||
>
|
||||
| Opgørelseslinje | Beløb | Uniconta-match | Status |
|
||||
> |---|---|---|---|
|
||||
> | Faktura 2026-1234 | 1.250,00 | UN-5678 | ✅ Matchet |
|
||||
> | Faktura 2026-1235 | 3.125,00 | UN-5679 | ✅ Matchet |
|
||||
> | Faktura 2026-1240 | 5.000,00 | UN-5680 | ✅ Matchet |
|
||||
> | Kreditnota KN-2026-100 | -625,00 | UN-5681 | ✅ Matchet |
|
||||
> | Bonus Q2 2026 | -1.404,33 | (bogføres direkte) | ⚠️ Ingen reference |
|
||||
> | **Total** | **7.345,67** | | |
|
||||
> | **Diff vs bank** | **5.000,00** | | ⚠️ Mangler 5.000,00 kr. |
|
||||
>
|
||||
> **Bogføringsforslag:**
|
||||
> ```
|
||||
> DEBET 56200 Bank 12.345,67
|
||||
> KREDIT 10120 Tilgodehavender 1.250,00
|
||||
> KREDIT 10120 Tilgodehavender 3.125,00
|
||||
> KREDIT 10120 Tilgodehavender 5.000,00
|
||||
> KREDIT 10120 Tilgodehavender -625,00
|
||||
> KREDIT 52100 Bonus -1.404,33
|
||||
> ```
|
||||
>
|
||||
> ⚠️ **Bemærk:** Diff på 5.000,00 kr. — enten mangler en faktura i opgørelsen, eller opgørelsen er ufuldstændig. Vil du:
|
||||
> 1. Indberette bogføringsforslag som det er (med diff markeret)
|
||||
> 2. Springe bankbetalingen over indtil videre
|
||||
> 3. Kontakte Coop for komplet specifikation
|
||||
@@ -0,0 +1,178 @@
|
||||
---
|
||||
name: dansk-csv-import
|
||||
description: >
|
||||
Importér danske bank-CSV-eksporter (Nordea, Danske Bank, Jyske Bank, Sydbank) og
|
||||
e-conomic-bankimport-format — aktiveres ved "importér CSV", "bankudtog", "kontoudtog",
|
||||
"Nordea eksport", "Danske Bank CSV", "Jyske Bank eksport", "e-conomic bankimport".
|
||||
version: 0.2.0
|
||||
author: radix-accountant
|
||||
license: MIT
|
||||
metadata:
|
||||
hermes:
|
||||
tags: [accounting, dansk-regnskab, csv-import, bank, nordea, danske-bank, jyske-bank, e-conomic]
|
||||
related: [kontoplan-mapping, coop-bankimport, momsafregning, e-conomic-integration]
|
||||
---
|
||||
|
||||
# Dansk CSV-import (bankudtog)
|
||||
|
||||
Håndterer import af **danske bank-CSV-eksporter** til Radix ERP med korrekt detektering af:
|
||||
- Bank (Nordea, Danske Bank, Jyske Bank, Sydbank, Nykredit, Arbejdernes Landsbank)
|
||||
- Datoformat (dansk `dd-MM-yyyy` eller ISO `yyyy-MM-dd`)
|
||||
- Decimalformatering (komma som decimal — dansk standard)
|
||||
- Feltsemikolon (dansk CSV-standard, ikke komma)
|
||||
- Tegnsæt (Latin1, UTF-8 med/uden BOM)
|
||||
|
||||
## Aktiveres ved
|
||||
|
||||
- "Importér denne Nordea-CSV til Radix"
|
||||
- "Jyske Bank har sendt kontoudtog — hjælp med at indlæse det"
|
||||
- "Parse denne bankeksport"
|
||||
- "Vis alle transaktioner fra marts 2026 i denne CSV"
|
||||
|
||||
## Genkendte bankformater
|
||||
|
||||
### Nordea (Erhverv)
|
||||
```
|
||||
Bogføringsdato;Tekst;Beløb;Saldo;Valuta;Reference
|
||||
01-06-2026;"Nets *12345";-123,45;12.345,67;DKK;
|
||||
```
|
||||
- Separator: `;`
|
||||
- Encoding: Latin1
|
||||
- Beløb: dansk format (`-123,45`)
|
||||
- Dato: `dd-MM-yyyy`
|
||||
|
||||
### Danske Bank
|
||||
```
|
||||
Dato;Tekst;Beløb;Saldo
|
||||
01-06-2026;"MobilePay - Anders Hansen";-250,00;5.000,00
|
||||
```
|
||||
- Separator: `;`
|
||||
- Encoding: UTF-8 med BOM
|
||||
- Beløb: dansk format
|
||||
- Dato: `dd-MM-yyyy`
|
||||
|
||||
### Jyske Bank
|
||||
```
|
||||
Dato;Beskrivelse;Beløb;Saldo
|
||||
01-06-2026;"POS DSB 1234 København";-89,00;3.456,78
|
||||
```
|
||||
- Separator: `;`
|
||||
- Encoding: Latin1
|
||||
- Dato: `dd-MM-yyyy`
|
||||
- Negative beløb: kan være `-89,00` eller `(89,00)` — begge understøttes
|
||||
|
||||
### Sydbank
|
||||
```
|
||||
Bogføringsdato;Posteringstekst;Beløb;Saldo
|
||||
01-06-2026;"Coop Danmark A/S Bankbetaling";-12.345,67;45.678,90
|
||||
```
|
||||
- Separator: `;`
|
||||
- Encoding: Latin1
|
||||
- Dato: `dd-MM-yyyy`
|
||||
|
||||
### e-onomic bankimport-format
|
||||
```
|
||||
Dato;Tekst;Beløb;Saldo;Modkonto;Valuta;Bankkonto
|
||||
01-06-2026;"Nets *12345";-123,45;12.345,67;5820;DKK;5508 8765432
|
||||
```
|
||||
- Separator: `;`
|
||||
- Encoding: UTF-8 med BOM
|
||||
- **Modkonto** (e-conomics kontonr, fx 5820 for bank) — bruges direkte ved bogføring
|
||||
- **Bankkonto** i dansk 14-cifret format (reg.nr. + kontonr) — verificer mod kundens egen bankaftale
|
||||
- Dato: `dd-MM-yyyy` (men konverter til ISO `yyyy-MM-dd` før API-kald til e-conomic)
|
||||
|
||||
## Workflow
|
||||
|
||||
1. **Modtag CSV-fil** (enten via sti eller indhold direkte i chat)
|
||||
2. **Detektér bank-format** ud fra header (kolonnenavne) — spørg brugeren hvis usikker
|
||||
3. **Detektér encoding** (tjek for BOM, prøv Latin1, UTF-8)
|
||||
4. **Parse CSV** med korrekt separator (`;` for dansk)
|
||||
5. **Normaliser data**:
|
||||
- Datoer → `dd-MM-yyyy` (ensret formattering)
|
||||
- Beløb → Python float (erstat `,` med `.`, fjern tusindtalsseparator)
|
||||
- Negativ beløb → negativ tal (fjern evt. parentesnotation)
|
||||
- Tekst → trim, fjern dobbelte mellemrum
|
||||
6. **Vis preview** med de første 5-10 transaktioner (bed brugeren bekræfte format)
|
||||
7. **Vis statistik**:
|
||||
- Antal transaktioner
|
||||
- Periode (første/sidste dato)
|
||||
- Total ind, total ud, slutbalance
|
||||
- Kontroller at slutbalance matcher det brugeren forventede
|
||||
8. **Identificér dubletter** (samme dato + beløb + tekst)
|
||||
9. **Kortlæg konti** (se kontoplan-mapping skill) — eller lad brugeren vælge
|
||||
10. **Generer klar-til-import JSON** til Radix ERP API
|
||||
|
||||
## Eksempel-aktivering
|
||||
|
||||
**Bruger:** *indsætter en filsti eller indhold:*
|
||||
```
|
||||
Bogføringsdato;Tekst;Beløb;Saldo;Valuta
|
||||
01-06-2026;"Nets *12345 MobilePay";-123,45;12.345,67;DKK
|
||||
02-06-2026;"Coop Danmark";-5.678,90;6.666,77;DKK
|
||||
...
|
||||
```
|
||||
|
||||
**Svar:**
|
||||
> ✅ Genkendt format: **Nordea Erhverv** (Latin1, semikolon-separeret)
|
||||
>
|
||||
> | Dato | Tekst | Beløb | Saldo |
|
||||
> |---|---|---|---|
|
||||
> | 01-06-2026 | Nets *12345 MobilePay | −123,45 | 12.345,67 |
|
||||
> | 02-06-2026 | Coop Danmark | −5.678,90 | 6.666,77 |
|
||||
> | ... |
|
||||
>
|
||||
> **Statistik:**
|
||||
> - Periode: 01-06-2026 til 30-06-2026
|
||||
> - Transaktioner: 47
|
||||
> - Total ind: 8.901,23 kr.
|
||||
> - Total ud: 23.456,78 kr.
|
||||
> - Slutbalance: 6.666,77 kr.
|
||||
>
|
||||
> ⚠️ **1 mulig dublet** fundet (samme dato, beløb og tekst på række 12 og 23). Skal jeg springe dubletten over ved import?
|
||||
|
||||
## Almindelige CSV-fælder
|
||||
|
||||
- ❌ Latin1-filer åbnet som UTF-8 → `æ` i stedet for `æ`
|
||||
- ❌ Datoer med `.` (amerikansk) i stedet for `-` (dansk)
|
||||
- ❌ Beløb med `.` som tusindtalsseparator ignoreret
|
||||
- ❌ Negative beløb som `(123,45)` (parentes) ikke håndteret
|
||||
- ❌ Header-række fejlfortolket som data
|
||||
- ❌ Linjeskift i `Tekst`-felt (fx "Coop\nDanmark") brækker parser
|
||||
- ✅ ALTID detektér encoding først (BOM, Latin1, UTF-8)
|
||||
- ✅ ALTID vis preview før import
|
||||
- ✅ ALTID vis statistik og balancesum til kontrol
|
||||
|
||||
## Radix ERP API-endpoint (for import)
|
||||
|
||||
## Bogføringssystem-integration (efter import)
|
||||
|
||||
Efter import kan transaktioner bogføres direkte i e-conomic (se `e-conomic-integration` skill):
|
||||
|
||||
```
|
||||
POST /journals/{journalId}/vouchers/{voucherNumber}/entries
|
||||
Headers:
|
||||
X-AppSecretToken: ${ECONOMIC_APP_SECRET_TOKEN}
|
||||
X-AgreementGrantToken: ${ECONOMIC_AGREEMENT_GRANT_TOKEN}
|
||||
Idempotency-Key: <UUID v4>
|
||||
```
|
||||
|
||||
Eksempel-payload genereret fra importeret CSV:
|
||||
```json
|
||||
{
|
||||
"accountingYear": {"year": 2026},
|
||||
"entries": [
|
||||
{
|
||||
"date": "2026-06-01",
|
||||
"text": "Nets *12345 MobilePay",
|
||||
"amount": -123.45,
|
||||
"amountInBaseCurrency": -123.45,
|
||||
"currency": "DKK",
|
||||
"account": {"accountNumber": 1690},
|
||||
"contraAccount": {"accountNumber": 5820},
|
||||
"vatAccount": {"vatCode": "I25"}
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
⚠️ **Bekræft ALTID med brugeren før bulk-import** — vis diff (antal transaktioner, totaler) og kræv eksplicit "ja, importer" før API-kald.
|
||||
@@ -0,0 +1,290 @@
|
||||
---
|
||||
name: e-conomic-integration
|
||||
description: >
|
||||
Integration med e-conomic cloud-bogføring — aktiveres ved "bogfør i e-conomic", "hent fakturaer
|
||||
fra e-conomic", "kassekladde", "sync mod e-conomic", "opret kunde i e-conomic", "kontoudtog
|
||||
e-conomic", "REST API", "AppSecretToken". Dækker auth, kontoplan, kassekladder, bogførte
|
||||
fakturaer, kreditorer, kunder og banktransaktioner.
|
||||
version: 0.1.0
|
||||
author: radix-accountant
|
||||
license: MIT
|
||||
metadata:
|
||||
hermes:
|
||||
tags: [accounting, e-conomic, dansk-regnskab, api, cloud-bogfoering, integration]
|
||||
related: [resultatopgoerelse, momsafregning, kontoplan-mapping, coop-bankimport, dansk-csv-import]
|
||||
---
|
||||
|
||||
# e-conomic-integration
|
||||
|
||||
Integration med **e-conomic** cloud-bogføringssystem via den officielle REST API. Bruges til at hente fakturaer, kunder, kreditorer, bogføre bilag, synce banktransaktioner og afstemme konti — alt på dansk.
|
||||
|
||||
## Aktiveres ved
|
||||
|
||||
- "Bogfør denne faktura i e-conomic"
|
||||
- "Hent åbne fakturaer fra e-conomic"
|
||||
- "Synk banktransaktioner til e-conomic"
|
||||
- "Opret kunde X i e-conomic"
|
||||
- "Hvad er saldi på konto 1010 i e-conomic?"
|
||||
- "Generer kassekladdeline for denne betaling"
|
||||
- "Vis alle kreditorer med udestående i e-conomic"
|
||||
|
||||
## API basics
|
||||
|
||||
### Base-URL
|
||||
```
|
||||
https://restapi.e-conomic.com
|
||||
```
|
||||
|
||||
### Auth (kræver to tokens)
|
||||
|
||||
| Header | Værdi | Hvad det er |
|
||||
|---|---|---|
|
||||
| `X-AppSecretToken` | `${ECONOMIC_APP_SECRET_TOKEN}` | App-identifikation (din app's hemmelige token) |
|
||||
| `X-AgreementGrantToken` | `${ECONOMIC_AGREEMENT_GRANT_TOKEN}` | Aftale-specifik adgang (bruger-godkendt) |
|
||||
| `Content-Type` | `application/json` | Altid JSON |
|
||||
| `Idempotency-Key` | `<unik UUID>` | Forhindrer dobbeltbogføring ved netværksfejl (POST/PUT) |
|
||||
|
||||
⚠️ **Tokens skal ALDRIG hardcodes** — brug miljøvariabler eller en secret manager.
|
||||
|
||||
### Demo-mode (sandbox)
|
||||
Til test/udvikling, tilføj `?demo=true` til URL — alle writes deaktiveres (kun GET).
|
||||
|
||||
## Vigtigste endpoints
|
||||
|
||||
| Formål | Endpoint | HTTP |
|
||||
|---|---|---|
|
||||
| List konti (kontoplan) | `/accounts?pagesize=N` | GET |
|
||||
| Hent én konto | `/accounts/:accountNumber` | GET |
|
||||
| List bogføringsår | `/accounting-years` | GET |
|
||||
| List perioder (måneder) i et år | `/accounting-years/:year/periods` | GET |
|
||||
| Hent kontosaldo for en periode | `/accounts/:accountNumber/accounting-years/:year/periods/:period/totals` | GET |
|
||||
| List kassekladder | `/journals` | GET |
|
||||
| Hent kassekladdeline | `/journals/:id/vouchers?voucherNumber=:n` | GET |
|
||||
| Opret kassekladdeline (bilag) | `/journals/:id/vouchers/:n/entries` | POST |
|
||||
| Bogfør voucher | `/journals/:id/vouchers/:n/book` | POST |
|
||||
| List bogførte fakturaer | `/invoices/booked` | GET |
|
||||
| Opret bogført faktura | `/invoices/booked` | POST |
|
||||
| Hent kunde | `/customers/:customerNumber` | GET |
|
||||
| Opret kunde | `/customers` | POST |
|
||||
| List kreditorer | `/suppliers` | GET |
|
||||
| Opret kreditor | `/suppliers` | POST |
|
||||
| List moms-konti | `/vat-accounts` | GET |
|
||||
| Hent valutakurser | `/currencies` | GET |
|
||||
|
||||
⚠️ **Rate limit**: e-conomic har et fair-use loft. Hold dig under 10 requests/sekund.
|
||||
|
||||
## e-conomics standardkontoplan (4-cifret)
|
||||
|
||||
| Kontointerval | Type | Bruges til |
|
||||
|---|---|---|
|
||||
| 1000-1099 | Heading/profitAndLoss | Indtægter, overskrifter |
|
||||
| 1100-1199 | ProfitAndLoss | Omsætning undergrupper (varekategorier) |
|
||||
| 1200-1299 | ProfitAndLoss | Diverse indtægter |
|
||||
| 1300-1399 | ProfitAndLoss | Produktionsomkostninger (COGS) |
|
||||
| 1500-1599 | ProfitAndLoss | Lokaleomkostninger |
|
||||
| 1600-1699 | ProfitAndLoss | Salgsomkostninger |
|
||||
| 1700-1799 | ProfitAndLoss | Administrationsomkostninger |
|
||||
| 1800-1899 | ProfitAndLoss | Personaleomkostninger (løn) |
|
||||
| 2000-2099 | ProfitAndLoss | Andre driftsomkostninger |
|
||||
| 2100-2199 | ProfitAndLoss | Afskrivninger |
|
||||
| 2200-2299 | ProfitAndLoss | Finansielle indtægter |
|
||||
| 2300-2399 | ProfitAndLoss | Finansielle udgifter |
|
||||
| **5500-5899** | **Balance** | **Bank, kasse, tilgodehavender** |
|
||||
| 5800-5899 | Balance | Bankkonti (typisk 5820 = drift) |
|
||||
| 6000-6899 | Balance | Leverandørgæld, moms, A-skat |
|
||||
| 6500-6599 | Balance | Moms (6500 = indgående, 6600 = udgående) |
|
||||
| 6900-6999 | Balance | Diverse statuskonti |
|
||||
|
||||
⚠️ **Dette er e-conomics STANDARD kontoplan** — ikke alle kunder har den. Hent altid kundens egen kontoplan via `/accounts` endpoint.
|
||||
|
||||
## Momskoder (VAT-accounts)
|
||||
|
||||
| Kode | Type | Sats | Bruges til |
|
||||
|---|---|---|---|
|
||||
| `U25` | Udgående | 25% | Salg af varer/ydelser i DK (momspligtig) |
|
||||
| `I25` | Indgående | 25% | Køb af varer/ydelser i DK (momsfradrag) |
|
||||
| `U0` | Udgående | 0% | Eksport, EU-salg med VIES, moms-fritagne ydelser |
|
||||
| `I0` | Indgående | 0% | Køb uden moms (import under bagatelgrænse) |
|
||||
| `UEU25` | Udgående | 25% | EU-varesalg (vareleverance til andet EU-land) |
|
||||
| `UV25` | Udgående | 25% | Byggeydelser i andre EU-lande (omvendt betalingspligt) |
|
||||
|
||||
⚠️ Korrekt momskode er afgørende for momsangivelsen — forkert kode kan give skattesmæk.
|
||||
|
||||
## Kassekladder (Journals)
|
||||
|
||||
| Journal-ID | Navn (typisk) | Bruges til |
|
||||
|---|---|---|
|
||||
| 1 | Daglig / Kassekladde | Almindelige bilag (køb, salg, bank) |
|
||||
| 2 | Indbetalinger | Kundeindbetalinger (kontra-konto typisk 5820 bank) |
|
||||
| 3 | Lønninger | Lønbogføring (entryType `financeVoucher`) |
|
||||
| 4 | Moms | Momsafregning |
|
||||
| 5 | Afskrivninger | Anlægsaktiver |
|
||||
|
||||
Journal-ID'er varierer fra kunde til kunde — hent altid `/journals` først.
|
||||
|
||||
## Workflow: Bogfør et bilag (kassekladdeline)
|
||||
|
||||
### Eksempel: bogfør kontantkøb af kontorartikler for 1.250,00 kr. inkl. moms (15-06-2026)
|
||||
|
||||
**Trin 1: Hent kunde-/kassekladde-info**
|
||||
```
|
||||
GET /journals
|
||||
→ Find journal-ID for "Daglig" (typisk 1)
|
||||
GET /journals/1/vouchers?voucherNumber=42
|
||||
→ Find næste ledige bilagsnummer
|
||||
```
|
||||
|
||||
**Trin 2: Opret kassekladdeline (visuelt, FØR API-kald)**
|
||||
```json
|
||||
{
|
||||
"accountingYear": {
|
||||
"year": 2026
|
||||
},
|
||||
"entries": [
|
||||
{
|
||||
"customerInvoiceNumber": "",
|
||||
"date": "2026-06-15",
|
||||
"voucherNumber": 42,
|
||||
"text": "Kontorartikler — Kontorbutikken A/S",
|
||||
"amount": -1250.00,
|
||||
"amountInBaseCurrency": -1250.00,
|
||||
"currency": "DKK",
|
||||
"account": {
|
||||
"accountNumber": 1690
|
||||
},
|
||||
"contraAccount": {
|
||||
"accountNumber": 5820
|
||||
},
|
||||
"vatAccount": {
|
||||
"vatCode": "I25"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
**Trin 3: Vis brugeren og bekræft**
|
||||
```
|
||||
⚠️ Klar til at bogføre:
|
||||
Kassekladde: Daglig (#1)
|
||||
Bilagsnr: 42
|
||||
Dato: 15-06-2026
|
||||
Tekst: Kontorartikler — Kontorbutikken A/S
|
||||
Debet: 1690 Kontorartikler 1.250,00 kr.
|
||||
Kredit: 5820 Bank, drift −1.250,00 kr.
|
||||
Momskode: I25 (25% indgående)
|
||||
Total: 1.250,00 kr. (inkl. 250,00 kr. moms)
|
||||
|
||||
Vil du bogføre? (ja/nej)
|
||||
```
|
||||
|
||||
**Trin 4: POST med Idempotency-Key**
|
||||
```
|
||||
POST /journals/1/vouchers/42/entries
|
||||
Headers:
|
||||
X-AppSecretToken: ${ECONOMIC_APP_SECRET_TOKEN}
|
||||
X-AgreementGrantToken: ${ECONOMIC_AGREEMENT_GRANT_TOKEN}
|
||||
Content-Type: application/json
|
||||
Idempotency-Key: <UUID v4>
|
||||
|
||||
Body: [ovenstående entries-array]
|
||||
```
|
||||
|
||||
⚠️ **Bogfør IKKE før brugeren har bekræftet.**
|
||||
|
||||
## Workflow: Synk banktransaktioner
|
||||
|
||||
1. **Hent konti** for bank (`/accounts?filter=accountType$eq:balance&pagesize=100`) — find bank-konto (typisk 5820)
|
||||
2. **Hent kontosaldo** for indeværende periode:
|
||||
```
|
||||
GET /accounts/5820/accounting-years/2026/periods/6/totals
|
||||
```
|
||||
3. **Sammenlign** med bankens faktiske saldo (fra CSV-import eller bank-API)
|
||||
4. **Vis diff** og identificer manglende/ukorrekte transaktioner
|
||||
5. **Foreslå kassekladdeline** for hver manglende transaktion
|
||||
|
||||
## Workflow: Hent åbne fakturaer (kunder)
|
||||
|
||||
```
|
||||
GET /invoices/booked?filter=balance$gt:0&pagesize=50
|
||||
```
|
||||
|
||||
Returnerer alle bogførte fakturaer med ubetalt saldo > 0.
|
||||
|
||||
For hver faktura:
|
||||
- `bookedInvoiceNumber` — fakturanr
|
||||
- `customer.name` — kundenavn
|
||||
- `netAmount` / `grossAmount` — beløb ekskl./inkl. moms
|
||||
- `balance` — udestående
|
||||
- `dueDate` — forfaldsdato (udledes af `termsNetDays` + `date`)
|
||||
- `currency` — DKK/EUR/USD
|
||||
|
||||
Bruges typisk til:
|
||||
- Inkasso-rapporter (forfaldne >30 dage)
|
||||
- Aldersopdelt fordringsliste (0-30, 31-60, 61-90, 90+)
|
||||
- Likviditetsforecast
|
||||
|
||||
## Workflow: Opret kunde
|
||||
|
||||
```json
|
||||
POST /customers
|
||||
{
|
||||
"name": "Coop Danmark A/S",
|
||||
"customerGroup": { "customerGroupNumber": 1 },
|
||||
"paymentTerms": { "paymentTermsNumber": 1 },
|
||||
"vatZone": { "vatZoneNumber": 1 },
|
||||
"currency": "DKK",
|
||||
"address": "Roskildevej 65",
|
||||
"zip": "2620",
|
||||
"city": "Albertslund",
|
||||
"country": "Denmark"
|
||||
}
|
||||
```
|
||||
|
||||
⚠️ **Tjek altid for duplikat** (søg eksisterende kunder først):
|
||||
```
|
||||
GET /customers?filter=name$like:Coop$Danmark
|
||||
```
|
||||
|
||||
## Almindelige fejl
|
||||
|
||||
- ❌ **Glemmer Idempotency-Key** ved POST → netværksfejl kan give dobbeltbogføring
|
||||
- ❌ **Forkert momskode** (U25 vs UEU25) → SKAT fanger det i krydstjek
|
||||
- ❌ **Brug danske datoer i API** — e-conomic bruger ISO `yyyy-MM-dd` i JSON, IKKE dansk `dd-MM-yyyy`
|
||||
- ❌ **Beløb uden fortegn-konvention** — negativ = debet, positiv = kredit (modsat dansk regnskabstradition)
|
||||
- ❌ **PageSize > 1000** uden pagination
|
||||
- ❌ **POST uden først at have hentet den aktuelle voucher** → 409 Conflict
|
||||
- ✅ ALTID brug Idempotency-Key ved alle writes
|
||||
- ✅ ALTID konverter dansk dd-MM-yyyy → ISO yyyy-MM-dd FØR API-kald
|
||||
- ✅ ALTID verificer kontoplanen (`/accounts`) før bogføring — kunden kan have egne konti
|
||||
- ✅ ALTID tjek eksisterende kunder/leverandører før oprettelse (dublet-forebyggelse)
|
||||
- ✅ ALTID vis bogføringsforslag til brugeren FØR API-kald
|
||||
|
||||
## Demo-mode anbefaling
|
||||
|
||||
Brug ALTID `?demo=true` under udvikling:
|
||||
- Læs-data virker (GET)
|
||||
- Skrive-data deaktiveret (POST/PUT returnerer 405)
|
||||
- Forhindrer utilsigtet bogføring i produktion
|
||||
- Kan derfor frit browse konti, fakturaer, kunder uden risiko
|
||||
|
||||
## Eksempel på aktivering
|
||||
|
||||
**Bruger:** "Bogfør et køb af kontorartikler for 1.250 kr. inkl. moms i e-conomic"
|
||||
|
||||
**Svar (forkortet):**
|
||||
> ✅ Forbinder e-conomic...
|
||||
>
|
||||
> Klar til bogføring:
|
||||
>
|
||||
> | Felt | Værdi |
|
||||
> |---|---|
|
||||
> | Kassekladde | Daglig (#1) |
|
||||
> | Bilagsnr | 42 |
|
||||
> | Dato | 15-06-2026 |
|
||||
> | Tekst | Kontorartikler — Kontorbutikken A/S |
|
||||
> | Debet (1690 Kontorartikler) | 1.250,00 kr. |
|
||||
> | Kredit (5820 Bank) | −1.250,00 kr. |
|
||||
> | Momskode | I25 (indgående 25%) |
|
||||
>
|
||||
> ⚠️ Bekræft før jeg bogfører. Svaret "ja, bogfør" udløser API-kald med Idempotency-Key.
|
||||
@@ -0,0 +1,183 @@
|
||||
---
|
||||
name: kontoplan-mapping
|
||||
description: >
|
||||
Kortlæg transaktioner, fakturaer og bilag til dansk standardkontoplan (SUM, DG, SL) eller
|
||||
bogføringssystem-specifik kontoplan (e-conomic 4-cifret, Uniconta) — aktiveres ved
|
||||
"hvilken konto?", "kontoplan", "kontorådgivning", "bogføring af [transaktionstype]",
|
||||
"hvor skal jeg bogføre dette".
|
||||
version: 0.2.0
|
||||
author: radix-accountant
|
||||
license: MIT
|
||||
metadata:
|
||||
hermes:
|
||||
tags: [accounting, dansk-regnskab, kontoplan, SUM, DG, SL, uniconta, e-conomic]
|
||||
related: [resultatopgoerelse, momsafregning, dansk-csv-import, e-conomic-integration]
|
||||
---
|
||||
|
||||
# Kontoplan-mapping
|
||||
|
||||
Mapper transaktioner og bilag til **korrekt konto i dansk standardkontoplan** (SUM, DG, SL). Bruges som hjælpe-skill af andre skills (resultatopgoerelse, momsafregning, dansk-csv-import, coop-bankimport).
|
||||
|
||||
## Aktiveres ved
|
||||
|
||||
- "Hvilken konto skal jeg bogføre et kontorlejemål på?"
|
||||
- "Hvor hører MobilePay-gebyr hjemme i kontoplanen?"
|
||||
- "Lav en kontoplan for min [virksomhedstype]"
|
||||
- "Tjek om denne transaktion er konteret korrekt"
|
||||
|
||||
## Dansk standardkontoplan — overblik
|
||||
|
||||
### Driftskonti (resultatopgørelse)
|
||||
|
||||
| Hovedgruppe | Kontointerval | Bruges til |
|
||||
|---|---|---|
|
||||
| Omsætning | 1000-1999 | Salg, service, licens, abonnement, eksport |
|
||||
| Produktionsomkostninger | 2000-2999 | Råvarer, direkte løn, underleverandører, fragt |
|
||||
| Salgsomkostninger | 3000-3999 | Marketing, salgsfremmende, rejser, repræsentation |
|
||||
| Administrationsomkostninger | 4000-4999 | Kontor, IT, telefon, kontorartikler, abonnementer |
|
||||
| Lokaleomkostninger | 5000-5999 | Husleje, varme, el, vand, renovation, rengøring |
|
||||
| Personaleomkostninger | 6000-6999 | Løn, pension, ATP, feriepenge, AER, sociale bidrag |
|
||||
| Afskrivninger | 7000-7999 | Lineære afskrivninger, scrap, salg af aktiver |
|
||||
| Finansielle poster | 8000-8999 | Renter, gebyrer, kursregulering, realiserede tab/gevinst |
|
||||
| Ekstraordinære poster | 9000-9999 | Ekstraordinære indtægter/udgifter (sjældent) |
|
||||
|
||||
### Statuskonti (balance)
|
||||
|
||||
| Hovedgruppe | Kontointerval | Bruges til |
|
||||
|---|---|---|
|
||||
| Aktiver | 10000-19999 | Tilgodehavender, varelager, anlægsaktiver, bank, kasse |
|
||||
| Passiver | 20000-29999 | Leverandørgæld, moms, A-skat, skyldig løn, feriepengeforpligtelse |
|
||||
| Egenkapital | 30000-39999 | Ansvarlig kapital, overført resultat, årets resultat |
|
||||
|
||||
## e-conomic standardkontoplan (4-cifret, mest udbredt)
|
||||
|
||||
e-conomic leveres med en standard dansk kontoplan. **De fleste danske SMV'er bruger denne uden ændringer.**
|
||||
|
||||
### Driftskonti (resultatopgørelse)
|
||||
|
||||
| Kontointerval | Bruges til |
|
||||
|---|---|
|
||||
| 1000-1099 | Indtægter (heading + omsætning) |
|
||||
| 1100-1299 | Diverse omsætning og indtægter |
|
||||
| 1300-1499 | Produktionsomkostninger / varekøb / direkte løn |
|
||||
| 1500-1599 | Lokaleomkostninger (husleje, el, varme) |
|
||||
| 1600-1699 | Salgs- og rejseomkostninger (marketing, transport) |
|
||||
| 1700-1799 | Administrationsomkostninger (kontor, IT, telefon) |
|
||||
| 1800-1899 | Personaleomkostninger (løn, pension, AER) |
|
||||
| 1900-2099 | Andre driftsomkostninger, afskrivninger |
|
||||
| 2100-2299 | Finansielle poster (renter, gebyrer) |
|
||||
| 2300-2999 | Ekstraordinære poster |
|
||||
|
||||
### Statuskonti (balance)
|
||||
|
||||
| Kontointerval | Bruges til |
|
||||
|---|---|
|
||||
| 5500-5899 | Aktiver — bank, kasse, tilgodehavender (5820 = typisk driftsbank) |
|
||||
| 6000-6899 | Passiver — leverandørgæld, moms, A-skat, skyldig løn |
|
||||
| 6500-6599 | Moms (udgående/indgående/afregning) |
|
||||
| 6900-6999 | Egenkapital, diverse status |
|
||||
|
||||
### e-conomic standardkonti — udvalgte
|
||||
|
||||
| Kontonr | Navn | Bruges til |
|
||||
|---|---|---|
|
||||
| 1010 | Salg af varer/ydelser m/moms | Standard DK-salg (25% moms) |
|
||||
| 1080 | Salg af varer/ydelser u/moms | Eksport, EU-salg (0% moms) |
|
||||
| 1300 | Varekøb | Råvarer til videresalg |
|
||||
| 1500 | Husleje | Kontorlejemål |
|
||||
| 1510 | El | Elforbrug |
|
||||
| 1520 | Varme | Opvarmning |
|
||||
| 1530 | Vand | Vandforbrug |
|
||||
| 1610 | Rejseudgifter | Transport, hotel, fly |
|
||||
| 1690 | Kontorartikler | Småanskaffelser, kontorartikler |
|
||||
| 1700 | Telefon & internet | Mobil, fastnet, internet |
|
||||
| 1730 | Software / IT-licenser | SaaS-abonnementer, licenser |
|
||||
| 1800 | Bruttoløn | Lønudbetaling |
|
||||
| 1810 | Pension | Pensionsbidrag |
|
||||
| 1820 | ATP | ATP-bidrag |
|
||||
| 1900 | AER | AER-bidrag |
|
||||
| 1910 | Feriepenge | Feriepengeforpligtelse |
|
||||
| 2200 | Bankgebyrer | Gebyrer, renter |
|
||||
| 2210 | Renteudgifter | Renter på lån |
|
||||
| 5500 | Kasse | Kontant beholdning |
|
||||
| 5508 | Bank, drift | Primær driftskonto (typisk) |
|
||||
| 5820 | Bank, kassekladde | Standard bank-modkonto |
|
||||
| 6500 | Udgående moms | 25% moms på salg |
|
||||
| 6510 | Indgående moms | 25% moms på køb |
|
||||
| 6520 | Momsafregning | Saldo (kredit = skyldig, debet = tilgodehavende) |
|
||||
|
||||
⚠️ **Tjek altid kundens egen kontoplan** via `GET /accounts` (e-conomic) eller Uniconta-eksport — der kan være afvigelser.
|
||||
|
||||
## Almindelige transaktioner — hurtig-mapping (alle systemer)
|
||||
|
||||
| Transaktion | SUM/DG | e-conomic | Type |
|
||||
|---|---|---|---|
|
||||
| Salg af vare (DK) | 1010 | 1010 | Driftsindtægt |
|
||||
| Salg af ydelse (DK) | 1020 | 1010 | Driftsindtægt |
|
||||
| Eksport (0% moms) | 1030 | 1080 | Driftsindtægt |
|
||||
| Varekøb (DK) | 2010 | 1300 | Driftsomkostning |
|
||||
| Kontorartikler | 4010 | 1690 | Driftsomkostning |
|
||||
| Software-abonnement | 4030 | 1730 | Driftsomkostning |
|
||||
| Hosting / cloud | 4030 | 1730 | Driftsomkostning |
|
||||
| Husleje | 5010 | 1500 | Driftsomkostning |
|
||||
| El, vand, varme | 5020-5040 | 1510-1530 | Driftsomkostning |
|
||||
| Internet, telefon | 5050 | 1700 | Driftsomkostning |
|
||||
| MobilePay-gebyr | 8010 | 2200 | Driftsomkostning (finansiel) |
|
||||
| Stripe-gebyr | 8010 | 2200 | Driftsomkostning (finansiel) |
|
||||
| Bankgebyr | 8020 | 2200 | Driftsomkostning (finansiel) |
|
||||
| Renteindtægt | 8030 | 2210 (neg.) | Driftsindtægt (finansiel) |
|
||||
| Renteudgift | 8040 | 2210 | Driftsomkostning (finansiel) |
|
||||
| Løn til ansat | 6010 | 1800 | Personaleomkostning |
|
||||
| A-skat (trukket fra løn) | 2090 | 6810 | Forpligtelse |
|
||||
| Pension (arbejdsgivers andel) | 6020 | 1810 | Personaleomkostning |
|
||||
| Feriepenge (reserveret) | 6015 | 1910 | Personaleomkostning |
|
||||
| Moms, udgående | 2060 | 6500 | Forpligtelse |
|
||||
| Moms, indgående | 2070 | 6510 | Tilgodehavende (modregnes) |
|
||||
| Moms, afregning | 2080 | 6520 | Forpligtelse/Tilgodehavende |
|
||||
| Bank (drift) | 5810 | 5508 / 5820 | Aktiv |
|
||||
|
||||
⚠️ **Tallene er eksempler iht. SUM-standarden** (Standard for virksomheders økonomistyring). Mange SMV'er bruger deres egen tilpassede kontoplan — **bekræft altid med virksomhedens egen kontoplan** inden bogføring.
|
||||
|
||||
## Workflow
|
||||
|
||||
1. **Modtag transaktionstype** (eller specifik transaktion)
|
||||
2. **Find relevant kontointerval** (se tabellerne ovenfor)
|
||||
3. **Anvend kontekst-regler**:
|
||||
- Virksomhedstype (enkeltmands, ApS, A/S, forening) → kan have egne konti
|
||||
- Branche (detail, engros, service, IT, produktion) → brancherelaterede konti
|
||||
- Skatteforhold (momsregistrering, CVR, SElvangivelse) → særlige konti
|
||||
4. **Vis anbefaling med begrundelse**:
|
||||
- Kontonr, kontonavn, kontogruppe
|
||||
- Hvorfor denne konto og ikke en alternativ
|
||||
5. **Alternativer**: vis 1-2 alternative konti hvis der er rimelig tvivl
|
||||
6. **Bekræft med bruger** — kontoplan-valg er en menneskelig beslutning, ikke en agent-beslutning
|
||||
|
||||
## Eksempel-aktivering
|
||||
|
||||
**Bruger:** "Hvor skal jeg bogføre et Stripe-gebyr på 234,56 kr.?"
|
||||
|
||||
**Svar:**
|
||||
> **Anbefalet konto:** 8010 — Gebyrer, betalingsformidlere
|
||||
>
|
||||
> **Begrundelse:** Stripe-gebyrer er **finansielle omkostninger** (betalingsformidling), ikke driftsomkostninger. De hører under hovedgruppe 8 (Finansielle poster) og bogføres typisk sammen med bankgebyrer og renter.
|
||||
>
|
||||
> **Bogføring:**
|
||||
> ```
|
||||
> DEBET 8010 Gebyrer, betalingsformidlere 234,56
|
||||
> KREDIT 5810 Bank, driftskonto 234,56
|
||||
> ```
|
||||
>
|
||||
> **Alternativer:**
|
||||
> - 8030 (Renteudgifter) — hvis virksomheden samler alle gebyrer dér (mindre korrekt)
|
||||
> - 4025 (Salgsomkostninger, eksterne) — hvis virksomheden klassificerer alle salgsrelaterede omkostninger under salg
|
||||
>
|
||||
> ⚠️ *Dette er ikke bogføringsrådgivning. Kontakt din revisor for endelig kontoplan.*
|
||||
|
||||
## Særlige regler
|
||||
|
||||
- ❌ ALDRIG foreslå en konto uden begrundelse
|
||||
- ❌ ALDRIG antag at kontoplanen følger SUM-standarden — bekræft med brugeren
|
||||
- ❌ ALDRIG modificér kontoplanen uden advarsel og dobbeltgodkendelse
|
||||
- ✅ ALTID vis kontogruppe (drift/balance) og sektion (omsætning/omkostning/aktiv/passiv)
|
||||
- ✅ ALTID vis alternativer når der er rimelig tvivl
|
||||
- ✅ ALTID medtag "Dette er ikke bogføringsrådgivning" disclaimer
|
||||
@@ -0,0 +1,161 @@
|
||||
---
|
||||
name: momsafregning
|
||||
description: >
|
||||
Beregn dansk momsangivelse (moms, momsfradrag, momsrefusion) til SKAT — aktiveres ved
|
||||
forespørgsler om "moms", "momsangivelse", "momsrefusion", "kvartalsmoms", "halvårsmoms",
|
||||
"momsregnskab", "25% moms", "momsfri".
|
||||
version: 0.1.0
|
||||
author: radix-accountant
|
||||
license: MIT
|
||||
metadata:
|
||||
hermes:
|
||||
tags: [accounting, dansk-regnskab, moms, skat, momsangivelse]
|
||||
related: [resultatopgoerelse, kontoplan-mapping, dansk-csv-import]
|
||||
---
|
||||
|
||||
# Dansk Momsafregning
|
||||
|
||||
Forbereder **momsangivelse** klar til indberetning via SKAT's TastSelv Erhverv (eller skat.dk). Håndterer både **kvartalsmoms** (små/mellemstore virksomheder) og **halvårsmoms** (helårsmomsansøgere, mikrovirksomheder under 5 mio. kr. i omsætning).
|
||||
|
||||
## Aktiveres ved
|
||||
|
||||
- "Beregn moms for Q2 2026"
|
||||
- "Forbered momsangivelse for maj 2026"
|
||||
- "Hvad er min momsrefusion for hele 2025?"
|
||||
- "Hvornår skal jeg indberette moms næste gang?"
|
||||
|
||||
## Danske momssatser (gældende)
|
||||
|
||||
| Sats | Bruges til |
|
||||
|---|---|
|
||||
| **25%** | Standard (langt de fleste varer og ydelser i Danmark) |
|
||||
| **0%** | Eksport ud af EU, visse avis/abonnementer, kunstnerisk virksomhed under 300.000 kr. |
|
||||
| Fritaget | Sygehusbehandling, undervisning, finansielle ydelser, forsikring |
|
||||
|
||||
⚠️ **Bemærk**: EU-lande har forskellige satser, men denne skill håndterer **kun dansk moms**. For EU-handel brug særskilt sub-skill (ikke del af denne version).
|
||||
|
||||
## Kontogruppering (dansk standardkontoplan + e-conomic)
|
||||
|
||||
| Konto (SUM) | Konto (e-conomic) | Navn | Beløb i momsangivelsen |
|
||||
|---|---|---|---|
|
||||
| 1100-1199 | 1010 | Salg af varer/ydelser (DK, 25%) | Rubrik A: Varesalg (momspligtig) |
|
||||
| 1200-1299 | 1010 | Salg af ydelser (DK, 25%) | Rubrik A: Ydelsessalg (momspligtig) |
|
||||
| 1500-1599 | 1080 | Eksport (0% moms) | Rubrik A: EU-salg/eksport |
|
||||
| 1600-1699 | 1300 | Råvarer/varekøb (DK, 25%) | Rubrik B: Varekøb (momsfradrag) |
|
||||
| 1700-1799 | 1690 / 1730 | Driftsomkostninger (DK, 25%) | Rubrik B: Driftsomkostninger (momsfradrag) |
|
||||
| 1800-1899 | 1800 | Import (køb fra udland) | Rubrik B: Import |
|
||||
| 1900-1999 | — | Køb af ydelser uden moms | (ingen moms at fradrage) |
|
||||
| 2060 | 6500 | Udgående moms | (salgsmoms) |
|
||||
| 2070 | 6510 | Indgående moms | (momsfradrag) |
|
||||
| 2080 | 6520 | Momsafregning | (saldo) |
|
||||
|
||||
⚠️ **Tjek altid kundens egen kontoplan** — de faktiske kontonumre kan variere. Ovenstående er standard-reference for både SUM (dansk standardkontoplan) og e-conomic (4-cifret).
|
||||
|
||||
## Struktur (momsangivelse, kvartal)
|
||||
|
||||
```
|
||||
MOMSANGIVELSE — [Kvartal] [År]
|
||||
═══════════════════════════════════════════════════
|
||||
Periode: [dd-MM-yyyy] til [dd-MM-yyyy]
|
||||
CVR: [hentes fra Radix]
|
||||
═══════════════════════════════════════════════════
|
||||
|
||||
RUBRIK A — UDGÅENDE MOMS (moms af salg)
|
||||
───────────────────────────────────────────────────
|
||||
A1 Varesalg, momspligtig (25%) 1.234.567,89
|
||||
A2 Ydelsessalg, momspligtig (25%) 89.012,34
|
||||
A3 Varesalg, EU/eksport (0%) 0,00
|
||||
A4 Ydelsessalg, EU (0%) 0,00
|
||||
...
|
||||
Udgående moms i alt (25% af A1+A2) 330.895,06
|
||||
───────────────────────────────────────────────────
|
||||
|
||||
RUBRIK B — INDGÅENDE MOMS (moms på køb, kan fradrages)
|
||||
───────────────────────────────────────────────────
|
||||
B1 Varekøb, momsfradrag (25%) 450.123,45
|
||||
B2 Driftsomkostninger, momsfradrag (25%) 67.890,12
|
||||
B3 Import, betalt toldmoms 0,00
|
||||
...
|
||||
Indgående moms i alt (25% af B1+B2) 129.503,39
|
||||
───────────────────────────────────────────────────
|
||||
|
||||
RUBRIK C — SALGSMOMS (MOMS DER SKAL INDBETALES)
|
||||
═══════════════════════════════════════════════════
|
||||
Udgående moms 330.895,06
|
||||
Indgående moms −129.503,39
|
||||
───────────────────────────────────────────────────
|
||||
SALGSMOMS 201.391,67
|
||||
═══════════════════════════════════════════════════
|
||||
|
||||
Hvis positiv: SKAT skylder dig penge
|
||||
Hvis negativ: Du skylder SKAT penge
|
||||
───────────────────────────────────────────────────
|
||||
|
||||
INDBETALINGSFRIST
|
||||
───────────────────────────────────────────────────
|
||||
Kvartalsmoms: 1. i 3. måned efter kvartalets udløb
|
||||
Eksempel: Q1 (jan-mar) → frist 1. juni
|
||||
═══════════════════════════════════════════════════
|
||||
```
|
||||
|
||||
## Workflow
|
||||
|
||||
1. **Spørg om periode** (måned, kvartal, halvår)
|
||||
2. **Bekræft virksomhedstype**: lille/mellemstor (kvartal) eller helårsmomsansøger (halvår)
|
||||
3. **Hent salg og køb** fra Radix ERP for perioden
|
||||
4. **Adskil konti** efter momssats (25%, 0%, fritaget)
|
||||
5. **Beregn udgående moms** (moms af eget salg) og **indgående moms** (moms af køb)
|
||||
6. **Beregn salgsmoms** = udgående moms − indgående moms
|
||||
7. **Vis beløb at indberette** (positiv = SKAT skylder dig, negativ = du skylder SKAT)
|
||||
8. **Angiv indberetningsfrist** iht. SKAT's regler
|
||||
9. **Tilbyd at generere SKAT XML/CSV** (hvis brugeren vil indberette direkte)
|
||||
|
||||
## Reverse charge (vigtig!)
|
||||
|
||||
For køb af ydelser fra udlandet (fx en tysk konsulent):
|
||||
|
||||
- **Køber** skal selv beregne og indberette momsen (reverse charge)
|
||||
- Konti der er reverse charge: typisk 1900-1999 (køb af ydelser uden moms i købsprisen)
|
||||
- I momsangivelsen: medtag i **Rubrik A** (både salg OG køb) og **Rubrik B** som fradrag — nettoeffekten er nul, men SKAT kræver begge beløb indberettet
|
||||
|
||||
## Almindelige fejl
|
||||
|
||||
- ❌ Medtag IKKE lønudgifter i momsbasis (løn er momsfri i DK)
|
||||
- ❌ Medtag IKKE renter i momsbasis (finansielle ydelser er fritaget)
|
||||
- ❌ Glem IKKE reverse charge-beløb — SKAT krydstjekker
|
||||
- ❌ Brug IKKE EUR-sats for DK-virksomheder — 25% er dansk standardsats
|
||||
- ✅ ALTID angiv CVR-nummer i rapporten
|
||||
- ✅ ALTID vis "Dette er ikke skatterådgivning — kontakt din revisor/SKAT" på momsangivelser
|
||||
|
||||
## SKAT-frister (2026)
|
||||
|
||||
| Type | Periode | Frist |
|
||||
|---|---|---|
|
||||
| Kvartalsmoms | Q1 (jan-mar) | 1. juni |
|
||||
| Kvartalsmoms | Q2 (apr-jun) | 1. september |
|
||||
| Kvartalsmoms | Q3 (jul-sep) | 1. december |
|
||||
| Kvartalsmoms | Q4 (okt-dec) | 1. marts (næste år) |
|
||||
| Halvårsmoms | H1 (jan-jun) | 1. september |
|
||||
| Halvårsmoms | H2 (jul-dec) | 1. marts (næste år) |
|
||||
| Moms, mikrovirksomhed (<5 mio. kr.) | Helår (jan-dec) | 1. marts (næste år, men kun hvis ansøgt om helårsmoms) |
|
||||
|
||||
⚠️ Frister kan ændre sig — tjek altid skat.dk for aktuelle frister.
|
||||
|
||||
## Eksempel på aktivering
|
||||
|
||||
**Bruger:** "Forbered momsangivelse for Q2 2026"
|
||||
|
||||
**Svar (forkortet):**
|
||||
> Momsangivelse for perioden 01-04-2026 til 30-06-2026:
|
||||
>
|
||||
> | Rubrik | Beløb | Moms |
|
||||
> |---|---|---|
|
||||
> | A1 Varesalg | 234.567,89 | 58.641,97 |
|
||||
> | A2 Ydelsessalg | 12.345,67 | 3.086,42 |
|
||||
> | B1 Varekøb | 89.012,34 | 22.253,09 |
|
||||
> | B2 Driftsomk. | 23.456,78 | 5.864,20 |
|
||||
> | **Salgsmoms** | | **33.611,10** |
|
||||
>
|
||||
> **Frist:** 01-09-2026 (1. september 2026)
|
||||
>
|
||||
> *Dette er ikke skatterådgivning. Kontakt din revisor eller SKAT for endelig indberetning.*
|
||||
@@ -0,0 +1,104 @@
|
||||
---
|
||||
name: radix-accountant
|
||||
description: >
|
||||
Dansk bogføring, regnskab og ERP-assistance til Radix-portalen — aktiveres ved forespørgsler om
|
||||
resultatopgørelse, momsafregning, kontoplan, CSV-import, bankafstemning, Uniconta-integration,
|
||||
e-conomic-integration eller Coop Danmark-reconciliation. Svar altid på dansk, brug dansk
|
||||
talformatering (1.234.567,89) og dd-MM-yyyy datoformat.
|
||||
version: 0.2.0
|
||||
author: radix-accountant
|
||||
license: MIT
|
||||
metadata:
|
||||
hermes:
|
||||
tags: [accounting, dansk-regnskab, moms, radix-erp, uniconta, e-conomic, coop]
|
||||
related: [resultatopgoerelse, momsafregning, kontoplan-mapping, dansk-csv-import, coop-bankimport, e-conomic-integration]
|
||||
---
|
||||
|
||||
# radix-accountant
|
||||
|
||||
Dansk bogførings- og regnskabsassistent skræddersyet til **Radix ERP** (CRM/ERP kørt på portal.radixadm.dk) med integration mod **Uniconta** (lokalt), **e-conomic** (cloud-bogføring) og **Coop Danmark**-afstemningsflow.
|
||||
|
||||
## Aktiveres ved
|
||||
|
||||
Når brugeren skriver på dansk om:
|
||||
|
||||
- **Resultatopgørelse, P&L, årsregnskab, balance, indtægter/udgifter** → `resultatopgoerelse`
|
||||
- **Moms, momsangivelse, momsfradrag, momsrefusion, kvartals-/halvårsmoms, 25% / 0%** → `momsafregning`
|
||||
- **CSV-import, bank-eksport, kontoudtog, Nordea/Danske Bank/Jyske/Sydbank-format** → `dansk-csv-import`
|
||||
- **Coop Danmark, bankbetaling, opgørelse, afstemning mod fakturaer** → `coop-bankimport`
|
||||
- **Kontoplan, kontonummer, dansk standardkontoplan, finanskonto, postering** → `kontoplan-mapping`
|
||||
- **e-conomic, bogfør i e-conomic, hent fakturaer fra e-conomic, kassekladde, sync mod e-conomic** → `e-conomic-integration`
|
||||
|
||||
## Faste konventioner (BINDENDE for alle sub-skills)
|
||||
|
||||
| Parameter | Værdi |
|
||||
|---|---|
|
||||
| Sprog | Dansk (alle svar, prompts, fejlmeddelelser) |
|
||||
| Talformatering | `1.234.567,89` — punktum som tusindtalsseparator, komma som decimal |
|
||||
| Negativ beløb | `−1.234,56` med unicode minus-tegn (Unicode minus U+2212), ALDRIG `-` |
|
||||
| Datoformat | `dd-MM-yyyy` (fx `15-06-2026`) |
|
||||
| Klokkeslæt | `HH:mm` 24-timers (fx `14:35`) |
|
||||
| Valuta | `kr.` eller `DKK` — aldrig `$` medmindre brugeren eksplicit beder om anden valuta |
|
||||
| Moms | `25%` (standard), `0%` (fritagne ydelser), `ekskl. moms` / `inkl. moms` |
|
||||
| Kontoplan reference | **e-conomic**: 4-cifret DK-standard (1000-9999). **Uniconta**: egen struktur. **SUM/DG/SL**: generisk dansk standard |
|
||||
| Decimaler i rapporter | 2 decimaler for beløb, 1 decimal for procenter, 0 decimaler for heltal |
|
||||
| Afrundingsregel | Banker's rounding (half-even) for at matche dansk bogføringspraksis |
|
||||
| Bank reference | BIC + 10-cifret kontonr (dansk format) eller bank-reference fra CSV |
|
||||
|
||||
## Reference-miljø
|
||||
|
||||
- **Radix ERP**: kører på `https://portal.radixadm.dk` (DEBUG=True bevidst, dansk datoformat bevidst)
|
||||
- **Test-login**: `testadmin@example.dk` / `test1234` (KUN til test/udvikling — ALDRIG persistér i rapporter)
|
||||
- **Uniconta**: lokalt bogføringssystem, fakturaer og kreditorer hentes derfra
|
||||
- **e-conomic**: cloud-bogføring (https://www.e-conomic.dk), REST API på `https://restapi.e-conomic.com`, OAuth-baseret adgang via AppSecretToken + AgreementGrantToken
|
||||
- **Coop Danmark**: bankbetalinger + specifikationer (opgørelser) per indbetaling
|
||||
|
||||
## Bogføringssystem — hvornår bruges hvad
|
||||
|
||||
| System | Bruges til | Fordel | Ulempe |
|
||||
|---|---|---|---|
|
||||
| **Uniconta** | Dansk lokalt bogføringssystem, mange SMV'er | Lokal kontrol, dyb funktionalitet | Kræver installation |
|
||||
| **e-conomic** | Cloud-bogføring, Danmarks mest udbredte | Altid tilgængeligt, stærk API, gratis for små | Begrænset fleksibilitet i kontoplan |
|
||||
| **Radix ERP (egen)** | Intern ERP, CRM-delen | Integreret med Radix-data | Bogføring er ikke primær funktion |
|
||||
|
||||
**Standardantagelse**: Hvis brugeren ikke specificerer, brug **e-conomic** (mest udbredt i danske SMV'er og har den bedste API). Spørg hvis det er uklart.
|
||||
|
||||
## Workflow
|
||||
|
||||
1. **Identificér brugerens hensigt** ud fra nøgleord (se listen ovenfor)
|
||||
2. **Aktivér den relevante sub-skill** ved at indlæse dennes `SKILL.md` først
|
||||
3. **Anvend de faste konventioner** i alle output (sprog, tal, dato, valuta)
|
||||
4. **Bekræft data med brugeren** før du skriver noget tilbage til Radix/Uniconta/e-conomic (aldrig stille skriv)
|
||||
5. **Generer rapporten** med tydelig header, periode, totaler og fodnoter
|
||||
6. **Vis altid kildereference** (transaktions-id, fakturanummer, bankreference) i rapporter
|
||||
|
||||
## Vigtige regler
|
||||
|
||||
- ❌ ALDRIG bogfør uden brugerens eksplicitte godkendelse — vis diff først
|
||||
- ❌ ALDRIG antag valuta — bekræft `DKK`/`EUR`/`USD` hvis ikke tydeligt
|
||||
- ❌ ALDRIG brug amerikansk/UK-formatering (`,` som tusindtalsseparator) — det er den forkerte vej rundt for dansk
|
||||
- ❌ ALDRIG modificér kontoplanen uden advarsel — ændringer kræver dobbeltgodkendelse
|
||||
- ❌ ALDRIG hardcode API-tokens i eksempler — brug altid `${ECONOMIC_APP_SECRET_TOKEN}` placeholder-syntaks
|
||||
- ❌ ALDRIG bogfør bilag i e-conomic uden først at vise `entries` JSON til brugeren
|
||||
- ✅ ALTID vis "Dette er ikke bogføringsrådgivning — kontakt din revisor" på alle moms- og årsregnskabsrapporter
|
||||
- ✅ ALTID angiv kilde (bankfil, Uniconta-id, e-conomic-bogføringsnr, faktura-nr) for hvert tal
|
||||
- ✅ ALTID spørg før du sletter — brug aldrig `DELETE` uden bekræftelse
|
||||
- ✅ ALTID brug Idempotency-Key ved POST/PUT til e-conomic API (forhindrer dobbeltbogføring ved netværksfejl)
|
||||
|
||||
## Sub-skills
|
||||
|
||||
| Skill | Formål |
|
||||
|---|---|
|
||||
| [resultatopgoerelse](resultatopgoerelse/SKILL.md) | Byg dansk P&L/resultatopgørelse med korrekt kontogruppering |
|
||||
| [momsafregning](momsafregning/SKILL.md) | Beregn momsangivelse (kvartal/halvår), klar til SKAT-indberetning |
|
||||
| [kontoplan-mapping](kontoplan-mapping/SKILL.md) | Map transaktioner til dansk standardkontoplan (SUM/DG/SL/e-conomic) |
|
||||
| [dansk-csv-import](dansk-csv-import/SKILL.md) | Importér danske bank-CSV'er (Nordea, Danske Bank, Jyske, Sydbank) |
|
||||
| [coop-bankimport](coop-bankimport/SKILL.md) | Reconcilier Coop Danmark bankbetalinger mod Uniconta- eller e-conomic-fakturaer |
|
||||
| [e-conomic-integration](e-conomic-integration/SKILL.md) | Integration med e-conomic cloud-bogføring (auth, konti, kassekladde, fakturaer) |
|
||||
|
||||
## Reference-dokumenter
|
||||
|
||||
- `REFERENCES/dansk_kontoplan.md` — Oversigt over SUM/DG/SL-konti (kort)
|
||||
- `REFERENCES/momssatser.md` — Aktuelle danske momssatser og fritagelser
|
||||
- `REFERENCES/coop_format.md` — Forventet format på Coop opgørelser (PDF/Excel)
|
||||
- `REFERENCES/economic_api.md` — e-conomic REST API endpoints og auth-flow
|
||||
@@ -0,0 +1,148 @@
|
||||
---
|
||||
name: resultatopgoerelse
|
||||
description: >
|
||||
Byg en dansk resultatopgørelse (P&L) ud fra Radix ERP-data — aktiveres ved forespørgsler om
|
||||
"resultatopgørelse", "P&L", "årsregnskab", "indtjening pr. måned/kvartal/år".
|
||||
version: 0.1.0
|
||||
author: radix-accountant
|
||||
license: MIT
|
||||
metadata:
|
||||
hermes:
|
||||
tags: [accounting, dansk-regnskab, resultatopgoerelse, radix-erp]
|
||||
related: [kontoplan-mapping, momsafregning]
|
||||
---
|
||||
|
||||
# Resultatopgørelse (Dansk P&L)
|
||||
|
||||
Genererer en **dansk resultatopgørelse** med korrekt kontogruppering iht. dansk standardkontoplan, dansk talformatering (`1.234.567,89`) og dansk terminologi (Bruttofortjeneste, Driftsresultat, Årets resultat).
|
||||
|
||||
## Aktiveres ved
|
||||
|
||||
- "Vis resultatopgørelsen for Q1 2026"
|
||||
- "Hvad er bruttofortjenesten for maj?"
|
||||
- "Generer P&L for hele 2025"
|
||||
- "Sammenlign omsætning mellem januar og februar 2026"
|
||||
|
||||
## Struktur (standard dansk resultatopgørelse)
|
||||
|
||||
```
|
||||
RESULTATOPGØRELSE — [Periode]
|
||||
═══════════════════════════════════════════════════
|
||||
|
||||
NETTOOMSÆTNING
|
||||
Salg af varer/ydelser (konto 1000-1099) 1.234.567,89
|
||||
Andre driftsindtægter (konto 1100-1199) 5.678,90
|
||||
───────────────────────────────────────────────────
|
||||
Nettoomsætning i alt 1.240.246,79
|
||||
|
||||
VAREFORBRUG / COGS
|
||||
Varekøb (konto 1300-1399) −450.123,45
|
||||
Direkte løn (konto 1400-1499) −89.012,34
|
||||
Fragt/emballage (konto 1500-1599) −12.345,67
|
||||
───────────────────────────────────────────────────
|
||||
Vareforbrug i alt −551.481,46
|
||||
|
||||
═══════════════════════════════════════════════════
|
||||
BRUTTOFORTJENESTE 688.765,33
|
||||
Bruttomargin 55,5%
|
||||
|
||||
EKSTERNE OMKOSTNINGER
|
||||
Salgsomkostninger (konto 1600-1699) −23.456,78
|
||||
Lokaleomkostninger (konto 1700-1799) −45.678,90
|
||||
Administrationsomkostninger (1800-1899) −34.567,89
|
||||
───────────────────────────────────────────────────
|
||||
Eksterne omkostninger i alt −103.703,57
|
||||
|
||||
═══════════════════════════════════════════════════
|
||||
DRIFTSRESULTAT FØR AFSKRIVNINGER (EBITDA) 585.061,76
|
||||
EBITDA-margin 47,2%
|
||||
|
||||
AFSKRIVNINGER
|
||||
Afskrivninger (konto 2000-2099) −50.000,00
|
||||
───────────────────────────────────────────────────
|
||||
Afskrivninger i alt −50.000,00
|
||||
|
||||
═══════════════════════════════════════════════════
|
||||
DRIFTSRESULTAT (EBIT) 535.061,76
|
||||
Driftsmargin 43,2%
|
||||
|
||||
FINANSIELLE POSTER
|
||||
Renteindtægter (konto 2100-2199) 1.234,56
|
||||
Renteudgifter (konto 2200-2299) −5.678,90
|
||||
Kursreguleringer (konto 2300-2399) 789,01
|
||||
───────────────────────────────────────────────────
|
||||
Finansielle poster i alt −3.655,33
|
||||
|
||||
═══════════════════════════════════════════════════
|
||||
RESULTAT FØR SKAT 531.406,43
|
||||
|
||||
Skat (konto 2500-2599) −117.149,42
|
||||
───────────────────────────────────────────────────
|
||||
|
||||
═══════════════════════════════════════════════════
|
||||
ÅRETS RESULTAT 414.257,01
|
||||
Nettoavance 33,4%
|
||||
═══════════════════════════════════════════════════
|
||||
```
|
||||
|
||||
## Workflow
|
||||
|
||||
1. **Spørg om periode** (måned, kvartal, år, eller brugerdefineret datointerval)
|
||||
2. **Hent data fra Radix ERP** via API eller Uniconta-eksport — spørg brugeren hvilken kilde der foretrækkes
|
||||
3. **Gruppér konti** efter dansk standardkontoplan-struktur (se kontoplan-mapping skill)
|
||||
4. **Beregn totaler** for hver sektion (Nettoomsætning, Vareforbrug, Eksterne omkostninger, osv.)
|
||||
5. **Beregn marginer**:
|
||||
- Bruttomargin = Bruttofortjeneste / Nettoomsætning × 100
|
||||
- EBITDA-margin = EBITDA / Nettoomsætning × 100
|
||||
- Driftsmargin = EBIT / Nettoomsætning × 100
|
||||
- Nettoavance = Årets resultat / Nettoomsætning × 100
|
||||
6. **Formater tal** iht. faste konventioner (punktum tusindtalsseparator, komma decimal)
|
||||
7. **Vis rapport** med tydelig periode, totaler og marginer
|
||||
8. **Tilbyd sammenligning** med tilsvarende periode året før (hvis data findes)
|
||||
|
||||
## Sammenlignings-rapport (bonus)
|
||||
|
||||
Når brugeren beder om en sammenligning:
|
||||
|
||||
```
|
||||
SAMMENLIGNING — [Periode A] vs [Periode B]
|
||||
═══════════════════════════════════════════════════
|
||||
Periode A Periode B Ændring
|
||||
────────────────────────────────────────────────────────────
|
||||
Nettoomsætning 1.234.567,89 1.100.000,00 +12,2%
|
||||
Bruttofortjeneste 688.765,33 590.000,00 +16,7%
|
||||
Bruttomargin 55,5% 53,6% +1,9 pp
|
||||
Driftsresultat (EBIT) 535.061,76 420.000,00 +27,4%
|
||||
Driftsmargin 43,2% 38,2% +5,0 pp
|
||||
Årets resultat 414.257,01 310.000,00 +33,6%
|
||||
═══════════════════════════════════════════════════
|
||||
```
|
||||
|
||||
`pp` = procentpoint (almindelig dansk regnskabsterm).
|
||||
|
||||
## Almindelige fejl at undgå
|
||||
|
||||
- ❌ Vis "−" som `-` (bindestreg) — brug Unicode minus `−` (U+2212) for korrekt typografi
|
||||
- ❌ Bland ikke `1.234,56` (dansk) med `1,234.56` (US) — brug ALTID dansk
|
||||
- ❌ Medtag ikke moms i omsætningstallet — nettoomsætning er ekskl. moms
|
||||
- ❌ Vis ikke "EBIT" som "Driftsresultat" og "EBITDA" som "Driftsresultat før afskrivninger" som om de er det samme — de er forskellige
|
||||
- ✅ ALTID vis "Dette er ikke bogføringsrådgivning" i årsregnskaber
|
||||
|
||||
## Eksempel på aktivering
|
||||
|
||||
**Bruger:** "Vis mig resultatopgørelsen for 2025"
|
||||
|
||||
**Svar (forkortet):**
|
||||
> Henter transaktioner for perioden 01-01-2025 til 31-12-2025 fra Radix ERP...
|
||||
>
|
||||
> ```
|
||||
> RESULTATOPGØRELSE — 01-01-2025 til 31-12-2025
|
||||
> ═══════════════════════════════════════════════
|
||||
> Nettoomsætning i alt 12.345.678,90
|
||||
> ...
|
||||
> ÅRETS RESULTAT 4.142.570,10
|
||||
> Nettoavance 33,6%
|
||||
> ═══════════════════════════════════════════════
|
||||
> ```
|
||||
>
|
||||
> *Dette er ikke bogføringsrådgivning. Kontakt din revisor for årsregnskab.*
|
||||
Reference in New Issue
Block a user