Przejdź do głównej zawartości

mBank CSV

Parser MbankParser obsługuje format CSV eksportowany z systemu transakcyjnego mBanku. Nagłówki kolumn zaczynają się od znaku #.

CechaWartość
Separator; (średnik)
KodowanieUTF-8 (z opcjonalnym BOM)
Format datyYYYY-MM-DD
Format kwoty-1230,00 (polski, z przecinkiem)
NagłówkiPrefiks #
#NagłówekMapowanie
1#Data operacjidate
2#Data księgowania(pomijane)
3#Opis operacjityp operacji
4#Tytułdescription
5#Nadawca/OdbiorcarecipientName / senderName
6#Numer kontanumer rachunku kontrahenta
7#Kwotaamount (w groszach)
8#Saldo po operacji(pomijane)
// mBank: nagłówki z prefixem #
content.includes('#Data operacji') && content.includes('#Opis operacji')

Kwoty w formacie mBanku używają polskiej notacji z przecinkiem:

// Wejście: "-1230,00"
// 1. Zamiana przecinka na kropkę: "-1230.00"
// 2. parseFloat: -1230.0
// 3. * 100 = -123000 groszy

NIP jest szukany w polach #Nadawca/Odbiorca i #Tytuł łącznie:

const nip = extractFirstNIP(`${counterparty ?? ''} ${description}`)
#Data operacji;#Data księgowania;#Opis operacji;#Tytuł;#Nadawca/Odbiorca;#Numer konta;#Kwota;#Saldo po operacji
2026-03-01;2026-03-01;PRZELEW WYCHODZĄCY;Faktura FV/2026/03/001;ACME SP Z O O NIP5213456789;27114020040000300201355387;-1230,00;48770,00
2026-03-05;2026-03-05;PRZELEW PRZYCHODZĄCY;Zaplata za usluge;BETA SP Z O O;98105012141000002345678901;5000,00;53770,00
[
{
date: '2026-03-01',
amount: -123000, // -1230,00 PLN w groszach
description: 'Faktura FV/2026/03/001',
recipientName: 'ACME SP Z O O NIP5213456789',
recipientNIP: '5213456789',
bank: 'mbank',
},
{
date: '2026-03-05',
amount: 500000, // 5000,00 PLN w groszach
description: 'Zaplata za usluge',
senderName: 'BETA SP Z O O',
senderNIP: undefined,
bank: 'mbank',
},
]
import { importBankStatement } from '@ksefnik/core'
const transactions = await importBankStatement('./mbank-wyciag.csv')
console.log(transactions.length) // np. 42