Kolos Hetyéssy Software developer

Free tools / Bank Statement Reconciler

Convert MT940 bank statements to CSV

Drop an MT940 file below and see every transaction in clean columns, with each statement's balance checked to the cent. The API turns the same result into an Excel-ready CSV.

  • Free, no sign-up
  • Your file is never stored
  • Deterministic: no AI guesswork

Try it now

Your file is read in memory and discarded right after; names and IBANs are masked unless you switch that off. The sample tabs show the engine's complete output for example files, including the exact CSV.

The live demo needs JavaScript, which seems to be switched off. The sample tabs show the engine's real output without it.

A savings-bank file with ?20 subfields, a direct debit and its return (an RD reversal), and a Latin-1 umlaut in a counterparty name.

sparkasse-style-mt940.sta 837 bytes · MT940

Input file

:20:STARTUMSE
:25:50010517/0648489890
:28C:00012/001
:60F:C260130EUR8420,10
:61:2601300130CR2380,00NTRFNONREF//POS 1
:86:166?00GUTSCHR. UEBERWEISUNG?109310?20EREF+RE-2026-0042?21SVWZ
+Rechnung 2026-0042 vom?22 05.01.2026 Wartungsvertrag?30COBADEFFX
XX?31DE89370400440532013000?32Müller Maschinenbau GmbH
:61:2601300130DR129,90NDDTNONREF//POS 2
:86:105?00FOLGELASTSCHRIFT?109248?20EREF+NT-INV-889123?21MREF+M-0
099-77?22CRED+DE98ZZZ09999999999?23SVWZ+Nordnetz Rechnung Janu?24
ar 2026 Kd-Nr 4455?30DUSSDEDDXXX?31DE65100700000123456789?32Nordn
etz Telekom GmbH
:61:2601300130RD129,90NRTINONREF//POS 3
:86:109?00RUECKLASTSCHRIFT?109248?20EREF+NT-INV-889123?21MREF+M-0
099-77?22CRED+DE98ZZZ09999999999?23SVWZ+Ruecklastschrift?30DUSSDE
DDXXX?31DE65100700000123456789?32Nordnetz Telekom GmbH?34901
:62F:C260130EUR10800,10
-

Audit result

VERIFIED 1 statement · 3 transactions

STARTUMSE
VERIFIED
Opening
8420.10
+ Credits
2509.90
− Debits
129.90
= Calculated
10800.10
Bank's closing
10800.10 EUR

Transactions

DateAmountCounterpartyReferencePurpose
2026-01-30 2380.00 EUR Müller Maschinenbau GmbHDE89370400440532013000 RE-2026-0042 Rechnung 2026-0042 vom 05.01.2026 Wartungsvertrag
2026-01-30 -129.90 EUR Nordnetz Telekom GmbHDE65100700000123456789 NT-INV-889123 Nordnetz Rechnung Januar 2026 Kd-Nr 4455
2026-01-30 129.90 EURreversal Nordnetz Telekom GmbHDE65100700000123456789 NT-INV-889123 Ruecklastschrift
JSON response output_format=json
{
  "api_version": "2.0",
  "detected_format": "MT940",
  "file_count": 1,
  "statement_count": 1,
  "transaction_count": 3,
  "overall_verdict": "VERIFIED",
  "verdict_counts": {
    "VERIFIED": 1
  },
  "warnings": [],
  "statements": [
    {
      "statement_index": 0,
      "source_file": "sparkasse-style-mt940.sta",
      "format": "MT940",
      "statement_reference": "STARTUMSE",
      "sequence_number": "00012/001",
      "account_id": "50010517/0648489890",
      "account_servicer_bic": "",
      "currency": "EUR",
      "creation_datetime": "",
      "opening_balance": "8420.10",
      "opening_balance_date": "2026-01-30",
      "opening_balance_type": "60F",
      "closing_balance": "10800.10",
      "closing_balance_date": "2026-01-30",
      "closing_balance_type": "62F",
      "closing_available_balance": null,
      "closing_available_balance_date": null,
      "closing_available_balance_type": null,
      "total_credits": "2509.90",
      "total_debits": "129.90",
      "credit_count": 2,
      "debit_count": 1,
      "pending_count": 0,
      "calculated_closing_balance": "10800.10",
      "discrepancy_amount": "0.00",
      "audit_method": "BALANCE_EQUATION",
      "audit_verdict": "VERIFIED",
      "audit_notes": [],
      "statement_information": "",
      "transaction_count": 3,
      "transactions": [
        {
          "transaction_hash": "6055cc8f87dbc3b7e2dad51b69fe465bd1ae7f72a63665a9f4ba24ec8ac157ca",
          "booking_date": "2026-01-30",
          "value_date": "2026-01-30",
          "direction": "CREDIT",
          "is_reversal": false,
          "status": "BOOKED",
          "amount": "2380.00",
          "signed_amount": "2380.00",
          "currency": "EUR",
          "bank_transaction_code": "NTRF",
          "bank_transaction_code_proprietary": "",
          "gvc": "166",
          "booking_text": "GUTSCHR. UEBERWEISUNG",
          "bank_reference": "POS 1",
          "customer_reference": "NONREF",
          "end_to_end_id": "RE-2026-0042",
          "mandate_id": "",
          "creditor_id": "",
          "counterparty_name": "Müller Maschinenbau GmbH",
          "counterparty_iban": "DE89370400440532013000",
          "counterparty_bic": "COBADEFFXXX",
          "counterparty_account": "DE89370400440532013000",
          "purpose": "Rechnung 2026-0042 vom 05.01.2026 Wartungsvertrag",
          "return_reason": "",
          "raw_information": "166?00GUTSCHR. UEBERWEISUNG?109310?20EREF+RE-2026-0042?21SVWZ\n+Rechnung 2026-0042 vom?22 05.01.2026 Wartungsvertrag?30COBADEFFX\nXX?31DE89370400440532013000?32Müller Maschinenbau GmbH",
          "structured_fields": {
            "PRIMANOTA": "9310",
            "EREF": "RE-2026-0042",
            "SVWZ": "Rechnung 2026-0042 vom 05.01.2026 Wartungsvertrag",
            "FUNDS_CODE": "R"
          },
          "batch_details": []
        },
        {
          "transaction_hash": "1015154cfe7ca2bfca28a5f61ef3d97a18ba0553e811427e01310cfaa41b7be5",
          "booking_date": "2026-01-30",
          "value_date": "2026-01-30",
          "direction": "DEBIT",
          "is_reversal": false,
          "status": "BOOKED",
          "amount": "129.90",
          "signed_amount": "-129.90",
          "currency": "EUR",
          "bank_transaction_code": "NDDT",
          "bank_transaction_code_proprietary": "",
          "gvc": "105",
          "booking_text": "FOLGELASTSCHRIFT",
          "bank_reference": "POS 2",
          "customer_reference": "NONREF",
          "end_to_end_id": "NT-INV-889123",
          "mandate_id": "M-0099-77",
          "creditor_id": "DE98ZZZ09999999999",
          "counterparty_name": "Nordnetz Telekom GmbH",
          "counterparty_iban": "DE65100700000123456789",
          "counterparty_bic": "DUSSDEDDXXX",
          "counterparty_account": "DE65100700000123456789",
          "purpose": "Nordnetz Rechnung Januar 2026 Kd-Nr 4455",
          "return_reason": "",
          "raw_information": "105?00FOLGELASTSCHRIFT?109248?20EREF+NT-INV-889123?21MREF+M-0\n099-77?22CRED+DE98ZZZ09999999999?23SVWZ+Nordnetz Rechnung Janu?24\nar 2026 Kd-Nr 4455?30DUSSDEDDXXX?31DE65100700000123456789?32Nordn\netz Telekom GmbH",
          "structured_fields": {
            "PRIMANOTA": "9248",
            "EREF": "NT-INV-889123",
            "MREF": "M-0099-77",
            "CRED": "DE98ZZZ09999999999",
            "SVWZ": "Nordnetz Rechnung Januar 2026 Kd-Nr 4455",
            "FUNDS_CODE": "R"
          },
          "batch_details": []
        },
        {
          "transaction_hash": "4c84375ac5d6822d48eb01512a6fa53389d679143821f0a32375deaf196221f4",
          "booking_date": "2026-01-30",
          "value_date": "2026-01-30",
          "direction": "CREDIT",
          "is_reversal": true,
          "status": "BOOKED",
          "amount": "129.90",
          "signed_amount": "129.90",
          "currency": "EUR",
          "bank_transaction_code": "NRTI",
          "bank_transaction_code_proprietary": "",
          "gvc": "109",
          "booking_text": "RUECKLASTSCHRIFT",
          "bank_reference": "POS 3",
          "customer_reference": "NONREF",
          "end_to_end_id": "NT-INV-889123",
          "mandate_id": "M-0099-77",
          "creditor_id": "DE98ZZZ09999999999",
          "counterparty_name": "Nordnetz Telekom GmbH",
          "counterparty_iban": "DE65100700000123456789",
          "counterparty_bic": "DUSSDEDDXXX",
          "counterparty_account": "DE65100700000123456789",
          "purpose": "Ruecklastschrift",
          "return_reason": "901",
          "raw_information": "109?00RUECKLASTSCHRIFT?109248?20EREF+NT-INV-889123?21MREF+M-0\n099-77?22CRED+DE98ZZZ09999999999?23SVWZ+Ruecklastschrift?30DUSSDE\nDDXXX?31DE65100700000123456789?32Nordnetz Telekom GmbH?34901",
          "structured_fields": {
            "PRIMANOTA": "9248",
            "EREF": "NT-INV-889123",
            "MREF": "M-0099-77",
            "CRED": "DE98ZZZ09999999999",
            "SVWZ": "Ruecklastschrift"
          },
          "batch_details": []
        }
      ]
    }
  ]
}
CSV export output_format=csv
source_file,statement_index,statement_reference,account_id,audit_verdict,transaction_hash,booking_date,value_date,direction,is_reversal,status,amount,signed_amount,currency,counterparty_name,counterparty_iban,counterparty_bic,counterparty_account,purpose,end_to_end_id,mandate_id,creditor_id,bank_transaction_code,bank_transaction_code_proprietary,gvc,booking_text,return_reason,bank_reference,customer_reference
sparkasse-style-mt940.sta,0,STARTUMSE,50010517/0648489890,VERIFIED,6055cc8f87dbc3b7e2dad51b69fe465bd1ae7f72a63665a9f4ba24ec8ac157ca,2026-01-30,2026-01-30,CREDIT,false,BOOKED,2380.00,2380.00,EUR,Müller Maschinenbau GmbH,DE89370400440532013000,COBADEFFXXX,DE89370400440532013000,Rechnung 2026-0042 vom 05.01.2026 Wartungsvertrag,RE-2026-0042,,,NTRF,,166,GUTSCHR. UEBERWEISUNG,,POS 1,NONREF
sparkasse-style-mt940.sta,0,STARTUMSE,50010517/0648489890,VERIFIED,1015154cfe7ca2bfca28a5f61ef3d97a18ba0553e811427e01310cfaa41b7be5,2026-01-30,2026-01-30,DEBIT,false,BOOKED,129.90,-129.90,EUR,Nordnetz Telekom GmbH,DE65100700000123456789,DUSSDEDDXXX,DE65100700000123456789,Nordnetz Rechnung Januar 2026 Kd-Nr 4455,NT-INV-889123,M-0099-77,DE98ZZZ09999999999,NDDT,,105,FOLGELASTSCHRIFT,,POS 2,NONREF
sparkasse-style-mt940.sta,0,STARTUMSE,50010517/0648489890,VERIFIED,4c84375ac5d6822d48eb01512a6fa53389d679143821f0a32375deaf196221f4,2026-01-30,2026-01-30,CREDIT,true,BOOKED,129.90,129.90,EUR,Nordnetz Telekom GmbH,DE65100700000123456789,DUSSDEDDXXX,DE65100700000123456789,Ruecklastschrift,NT-INV-889123,M-0099-77,DE98ZZZ09999999999,NRTI,,109,RUECKLASTSCHRIFT,901,POS 3,NONREF

Three daily statements that each add up, but statement 00006 is missing. The balance chain shows it.

ing-style-mt940-gap.sta 1127 bytes · MT940

Input file

:20:P260105000000001
:25:NL69INGB0123456789EUR
:28C:00004
:60F:C260102EUR12500,00
:61:2601050105C2500,00NTRFNONREF//2601050012345678
:86:/EREF/INV-2026-0012//CNTP/NL44RABO0123456789/RABONL2U/Acme Tr
ading B.V./AMSTERDAM//REMI/USTD//Invoice INV-2026-0012 January ho
sting/
:61:2601050105D189,95NDDTEREF//2601050012345679
:86:/EREF/CH-778899//MARF/MNDT-CH-01//CSID/NL12ZZZ123456780000//C
NTP/IE29AIBK93115212345678/AIBKIE2D/Cloudhost Europe Ltd///REMI/U
STD//Hosting invoice 778899/
:62F:C260105EUR14810,05
:64:C260105EUR14810,05
:20:P260106000000001
:25:NL69INGB0123456789EUR
:28C:00005
:60F:C260105EUR14810,05
:61:2601060106D1000,00NTRFNONREF//2601060099
:86:/EREF/NOTPROVIDED//CNTP/NL91ABNA0417164300/ABNANL2A/J. de Vri
es///REMI/USTD//Freelance design week 1/
:62F:C260106EUR13810,05
:64:C260106EUR13810,05
:20:P260108000000001
:25:NL69INGB0123456789EUR
:28C:00007
:60F:C260107EUR13310,05
:61:2601080108C750,00NTRFNONREF//2601080011
:86:/EREF/INV-2026-0019//CNTP/NL44RABO0123456789/RABONL2U/Acme Tr
ading B.V.///REMI/USTD//Invoice INV-2026-0019/
:62F:C260108EUR14060,05
:64:C260108EUR14060,05

Audit result

DISCREPANCY 3 statements · 4 transactions

BALANCE_CONTINUITY_BREAK Statement 'P260106000000001' closes at 13810.05 on 2026-01-06 but the next statement 'P260108000000001' opens at 13310.05 - a statement may be missing.

P260105000000001
VERIFIED
Opening
12500.00
+ Credits
2500.00
− Debits
189.95
= Calculated
14810.05
Bank's closing
14810.05 EUR
P260106000000001
VERIFIED
Opening
14810.05
+ Credits
0.00
− Debits
1000.00
= Calculated
13810.05
Bank's closing
13810.05 EUR
P260108000000001
VERIFIED
Opening
13310.05
+ Credits
750.00
− Debits
0.00
= Calculated
14060.05
Bank's closing
14060.05 EUR

Transactions

DateAmountCounterpartyReferencePurpose
2026-01-05 2500.00 EUR Acme Trading B.V.NL44RABO0123456789 INV-2026-0012 Invoice INV-2026-0012 January hosting
2026-01-05 -189.95 EUR Cloudhost Europe LtdIE29AIBK93115212345678 CH-778899 Hosting invoice 778899
2026-01-06 -1000.00 EUR J. de VriesNL91ABNA0417164300 – Freelance design week 1
2026-01-08 750.00 EUR Acme Trading B.V.NL44RABO0123456789 INV-2026-0019 Invoice INV-2026-0019
JSON response output_format=json
{
  "api_version": "2.0",
  "detected_format": "MT940",
  "file_count": 1,
  "statement_count": 3,
  "transaction_count": 4,
  "overall_verdict": "DISCREPANCY",
  "verdict_counts": {
    "VERIFIED": 3
  },
  "warnings": [
    {
      "type": "BALANCE_CONTINUITY_BREAK",
      "account_id": "NL69INGB0123456789",
      "message": "Statement 'P260106000000001' closes at 13810.05 on 2026-01-06 but the next statement 'P260108000000001' opens at 13310.05 - a statement may be missing.",
      "statement_indexes": [
        1,
        2
      ]
    }
  ],
  "statements": [
    {
      "statement_index": 0,
      "source_file": "ing-style-mt940-gap.sta",
      "format": "MT940",
      "statement_reference": "P260105000000001",
      "sequence_number": "00004",
      "account_id": "NL69INGB0123456789",
      "account_servicer_bic": "",
      "currency": "EUR",
      "creation_datetime": "",
      "opening_balance": "12500.00",
      "opening_balance_date": "2026-01-02",
      "opening_balance_type": "60F",
      "closing_balance": "14810.05",
      "closing_balance_date": "2026-01-05",
      "closing_balance_type": "62F",
      "closing_available_balance": "14810.05",
      "closing_available_balance_date": "2026-01-05",
      "closing_available_balance_type": "64",
      "total_credits": "2500.00",
      "total_debits": "189.95",
      "credit_count": 1,
      "debit_count": 1,
      "pending_count": 0,
      "calculated_closing_balance": "14810.05",
      "discrepancy_amount": "0.00",
      "audit_method": "BALANCE_EQUATION",
      "audit_verdict": "VERIFIED",
      "audit_notes": [],
      "statement_information": "",
      "transaction_count": 2,
      "transactions": [
        {
          "transaction_hash": "61076fadce378a0e422aa63472d2ccf52e655092d532cd4587015ca2b9ec6bf2",
          "booking_date": "2026-01-05",
          "value_date": "2026-01-05",
          "direction": "CREDIT",
          "is_reversal": false,
          "status": "BOOKED",
          "amount": "2500.00",
          "signed_amount": "2500.00",
          "currency": "EUR",
          "bank_transaction_code": "NTRF",
          "bank_transaction_code_proprietary": "",
          "gvc": "",
          "booking_text": "",
          "bank_reference": "2601050012345678",
          "customer_reference": "NONREF",
          "end_to_end_id": "INV-2026-0012",
          "mandate_id": "",
          "creditor_id": "",
          "counterparty_name": "Acme Trading B.V.",
          "counterparty_iban": "NL44RABO0123456789",
          "counterparty_bic": "RABONL2U",
          "counterparty_account": "NL44RABO0123456789",
          "purpose": "Invoice INV-2026-0012 January hosting",
          "return_reason": "",
          "raw_information": "/EREF/INV-2026-0012//CNTP/NL44RABO0123456789/RABONL2U/Acme Tr\nading B.V./AMSTERDAM//REMI/USTD//Invoice INV-2026-0012 January ho\nsting/",
          "structured_fields": {
            "EREF": "INV-2026-0012",
            "CNTP": "NL44RABO0123456789/RABONL2U/Acme Trading B.V./AMSTERDAM",
            "REMI": "USTD//Invoice INV-2026-0012 January hosting",
            "CNTP_CITY": "AMSTERDAM"
          },
          "batch_details": []
        },
        {
          "transaction_hash": "4be118e9ddb9d0b155c8617855e416ff414b16a0cccfc478c0142c23fe5d6042",
          "booking_date": "2026-01-05",
          "value_date": "2026-01-05",
          "direction": "DEBIT",
          "is_reversal": false,
          "status": "BOOKED",
          "amount": "189.95",
          "signed_amount": "-189.95",
          "currency": "EUR",
          "bank_transaction_code": "NDDT",
          "bank_transaction_code_proprietary": "",
          "gvc": "",
          "booking_text": "",
          "bank_reference": "2601050012345679",
          "customer_reference": "EREF",
          "end_to_end_id": "CH-778899",
          "mandate_id": "MNDT-CH-01",
          "creditor_id": "NL12ZZZ123456780000",
          "counterparty_name": "Cloudhost Europe Ltd",
          "counterparty_iban": "IE29AIBK93115212345678",
          "counterparty_bic": "AIBKIE2D",
          "counterparty_account": "IE29AIBK93115212345678",
          "purpose": "Hosting invoice 778899",
          "return_reason": "",
          "raw_information": "/EREF/CH-778899//MARF/MNDT-CH-01//CSID/NL12ZZZ123456780000//C\nNTP/IE29AIBK93115212345678/AIBKIE2D/Cloudhost Europe Ltd///REMI/U\nSTD//Hosting invoice 778899/",
          "structured_fields": {
            "EREF": "CH-778899",
            "MARF": "MNDT-CH-01",
            "CSID": "NL12ZZZ123456780000",
            "CNTP": "IE29AIBK93115212345678/AIBKIE2D/Cloudhost Europe Ltd",
            "REMI": "USTD//Hosting invoice 778899"
          },
          "batch_details": []
        }
      ]
    },
    {
      "statement_index": 1,
      "source_file": "ing-style-mt940-gap.sta",
      "format": "MT940",
      "statement_reference": "P260106000000001",
      "sequence_number": "00005",
      "account_id": "NL69INGB0123456789",
      "account_servicer_bic": "",
      "currency": "EUR",
      "creation_datetime": "",
      "opening_balance": "14810.05",
      "opening_balance_date": "2026-01-05",
      "opening_balance_type": "60F",
      "closing_balance": "13810.05",
      "closing_balance_date": "2026-01-06",
      "closing_balance_type": "62F",
      "closing_available_balance": "13810.05",
      "closing_available_balance_date": "2026-01-06",
      "closing_available_balance_type": "64",
      "total_credits": "0.00",
      "total_debits": "1000.00",
      "credit_count": 0,
      "debit_count": 1,
      "pending_count": 0,
      "calculated_closing_balance": "13810.05",
      "discrepancy_amount": "0.00",
      "audit_method": "BALANCE_EQUATION",
      "audit_verdict": "VERIFIED",
      "audit_notes": [],
      "statement_information": "",
      "transaction_count": 1,
      "transactions": [
        {
          "transaction_hash": "3651b0d97028efbb0e73158862aef4e34ef19559602f27b013f53da98f9fb3e8",
          "booking_date": "2026-01-06",
          "value_date": "2026-01-06",
          "direction": "DEBIT",
          "is_reversal": false,
          "status": "BOOKED",
          "amount": "1000.00",
          "signed_amount": "-1000.00",
          "currency": "EUR",
          "bank_transaction_code": "NTRF",
          "bank_transaction_code_proprietary": "",
          "gvc": "",
          "booking_text": "",
          "bank_reference": "2601060099",
          "customer_reference": "NONREF",
          "end_to_end_id": "",
          "mandate_id": "",
          "creditor_id": "",
          "counterparty_name": "J. de Vries",
          "counterparty_iban": "NL91ABNA0417164300",
          "counterparty_bic": "ABNANL2A",
          "counterparty_account": "NL91ABNA0417164300",
          "purpose": "Freelance design week 1",
          "return_reason": "",
          "raw_information": "/EREF/NOTPROVIDED//CNTP/NL91ABNA0417164300/ABNANL2A/J. de Vri\nes///REMI/USTD//Freelance design week 1/",
          "structured_fields": {
            "EREF": "NOTPROVIDED",
            "CNTP": "NL91ABNA0417164300/ABNANL2A/J. de Vries",
            "REMI": "USTD//Freelance design week 1"
          },
          "batch_details": []
        }
      ]
    },
    {
      "statement_index": 2,
      "source_file": "ing-style-mt940-gap.sta",
      "format": "MT940",
      "statement_reference": "P260108000000001",
      "sequence_number": "00007",
      "account_id": "NL69INGB0123456789",
      "account_servicer_bic": "",
      "currency": "EUR",
      "creation_datetime": "",
      "opening_balance": "13310.05",
      "opening_balance_date": "2026-01-07",
      "opening_balance_type": "60F",
      "closing_balance": "14060.05",
      "closing_balance_date": "2026-01-08",
      "closing_balance_type": "62F",
      "closing_available_balance": "14060.05",
      "closing_available_balance_date": "2026-01-08",
      "closing_available_balance_type": "64",
      "total_credits": "750.00",
      "total_debits": "0.00",
      "credit_count": 1,
      "debit_count": 0,
      "pending_count": 0,
      "calculated_closing_balance": "14060.05",
      "discrepancy_amount": "0.00",
      "audit_method": "BALANCE_EQUATION",
      "audit_verdict": "VERIFIED",
      "audit_notes": [],
      "statement_information": "",
      "transaction_count": 1,
      "transactions": [
        {
          "transaction_hash": "8619fac5622b138f294db1d54472a9cd0a37a73046560879fb9a6e5d5424b47d",
          "booking_date": "2026-01-08",
          "value_date": "2026-01-08",
          "direction": "CREDIT",
          "is_reversal": false,
          "status": "BOOKED",
          "amount": "750.00",
          "signed_amount": "750.00",
          "currency": "EUR",
          "bank_transaction_code": "NTRF",
          "bank_transaction_code_proprietary": "",
          "gvc": "",
          "booking_text": "",
          "bank_reference": "2601080011",
          "customer_reference": "NONREF",
          "end_to_end_id": "INV-2026-0019",
          "mandate_id": "",
          "creditor_id": "",
          "counterparty_name": "Acme Trading B.V.",
          "counterparty_iban": "NL44RABO0123456789",
          "counterparty_bic": "RABONL2U",
          "counterparty_account": "NL44RABO0123456789",
          "purpose": "Invoice INV-2026-0019",
          "return_reason": "",
          "raw_information": "/EREF/INV-2026-0019//CNTP/NL44RABO0123456789/RABONL2U/Acme Tr\nading B.V.///REMI/USTD//Invoice INV-2026-0019/",
          "structured_fields": {
            "EREF": "INV-2026-0019",
            "CNTP": "NL44RABO0123456789/RABONL2U/Acme Trading B.V.",
            "REMI": "USTD//Invoice INV-2026-0019"
          },
          "batch_details": []
        }
      ]
    }
  ]
}
CSV export output_format=csv
source_file,statement_index,statement_reference,account_id,audit_verdict,transaction_hash,booking_date,value_date,direction,is_reversal,status,amount,signed_amount,currency,counterparty_name,counterparty_iban,counterparty_bic,counterparty_account,purpose,end_to_end_id,mandate_id,creditor_id,bank_transaction_code,bank_transaction_code_proprietary,gvc,booking_text,return_reason,bank_reference,customer_reference
ing-style-mt940-gap.sta,0,P260105000000001,NL69INGB0123456789,VERIFIED,61076fadce378a0e422aa63472d2ccf52e655092d532cd4587015ca2b9ec6bf2,2026-01-05,2026-01-05,CREDIT,false,BOOKED,2500.00,2500.00,EUR,Acme Trading B.V.,NL44RABO0123456789,RABONL2U,NL44RABO0123456789,Invoice INV-2026-0012 January hosting,INV-2026-0012,,,NTRF,,,,,2601050012345678,NONREF
ing-style-mt940-gap.sta,0,P260105000000001,NL69INGB0123456789,VERIFIED,4be118e9ddb9d0b155c8617855e416ff414b16a0cccfc478c0142c23fe5d6042,2026-01-05,2026-01-05,DEBIT,false,BOOKED,189.95,-189.95,EUR,Cloudhost Europe Ltd,IE29AIBK93115212345678,AIBKIE2D,IE29AIBK93115212345678,Hosting invoice 778899,CH-778899,MNDT-CH-01,NL12ZZZ123456780000,NDDT,,,,,2601050012345679,EREF
ing-style-mt940-gap.sta,1,P260106000000001,NL69INGB0123456789,VERIFIED,3651b0d97028efbb0e73158862aef4e34ef19559602f27b013f53da98f9fb3e8,2026-01-06,2026-01-06,DEBIT,false,BOOKED,1000.00,-1000.00,EUR,J. de Vries,NL91ABNA0417164300,ABNANL2A,NL91ABNA0417164300,Freelance design week 1,,,,NTRF,,,,,2601060099,NONREF
ing-style-mt940-gap.sta,2,P260108000000001,NL69INGB0123456789,VERIFIED,8619fac5622b138f294db1d54472a9cd0a37a73046560879fb9a6e5d5424b47d,2026-01-08,2026-01-08,CREDIT,false,BOOKED,750.00,750.00,EUR,Acme Trading B.V.,NL44RABO0123456789,RABONL2U,NL44RABO0123456789,Invoice INV-2026-0019,INV-2026-0019,,,NTRF,,,,,2601080011,NONREF

An XML statement with a batch booking, a returned payment and a pending entry.

camt053-v02.xml 5808 bytes · CAMT.053

Input file

<?xml version="1.0" encoding="UTF-8"?>
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:camt.053.001.02" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <BkToCstmrStmt>
    <GrpHdr>
      <MsgId>CAMT053-20260228-0001</MsgId>
      <CreDtTm>2026-02-28T22:15:00</CreDtTm>
    </GrpHdr>
    <Stmt>
      <Id>2026-02-28-00059</Id>
      <ElctrncSeqNb>59</ElctrncSeqNb>
      <CreDtTm>2026-02-28T22:15:00</CreDtTm>
      <Acct>
        <Id><IBAN>DE89370400440532013000</IBAN></Id>
        <Ccy>EUR</Ccy>
        <Svcr><FinInstnId><BIC>COBADEFFXXX</BIC></FinInstnId></Svcr>
      </Acct>
      <Bal>
        <Tp><CdOrPrtry><Cd>PRCD</Cd></CdOrPrtry></Tp>
        <Amt Ccy="EUR">15000.00</Amt>
        <CdtDbtInd>CRDT</CdtDbtInd>
        <Dt><Dt>2026-02-27</Dt></Dt>
      </Bal>
      <Bal>
        <Tp><CdOrPrtry><Cd>CLBD</Cd></CdOrPrtry></Tp>
        <Amt Ccy="EUR">17419.60</Amt>
        <CdtDbtInd>CRDT</CdtDbtInd>
        <Dt><Dt>2026-02-28</Dt></Dt>
      </Bal>
      <Bal>
        <Tp><CdOrPrtry><Cd>CLAV</Cd></CdOrPrtry></Tp>
        <Amt Ccy="EUR">17200.00</Amt>
        <CdtDbtInd>CRDT</CdtDbtInd>
        <Dt><Dt>2026-02-28</Dt></Dt>
      </Bal>
      <Ntry>
        <Amt Ccy="EUR">4200.00</Amt>
        <CdtDbtInd>CRDT</CdtDbtInd>
        <Sts>BOOK</Sts>
        <BookgDt><Dt>2026-02-28</Dt></BookgDt>
        <ValDt><Dt>2026-02-28</Dt></ValDt>
        <AcctSvcrRef>2026022800001</AcctSvcrRef>
        <BkTxCd>
          <Domn><Cd>PMNT</Cd><Fmly><Cd>RCDT</Cd><SubFmlyCd>ESCT</SubFmlyCd></Fmly></Domn>
          <Prtry><Cd>NTRF+166+931</Cd><Issr>DK</Issr></Prtry>
        </BkTxCd>
        <NtryDtls>
          <TxDtls>
            <Refs><EndToEndId>RE-2026-0101</EndToEndId></Refs>
            <AmtDtls><TxAmt><Amt Ccy="EUR">4200.00</Amt></TxAmt></AmtDtls>
            <RltdPties>
              <Dbtr><Nm>Schneider Logistik AG</Nm></Dbtr>
              <DbtrAcct><Id><IBAN>DE44500105175407324931</IBAN></Id></DbtrAcct>
            </RltdPties>
            <RltdAgts><DbtrAgt><FinInstnId><BIC>INGDDEFFXXX</BIC></FinInstnId></DbtrAgt></RltdAgts>
            <RmtInf><Ustrd>EREF+RE-2026-0101 SVWZ+Rechnung 2026-0101</Ustrd></RmtInf>
          </TxDtls>
        </NtryDtls>
        <AddtlNtryInf>GUTSCHR. UEBERWEISUNG</AddtlNtryInf>
      </Ntry>
      <Ntry>
        <Amt Ccy="EUR">1530.40</Amt>
        <CdtDbtInd>DBIT</CdtDbtInd>
        <Sts>BOOK</Sts>
        <BookgDt><Dt>2026-02-28</Dt></BookgDt>
        <ValDt><Dt>2026-02-28</Dt></ValDt>
        <AcctSvcrRef>2026022800002</AcctSvcrRef>
        <BkTxCd><Domn><Cd>PMNT</Cd><Fmly><Cd>ICDT</Cd><SubFmlyCd>ESCT</SubFmlyCd></Fmly></Domn></BkTxCd>
        <NtryDtls>
          <Btch><NbOfTxs>2</NbOfTxs></Btch>
          <TxDtls>
            <Refs><EndToEndId>PAY-RUN-7-A</EndToEndId></Refs>
            <AmtDtls><TxAmt><Amt Ccy="EUR">1000.00</Amt></TxAmt></AmtDtls>
            <RltdPties>
              <Cdtr><Nm>Lieferant A GmbH</Nm></Cdtr>
              <CdtrAcct><Id><IBAN>DE65100700000123456789</IBAN></Id></CdtrAcct>
            </RltdPties>
            <RmtInf><Ustrd>Rechnung A-55</Ustrd></RmtInf>
          </TxDtls>
          <TxDtls>
            <Refs><EndToEndId>PAY-RUN-7-B</EndToEndId></Refs>
            <AmtDtls><TxAmt><Amt Ccy="EUR">530.40</Amt></TxAmt></AmtDtls>
            <RltdPties>
              <Cdtr><Nm>Lieferant B KG</Nm></Cdtr>
              <CdtrAcct><Id><IBAN>DE12500105170648489890</IBAN></Id></CdtrAcct>
            </RltdPties>
            <RmtInf><Ustrd>Rechnung B-981</Ustrd></RmtInf>
          </TxDtls>
        </NtryDtls>
        <AddtlNtryInf>SAMMLER-UEBERWEISUNG</AddtlNtryInf>
      </Ntry>
      <Ntry>
        <Amt Ccy="EUR">250.00</Amt>
        <CdtDbtInd>DBIT</CdtDbtInd>
        <RvslInd>true</RvslInd>
        <Sts>BOOK</Sts>
        <BookgDt><Dt>2026-02-28</Dt></BookgDt>
        <ValDt><Dt>2026-02-26</Dt></ValDt>
        <BkTxCd><Domn><Cd>PMNT</Cd><Fmly><Cd>RCDT</Cd><SubFmlyCd>RRTN</SubFmlyCd></Fmly></Domn></BkTxCd>
        <NtryDtls>
          <TxDtls>
            <Refs><EndToEndId>RE-2026-0077</EndToEndId></Refs>
            <RltdPties>
              <Dbtr><Nm>Kunde Falsch GmbH</Nm></Dbtr>
              <DbtrAcct><Id><IBAN>NL91ABNA0417164300</IBAN></Id></DbtrAcct>
            </RltdPties>
            <RmtInf><Ustrd>Rueckueberweisung RE-2026-0077</Ustrd></RmtInf>
            <RtrInf><Rsn><Cd>AC04</Cd></Rsn></RtrInf>
          </TxDtls>
        </NtryDtls>
      </Ntry>
      <Ntry>
        <Amt Ccy="EUR">999.00</Amt>
        <CdtDbtInd>CRDT</CdtDbtInd>
        <Sts>PDNG</Sts>
        <BookgDt><Dt>2026-03-01</Dt></BookgDt>
        <ValDt><Dt>2026-03-01</Dt></ValDt>
        <BkTxCd><Domn><Cd>PMNT</Cd><Fmly><Cd>RCDT</Cd><SubFmlyCd>ESCT</SubFmlyCd></Fmly></Domn></BkTxCd>
      </Ntry>
    </Stmt>
    <Stmt>
      <Id>2026-02-28-USD-00012</Id>
      <Acct>
        <Id><Othr><Id>0123456789-USD</Id></Othr></Id>
        <Ccy>USD</Ccy>
      </Acct>
      <Bal>
        <Tp><CdOrPrtry><Cd>OPBD</Cd></CdOrPrtry></Tp>
        <Amt Ccy="USD">1000.00</Amt>
        <CdtDbtInd>CRDT</CdtDbtInd>
        <Dt><Dt>2026-02-28</Dt></Dt>
      </Bal>
      <Bal>
        <Tp><CdOrPrtry><Cd>CLBD</Cd></CdOrPrtry></Tp>
        <Amt Ccy="USD">1250.25</Amt>
        <CdtDbtInd>CRDT</CdtDbtInd>
        <Dt><Dt>2026-02-28</Dt></Dt>
      </Bal>
      <Ntry>
        <Amt Ccy="USD">250.25</Amt>
        <CdtDbtInd>CRDT</CdtDbtInd>

Audit result

VERIFIED 2 statements · 5 transactions

2026-02-28-00059
VERIFIED
Opening
15000.00
+ Credits
4200.00
− Debits
1780.40
= Calculated
17419.60
Bank's closing
17419.60 EUR
Note
1 pending/informational entries are listed but excluded from the balance check.
2026-02-28-USD-00012
VERIFIED
Opening
1000.00
+ Credits
250.25
− Debits
0.00
= Calculated
1250.25
Bank's closing
1250.25 USD

Transactions

DateAmountCounterpartyReferencePurpose
2026-02-28 4200.00 EUR Schneider Logistik AGDE44500105175407324931 RE-2026-0101 Rechnung 2026-0101
2026-02-28 -1530.40 EUR – – SAMMLER-UEBERWEISUNG
2026-02-28 -250.00 EURreversal Kunde Falsch GmbHNL91ABNA0417164300 RE-2026-0077 Rueckueberweisung RE-2026-0077
2026-03-01 999.00 EURpending – – –
2026-02-28 250.25 USD US Client Inc – PO 4410
JSON response output_format=json
{
  "api_version": "2.0",
  "detected_format": "CAMT.053",
  "file_count": 1,
  "statement_count": 2,
  "transaction_count": 5,
  "overall_verdict": "VERIFIED",
  "verdict_counts": {
    "VERIFIED": 2
  },
  "warnings": [],
  "statements": [
    {
      "statement_index": 0,
      "source_file": "camt053-v02.xml",
      "format": "CAMT.053",
      "statement_reference": "2026-02-28-00059",
      "sequence_number": "59",
      "account_id": "DE89370400440532013000",
      "account_servicer_bic": "COBADEFFXXX",
      "currency": "EUR",
      "creation_datetime": "2026-02-28T22:15:00",
      "opening_balance": "15000.00",
      "opening_balance_date": "2026-02-27",
      "opening_balance_type": "PRCD",
      "closing_balance": "17419.60",
      "closing_balance_date": "2026-02-28",
      "closing_balance_type": "CLBD",
      "closing_available_balance": "17200.00",
      "closing_available_balance_date": "2026-02-28",
      "closing_available_balance_type": "CLAV",
      "total_credits": "4200.00",
      "total_debits": "1780.40",
      "credit_count": 1,
      "debit_count": 2,
      "pending_count": 1,
      "calculated_closing_balance": "17419.60",
      "discrepancy_amount": "0.00",
      "audit_method": "BALANCE_EQUATION",
      "audit_verdict": "VERIFIED",
      "audit_notes": [
        "1 pending/informational entries are listed but excluded from the balance check."
      ],
      "statement_information": "",
      "transaction_count": 4,
      "transactions": [
        {
          "transaction_hash": "edde312f91bf745245338ff7899a850cc9e85d3eb29a02e5f745bdc3cb8247f2",
          "booking_date": "2026-02-28",
          "value_date": "2026-02-28",
          "direction": "CREDIT",
          "is_reversal": false,
          "status": "BOOKED",
          "amount": "4200.00",
          "signed_amount": "4200.00",
          "currency": "EUR",
          "bank_transaction_code": "PMNT/RCDT/ESCT",
          "bank_transaction_code_proprietary": "NTRF+166+931",
          "gvc": "166",
          "booking_text": "GUTSCHR. UEBERWEISUNG",
          "bank_reference": "2026022800001",
          "customer_reference": "",
          "end_to_end_id": "RE-2026-0101",
          "mandate_id": "",
          "creditor_id": "",
          "counterparty_name": "Schneider Logistik AG",
          "counterparty_iban": "DE44500105175407324931",
          "counterparty_bic": "INGDDEFFXXX",
          "counterparty_account": "",
          "purpose": "Rechnung 2026-0101",
          "return_reason": "",
          "raw_information": "GUTSCHR. UEBERWEISUNG",
          "structured_fields": {
            "EREF": "RE-2026-0101",
            "SVWZ": "Rechnung 2026-0101"
          },
          "batch_details": []
        },
        {
          "transaction_hash": "9fbd582ad36eb1115be52ae3004342f27ecd4f842b97fead3033e8ab247ba909",
          "booking_date": "2026-02-28",
          "value_date": "2026-02-28",
          "direction": "DEBIT",
          "is_reversal": false,
          "status": "BOOKED",
          "amount": "1530.40",
          "signed_amount": "-1530.40",
          "currency": "EUR",
          "bank_transaction_code": "PMNT/ICDT/ESCT",
          "bank_transaction_code_proprietary": "",
          "gvc": "",
          "booking_text": "SAMMLER-UEBERWEISUNG",
          "bank_reference": "2026022800002",
          "customer_reference": "",
          "end_to_end_id": "",
          "mandate_id": "",
          "creditor_id": "",
          "counterparty_name": "",
          "counterparty_iban": "",
          "counterparty_bic": "",
          "counterparty_account": "",
          "purpose": "SAMMLER-UEBERWEISUNG",
          "return_reason": "",
          "raw_information": "SAMMLER-UEBERWEISUNG",
          "structured_fields": {},
          "batch_details": [
            {
              "amount": "1000.00",
              "end_to_end_id": "PAY-RUN-7-A",
              "counterparty_name": "Lieferant A GmbH",
              "counterparty_iban": "DE65100700000123456789",
              "purpose": "Rechnung A-55"
            },
            {
              "amount": "530.40",
              "end_to_end_id": "PAY-RUN-7-B",
              "counterparty_name": "Lieferant B KG",
              "counterparty_iban": "DE12500105170648489890",
              "purpose": "Rechnung B-981"
            }
          ]
        },
        {
          "transaction_hash": "d93b3cfacdcf528df0e4ebcd6f3c9d794ec5f03c0805d23affbcf81b3fd0a229",
          "booking_date": "2026-02-28",
          "value_date": "2026-02-26",
          "direction": "DEBIT",
          "is_reversal": true,
          "status": "BOOKED",
          "amount": "250.00",
          "signed_amount": "-250.00",
          "currency": "EUR",
          "bank_transaction_code": "PMNT/RCDT/RRTN",
          "bank_transaction_code_proprietary": "",
          "gvc": "",
          "booking_text": "",
          "bank_reference": "",
          "customer_reference": "",
          "end_to_end_id": "RE-2026-0077",
          "mandate_id": "",
          "creditor_id": "",
          "counterparty_name": "Kunde Falsch GmbH",
          "counterparty_iban": "NL91ABNA0417164300",
          "counterparty_bic": "",
          "counterparty_account": "",
          "purpose": "Rueckueberweisung RE-2026-0077",
          "return_reason": "AC04",
          "raw_information": "",
          "structured_fields": {},
          "batch_details": []
        },
        {
          "transaction_hash": "7fa1199ee5bb81530ceba380e14bbb886cf8ef3ae2e86001648ec2b9afecb0c6",
          "booking_date": "2026-03-01",
          "value_date": "2026-03-01",
          "direction": "CREDIT",
          "is_reversal": false,
          "status": "PENDING",
          "amount": "999.00",
          "signed_amount": "999.00",
          "currency": "EUR",
          "bank_transaction_code": "PMNT/RCDT/ESCT",
          "bank_transaction_code_proprietary": "",
          "gvc": "",
          "booking_text": "",
          "bank_reference": "",
          "customer_reference": "",
          "end_to_end_id": "",
          "mandate_id": "",
          "creditor_id": "",
          "counterparty_name": "",
          "counterparty_iban": "",
          "counterparty_bic": "",
          "counterparty_account": "",
          "purpose": "",
          "return_reason": "",
          "raw_information": "",
          "structured_fields": {},
          "batch_details": []
        }
      ]
    },
    {
      "statement_index": 1,
      "source_file": "camt053-v02.xml",
      "format": "CAMT.053",
      "statement_reference": "2026-02-28-USD-00012",
      "sequence_number": "",
      "account_id": "0123456789-USD",
      "account_servicer_bic": "",
      "currency": "USD",
      "creation_datetime": "",
      "opening_balance": "1000.00",
      "opening_balance_date": "2026-02-28",
      "opening_balance_type": "OPBD",
      "closing_balance": "1250.25",
      "closing_balance_date": "2026-02-28",
      "closing_balance_type": "CLBD",
      "closing_available_balance": null,
      "closing_available_balance_date": null,
      "closing_available_balance_type": null,
      "total_credits": "250.25",
      "total_debits": "0.00",
      "credit_count": 1,
      "debit_count": 0,
      "pending_count": 0,
      "calculated_closing_balance": "1250.25",
      "discrepancy_amount": "0.00",
      "audit_method": "BALANCE_EQUATION",
      "audit_verdict": "VERIFIED",
      "audit_notes": [],
      "statement_information": "",
      "transaction_count": 1,
      "transactions": [
        {
          "transaction_hash": "a056ed22ce64de42f29cb6aa16110185b4141003a2876335ff4954224ebdc7e4",
          "booking_date": "2026-02-28",
          "value_date": "2026-02-28",
          "direction": "CREDIT",
          "is_reversal": false,
          "status": "BOOKED",
          "amount": "250.25",
          "signed_amount": "250.25",
          "currency": "USD",
          "bank_transaction_code": "",
          "bank_transaction_code_proprietary": "NTRF+166+000",
          "gvc": "166",
          "booking_text": "",
          "bank_reference": "",
          "customer_reference": "",
          "end_to_end_id": "",
          "mandate_id": "",
          "creditor_id": "",
          "counterparty_name": "US Client Inc",
          "counterparty_iban": "",
          "counterparty_bic": "",
          "counterparty_account": "",
          "purpose": "PO 4410",
          "return_reason": "",
          "raw_information": "",
          "structured_fields": {},
          "batch_details": []
        }
      ]
    }
  ]
}
CSV export output_format=csv
source_file,statement_index,statement_reference,account_id,audit_verdict,transaction_hash,booking_date,value_date,direction,is_reversal,status,amount,signed_amount,currency,counterparty_name,counterparty_iban,counterparty_bic,counterparty_account,purpose,end_to_end_id,mandate_id,creditor_id,bank_transaction_code,bank_transaction_code_proprietary,gvc,booking_text,return_reason,bank_reference,customer_reference
camt053-v02.xml,0,2026-02-28-00059,DE89370400440532013000,VERIFIED,edde312f91bf745245338ff7899a850cc9e85d3eb29a02e5f745bdc3cb8247f2,2026-02-28,2026-02-28,CREDIT,false,BOOKED,4200.00,4200.00,EUR,Schneider Logistik AG,DE44500105175407324931,INGDDEFFXXX,,Rechnung 2026-0101,RE-2026-0101,,,PMNT/RCDT/ESCT,NTRF+166+931,166,GUTSCHR. UEBERWEISUNG,,2026022800001,
camt053-v02.xml,0,2026-02-28-00059,DE89370400440532013000,VERIFIED,9fbd582ad36eb1115be52ae3004342f27ecd4f842b97fead3033e8ab247ba909,2026-02-28,2026-02-28,DEBIT,false,BOOKED,1530.40,-1530.40,EUR,,,,,SAMMLER-UEBERWEISUNG,,,,PMNT/ICDT/ESCT,,,SAMMLER-UEBERWEISUNG,,2026022800002,
camt053-v02.xml,0,2026-02-28-00059,DE89370400440532013000,VERIFIED,d93b3cfacdcf528df0e4ebcd6f3c9d794ec5f03c0805d23affbcf81b3fd0a229,2026-02-28,2026-02-26,DEBIT,true,BOOKED,250.00,-250.00,EUR,Kunde Falsch GmbH,NL91ABNA0417164300,,,Rueckueberweisung RE-2026-0077,RE-2026-0077,,,PMNT/RCDT/RRTN,,,,AC04,,
camt053-v02.xml,0,2026-02-28-00059,DE89370400440532013000,VERIFIED,7fa1199ee5bb81530ceba380e14bbb886cf8ef3ae2e86001648ec2b9afecb0c6,2026-03-01,2026-03-01,CREDIT,false,PENDING,999.00,999.00,EUR,,,,,,,,,PMNT/RCDT/ESCT,,,,,,
camt053-v02.xml,1,2026-02-28-USD-00012,0123456789-USD,VERIFIED,a056ed22ce64de42f29cb6aa16110185b4141003a2876335ff4954224ebdc7e4,2026-02-28,2026-02-28,CREDIT,false,BOOKED,250.25,250.25,USD,US Client Inc,,,,PO 4410,,,,,NTRF+166+000,166,,,,

Two groups, three accounts in USD and JPY: 88 continuation lines, value-dated funds, and an account where the bank's summary totals cover more than the listed detail.

bai2-two-groups.bai2 960 bytes · BAI2

Input file

01,021000021,CUST001,261019,0615,7,80,,2/
02,CUST001,021000021,1,261018,2400,USD,2/
03,123456789,USD,010,100000000,,,015,125376544,,,045,125000000,,/
88,100,26500000,2,,400,1123456,2,/
16,165,1500000,1,DD1620,INV-2026-104, ACME SUPPLY PAYROLL REFUND
16,195,25000000,V,261019,0900,FW00021,PO-7781/
88,WIRE FROM GLOBEX CORP REF 7781 INVOICE 2026-0042
88,PART 2 OF TEXT
16,475,123456,,BR0042,1001,/
16,451,1000000,0,ACH0099,,UTILITY CO DIRECT DEBIT
16,890,,,,,BALANCE CERTIFICATE ISSUED
49,405623456,10/
03,987654321,JPY,010,5000000,,,015,4900000,,,400,100000,1,/
16,495,100000,0,FT7788,,SUPPLIER PAYMENT JP/
49,10100000,3/
98,415723456,2,15/
02,CUST001,021000021,4,261019,1200,,3/
03,555000111,,010,-250000,,,015,-150000,,,100,600000,3,,400,500000,2,/
16,142,200000,S,100000,50000,50000,ACH1,,PAYROLL RETURN
16,704,75000,,LN1,,LOAN SUBLEDGER ADJUSTMENT
16,960,300000,D,2,0,150000,2,150000,BNK960,,CUSTOM BANK FEE
49,1275000,5/
98,1275000,1,7/
99,416998456,2,24/

Audit result

VERIFIED 3 statements · 8 transactions

UNKNOWN_TYPE_CODE Line 20 (16): type code 704 is not a credit or debit code; the amount 750.00 is listed but left out of the balance check.

UNKNOWN_TYPE_CODE Line 21 (16): type code 960 is not a uniform BAI2 code; treated as a debit by its range.

DETAIL_INCOMPLETE Account 555000111: the bank's total credits are 6000.00, the detail records add up to 2000.00 (difference 4000.00). BAI2 allows banks to send detail for only some items.

DETAIL_INCOMPLETE Account 555000111: the bank's total debits are 5000.00, the detail records add up to 3000.00 (difference 2000.00). BAI2 allows banks to send detail for only some items.

GROUP_STATUS Group 2 has status 'Test only'.

7/1/1
VERIFIED
Opening
1000000.00
+ Credits
265000.00
− Debits
11234.56
= Calculated
1253765.44
Bank's closing
1253765.44 USD
7/1/2
VERIFIED
Opening
5000000
+ Credits
0
− Debits
100000
= Calculated
4900000
Bank's closing
4900000 JPY
7/2/1
VERIFIED
Opening
-2500.00
+ Credits
2000.00
− Debits
3000.00
= Calculated
-1500.00
Bank's closing
-1500.00 USD
Note
The detail lines cover only part of the account, so the balances are checked against the bank's own total credits and debits.
Note
1 pending/informational entries are listed but excluded from the balance check.

Transactions

DateAmountCounterpartyReferencePurpose
2026-10-18 15000.00 USD – – ACME SUPPLY PAYROLL REFUND
2026-10-18 250000.00 USD – – WIRE FROM GLOBEX CORP REF 7781 INVOICE 2026-0042 PART 2 OF TEXT
2026-10-18 -1234.56 USD – – –
2026-10-18 -10000.00 USD – – UTILITY CO DIRECT DEBIT
2026-10-18 -100000 JPY – – SUPPLIER PAYMENT JP
2026-10-19 2000.00 USD – – PAYROLL RETURN
2026-10-19 750.00 USDinfo – – LOAN SUBLEDGER ADJUSTMENT
2026-10-19 -3000.00 USD – – CUSTOM BANK FEE
JSON response output_format=json
{
  "api_version": "2.0",
  "detected_format": "BAI2",
  "file_count": 1,
  "statement_count": 3,
  "transaction_count": 8,
  "overall_verdict": "VERIFIED",
  "verdict_counts": {
    "VERIFIED": 3
  },
  "warnings": [
    {
      "type": "UNKNOWN_TYPE_CODE",
      "account_id": "555000111",
      "message": "Line 20 (16): type code 704 is not a credit or debit code; the amount 750.00 is listed but left out of the balance check.",
      "statement_indexes": [
        2
      ]
    },
    {
      "type": "UNKNOWN_TYPE_CODE",
      "account_id": "555000111",
      "message": "Line 21 (16): type code 960 is not a uniform BAI2 code; treated as a debit by its range.",
      "statement_indexes": [
        2
      ]
    },
    {
      "type": "DETAIL_INCOMPLETE",
      "account_id": "555000111",
      "message": "Account 555000111: the bank's total credits are 6000.00, the detail records add up to 2000.00 (difference 4000.00). BAI2 allows banks to send detail for only some items.",
      "statement_indexes": [
        2
      ]
    },
    {
      "type": "DETAIL_INCOMPLETE",
      "account_id": "555000111",
      "message": "Account 555000111: the bank's total debits are 5000.00, the detail records add up to 3000.00 (difference 2000.00). BAI2 allows banks to send detail for only some items.",
      "statement_indexes": [
        2
      ]
    },
    {
      "type": "GROUP_STATUS",
      "account_id": "555000111",
      "message": "Group 2 has status 'Test only'.",
      "statement_indexes": [
        2
      ]
    }
  ],
  "statements": [
    {
      "statement_index": 0,
      "source_file": "bai2-two-groups.bai2",
      "format": "BAI2",
      "statement_reference": "7/1/1",
      "sequence_number": "7",
      "account_id": "123456789",
      "account_servicer_bic": "",
      "currency": "USD",
      "creation_datetime": "2026-10-19T06:15",
      "opening_balance": "1000000.00",
      "opening_balance_date": "2026-10-18",
      "opening_balance_type": "010",
      "closing_balance": "1253765.44",
      "closing_balance_date": "2026-10-18",
      "closing_balance_type": "015",
      "closing_available_balance": "1250000.00",
      "closing_available_balance_date": "2026-10-18",
      "closing_available_balance_type": "045",
      "total_credits": "265000.00",
      "total_debits": "11234.56",
      "credit_count": 2,
      "debit_count": 2,
      "pending_count": 0,
      "calculated_closing_balance": "1253765.44",
      "discrepancy_amount": "0.00",
      "audit_method": "BALANCE_EQUATION",
      "audit_verdict": "VERIFIED",
      "audit_notes": [],
      "statement_information": "Originator 021000021; Group status: Update; Final previous-day; BALANCE CERTIFICATE ISSUED",
      "transaction_count": 4,
      "transactions": [
        {
          "transaction_hash": "fd7f1e658502ee61ad962ae2bf350c3c97ac60c62e9090fb8e24cc968f3352cd",
          "booking_date": "2026-10-18",
          "value_date": "2026-10-18",
          "direction": "CREDIT",
          "is_reversal": false,
          "status": "BOOKED",
          "amount": "15000.00",
          "signed_amount": "15000.00",
          "currency": "USD",
          "bank_transaction_code": "165",
          "bank_transaction_code_proprietary": "",
          "gvc": "",
          "booking_text": "Preauthorized ACH Credit",
          "bank_reference": "DD1620",
          "customer_reference": "INV-2026-104",
          "end_to_end_id": "",
          "mandate_id": "",
          "creditor_id": "",
          "counterparty_name": "",
          "counterparty_iban": "",
          "counterparty_bic": "",
          "counterparty_account": "",
          "purpose": "ACME SUPPLY PAYROLL REFUND",
          "return_reason": "",
          "raw_information": "",
          "structured_fields": {
            "FUNDS_TYPE": "1"
          },
          "batch_details": []
        },
        {
          "transaction_hash": "b8874591363b67e5b48223efbec8ecbac26d5115843e0d89c512ade0f1b00c57",
          "booking_date": "2026-10-18",
          "value_date": "2026-10-19",
          "direction": "CREDIT",
          "is_reversal": false,
          "status": "BOOKED",
          "amount": "250000.00",
          "signed_amount": "250000.00",
          "currency": "USD",
          "bank_transaction_code": "195",
          "bank_transaction_code_proprietary": "",
          "gvc": "",
          "booking_text": "Incoming Money Transfer",
          "bank_reference": "FW00021",
          "customer_reference": "PO-7781",
          "end_to_end_id": "",
          "mandate_id": "",
          "creditor_id": "",
          "counterparty_name": "",
          "counterparty_iban": "",
          "counterparty_bic": "",
          "counterparty_account": "",
          "purpose": "WIRE FROM GLOBEX CORP REF 7781 INVOICE 2026-0042 PART 2 OF TEXT",
          "return_reason": "",
          "raw_information": "",
          "structured_fields": {
            "FUNDS_TYPE": "V",
            "VALUE_TIME": "0900"
          },
          "batch_details": []
        },
        {
          "transaction_hash": "4d58bd2a3fbf4b5692f94fdb7dc8f3653e4d8eb4c5812a2445742b9fb246a5e6",
          "booking_date": "2026-10-18",
          "value_date": "2026-10-18",
          "direction": "DEBIT",
          "is_reversal": false,
          "status": "BOOKED",
          "amount": "1234.56",
          "signed_amount": "-1234.56",
          "currency": "USD",
          "bank_transaction_code": "475",
          "bank_transaction_code_proprietary": "",
          "gvc": "",
          "booking_text": "Check Paid",
          "bank_reference": "BR0042",
          "customer_reference": "1001",
          "end_to_end_id": "",
          "mandate_id": "",
          "creditor_id": "",
          "counterparty_name": "",
          "counterparty_iban": "",
          "counterparty_bic": "",
          "counterparty_account": "",
          "purpose": "",
          "return_reason": "",
          "raw_information": "",
          "structured_fields": {
            "CHECK_NUMBER": "1001"
          },
          "batch_details": []
        },
        {
          "transaction_hash": "4fb932b03d2b119a010a6b927a79192eaab6a72933481dc6d96bf6534c36cf5e",
          "booking_date": "2026-10-18",
          "value_date": "2026-10-18",
          "direction": "DEBIT",
          "is_reversal": false,
          "status": "BOOKED",
          "amount": "10000.00",
          "signed_amount": "-10000.00",
          "currency": "USD",
          "bank_transaction_code": "451",
          "bank_transaction_code_proprietary": "",
          "gvc": "",
          "booking_text": "ACH Debit Received",
          "bank_reference": "ACH0099",
          "customer_reference": "",
          "end_to_end_id": "",
          "mandate_id": "",
          "creditor_id": "",
          "counterparty_name": "",
          "counterparty_iban": "",
          "counterparty_bic": "",
          "counterparty_account": "",
          "purpose": "UTILITY CO DIRECT DEBIT",
          "return_reason": "",
          "raw_information": "",
          "structured_fields": {
            "FUNDS_TYPE": "0"
          },
          "batch_details": []
        }
      ]
    },
    {
      "statement_index": 1,
      "source_file": "bai2-two-groups.bai2",
      "format": "BAI2",
      "statement_reference": "7/1/2",
      "sequence_number": "7",
      "account_id": "987654321",
      "account_servicer_bic": "",
      "currency": "JPY",
      "creation_datetime": "2026-10-19T06:15",
      "opening_balance": "5000000",
      "opening_balance_date": "2026-10-18",
      "opening_balance_type": "010",
      "closing_balance": "4900000",
      "closing_balance_date": "2026-10-18",
      "closing_balance_type": "015",
      "closing_available_balance": null,
      "closing_available_balance_date": null,
      "closing_available_balance_type": null,
      "total_credits": "0",
      "total_debits": "100000",
      "credit_count": 0,
      "debit_count": 1,
      "pending_count": 0,
      "calculated_closing_balance": "4900000",
      "discrepancy_amount": "0",
      "audit_method": "BALANCE_EQUATION",
      "audit_verdict": "VERIFIED",
      "audit_notes": [],
      "statement_information": "Originator 021000021; Group status: Update; Final previous-day",
      "transaction_count": 1,
      "transactions": [
        {
          "transaction_hash": "2bc8fdbacc80425a58b839c5040e79f7c7d2ecd29699abe4716340d1811f916e",
          "booking_date": "2026-10-18",
          "value_date": "2026-10-18",
          "direction": "DEBIT",
          "is_reversal": false,
          "status": "BOOKED",
          "amount": "100000",
          "signed_amount": "-100000",
          "currency": "JPY",
          "bank_transaction_code": "495",
          "bank_transaction_code_proprietary": "",
          "gvc": "",
          "booking_text": "Outgoing Money Transfer",
          "bank_reference": "FT7788",
          "customer_reference": "",
          "end_to_end_id": "",
          "mandate_id": "",
          "creditor_id": "",
          "counterparty_name": "",
          "counterparty_iban": "",
          "counterparty_bic": "",
          "counterparty_account": "",
          "purpose": "SUPPLIER PAYMENT JP",
          "return_reason": "",
          "raw_information": "",
          "structured_fields": {
            "FUNDS_TYPE": "0"
          },
          "batch_details": []
        }
      ]
    },
    {
      "statement_index": 2,
      "source_file": "bai2-two-groups.bai2",
      "format": "BAI2",
      "statement_reference": "7/2/1",
      "sequence_number": "7",
      "account_id": "555000111",
      "account_servicer_bic": "",
      "currency": "USD",
      "creation_datetime": "2026-10-19T06:15",
      "opening_balance": "-2500.00",
      "opening_balance_date": "2026-10-19",
      "opening_balance_type": "010",
      "closing_balance": "-1500.00",
      "closing_balance_date": "2026-10-19",
      "closing_balance_type": "015",
      "closing_available_balance": null,
      "closing_available_balance_date": null,
      "closing_available_balance_type": null,
      "total_credits": "2000.00",
      "total_debits": "3000.00",
      "credit_count": 1,
      "debit_count": 1,
      "pending_count": 1,
      "calculated_closing_balance": "-1500.00",
      "discrepancy_amount": "0.00",
      "audit_method": "SUMMARY_TOTALS",
      "audit_verdict": "VERIFIED",
      "audit_notes": [
        "1 pending/informational entries are listed but excluded from the balance check."
      ],
      "statement_information": "Originator 021000021; Group status: Test only; Interim same-day",
      "transaction_count": 3,
      "transactions": [
        {
          "transaction_hash": "550457beb05524541070af41f66f3121216efa786019a756af6a87639900d8b6",
          "booking_date": "2026-10-19",
          "value_date": "2026-10-19",
          "direction": "CREDIT",
          "is_reversal": false,
          "status": "BOOKED",
          "amount": "2000.00",
          "signed_amount": "2000.00",
          "currency": "USD",
          "bank_transaction_code": "142",
          "bank_transaction_code_proprietary": "",
          "gvc": "",
          "booking_text": "ACH Credit Received",
          "bank_reference": "ACH1",
          "customer_reference": "",
          "end_to_end_id": "",
          "mandate_id": "",
          "creditor_id": "",
          "counterparty_name": "",
          "counterparty_iban": "",
          "counterparty_bic": "",
          "counterparty_account": "",
          "purpose": "PAYROLL RETURN",
          "return_reason": "",
          "raw_information": "",
          "structured_fields": {
            "FUNDS_TYPE": "S"
          },
          "batch_details": []
        },
        {
          "transaction_hash": "1e6abea31248ac829c2c2649253741ba7f525cb9bbcde893cf89635650ebccf9",
          "booking_date": "2026-10-19",
          "value_date": "2026-10-19",
          "direction": "CREDIT",
          "is_reversal": false,
          "status": "INFO",
          "amount": "750.00",
          "signed_amount": "750.00",
          "currency": "USD",
          "bank_transaction_code": "704",
          "bank_transaction_code_proprietary": "",
          "gvc": "",
          "booking_text": "",
          "bank_reference": "LN1",
          "customer_reference": "",
          "end_to_end_id": "",
          "mandate_id": "",
          "creditor_id": "",
          "counterparty_name": "",
          "counterparty_iban": "",
          "counterparty_bic": "",
          "counterparty_account": "",
          "purpose": "LOAN SUBLEDGER ADJUSTMENT",
          "return_reason": "",
          "raw_information": "",
          "structured_fields": {},
          "batch_details": []
        },
        {
          "transaction_hash": "d11b17894ada1a95c5bebe6fc46611ec14ae82f4f6d2b2c077ba9a3a86d61b01",
          "booking_date": "2026-10-19",
          "value_date": "2026-10-19",
          "direction": "DEBIT",
          "is_reversal": false,
          "status": "BOOKED",
          "amount": "3000.00",
          "signed_amount": "-3000.00",
          "currency": "USD",
          "bank_transaction_code": "960",
          "bank_transaction_code_proprietary": "",
          "gvc": "",
          "booking_text": "",
          "bank_reference": "BNK960",
          "customer_reference": "",
          "end_to_end_id": "",
          "mandate_id": "",
          "creditor_id": "",
          "counterparty_name": "",
          "counterparty_iban": "",
          "counterparty_bic": "",
          "counterparty_account": "",
          "purpose": "CUSTOM BANK FEE",
          "return_reason": "",
          "raw_information": "",
          "structured_fields": {
            "FUNDS_TYPE": "D"
          },
          "batch_details": []
        }
      ]
    }
  ]
}
CSV export output_format=csv
source_file,statement_index,statement_reference,account_id,audit_verdict,transaction_hash,booking_date,value_date,direction,is_reversal,status,amount,signed_amount,currency,counterparty_name,counterparty_iban,counterparty_bic,counterparty_account,purpose,end_to_end_id,mandate_id,creditor_id,bank_transaction_code,bank_transaction_code_proprietary,gvc,booking_text,return_reason,bank_reference,customer_reference
bai2-two-groups.bai2,0,7/1/1,123456789,VERIFIED,fd7f1e658502ee61ad962ae2bf350c3c97ac60c62e9090fb8e24cc968f3352cd,2026-10-18,2026-10-18,CREDIT,false,BOOKED,15000.00,15000.00,USD,,,,,ACME SUPPLY PAYROLL REFUND,,,,165,,,Preauthorized ACH Credit,,DD1620,INV-2026-104
bai2-two-groups.bai2,0,7/1/1,123456789,VERIFIED,b8874591363b67e5b48223efbec8ecbac26d5115843e0d89c512ade0f1b00c57,2026-10-18,2026-10-19,CREDIT,false,BOOKED,250000.00,250000.00,USD,,,,,WIRE FROM GLOBEX CORP REF 7781 INVOICE 2026-0042 PART 2 OF TEXT,,,,195,,,Incoming Money Transfer,,FW00021,PO-7781
bai2-two-groups.bai2,0,7/1/1,123456789,VERIFIED,4d58bd2a3fbf4b5692f94fdb7dc8f3653e4d8eb4c5812a2445742b9fb246a5e6,2026-10-18,2026-10-18,DEBIT,false,BOOKED,1234.56,-1234.56,USD,,,,,,,,,475,,,Check Paid,,BR0042,1001
bai2-two-groups.bai2,0,7/1/1,123456789,VERIFIED,4fb932b03d2b119a010a6b927a79192eaab6a72933481dc6d96bf6534c36cf5e,2026-10-18,2026-10-18,DEBIT,false,BOOKED,10000.00,-10000.00,USD,,,,,UTILITY CO DIRECT DEBIT,,,,451,,,ACH Debit Received,,ACH0099,
bai2-two-groups.bai2,1,7/1/2,987654321,VERIFIED,2bc8fdbacc80425a58b839c5040e79f7c7d2ecd29699abe4716340d1811f916e,2026-10-18,2026-10-18,DEBIT,false,BOOKED,100000,-100000,JPY,,,,,SUPPLIER PAYMENT JP,,,,495,,,Outgoing Money Transfer,,FT7788,
bai2-two-groups.bai2,2,7/2/1,555000111,VERIFIED,550457beb05524541070af41f66f3121216efa786019a756af6a87639900d8b6,2026-10-19,2026-10-19,CREDIT,false,BOOKED,2000.00,2000.00,USD,,,,,PAYROLL RETURN,,,,142,,,ACH Credit Received,,ACH1,
bai2-two-groups.bai2,2,7/2/1,555000111,VERIFIED,1e6abea31248ac829c2c2649253741ba7f525cb9bbcde893cf89635650ebccf9,2026-10-19,2026-10-19,CREDIT,false,INFO,750.00,750.00,USD,,,,,LOAN SUBLEDGER ADJUSTMENT,,,,704,,,,,LN1,
bai2-two-groups.bai2,2,7/2/1,555000111,VERIFIED,d11b17894ada1a95c5bebe6fc46611ec14ae82f4f6d2b2c077ba9a3a86d61b01,2026-10-19,2026-10-19,DEBIT,false,BOOKED,3000.00,-3000.00,USD,,,,,CUSTOM BANK FEE,,,,960,,,,,BNK960,

A CODA 2.6 file with two accounts: a structured +++ communication, a SEPA direct debit, a globalised supplier batch and a free-text information record.

coda-be-two-accounts.cod 2600 bytes · CODA

Input file

0000020102630005        REF0000001ACME NV                   GEBABEBB   00123456789 00000                                       2
12012BE68539007547034                  EUR0000001000000000191026ACME NV                   Current account                    012
2100010000BANKREF0001          0000000001250500201026001500001101090933755493                                      20102601201 1
2200010000                                                     E2E-INV-1001                       KREDBEBB                   1 1
2300010000BE71096123456769                     Café Liégeois SA                                                              0 1
3100010001BANKREF0001          001500001001Café Liégeois SA                                                                  1 0
3200010001Rue de la Loi 1                    1000 Bruxelles                                                                  0 0
2100020000BANKREF0001          1000000000045670201026005010501127201026110BE12ZZZ0123456789                  MANDAT20102601201 0
2200020000E-77                         Invoice 2026-10 electricE2E-DD-77                                        2AM04        1 0
2300020000                                                                        ity                                   2AM040 0
2100030000BANKREF0003          1000000000300000201026101010000Supplier batch                                       20102601210 0
2100030001BANKREF0003          1000000000100000201026501010000Supplier A invoice 1                                 20102601200 0
2100030002BANKREF0003          1000000000200000201026501010000Supplier B invoice 7                                 20102601201 0
2300030002NL91ABNA0417164300                   Supplier B BV                                                                 0 0
8012BE68539007547034                  EUR0000001000904830201026                                                                1
4 00010000                      Thank you for banking with us. Fees change on 1 January.                                       0
9               000014000000000345670000000001250500                                                                           1
0000020102630005        REF0000001ACME NV                   GEBABEBB   00123456789 00000                                       2
10044539007547034 EUR                     1000000002500000151026ACME NV                   Credit line                        044
9               000001000000000000000000000000000000                                                                           2

Audit result

VERIFIED 2 statements · 3 transactions

012/REF0000001
VERIFIED
Opening
1000000.00
+ Credits
1250.50
− Debits
345.67
= Calculated
1000904.83
Bank's closing
1000904.83 EUR
044/REF0000001
VERIFIED
Opening
-2500.00
+ Credits
0.00
− Debits
0.00
= Calculated
-2500.00
Bank's closing
-2500.00 EUR

Transactions

DateAmountCounterpartyReferencePurpose
2026-10-20 1250.50 EUR Café Liégeois SABE71096123456769 E2E-INV-1001 +++090/9337/55493+++
2026-10-20 -45.67 EUR – E2E-DD-77 Invoice 2026-10 electricity
2026-10-20 -300.00 EUR – – Supplier batch
JSON response output_format=json
{
  "api_version": "2.0",
  "detected_format": "CODA",
  "file_count": 1,
  "statement_count": 2,
  "transaction_count": 3,
  "overall_verdict": "VERIFIED",
  "verdict_counts": {
    "VERIFIED": 2
  },
  "warnings": [],
  "statements": [
    {
      "statement_index": 0,
      "source_file": "coda-be-two-accounts.cod",
      "format": "CODA",
      "statement_reference": "012/REF0000001",
      "sequence_number": "012",
      "account_id": "BE68539007547034",
      "account_servicer_bic": "GEBABEBB",
      "currency": "EUR",
      "creation_datetime": "2026-10-20",
      "opening_balance": "1000000.00",
      "opening_balance_date": "2026-10-19",
      "opening_balance_type": "OLD_BALANCE",
      "closing_balance": "1000904.83",
      "closing_balance_date": "2026-10-20",
      "closing_balance_type": "NEW_BALANCE",
      "closing_available_balance": null,
      "closing_available_balance_date": null,
      "closing_available_balance_type": null,
      "total_credits": "1250.50",
      "total_debits": "345.67",
      "credit_count": 1,
      "debit_count": 2,
      "pending_count": 0,
      "calculated_closing_balance": "1000904.83",
      "discrepancy_amount": "0.00",
      "audit_method": "BALANCE_EQUATION",
      "audit_verdict": "VERIFIED",
      "audit_notes": [],
      "statement_information": "Current account; Thank you for banking with us. Fees change on 1 January.",
      "transaction_count": 3,
      "transactions": [
        {
          "transaction_hash": "69b608e767c2d3218311c5d4fff8373fac75bb81154b3c26de2f910181cc7739",
          "booking_date": "2026-10-20",
          "value_date": "2026-10-20",
          "direction": "CREDIT",
          "is_reversal": false,
          "status": "BOOKED",
          "amount": "1250.50",
          "signed_amount": "1250.50",
          "currency": "EUR",
          "bank_transaction_code": "00150000",
          "bank_transaction_code_proprietary": "",
          "gvc": "",
          "booking_text": "Domestic or local SEPA credit transfer",
          "bank_reference": "BANKREF0001",
          "customer_reference": "E2E-INV-1001",
          "end_to_end_id": "E2E-INV-1001",
          "mandate_id": "",
          "creditor_id": "",
          "counterparty_name": "Café Liégeois SA",
          "counterparty_iban": "BE71096123456769",
          "counterparty_bic": "KREDBEBB",
          "counterparty_account": "",
          "purpose": "+++090/9337/55493+++",
          "return_reason": "",
          "raw_information": "",
          "structured_fields": {
            "STRUCTURED_COMMUNICATION_TYPE": "101",
            "STRUCTURED_REFERENCE": "+++090/9337/55493+++",
            "CNTP": "Café Liégeois SA",
            "CNTP_ADDRESS": "Rue de la Loi 1 1000 Bruxelles"
          },
          "batch_details": []
        },
        {
          "transaction_hash": "f8c5d47bf557323f69444ee4ec6001664d1f77b015bd6a803bc183e4f60ec87e",
          "booking_date": "2026-10-20",
          "value_date": "2026-10-20",
          "direction": "DEBIT",
          "is_reversal": false,
          "status": "BOOKED",
          "amount": "45.67",
          "signed_amount": "-45.67",
          "currency": "EUR",
          "bank_transaction_code": "00501050",
          "bank_transaction_code_proprietary": "",
          "gvc": "",
          "booking_text": "Direct debit",
          "bank_reference": "BANKREF0001",
          "customer_reference": "E2E-DD-77",
          "end_to_end_id": "E2E-DD-77",
          "mandate_id": "MANDATE-77",
          "creditor_id": "BE12ZZZ0123456789",
          "counterparty_name": "",
          "counterparty_iban": "",
          "counterparty_bic": "",
          "counterparty_account": "",
          "purpose": "Invoice 2026-10 electricity",
          "return_reason": "AM04",
          "raw_information": "",
          "structured_fields": {
            "R_TRANSACTION": "Return",
            "STRUCTURED_COMMUNICATION_TYPE": "127",
            "SETTLEMENT_DATE": "2026-10-20",
            "DIRECT_DEBIT_TYPE": "Recurrent",
            "DIRECT_DEBIT_SCHEME": "SEPA Core"
          },
          "batch_details": []
        },
        {
          "transaction_hash": "2c95a80d86cbc5c16a366a2665d592b5e87bb4963b6760457ce64d3cb675be9c",
          "booking_date": "2026-10-20",
          "value_date": "2026-10-20",
          "direction": "DEBIT",
          "is_reversal": false,
          "status": "BOOKED",
          "amount": "300.00",
          "signed_amount": "-300.00",
          "currency": "EUR",
          "bank_transaction_code": "10101000",
          "bank_transaction_code_proprietary": "",
          "gvc": "",
          "booking_text": "Domestic or local SEPA credit transfer (total by customer)",
          "bank_reference": "BANKREF0003",
          "customer_reference": "",
          "end_to_end_id": "",
          "mandate_id": "",
          "creditor_id": "",
          "counterparty_name": "",
          "counterparty_iban": "",
          "counterparty_bic": "",
          "counterparty_account": "",
          "purpose": "Supplier batch",
          "return_reason": "",
          "raw_information": "",
          "structured_fields": {},
          "batch_details": [
            {
              "detail_number": "0001",
              "amount": "100.00",
              "direction": "DEBIT",
              "bank_transaction_code": "50101000",
              "bank_reference": "BANKREF0003",
              "purpose": "Supplier A invoice 1"
            },
            {
              "detail_number": "0002",
              "amount": "200.00",
              "direction": "DEBIT",
              "bank_transaction_code": "50101000",
              "bank_reference": "BANKREF0003",
              "counterparty_name": "Supplier B BV",
              "counterparty_iban": "NL91ABNA0417164300",
              "purpose": "Supplier B invoice 7"
            }
          ]
        }
      ]
    },
    {
      "statement_index": 1,
      "source_file": "coda-be-two-accounts.cod",
      "format": "CODA",
      "statement_reference": "044/REF0000001",
      "sequence_number": "044",
      "account_id": "539007547034",
      "account_servicer_bic": "GEBABEBB",
      "currency": "EUR",
      "creation_datetime": "2026-10-20",
      "opening_balance": "-2500.00",
      "opening_balance_date": "2026-10-15",
      "opening_balance_type": "OLD_BALANCE",
      "closing_balance": "-2500.00",
      "closing_balance_date": "2026-10-15",
      "closing_balance_type": "NO_MOVEMENT",
      "closing_available_balance": null,
      "closing_available_balance_date": null,
      "closing_available_balance_type": null,
      "total_credits": "0.00",
      "total_debits": "0.00",
      "credit_count": 0,
      "debit_count": 0,
      "pending_count": 0,
      "calculated_closing_balance": "-2500.00",
      "discrepancy_amount": "0.00",
      "audit_method": "BALANCE_EQUATION",
      "audit_verdict": "VERIFIED",
      "audit_notes": [],
      "statement_information": "Credit line; Empty file: no movements",
      "transaction_count": 0,
      "transactions": []
    }
  ]
}
CSV export output_format=csv
source_file,statement_index,statement_reference,account_id,audit_verdict,transaction_hash,booking_date,value_date,direction,is_reversal,status,amount,signed_amount,currency,counterparty_name,counterparty_iban,counterparty_bic,counterparty_account,purpose,end_to_end_id,mandate_id,creditor_id,bank_transaction_code,bank_transaction_code_proprietary,gvc,booking_text,return_reason,bank_reference,customer_reference
coda-be-two-accounts.cod,0,012/REF0000001,BE68539007547034,VERIFIED,69b608e767c2d3218311c5d4fff8373fac75bb81154b3c26de2f910181cc7739,2026-10-20,2026-10-20,CREDIT,false,BOOKED,1250.50,1250.50,EUR,Café Liégeois SA,BE71096123456769,KREDBEBB,,'+++090/9337/55493+++,E2E-INV-1001,,,00150000,,,Domestic or local SEPA credit transfer,,BANKREF0001,E2E-INV-1001
coda-be-two-accounts.cod,0,012/REF0000001,BE68539007547034,VERIFIED,f8c5d47bf557323f69444ee4ec6001664d1f77b015bd6a803bc183e4f60ec87e,2026-10-20,2026-10-20,DEBIT,false,BOOKED,45.67,-45.67,EUR,,,,,Invoice 2026-10 electricity,E2E-DD-77,MANDATE-77,BE12ZZZ0123456789,00501050,,,Direct debit,AM04,BANKREF0001,E2E-DD-77
coda-be-two-accounts.cod,0,012/REF0000001,BE68539007547034,VERIFIED,2c95a80d86cbc5c16a366a2665d592b5e87bb4963b6760457ce64d3cb675be9c,2026-10-20,2026-10-20,DEBIT,false,BOOKED,300.00,-300.00,EUR,,,,,Supplier batch,,,,10101000,,,Domestic or local SEPA credit transfer (total by customer),,BANKREF0003,

How it works

  1. Export the statement from your online bank as MT940. Banks also call it STA, SWIFT or MT940 export; the file usually ends in .sta, .mt940 or .txt.
  2. Drop it into the box above. The live demo shows the balance audit and the first 25 transactions.
  3. For the CSV itself, every transaction and whole archives, the API returns output_format=csv, or JSON, hledger, Beancount and camt.053.

What you get in the CSV

The CSV has one row per transaction and 29 columns. The most useful ones:

Column Example
booking_date, value_date 2026-01-05
signed_amount, currency -189.95, EUR
counterparty_name, counterparty_iban, counterparty_bic Acme Trading B.V., NL44RABO…, RABONL2U
purpose Invoice INV-2026-0012 January hosting
end_to_end_id, mandate_id, creditor_id SEPA references, when the bank provides them
audit_verdict VERIFIED, DISCREPANCY or UNVERIFIABLE for the statement the row belongs to
transaction_hash a stable ID, so importing the same statement twice does not create duplicates

The file is UTF-8 with a byte-order mark, so Excel shows accents correctly. Amounts are plain decimals, never rounded floats, and cells that could be read as spreadsheet formulas are neutralised.

The converter reads the formats used by banks such as ING, Rabobank, ABN AMRO and the German savings banks, SWIFT envelopes and files with several statements. It is independent and not affiliated with any bank.

Questions

What is an MT940 file?

MT940 is the SWIFT format for end-of-day bank statements. Many European banks offer it for accounting software. It is a text file of tagged lines: :20: reference, :25: account, :60F: opening balance, :61: one transaction, :86: its details, :62F: closing balance.

Why not open the MT940 file in Excel directly?

Excel sees one long column of tags. The useful parts, such as the counterparty’s name, IBAN or invoice reference, are packed into the :86: line in a different way by every bank (German ?20 subfields, Dutch /EREF/ tags, Polish ~20 subfields). The converter separates them into their own columns.

Is my bank statement stored?

No. The demo service reads the file in memory, sends the result back to your browser and discards the file. Nothing is written to disk. In the demo, names, IBANs and e-mail addresses are masked by default.

Does it check that nothing is missing?

Yes. Every statement is checked with opening balance + credits − debits = closing balance, to the cent, and consecutive statements must connect: if one closes at a different balance than the next one opens, a missing statement is reported.

What about umlauts and Central European characters?

Files in UTF-8, Windows-1252 / Latin-1 and, for Hungarian, Polish, Czech and other Central European accounts, Windows-1250 / ISO-8859-2 / DOS 852 are decoded automatically. Very old DOS-encoded (cp850) German files may still show wrong umlauts.

Can I convert many files at once?

The API accepts a ZIP of statements and returns one CSV for all of them. The free demo takes one file up to 2 MB, shows the first 25 transactions and allows 5 runs a day.

Need it in your own software?

The same engine is available as an API: whole files instead of a preview, every export format, automation.

Bank Statement Reconciler →

Related tools

Free toolBank Statement Reconciler

camt.053 to Excel converter

Read ISO 20022 camt.053 (and camt.052 / 054) XML statements as clean rows, balances checked.

Free toolBank Statement Reconciler

Bank statement balance check

Prove that an MT940 or camt.053 statement adds up, and find statements missing from a series.

Free toolBank Statement Reconciler

BAI2 to CSV converter

Turn a US BAI2 balance report into clean columns for Excel, with every account's balances and control totals checked.