Przejdź do głównej zawartości

PKO BP CSV

Parser PkoParser obsługuje format CSV z PKO Banku Polskiego. Wyróżnia się użyciem przecinka jako separatora (zamiast średnika) oraz dedykowaną kolumną NIP.

CechaWartość
Separator, (przecinek)
KodowanieUTF-8 (z opcjonalnym BOM)
Format datyYYYY-MM-DD
Format kwoty-1230.00 (angielski, z kropką)
NagłówkiW cudzysłowach
#NagłówekMapowanie
1"Data operacji"date
2"Data waluty"(pomijane)
3"Typ transakcji"(pomijane)
4"Kwota"amount (w groszach)
5"Waluta"(pomijane)
6"Saldo po transakcji"(pomijane)
7"Opis nadawcy"recipientName / senderName
8"Tytuł"description
9"NIP"NIP kontrahenta
content.includes('"Data operacji"') && content.includes('"Typ transakcji"')

PKO BP jako jedyny z obsługiwanych banków udostępnia dedykowaną kolumnę "NIP". Parser najpierw sprawdza tę kolumnę, a dopiero w razie jej braku szuka NIP w opisie:

const nip = nipRaw?.match(/^\d{10}$/)?.[0]
?? extractFirstNIP(`${counterparty ?? ''} ${description}`)

PKO BP używa formatu angielskiego z kropką jako separatorem dziesiętnym:

// Wejście: "-1230.00"
// parseFloat: -1230.0
// * 100 = -123000 groszy
"Data operacji","Data waluty","Typ transakcji","Kwota","Waluta","Saldo po transakcji","Opis nadawcy","Tytuł","NIP"
"2026-03-01","2026-03-01","Przelew wychodzący","-1230.00","PLN","48770.00","ACME SP Z O O","Faktura FV/2026/03/001","5213456789"
"2026-03-05","2026-03-05","Przelew przychodzący","5000.00","PLN","53770.00","BETA SP Z O O","Zaplata za usluge",""
[
{
date: '2026-03-01',
amount: -123000,
description: 'Faktura FV/2026/03/001',
recipientName: 'ACME SP Z O O',
recipientNIP: '5213456789', // z dedykowanej kolumny NIP
bank: 'pko',
},
{
date: '2026-03-05',
amount: 500000,
description: 'Zaplata za usluge',
senderName: 'BETA SP Z O O',
senderNIP: undefined,
bank: 'pko',
},
]
import { importBankStatement } from '@ksefnik/core'
const transactions = await importBankStatement('./pko-wyciag.csv')