Skip to main content

High-performance ISO 8583 message simulator with CLI, Python SDK, and LLM features

Project description

ISO8583 Simulator

PyPI version Python versions License CI Documentation Code style: ruff

A modern, high-performance ISO 8583 message simulator with CLI, Python SDK, and interactive Jupyter notebooks.

Features

  • Message Handling:

    • Parse ISO 8583 messages (180k+ TPS with Cython)
    • Build ISO 8583 messages (150k+ TPS)
    • Validate message structure and content
    • Support for ISO versions (1987, 1993, 2003)
  • Network Support:

    • VISA, Mastercard, AMEX, Discover, JCB, UnionPay
    • Network-specific field validation
    • EMV/chip card data handling (Field 55)
  • Multiple Interfaces:

    • Command Line Interface (CLI)
    • Python SDK for programmatic usage
    • Interactive Jupyter notebooks
  • Performance Optimized:

    • Optional Cython extensions for 2x speedup
    • Object pooling for high-throughput scenarios
    • See Performance Guide

Installation

pip install iso8583sim

# For Cython performance extensions
pip install iso8583sim[perf]
python setup.py build_ext --inplace

Quick Start

Python SDK

from iso8583sim.core.parser import ISO8583Parser
from iso8583sim.core.builder import ISO8583Builder
from iso8583sim.core.validator import ISO8583Validator
from iso8583sim.core.types import ISO8583Message

# Build a message
builder = ISO8583Builder()
message = ISO8583Message(
    mti="0100",
    fields={
        0: "0100",
        2: "4111111111111111",
        3: "000000",
        4: "000000001000",
        11: "123456",
        41: "TERM0001",
        42: "MERCHANT123456 ",
    }
)
raw = builder.build(message)

# Parse a message
parser = ISO8583Parser()
parsed = parser.parse(raw)

# Validate a message
validator = ISO8583Validator()
errors = validator.validate_message(parsed)

CLI Usage

# Parse a message
iso8583sim parse "0100..." --version 1987

# Build a message
iso8583sim build --mti 0100 --fields fields.json

# Validate a message
iso8583sim validate "0100..."

# Generate sample messages
iso8583sim generate --type auth --pan 4111111111111111 --amount 1000

Interactive Notebooks

Learn ISO 8583 with our Jupyter notebooks:

Notebook Description
01_getting_started.ipynb Basic concepts and quick start
02_parsing_messages.ipynb Deep dive into message parsing
03_building_messages.ipynb Building various message types
04_network_specifics.ipynb VISA, Mastercard, and other networks
05_emv_data.ipynb Working with EMV/chip card data
06_benchmarking.ipynb Performance testing and benchmarks

Run locally:

pip install jupyter
jupyter notebook notebooks/

Performance

Benchmarks on Apple Silicon (M-series), Python 3.12:

Operation Pure Python With Cython
Parse ~105k TPS ~182k TPS
Build ~150k TPS ~150k TPS
Roundtrip ~49k TPS ~63k TPS

See benchmarks/BASELINE.md for detailed results.

Documentation

Full documentation is available at iso8583.subhadipmitra.com

Development

# Clone and setup
git clone https://github.com/bassrehab/ISO8583-Simulator.git
cd iso8583sim
python -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"

# Run tests
pytest

# Run benchmarks
python benchmarks/bench_parser.py
python benchmarks/bench_roundtrip.py

Contributing

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/my-feature)
  3. Commit your changes (git commit -am 'Add new feature')
  4. Push to the branch (git push origin feature/my-feature)
  5. Create a Pull Request

Author

Subhadip Mitra - subhadipmitra.com

License

MIT License - see LICENSE for details.

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

iso8583sim-1.1.0.tar.gz (127.7 kB view details)

Uploaded Source

Built Distribution

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

iso8583sim-1.1.0-py3-none-any.whl (61.5 kB view details)

Uploaded Python 3

File details

Details for the file iso8583sim-1.1.0.tar.gz.

File metadata

  • Download URL: iso8583sim-1.1.0.tar.gz
  • Upload date:
  • Size: 127.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for iso8583sim-1.1.0.tar.gz
Algorithm Hash digest
SHA256 4e66e523205721006331a7ee50e0e8c77700a58afd73376dafef5509b360aae1
MD5 2a5013a77bb4507ee202b819cd343e2d
BLAKE2b-256 7a49dc370126919ede0148cc6154c166e888274668a01fde643a73f4242a78a2

See more details on using hashes here.

Provenance

The following attestation bundles were made for iso8583sim-1.1.0.tar.gz:

Publisher: publish.yml on bassrehab/ISO8583-Simulator

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file iso8583sim-1.1.0-py3-none-any.whl.

File metadata

  • Download URL: iso8583sim-1.1.0-py3-none-any.whl
  • Upload date:
  • Size: 61.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for iso8583sim-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 2b24099a3a5e0e428085505698b00ade9077dda40ddade7a8127df10818e980e
MD5 17f7d97214f1ddd07720de22c8b0278d
BLAKE2b-256 ee58b5658f662cf46ae78edb5e9cd178a62955e925a3925e4e927361246f4044

See more details on using hashes here.

Provenance

The following attestation bundles were made for iso8583sim-1.1.0-py3-none-any.whl:

Publisher: publish.yml on bassrehab/ISO8583-Simulator

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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