Forum Discussion

mithun_laha's avatar
mithun_laha
New Contributor III
8 months ago

How to convert a MT940 bank file to CSV readable format for data load

  • RobbSalzmann's avatar
    8 months ago

    Here's an example to get you started.

    'main
    ConvertMT940ToCSV("path_to_MT940_file.sta", "output.csv")
    
    'class functions
    Private Sub WriteToCSV(transactions As List(Of String), filePath As String)
        Using writer As New StreamWriter(filePath)
            writer.WriteLine("Date,Credit/Debit,Amount") ' CSV Header
            For Each transaction As String In transactions
                writer.WriteLine(transaction)
            Next
        End Using
    End Sub
    
    Private Function ParseTransaction(transactionLine As String) As String
        ' Simplified parsing: Extract date and amount as example
        Dim pattern As String = "^\:61\:(\d{6})(C|D)(\d+,\d{0,2})"
        Dim match As Match = Regex.Match(transactionLine, pattern)
        If match.Success Then
            Dim dateValue As String = match.Groups(1).Value
            Dim creditDebit As String = match.Groups(2).Value
            Dim amount As String = match.Groups(3).Value.Replace(",", ".") ' Change comma to dot for CSV
            Return $"{dateValue},{creditDebit},{amount}"
        End If
        Return String.Empty
    End Function