--- 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: ``` 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.