Files
Radix-Skills/skills/accounting/dansk-csv-import/SKILL.md
T
dennis 236053cd7f 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.
2026-06-15 14:41:04 +02:00

5.7 KiB
Raw Blame History

name, description, version, author, license, metadata
name description version author license metadata
dansk-csv-import 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". 0.2.0 radix-accountant MIT
hermes
tags related
accounting
dansk-regnskab
csv-import
bank
nordea
danske-bank
jyske-bank
e-conomic
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:

{
  "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.