Skip to main content

Norma 43 Parser (Python)

PyPI version License Python Version Code Style PRs Welcome

The definitive, zero-dependency Python library for parsing Spanish banking statements in the Norma 43 (Cuaderno 43 / AEB 43) format.

Designed for fintech developers, accountants, and financial data analysts who need a reliable, high-performance tool to automate bank reconciliation and process financial movements from Spanish banks (CaixaBank, BBVA, Santander, Sabadell, etc.).


🚀 Key Features

  • 🔒 Complete Compliance: rigorous implementation of the AEB (Asociación Española de Banca) specifications for Norma 43.
  • ⚡ High Performance: Optimized for processing large files quickly using only Python's standard library. No external dependencies.
  • 🛠️ Developer Ready: Fully type-hinted (PEP 484) for excellent IDE support and error checking.
  • ✅ Robust Parsing: Handles common edge cases, including complex sign management (debit/credit) and multi-line concepts (Record 23).
  • 📦 Multi-Format Export: Built-in CLI to convert .n43 files to JSON or CSV for easy integration with Excel, Pandas, or DataFrames.

📖 Table of Contents

📥 Installation

Requires Python 3.7+.

Install the latest version from PyPI:

pip install norma43

Or clone the repository and install directly:

git clone https://github.com/enricopesce/norma43.git
cd norma43
pip install .

💻 Quick Start

Easily integrate Norma 43 parsing into your Python financial applications:

from norma43.parser import Norma43Parser

# 1. Initialize the parser
parser = Norma43Parser("path/to/statement.n43")

# 2. Parse the file
accounts = parser.parse()

# 3. Process the data
for account in accounts:
    print(f"🏦 Account: {account.bank}-{account.branch}-{account.account_number}")
    print(f"👤 Owner: {account.owner}")
    print(f"💰 Balance: {account.final_balance} {account.currency}")
    
    for tx in account.transactions:
        # Use tx.full_description for all lines joined, or check if tx.description exists
        desc = tx.description[0] if tx.description else "No description"
        print(f"   📅 {tx.date} | {tx.amount:>10} | {desc}")

🖥️ CLI Usage

This library includes a powerful command-line interface (CLI) for quick file inspection and conversion.

1. View Summary (Text)

Ideal for quick verification of file contents.

python -m norma43 statement.n43

2. Convert to JSON

Export data for use in web apps or NoSQL databases.

python -m norma43 statement.n43 --format json --output data.json

3. Convert to CSV

Generate spreadsheets for Excel or import into Pandas.

python -m norma43 statement.n43 --format csv --output report.csv

📊 Data Structure

The parser returns a List[Account] where Account and its Transaction objects are dataclasses:

Account Object (dataclass)

Field Type Description
bank str 4-digit Bank Code
branch str 4-digit Branch Code
account_number str 10-digit Account Number
initial_balance Decimal Balance at start period
final_balance Decimal Balance at end period
currency str ISO 4217 Currency Code (e.g., 978 for EUR)
transactions List[Transaction] List of transaction objects

Transaction Object (dataclass)

Field Type Description
date date Transaction date
value_date date Value date (Fecha valor)
amount Decimal Signed transaction amount
description List[str] Full description lines
full_description property (str) All description lines joined by space
reference1 str Primary reference / Document ID

📋 Supported Records

Record Type Status Description
11 Header ✅ Account identification and initial balance
22 Transaction ✅ Main movement details (Date, Amount, IDs)
23 Complementary ✅ Extended concepts and descriptions
33 Footer ✅ Account final balance and totals verification
88 End of File ✅ File integrity check

⚖️ License

Distributed under the Apache License 2.0. See LICENSE for more information.


Keywords: Norma 43, Cuaderno 43, CSB 43, AEB 43, Conciliación Bancaria, Bank Reconciliation, Spanish Banking Standard, Python Parser, Finance, Fintech, Open Banking.

Metadata

Release files for norma43 0.1.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for norma43 0.1.4
File Size Uploaded
norma43-0.1.4.tar.gz 13.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for norma43 0.1.4
File Interpreter ABI Platform
norma43-0.1.4-py3-none-any.whl Python 3 none any Details

Total release size: 25.0 kB

Release files / norma43-0.1.4.tar.gz

Download URL norma43-0.1.4.tar.gz
Size 13.8 kB
Tags Source
SHA-256 checksum
How to use checksums
219c96e9e2a82affe6ec8167d28800bf9b5deaf3a8bee6b6f23db846b491a027
BLAKE2b-256 checksum
How to use checksums
507458ef80f27578c825cab23503915c8d9525581969193715fc47c79f5b3ce9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / norma43-0.1.4-py3-none-any.whl

Download URL norma43-0.1.4-py3-none-any.whl
Size 11.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
79cc8bf06b6e974060598ee2ab0edf74776145127393d5afce7687339edbc546
BLAKE2b-256 checksum
How to use checksums
3350cf9b37b73ab96df5d897f4e2b214e445eae6be3dbc6f6b2c2d60035dfef4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release history Release notifications | RSS feed

This release

0.1.4 This release

2 release files

0.1.3

2 release files

0.1.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page