Dwa różne pliki pod jedną nazwą
mBank publikuje dwie specyfikacje MT940 i różnią się one niemal wszystkim, co ważne przy imporcie:
| Cecha | Bankowość elektroniczna dla korporacji i MSP (CompanyNet, MultiCash) | Usługa Raport MT940 w serwisie transakcyjnym |
|---|---|---|
| Polskie znaki | ISO-8859-2 | UTF-8 |
Pole :20: | data i numer, np. ST050112CYC/1 | stały tekst MT940 |
Pole :86: | ciągły tekst | dwa pola na operację, drugie z podpolami ~ |
Kod w :61: | N i trzy znaki, np. NTRF | S i trzy cyfry, np. S303 |
| Zawartość pliku | może obejmować kilka rachunków | jeden rachunek, nazwa domyślna mt940_xxx_RRRRMMDD.txt |
Najszybszy test: otwórz plik w edytorze tekstu i spójrz na pierwszą linię :20:. ST…CYC/1 oznacza pierwszy wariant, MT940 drugi.
Usługę Raport MT940 aktywujesz w serwisie transakcyjnym: Finanse → Historia → raport MT940 → Włącz Raport MT940. Strona banku podaje opłatę 50 zł miesięcznie za jeden rachunek.
ISO-8859-2: krzaczki, które łatwo przeoczyć
Ten plik psuje się mniej widocznie niż pliki w CP852. ISO-8859-2 i Windows-1250 mają inne kody tylko dla 6 z 18 polskich liter: ą, ś, ź, Ą, Ś, Ź. Reszta wygląda poprawnie, więc ZAKŁAD UBEZPIECZEŃ czytasz bez problemu, ale Gąsior zmienia się w G±sior, a Łódź w ŁódĽ.
Pobieżny rzut oka tego nie wyłapie. Problem wyjdzie dopiero wtedy, gdy wyszukiwanie po nazwisku nic nie znajdzie. Więcej o przyczynie przeczytasz w sekcji o krzaczkach zamiast polskich liter.
Jak czytać pole :86: bez podpól
Zamiast numerowanych podpól, opisanych w sekcji o polu :86:, mBank zapisuje ciąg danych. Przelew przychodzący według specyfikacji banku:
:86:770 Przelew krajowy; z rach.: 96106000341513020000253224;
od: PHU Test ul. Dolna 1 00-950 Warszawa; tyt.: f-ra 4545;
data stempla: 17.10.2007; TNR: 145351015641957.000001
Reguły z dokumentacji:
- Na początku stoi kod transakcji i jego opis:
770to przelew przychodzący z ELIXIR,944przelew krajowy z CompanyNet,824opłata za przelew. - Dane rozdziela średnik ze spacją, a słowo kodowe jest oddzielone od wartości spacją.
- Słowa kodowe zależą od kodu transakcji. We wpływie masz
z rach.:,od:ityt.:, w wydatkuna rach.:,dla:ityt.:. - Gdy pole jest puste, jego słowo kodowe się nie pojawia.
kurs:czywaluta:zobaczysz tylko przy przewalutowaniu. - Wielkość liter bywa różna (
TYT.:ityt.:), a specyfikacja ma też wersję angielską słów (title:,from:,for:). - Przy płatności podzielonej opis ma dopisek
SP, a tytuł strukturę/VAT/…/IDC/…/INV/….
Wyjątek stanowi MT940 wysyłany przez sieć SWIFT: bez średników i do 6 linii po 65 znaków zamiast 15.
Tytuł i kontrahent w osobnych kolumnach Excela
W tym wariancie konwerter przenosi cały opis do kolumny „Tytuł” (K w CSV), a do „Rachunek kontrahenta” (J) trafia numer znaleziony w treści. Kolumna „Kontrahent” zostaje pusta. Sam tytuł wyciągnie formuła dla wiersza 2:
=JEŻELI.BŁĄD(USUŃ.ZBĘDNE.ODSTĘPY(FRAGMENT.TEKSTU(K2;SZUKAJ.TEKST("; tyt.:";K2)+7;SZUKAJ.TEKST(";";K2&";";SZUKAJ.TEKST("; tyt.:";K2)+1)-SZUKAJ.TEKST("; tyt.:";K2)-7));"")
SZUKAJ.TEKST nie rozróżnia wielkości liter, więc formuła działa dla tyt.: i TYT.:. Wiersze bez tytułu, np. opłaty, zostaną puste.
Nazwę nadawcy dostaniesz po zamianie "; tyt.:" na "; od:", a obu liczb 7 na 5. Dla odbiorcy wpisz "; dla:" i 6. Formuła utnie tytuł, jeśli zawiera on własny średnik, a przy opisach angielskich zmień słowo kodowe.
Przy opłatach pomaga kolumna „Referencja banku”. mBank zaznacza, że ten sam identyfikator może mieć operacja główna i powiązana z nią opłata, więc filtr po referencji pokaże przelew razem z jego kosztem.
W pliku z usługi Raport MT940 formuła nie jest potrzebna: tytuł, kontrahent i rachunek są w podpolach i trafiają do właściwych kolumn CSV.
Jak konwerter radzi sobie z plikami z mBanku
Konwerter działa w przeglądarce, a plik nie trafia na serwer. Sam rozpoznaje ISO-8859-2 i UTF-8 (a także Windows-1250 i CP852), usuwa znaki sterujące z początku i końca bloku, obsługuje oba układy :86: i zapisuje CSV w UTF-8, więc polskie litery zostają poprawne także w Excelu. Dalsze kroki opisuje sekcja o otwieraniu pliku w Excelu.
Najczęstsze pytania
Dlaczego w pliku z mBanku widzę podpola ~20, skoro :86: miało być ciągłym tekstem?
Masz drugi wariant pliku. Dokument mBanku dla usługi Raport MT940 opisuje podpola ~20–~28, dwa pola :86: na operację i UTF-8. Ciągły tekst i ISO-8859-2 dotyczą specyfikacji bankowości elektronicznej dla klientów korporacyjnych i MSP.
Dlaczego w CSV z mBanku kolumna Kontrahent jest pusta?
W wariancie z ciągłym tekstem konwerter nie dzieli opisu na części: cały trafia do kolumny Tytuł, a do kolumny Rachunek kontrahenta przechodzi numer znaleziony w treści. Nazwę kontrahenta wyciągniesz formułą z tego poradnika, szukając „; od:” albo „; dla:”.
Skąd dziwne znaki na początku i końcu bloku w pliku z mBanku?
W specyfikacji mBanku zestaw danych rachunku zaczyna się znakiem sterującym ASCII 1, a kończy myślnikiem i znakiem ASCII 3. W edytorze tekstu mogą wyglądać jak śmieci, ale należą do formatu. Konwerter usuwa je przed analizą pliku.
Czy mBank wycofuje MT940?
Bank pisze, że nie wprowadza ostatecznego terminu wycofania, ale zaleca przejście na CAMT.052 i CAMT.053. Zapowiada też, że po zmianach w systemach rozliczeniowych MT940 w CompanyNet i MultiCash nie będzie zawierać pełnych danych kontrahentów.
Źródła
- mBank — Opis formatu pliku wyciągów dziennych MT940, wersja 1.3
- mBank — Description of the MT940 daily statement file format, wersja 1.6
- mBank — Załącznik 2: szczegółowa specyfikacja opisów transakcji na wyciągach
- mBank — MT940: wyciągi dzienne i miesięczne w części detalicznej mBanku
- mBank — Raport MT940 dla firm
- mBank — ISO 20022: wyciągi i raporty
- Microsoft — Funkcje SZUKAJ.TEKST, SZUKAJ.TEKST.B