--- id: pyiso8583 version: "4.0.1" license: MIT license_treatment: permissive maintenance: aging --- # pyiso8583 — A serializer and deserializer of ISO8583 data. License: permissive · Maintenance: aging · Downloads: 328.4K/mo ## What it is and what it does pyiso8583 is a Python library for working with ISO8583, the international standard protocol used in banking and payment systems. It converts between raw ISO8583 byte messages and Python dictionaries, making it easy to parse incoming financial transactions and construct responses. The library handles variable-length fields, multiple encoding schemes (BCD, ASCII, EBCDIC), and bitmap-based field presence indicators. You define or customize a specification dictionary that describes how each field should be encoded, decoded, and validated. The package includes a starter specification for common use cases, but you can create your own to support POS terminals, ATMs, file transfers, or proprietary banking systems. Once decoded into a dict, you modify fields as needed and re-encode back to bytes for transmission. Use it for: - Parse incoming ISO8583 authorization requests from payment terminals and extract card, amount, and merchant data. - Build ISO8583 response messages to send back to ATMs or POS systems after processing a transaction. - Convert legacy binary banking protocol logs into human-readable Python dicts for auditing or debugging. - Implement a payment gateway that must speak ISO8583 to connect with acquirers or card networks. - Test banking integrations by encoding and decoding sample ISO8583 messages with custom specifications. ## Worth the install? AI-flagged interpretation of the facts above — verify before relying. Serializes and deserializes ISO8583 financial protocol messages between raw bytes and Python dictionaries, with support for custom field specifications covering encoding, length types, and data formats. Yes, if you work with ISO8583 in banking or payment systems. The library is stable (Production/Stable classifier), supports Python 3.8 through 3.13, has no dependencies, and carries no known vulnerabilities. Maintenance is aging—last release 351 days ago—but the repository is not archived and remains reachable. The MIT license poses no restrictions. Install it when you need to parse or generate ISO8583 messages; skip it if your integration uses a higher-level payment API that abstracts the protocol away. ## Install pip install pyiso8583 uv add pyiso8583 poetry add pyiso8583 ## Installing pyiso8583 Before you install: Low friction installation with no runtime dependencies. Maintenance is aging—last release was 351 days ago—but the repository remains active with a recent commit on 2025-08-28 and no archived status. License in practice: MIT license is permissive; you can use, modify, and distribute this package with minimal restrictions, making it suitable for both open-source and commercial projects. Quickstart: pip install pyiso8583 import pyiso8583 from pyiso8583.specs import default_ascii as spec encoded_raw = b'02004000000000000000101234567890' decoded, encoded = pyiso8583.decode(encoded_raw, spec) print(decoded) # {'t': '0200', 'p': '4000000000000000', '2': '1234567890'} Verify before relying: - Whether custom specifications can be extended to handle proprietary banking protocols beyond the included starter spec. - Performance characteristics when processing high-volume ISO8583 message streams. - Compatibility with non-ASCII encoding schemes beyond BCD, ASCII, and EBCDIC mentioned in the description. ## Package facts - License: MIT (permissive) - Python support: supports_current - Install friction: low - Maintenance: aging - Downloads: 328.4K/month (top 15,000 on PyPI) - Known vulnerabilities: none known ## Tags iso8583 parsing library, banking protocol serialization, financial message encoding, iso8583 encode decode, payment gateway message format, pos atm protocol, binary financial data, banking-protocol, financial-messaging, serialization [View on SkillFed](https://skillfed.io/packages/pyiso8583) · [View on PyPI](https://pypi.org/project/pyiso8583/)