--- 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