Skip to main content

High-performance Python parser for Norma 43 (Cuaderno 43 / AEB 43) Spanish banking files. Open-source, type-hinted, and dependency-free.

Project description

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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

norma43-0.1.4.tar.gz (13.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

norma43-0.1.4-py3-none-any.whl (11.1 kB view details)

Uploaded Python 3

File details

Details for the file norma43-0.1.4.tar.gz.

File metadata

  • Download URL: norma43-0.1.4.tar.gz
  • Upload date:
  • Size: 13.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for norma43-0.1.4.tar.gz
Algorithm Hash digest
SHA256 219c96e9e2a82affe6ec8167d28800bf9b5deaf3a8bee6b6f23db846b491a027
MD5 ccae1fc682fb629d0486cfed67383b50
BLAKE2b-256 507458ef80f27578c825cab23503915c8d9525581969193715fc47c79f5b3ce9

See more details on using hashes here.

File details

Details for the file norma43-0.1.4-py3-none-any.whl.

File metadata

  • Download URL: norma43-0.1.4-py3-none-any.whl
  • Upload date:
  • Size: 11.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for norma43-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 79cc8bf06b6e974060598ee2ab0edf74776145127393d5afce7687339edbc546
MD5 0db573e3762a5c5d577751200cbfadd4
BLAKE2b-256 3350cf9b37b73ab96df5d897f4e2b214e445eae6be3dbc6f6b2c2d60035dfef4

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page