Gå til innhold

Matche transaksjoner

Etter at banktransaksjoner og hovedbokslinjer er importert kobler du dem sammen, par for par. Auto-match-motoren tar en del treff automatisk; resten håndterer du manuelt på arbeidsbenken. Når alle linjer er matchet (eller forklart med kommentar) er kontoen klar til å fullføres for perioden.

Matching skjer alltid mot uavhengig importerte data — du flytter aldri penger eller bilag, du dokumenterer hvilke som hører sammen.


Tilgang

Hvem Hva trengs
Rolle Administrator eller regnskapskonsulent
Modul Bankavstemming (moduleID 42) — registrert i bank-reconciliation-routing.module.ts:20
Tilleggsrettighet wv_BankAccountAccess.CanEdit = 1 for kontoen — uten dette er match-knappene skjult
Effekt Avstemmingsstatus per periode for den valgte kontoen

I konsernoppsett gjelder rettighetene per regnskapsklient — du må ha tilgang til den klienten kontoen ligger på.


Forutsetninger

  • Banktransaksjoner og hovedbokslinjer er importert (se importere bankutdrag)
  • Bank-saldo og hovedboks-saldo i toppen av arbeidsbenken stemmer mot kildesystemene
  • Auto-match-regler er satt opp hvis kontoen har gjentakende mønstre (faste trekk, gjentakende kunder)
  • Du har oversikt over hvilken periode du avstemmer — typisk forrige måned

arbeidsbenken med banklinjer i venstre panel og hovedbokslinjer i høyre panel, øverst saldo og auto-match-knappen


Slik gjør du

1. Åpne arbeidsbenken for kontoen

Naviger til Bankavstemming → Kontoer og klikk på kontoen du skal avstemme. URL-en blir /bank-reconciliation/reconcile/:id (bank-reconciliation-routing.module.ts:21).

Arbeidsbenken viser banktransaksjoner i venstre panel og hovedbokslinjer i høyre panel. Topplinjen viser bank-saldo, hovedboks-saldo og differanse som skal forklares.

2. Filtrer og sorter

Hver liste har egne filtre:

  • PeriodedateFrom/dateTo på arbeidsbenken. Banksiden filtreres på transaksjonsdato, hovedboks-siden på bilagsdato
  • Status — vis "Alle", "Matchede" eller "Ikke matchede" (bankMatchFilter/ledgerMatchFilter, default unmatched)
  • Søk — fritekst mot beløp, referanse, beskrivelse
  • Sortering — dato eller beløp, stigende eller synkende

Det enkleste er ofte å sortere begge sider på beløp. Da ligger åpenbare 1:1-treff rett ved siden av hverandre.

Hver liste henter 200 rader om gangen (bank-reconciliation-workspace.component.ts:96). Finnes det flere, viser bunnlinjen «Viser X av Y» sammen med en Vis flere-knapp under listen som laster neste 200 uten å miste det du allerede ser. Totaler og antall i bunnlinjen dekker alltid hele utvalget, også rader som ikke er lastet ennå. Etter en match eller import beholdes det utvidede vinduet, mens bytte av filter, søk, sortering eller periode starter på de første 200 igjen.

3. Kjør auto-match

Klikk Auto-match øverst (bank-reconciliation-workspace.component.html:31). Motoren går gjennom alle ikke-matchede linjer i den valgte perioden og kjører strategiene i denne rekkefølgen (BankReconciliationService.cs:519-565):

# Strategi Hva den gjør Confidence
1 Motpart-mapping (CounterParty) Match basert på kjent motpart-mapping 92
2 Regelbasert (Rules) Brukerens egne regler (Equals, Contains, StartsWith, EndsWith, Regex m.fl.) 90 som standard, justerbart per regel (0–100)
3 Eksakt (ExactMatch) Samme beløp + samme dato 100
4 Valuta-beløp (CurrencyAmount) Samme Currency + samme CurrencyAmount innenfor dato- og NOK-toleranse 95 (god FX) eller 80 (avvik nær terskel)
5 Beløp + datotoleranse (AmountDateTolerance) Samme beløp, dato innenfor DateToleranceDays (default ±3) Synker med antall dagers avvik — 100 (0d), 90 (1d), 80 (2d), 70 (3d)
6 Beløp + referanse (AmountReference) Samme beløp + tekstlikhet (KID, fakturanr) over terskel Tekstlikhet × 0,85 — typisk 60–80
7 Sum N→1 (SumNToOne) Flere banklinjer summert til én hovedbokslinje 70
8 Sum 1→N (SumOneToN) Én banklinje fordelt på flere hovedbokslinjer 70
8b Sum N→N (SumNToN) Flere banklinjer mot flere hovedbokslinjer — kun hvis NtoNEnabled Konfigurerbar, minimum NtoNMinConfidence (default 80)
9 Same-side netting Netto-utligning av hovedbokslinjer — kun hvis NettingEnabled Konfigurerbar
10 KAI-disambiguering KAI velger riktig hovedbokspost for tvetydige treff (samme beløp + dato) — kun hvis KaiAnalysisEnabled. Forslaget legges i gjennomgangskøen for manuell godkjenning, det bokføres aldri automatisk Per forslag

Allerede matchede linjer hoppes over. På en konto i annen valuta enn NOK er det bare poster som står i kontoens egen valuta som er kandidater — en valutakorrigering har ingen bankmotpart og skal ikke kunne pares med et likelydende beløp i kontovalutaen. Datoene som sammenlignes er valuteringsdatoene på begge sider (bankens bokføringsdato brukes når valuteringsdato mangler).

På en valutakonto teller også bankens bokføringsdato. Banken valuterer en valutabetaling på oppgjørsdatoen — typisk to virkedager etter at den ble bokført — mens regnskapssystemet valuterer den på bokføringsdagen. Sammenlignes bare valuteringsdato mot valuteringsdato, ligger de to beina på samme betaling systematisk noen dager fra hverandre, og motoren finner ingen par i det hele tatt. Derfor godtas en hovedbokspost også når den treffer bankradens bokføringsdato på nøyaktig samme kalenderdag.

Regelen er bevisst asymmetrisk: valuteringsdatoen beholder toleransevinduet (DateToleranceDays, standard ±3), mens bokføringsdatoen kun teller på eksakt dag. Den modellerer det som faktisk skjer — «regnskapet bokfører på bankens bokføringsdag» — og ikke «en eller annen dag i nærheten». Regelen gjelder bare kontoer i annen valuta enn NOK: på en NOK-konto kan en valuteringsdato være satt med hensikt (rentedatering), og der er oppførselen uendret. Har bankraden ingen egen valuteringsdato, eller er de to datoene like, oppfører matchingen seg nøyaktig som før.

Datoregelen gjelder hvilke rader som kan matches, og siden denne versjonen gjelder den også hvilken periode en rad tilhører. Én dato bestemmer begge deler: valuteringsdato når den finnes, ellers bilagsdato. En rad som er valutert etter periodeslutt holdes derfor utenfor selv om den ble bokført innenfor — og en hovedbokspost uten valuteringsdato plasseres på bilagsdatoen sin i saldo, i periodelås og i periodeavslutning, akkurat slik den allerede ble matchet.

Konsekvensen som er verdt å merke seg: en hovedbokspost uten valuteringsdato med bilagsdato i en låst periode kan ikke lenger matches der. Før kunne den det, fordi låsen ikke klarte å plassere en rad uten valuteringsdato i det hele tatt. Gjenåpne perioden hvis raden faktisk skal matches inn i den.

Netting dekker to tilfeller. Går gruppen opp i null — en faktura mot sin egen kreditnota — avstemmes den direkte, uten bankpost; det finnes ingen betaling å lete etter. Dette krever at alle postene i gruppen deler samme bilagsnummer: at beløpene tilfeldigvis går opp i null er ikke bevis på at postene hører sammen, og to urelaterte poster med motsatt fortegn skal ikke avstemmes automatisk. En kreditnota ført på et annet bilag nettes derfor ikke automatisk — den nettes manuelt med «Nett ut»-knappen. Går gruppen ikke opp i null, søkes det etter en banktransaksjon på nettobeløpet, typisk «kunden betalte differansen». Finnes det flere måter å nette ut samme post på, gjør motoren ingenting og overlater valget til brukeren.

For netting mot bankpost gjelder i tillegg: står NettingRequireTextMatch på — som er standard — avvises en nettinggruppe hvis tekstlikheten ikke når NettingTextThreshold. Kravet forutsetter at det finnes tekst å sammenligne på begge sider; mangler teksten på bank- eller hovedbokssiden, regnes det som at kravet ikke er oppfylt. Står flagget av, teller tekstlikhet bare som et pluss i konfidensen slik det alltid har gjort. (Null-gruppene over bruker bilagsnummeret som bekreftelse i stedet — det finnes ingen bankpost å tekst-sammenligne mot.)

Strategiene 8b (N→N), 9 (netting) og 10 (KAI) er av som standard og må slås på i kontoens match-config (wv_BankAccountMatchConfig) via henholdsvis NtoNEnabled, NettingEnabled og KaiAnalysisEnabled. Strategiene 1–8 kjører alltid.

Innenlandske valutanumre. Hvilke rader som regnes som innenlandske på en valutakonto styres av valutanumrene fra økonomisystemet, og nummereringen er klientspesifikk — 0 og 47 er det vanlige i Visma, men ikke garantert. Standarden er 0,47; avviker klientens nummerering, settes den under Regler → Matchkonfigurasjon → «Innenlandske valutanumre (hele klienten)» (krever administrator, og gjelder alle kontoer på klienten, ikke bare valgt konto). Feil verdi gir stille feil saldo på valutakontoer — det er derfor feltet finnes.

På en valutakonto vurderes bare banklinjer som faktisk er i kontoens valuta. En linje i en annen valuta — typisk en revaluering — er ikke en kandidat for automatisk matching og blir liggende som utestående til den behandles manuelt. På en NOK-konto merkes ikke dette, siden alle linjene der uansett er i kontoens valuta.

Maks antall linjer i en sum-gruppe styres av MaxSumGroupSize på kontoens config — default 5 (BankReconciliationService.cs:432). Antall kandidater per kjøring kappes også av BankReconciliation.MaxSumCandidates i systemkonfigurasjonen (default 50).

Etter kjøringen får du en sammenstilling: antall matcher per strategi, hvor mange banklinjer og hovedbokslinjer som ble matchet, samt eventuelle advarsler (avkortet datasett, tvetydige kandidater).

Tvetydige kandidater som motoren ikke kunne avgjøre automatisk, samles i «Vis forslag»-panelet. Forslag med samme beløp og dato grupperes her i én sammenleggbar grupperad med antall (i stedet for én flat liste av tilsynelatende like rader) — slå ut gruppen for å se de enkelte forslagene, eller bruk «Ignorer alle» for å avvise hele gruppen i én handling (bank-reconciliation-workspace.component.ts). Enkeltstående forslag vises som før.

Panelet har begrenset høyde og scroller internt, med kolonneoverskriftene låst øverst, slik at bank- og hovedbokslistene under blir stående på skjermen uansett hvor mange forslag køen inneholder. Køen lastes på nytt hver gang du avstemmer et par, så forslag som peker på linjer du nettopp har brukt opp forsvinner umiddelbart i stedet for å bli stående som valgbare. Opphever du en match, kommer forslaget ikke tilbake av seg selv — forslag lages kun av en auto-match-kjøring, så kjør auto-match på nytt hvis du vil ha dem tilbake i køen.

Er KaiAnalysisEnabled slått på, går KAI gjennom nettopp disse tvetydige linjene (samme beløp + dato med flere hovedbokskandidater) i bunker — den leser referanse/KID, fakturanummer, bilagsnummer, beskrivelse og motpart på begge sider og velger den kandidaten som passer best. KAI-valget bokføres aldri automatisk: det legges i gjennomgangskøen som et KAI-merket forslag (øverst, framhevet), slik at du godkjenner det med ett klikk gjennom den vanlige valideringen. Kjøringen er kostnadsbegrenset til inntil 6 KAI-bunker à 50 linjer (≈ 300 linjer per kjøring, styrt av BankReconciliation.KaiMaxBatchesPerRun, standard 6); gjenstår det flere, viser oppsummeringen hvor mange og du kan kjøre auto-match på nytt. I resultat-panelet ser du «N forslag fra KAI, M til gjennomgang» og knappen «Til gjennomgang» som tar deg rett til køen (BankReconciliationService.cs).

«Dato» i «samme beløp og dato» er hovedbokslinjens effektive dato: verdidato når kilden har levert en, ellers bilagsdato. En hovedbokslinje uten verdidato er altså fullt matchbar — både i den vanlige matchingen og i KAI-disambigueringen over — den plasseres bare etter bilagsdatoen sin.

auto-match-modalen med oppsummering per strategi og advarsler

4. Verifiser automatiske treff

Filtrer på "Matchede" for å se hva motoren tok. For hver match ser du strategien (f.eks. ExactMatch, Rule:Faste trekk Nordea), confidence-score og match-beskrivelsen som forklarer hvilke kriterier som traff (beløp, dato, referanse).

Lav confidence (under 80) bør sjekkes manuelt — særlig regelbaserte treff første gang en ny regel kjører. Du kan oppheve en match med Unmatch (bank-reconciliation-workspace.component.html:355) og kjøre på nytt etter at regelen er korrigert.

5. Match resterende manuelt

For ikke-matchede linjer:

  • 1:1 — kryss av én linje i hver side, klikk Avstem (bank-reconciliation-workspace.component.html:163). Backend krever at sum av valgte stemmer innenfor AmountTolerance for kontoen
  • N:1 eller 1:N — kryss av flere på den ene siden og én på den andre. Sum av valgte må stemme
  • N:N — flere på begge sider. Praktisk når én bankutbetaling dekker flere fakturaer bokført med flere bilag

Avstem-knappen aktiveres så snart minst én hovedbokslinje er valgt (canMatch krever selectedLedgerIds.size > 0 — rene banklinje-grupper er ikke tillatt). Selve beløpskontrollen gjøres på backend ved lagring; hvis summen ikke går opp innenfor toleransen får du feilmelding. Match-gruppene lagres i wv_BankReconciliationMatch med en delt MatchGroupID (GUID).

6. Forklar resten med kommentar

Linjer som ikke kan matches (åpne poster, gebyrer som ikke er bokført, etc.) får en kommentar i stedet:

Kommenterte linjer telles ikke som matchet, men markeres som "forklart" og blokkerer ikke periode-fullføring.

7. Fullfør perioden

Når alle linjer er matchet eller kommentert, klikk Fullfør øverst (bank-reconciliation-workspace.component.html:87). Modalen som åpnes har overskriften "Fullfør avstemming" — der bekrefter du:

  • Bank-saldo ved periodeslutt
  • Hovedboks-saldo ved periodeslutt
  • Eventuell forventet differanse (ikke-matchede linjer)

Etter fullføring låses periode-raden i wv_BankReconciliationPeriod til status Completed, og auto-match filtrerer bort transaksjoner som faller innenfor låste perioder (BankReconciliationService.cs:488).


Resultat

Etter at perioden er avstemt:

  • Alle banklinjer og hovedbokslinjer er enten matchet (via MatchGroupID) eller forklart med kommentar
  • Periode-raden i wv_BankReconciliationPeriod er satt til Completed med bank- og hovedbokssaldo
  • Avstemmingsrapport kan genereres for revisor
  • Neste periode står klar med saldo-overføring fra denne

I konsernoppsett er kontoen klar til å inngå i konsernavstemming-rapporter på tvers av selskaper.


Vanlige problemer

"Auto-match ga få eller ingen treff"

Du forventet mange auto-treff, men motoren rapporterte lite.

Årsak: Vanligste årsaker:

  • Datotoleransen er for stram — banken bokfører ofte 1–3 dager etter regnskapet (DateToleranceDays default 3)
  • Beløpstoleransen er 0 og banken trekker gebyr på utbetalingen (AmountTolerance)
  • Referanse-tekst (KID, fakturanr) mangler eller står på et annet felt enn motoren ser på
  • Tekstlikhets-terskelen er for høy (TextSimilarityThreshold default 0,3) eller motorens strenge vinnerkriterier (Jaccard ≥ 0,50, gap til neste ≥ 0,35, minst 1,5× neste) gjør at flertydige treff forkastes (BankReconciliationService.cs:776-780)

Løsning: Justér toleransene for kontoen i wv_BankAccountMatchConfig, og opprett regelbaserte treff for faste trekk eller bestemte motparter.


"Manuell match blokkeres av beløpstoleranse"

Du har valgt linjer som hører sammen, men match-knappen er deaktivert (canMatch blir false).

Årsak: Backend avviser lagringen fordi sum av valgte linjer på de to sidene ikke er lik innenfor AmountTolerance for kontoen. Selv 0,01 NOK avvik stopper matchen hvis toleransen er 0.

Løsning: Enten øk beløpstoleransen for kontoen, eller match med kommentar som forklarer differansen. For valuta-differanser er det vanlig å bokføre kursdifferansen som en egen hovedbokslinje først.


"Match-knappen mangler"

Du ser linjer men kan ikke matche dem.

Årsak: Du har lesetilgang (CanView) men ikke skrivetilgang (CanEdit) på kontoen, eller perioden er allerede fullført og låst (Completed i wv_BankReconciliationPeriod).

Løsning: Be administrator om CanEdit i wv_BankAccountAccess, eller åpne perioden på nytt hvis det er et reelt behov.


"Sum N→1 matchet feil linjer"

Motoren har koblet sammen flere banklinjer mot én bilagslinje, men kombinasjonen er feil.

Årsak: SumNToOne-strategien finner kombinasjoner av opptil MaxSumGroupSize linjer (default 5, konfigurerbart per bankkonto) som summerer til mål-beløpet. Hvis flere kombinasjoner gir samme sum, flagger motoren matchen som tvetydig (S5 ambiguøs) i stedet for å gjette (BankReconciliationService.cs:833-838).

Løsning: Klikk Unmatch på match-gruppen og match resten manuelt. Vurder å senke MaxSumGroupSize eller legge til en regel som ekskluderer linjene (f.eks. snevrere dato-intervall).


"Auto-match ble avbrutt — datasettet er for stort"

Resultatet inneholder advarselen autoMatchTruncated.

Årsak: Antall ikke-matchede linjer overskrider BankReconciliation.MaxAutoMatchTotal (default 100 000) (BankReconciliationService.cs:422). Auto-match avkorter datasettet og merker resultatet som ufullstendig — perioden kan ikke fullføres før en fullstendig kjøring lykkes.

Løsning: Snevre inn datoperioden (f.eks. én måned av gangen) og kjør auto-match på nytt.


"Differanse mellom bank og hovedbok som ikke forsvinner"

Selv etter at alle linjer er matchet vises en differanse i topplinjen.

Årsak: Vanligvis åpningssaldo-feil — saldoen ved periodestart stemmer ikke med faktisk balanse. Eller noen linjer er matchet med kommentert avvik som ikke bokføres i hovedboken.

Løsning: Sjekk åpningssaldoen mot forrige periodes sluttbalanse. Ved konsernoverføringer er åpningssaldo ofte glemt på datterselskap.


Relaterte sider