Przejdź do głównej zawartości

ING CSV

Parser IngParser obsługuje format CSV z ING Banku Śląskiego. Charakterystyczną cechą są nagłówki w cudzysłowach i daty w formacie YYYYMMDD.

CechaWartość
Separator; (średnik)
KodowanieUTF-8 (z opcjonalnym BOM)
Format datyYYYYMMDD (np. 20260301)
Format kwoty+15000,00 / -1230,00 (z leading spaces)
NagłówkiW cudzysłowach
#NagłówekMapowanie
1"Data transakcji"date (po konwersji)
2"Data księgowania"(pomijane)
3"Dane kontrahenta"recipientName / senderName
4"Tytuł"description
5-6inne kolumny(pomijane)
7"Szczegóły"ekstrakcja NIP
8(pusta)(pomijane)
9"Kwota"amount (w groszach)
content.includes('"Data transakcji"') && content.includes('"Dane kontrahenta"')

ING używa formatu YYYYMMDD bez separatorów:

function formatIngDate(yyyymmdd: string): string {
// 20260301 -> 2026-03-01
return `${yyyymmdd.slice(0, 4)}-${yyyymmdd.slice(4, 6)}-${yyyymmdd.slice(6, 8)}`
}

NIP jest szukany w trzech polach: "Dane kontrahenta", "Szczegóły" i "Tytuł":

const nip = extractFirstNIP(`${counterparty ?? ''} ${details ?? ''} ${description}`)

W kolumnie "Szczegóły" ING często umieszcza NIP w formacie NIPxxxxxxxxxx.

ING dopisuje adres firmy do nazwy kontrahenta. Parser odcina suffix zaczynający się od UL:

// "ACME SP Z O O UL MARSZALKOWSKA 1" -> "ACME SP Z O O"
counterparty?.split(' UL ')[0]?.split(' ul ')[0]
"Data transakcji";"Data księgowania";"Dane kontrahenta";"Tytuł";"";"";"";"Szczegóły";"";"Kwota"
20260301;20260301;"ACME SP Z O O UL MARSZALKOWSKA 1";"Faktura FV/2026/03/001";"";"";"";""NIP5213456789";"";"-1230,00"
20260305;20260305;"BETA SP Z O O";"Zaplata za usluge";"";"";"";"";"";" 5000,00"
[
{
date: '2026-03-01',
amount: -123000,
description: 'Faktura FV/2026/03/001',
recipientName: 'ACME SP Z O O', // bez "UL MARSZALKOWSKA 1"
recipientNIP: '5213456789',
bank: 'ing',
},
{
date: '2026-03-05',
amount: 500000,
description: 'Zaplata za usluge',
senderName: 'BETA SP Z O O',
bank: 'ing',
},
]
import { importBankStatement } from '@ksefnik/core'
const transactions = await importBankStatement('./ing-wyciag.csv')