> ## Documentation Index
> Fetch the complete documentation index at: https://docs.kaspert.be/llms.txt
> Use this file to discover all available pages before exploring further.

# Bank CSV-importformaat en kolomreferentie voor Kaspert

> Exacte kolomnamen, datum- en bedragsformaten, en encoderegels die de bankimportparser van Kaspert verwacht van KBC, ING en compatibele CSV-exports.

De bankimportparser van Kaspert leest de CSV-bestanden die Belgische banken produceren wanneer je je rekeninghistoriek exporteert. De parser is geoptimaliseerd voor het exportformaat van KBC, maar ondersteunt ook ING en elke andere bank die een CSV produceert met minimaal een datum- en een bedragkolom. Deze pagina legt de exacte kolomnamen, datumformaten, bedragsconventies en encoderegels uit zodat je altijd weet wat je kunt verwachten, en hoe je problemen oplost, bij het importeren van transacties van je bank.

## Ondersteunde banken

Kaspert detecteert automatisch het bankformaat op basis van de kolomkoppen in de eerste rij van je CSV.

<CardGroup cols={2}>
  <Card title="KBC" icon="building-columns">
    Gedetecteerd wanneer het bestand een `Datum`- en `Bedrag`-kolom bevat. De parser leest ook `Naam tegenpartij`, `Vrije mededeling` en `Omschrijving` voor de transactiebeschrijving, samen met optionele `Debet` / `Credit`-kolommen voor de richting inkomsten/uitgaven.
  </Card>

  <Card title="ING" icon="building-columns">
    Gedetecteerd wanneer het bestand een `Af Bij`- of `Bedrag (EUR)`-kolomkop bevat. ING-exports gebruiken een vaste kolomvolgorde (datum in kolom 0, beschrijving in kolom 1, richting in kolom 5, bedrag in kolom 6, mededeling in kolom 8).
  </Card>
</CardGroup>

<Note>
  Andere banken (Belfius, BNP Paribas Fortis, enz.) kunnen werken als hun CSV compatibele `Datum`- en `Bedrag`-kolommen bevat. Test eerst met een kleine export. Als de import mislukt, mail dan [support@kaspert.be](mailto:support@kaspert.be) met een (geanonimiseerd) voorbeeldbestand.
</Note>

***

## Vereiste kolommen

De parser vereist dat deze twee kolommen aanwezig zijn in de koprij. Kolomnaammatching is **niet hoofdlettergevoelig**.

| Kolom  | Geaccepteerde naam(en) | Formaat                                                                    |
| ------ | ---------------------- | -------------------------------------------------------------------------- |
| Datum  | `Datum`, `date`        | `DD/MM/YYYY` of `YYYY-MM-DD`                                               |
| Bedrag | `Bedrag`, `amount`     | Decimaal, komma **of** punt als scheidingsteken (bijv. `45,00` of `45.00`) |

Als een van beide kolommen ontbreekt, toont het importvenster de volgende foutmelding en worden er geen transacties geimporteerd:

```text theme={null}
CSV-bestand bevat geen 'Datum' of 'Bedrag' kolom.
Controleer of dit een KBC of ING export is.
```

***

## Optionele kolommen

Deze kolommen worden gelezen wanneer ze aanwezig zijn. Hun afwezigheid veroorzaakt geen fout.

| Kolom                 | Geaccepteerde naam(en) | Gebruikt voor                                                        |
| --------------------- | ---------------------- | -------------------------------------------------------------------- |
| Vrije mededeling      | `Vrije mededeling`     | Transactiebeschrijving                                               |
| Naam tegenpartij      | `Naam tegenpartij`     | Voorgeplaatst aan de beschrijving                                    |
| Algemene omschrijving | `Omschrijving`         | Fallback-beschrijving als er geen tegenpartij of vrije mededeling is |
| Debet                 | `Debet`                | Expliciete uitgave-indicator (KBC uitgebreide export)                |
| Credit                | `Credit`               | Expliciete inkomsten-indicator (KBC uitgebreide export)              |
| Rekening tegenpartij  | `Rekening tegenpartij` | Genegeerd tijdens import                                             |

Wanneer meerdere beschrijvingskolommen aanwezig zijn, bouwt Kaspert de transactiebeschrijving door `Naam tegenpartij` en `Vrije mededeling` te combineren met een streepje als scheidingsteken (bijvoorbeeld `Jan Janssen - Lidgeld 2024-2025`). Als alle beschrijvingskolommen leeg zijn, valt de beschrijving terug op `Bankverrichting`.

***

## Bedragsafhandeling

Kaspert slaat altijd de **absolute waarde** van het bedrag op. De richting van de geldstroom wordt apart vastgelegd in het veld `type`.

| Conditie                                    | Opgeslagen `type` |
| ------------------------------------------- | ----------------- |
| Kolom `Debet` niet-nul                      | `expense`         |
| Kolom `Credit` niet-nul                     | `income`          |
| Geen Debet/Credit-kolommen, bedrag negatief | `expense`         |
| Geen Debet/Credit-kolommen, bedrag positief | `income`          |
| ING-richtingkolom = `Af`                    | `expense`         |
| ING-richtingkolom = `Bij`                   | `income`          |

Een rij wordt stilzwijgend overgeslagen als het geparste bedrag `0` of `NaN` oplevert.

***

## Datumformaat-normalisatie

Ongeacht het oorspronkelijke datumformaat van de bank, normaliseert Kaspert elke datum naar ISO 8601 (`YYYY-MM-DD`) voordat deze wordt opgeslagen. Rijen met niet-te-parseren datums worden overgeslagen.

| Bankformaat                  | Voorbeeldinput | Opgeslagen als |
| ---------------------------- | -------------- | -------------- |
| KBC Belgisch formaat         | `01/09/2024`   | `2024-09-01`   |
| ISO 8601 (al genormaliseerd) | `2024-09-01`   | `2024-09-01`   |
| ING compact formaat          | `20240901`     | `2024-09-01`   |

***

## Bestandscodering (Windows-1252 / ISO-8859-1)

KBC exporteert zijn CSV-bestanden in **Windows-1252**-codering (ook bekend als ISO-8859-1). Deze codering bevat speciale Belgische tekens zoals `e` met accent, `e` met trema en andere die veel voorkomen in Vlaamse namen en beschrijvingen.

Het importvenster van Kaspert leest het bestand met de `windows-1252`-coderinginstelling in de FileReader-API van de browser, zodat accenttekens correct verschijnen zonder dat je zelf iets hoeft te doen.

<Warning>
  Als je het CSV-bestand opent in Excel en het vervolgens **opnieuw opslaat**, converteert Excel de codering naar UTF-8 of een eigen formaat. Accenttekens verschijnen dan als vervormde tekens in Kaspert. Importeer altijd het **originele bestand rechtstreeks van je bank**, zonder het eerst te openen en opnieuw op te slaan.
</Warning>

Eventuele resterende niet-herkende tekens worden automatisch vervangen door een apostrof (`'`) om weergaveproblemen te voorkomen.

***

## Duplicaatdetectie

Wanneer je een CSV importeert, controleert Kaspert elke rij tegen je bestaande transacties om waarschijnlijke duplicaten te markeren. Een duplicaat wordt gedetecteerd wanneer een bestaande transactie overeenkomt met alle drie de volgende criteria:

* **Datum**: exacte match (`YYYY-MM-DD`)
* **Bedrag**: verschil kleiner dan 0,01
* **Beschrijving**: exacte stringmatch (hoofdlettergevoelig)

Duplicaatrijen worden in het importvoorbeeld gemarkeerd met een waarschuwingsbadge. Ze worden **niet automatisch uitgesloten**: je kunt ze nog steeds selecteren en importeren als je dat nodig hebt (bijvoorbeeld bij een legitieme dubbele betaling). Deselecteer de duplicaatrijen die je wilt overslaan en klik op **Importeer selectie**.

***

## Voorbeeld KBC CSV-structuur

Hieronder zie je een voorbeeld van de ruwe CSV-structuur die Kaspert verwacht. De **eerste rij moet de koprij** zijn. Kaspert leest deze om kolommen te identificeren. Datavolgen direct daarna.

```csv title="KBC Export Sample" theme={null}
"Datum";"Bedrag";"Valuta";"Omschrijving";"Naam tegenpartij";"Rekening tegenpartij";"Vrije mededeling"
"01/09/2024";"-45,00";"EUR";"Betaling";"Brico";"";"Kamp materiaal verf"
"15/09/2024";"120,00";"EUR";"Overschrijving";"Mama van Peeters";"BE98 0000 1234 5678";"Lidgeld Jan Janssen 2024-2025"
"22/09/2024";"-18,50";"EUR";"Betaling";"Carrefour";"";"Vergadering snacks"
```

Na import worden deze drie rijen:

| Datum      | Bedrag | Type    | Beschrijving                                     |
| ---------- | ------ | ------- | ------------------------------------------------ |
| 2024-09-01 | 45.00  | expense | Brico - Kamp materiaal verf                      |
| 2024-09-15 | 120.00 | income  | Mama van Peeters - Lidgeld Jan Janssen 2024-2025 |
| 2024-09-22 | 18.50  | expense | Carrefour - Vergadering snacks                   |
