Skip to content
← All Tools
๐Ÿ”’All processing in your browser ๐ŸšซNo uploads stored ๐Ÿ›ก๏ธPrivacy-first conversion tools โœ“No login required
Guide

The Complete Guide to Mt940 Validating: Everything You Need to Know

Bill Crawford — Developer Guide — 2026  ยท  Published April 8, 2026

MT940 is the SWIFT standard for electronic bank statement delivery. Banks around the world use it to transmit account history to corporate treasury systems, accounting platforms, and ERP integrations. Despite its age โ€” the format dates to the 1980s โ€” MT940 remains one of the most common machine-readable bank statement formats in international finance. If you work with bank data, payment reconciliation, or financial system integrations, you will encounter MT940 files.

The problem is that MT940 is a fixed-format text standard with strict structural requirements and very little tolerance for deviation. A missing mandatory tag, a malformed balance line, or a transaction amount with the wrong sign indicator can silently break a downstream parser or cause a reconciliation mismatch that takes hours to trace. MT940 validation catches these problems at the file level before any processing begins.

This guide covers the structure of MT940 files, what each validation check means, how to interpret results, and best practices for designers and developers working with bank statement data.

Connect on LinkedIn โ†’

Validate your MT940 file instantly: Check required tags, field formats, balance reconciliation, transaction lines, and more โ€” free, private, no uploads.

Open Mt940 Validator โ†’

Table of Contents

  1. What Is MT940?
  2. MT940 File Structure
  3. Mandatory Tags
  4. Balance Fields and Reconciliation
  5. Transaction Lines (Tag 61)
  6. Field Format Validation
  7. Common Validation Errors
  8. Best Practices for Designers
  9. Common Use Cases

What Is MT940?

MT940 stands for Message Type 940, part of the SWIFT MT (Message Type) messaging standard. It is the Customer Statement Message โ€” a structured text format that conveys account statement information: the account identifier, statement period, opening balance, individual transactions, and closing balance.

MT940 files are delivered in one of two ways: directly from the bank via SWIFT connectivity or SFTP, or exported from an online banking portal. In either case, the file is a plain-text document with a specific line-by-line structure. Each piece of information is identified by a tag โ€” a colon-delimited code such as :60F: (opening balance) or :61: (statement line).

MT940 is distinct from newer formats like CAMT.053 (ISO 20022 XML), which has been replacing it in some European markets. However, MT940 remains dominant in many regions and is supported by virtually every treasury management system, ERP, and accounting platform that handles bank feeds.

MT940 File Structure

An MT940 file consists of one or more statement blocks. Each block corresponds to a single account statement and follows a fixed sequence of tagged fields. A minimal valid MT940 statement looks like this:

:20:STMTREF01
:25:GB29NWBK60161331926819
:28C:00001/001
:60F:C260101GBP1000,00
:61:2601020102CR500,00NTRF//REF001
:86:Payment received
:62F:C260102GBP1500,00

Each line begins with a tag (the colon-delimited code) followed by the field value. Some fields span multiple lines โ€” these continuation lines do not begin with a tag. The structure is sequential: tags must appear in a defined order, and mandatory tags cannot be omitted.

A single MT940 file may contain statements for multiple accounts or multiple date ranges. Each statement block is separated by a transaction reference tag (:20:) that begins a new block. A validator must handle multi-statement files and apply all checks to each block independently.

Mandatory Tags

The SWIFT MT940 standard defines a set of mandatory tags that must appear in every statement block. Missing any of these is a structural error that will cause most parsers to fail:

Optional but frequently present tags include :61: (statement line โ€” the individual transaction), :86: (information to account owner โ€” a narrative line following a :61:), and :64: / :65: (closing available balance and forward available balance).

Balance Fields and Reconciliation

Balance validation is one of the most important checks a MT940 validator performs. The opening balance, transaction amounts, and closing balance must be mathematically consistent: opening balance plus the net of all transactions must equal the closing balance.

Balance fields use a specific format: a single character debit/credit indicator (C for credit, D for debit), a six-digit date in YYMMDD format, a three-character ISO 4217 currency code, and an amount with a comma as the decimal separator. For example:

:60F:C260101GBP1000,00

This means: credit balance of GBP 1,000.00 on January 1, 2026. Common balance field errors include:

Transaction Lines (Tag 61)

Tag :61: is the statement line โ€” each occurrence represents one transaction. A :61: field has a defined internal structure:

:61:ValueDateBookDateCrDrAmountSwiftCodeReference

Breaking this down: a six-digit value date (YYMMDD), an optional four-digit booking date (MMDD), a debit/credit indicator (C, D, RD, or RC for reversal), the transaction amount with comma decimal separator, a four-character SWIFT transaction code (e.g., NTRF for non-SWIFT transfer), and a reference field. Each component must be present and correctly formatted.

Common transaction line errors include:

Field Format Validation

Beyond mandatory tag presence and balance reconciliation, a thorough MT940 validator checks the internal format of each field value. SWIFT defines the content of each tag using a notation system: n for numeric characters, a for alphabetic, c for alphanumeric, x for any SWIFT character set character. For example, the transaction reference (:20:) is defined as 16x โ€” up to 16 characters from the SWIFT character set.

Key format checks include:

Common Validation Errors

In practice, MT940 files from different banks and software systems contain a predictable set of recurring errors. Understanding these helps you act on validation results quickly:

Missing :62F: tag. The closing balance is the most commonly omitted mandatory tag. Some bank export tools generate MT940 files that include all transaction data but omit the closing balance, producing a structurally incomplete statement that will fail validation.

Wrong decimal separator in amounts. Many non-European systems default to a period as the decimal separator. MT940 requires a comma. A file with period-separated amounts will either fail parsing entirely or produce wildly incorrect values depending on the receiving system's tolerance.

Balance reconciliation failure. This typically results from one of three causes: a transaction line with the wrong debit/credit indicator (a credit recorded as a debit shifts the running total), a missing transaction that was excluded from the export, or a rounding error in the amount representation. The validator can identify the discrepancy amount, which usually makes the root cause obvious.

Encoding issues. MT940 files generated on Windows systems may include a UTF-8 BOM, Windows-1252 special characters (smart quotes, em dashes), or CRLF line endings. Most parsers handle CRLF gracefully, but BOM characters and non-ASCII characters in field values are genuine errors.

Truncated file. A file transfer that was interrupted produces an MT940 file that ends abruptly, missing the closing balance and the end-of-message delimiter. This is immediately detectable as a missing mandatory tag.

Best Practices for Designers

If you are designing a system that generates, processes, or displays MT940 files, these practices reduce the risk of format-related failures:

Common Use Cases

MT940 validation provides the most value at the boundaries between systems โ€” whenever a file is received from an external source or before it is delivered to a downstream system.

Bank feed integration. When building a bank feed connector that receives MT940 files from a banking API or SFTP feed, validate every incoming file immediately on receipt. A validation failure should trigger an alert and halt processing rather than propagating malformed data into your accounting system.

Treasury management system imports. TMS platforms that import MT940 for cash positioning and reconciliation are sensitive to format errors. Running validation before import confirms that the file will be accepted and that balance figures are reliable.

ERP reconciliation workflows. SAP, Oracle, and Microsoft Dynamics all support MT940 import for bank reconciliation. Each has its own tolerance for format variations. Validating against the MT940 standard confirms structural correctness before the ERP-specific import step.

Audit and compliance review. Compliance teams reviewing bank statement data for audit purposes can use MT940 validation to confirm the integrity of received files โ€” specifically that balance figures are internally consistent and that no transactions appear to be missing.

Fintech product development. Developers building payment applications, accounting tools, or open banking integrations that consume MT940 use validation to confirm their parser handles all edge cases correctly. Running validation against a library of real-world MT940 files from different banks reveals parser gaps before they affect production users.

BC
Bill Crawford
Founder, Data Conversion Center

Bill Crawford is a data systems developer and technical founder with over 30 years of professional experience in accounting, finance, and business operations. He founded DataConversionCenter.com to build practical, browser-based tools that simplify complex data challenges.

Professional Background