Skip to main content
Yanked

This release has been yanked by its maintainers, and will be ignored by installers, except when explicitly specified.
Reason given by maintainers: Renamed to oxedi: pip install oxedi

oxedi835

A fast EDI 835 (electronic remittance advice) parser for Python, written in Rust.

  • Lossless. Every byte of the file is kept, so write() returns the file exactly as it was read.
  • Ready-made tables. Payments, claims, service lines and adjustments come out as typed tables that open in Polars, pandas, pyarrow or DuckDB without copying the data.
  • Problems are reported, not raised. A file that is valid EDI but has questionable data still parses; each issue is returned as a diagnostic that names the rule, the position and the value.
  • Large files. stream yields one transaction at a time, so memory stays bounded.
  • Extensible. Add segments or table columns with a small JSON patch, without touching the code.

Install

pip install oxedi835               # no Python dependencies
pip install "oxedi835[polars]"     # with Polars
pip install "oxedi835[pandas]"     # with pandas and pyarrow

Requires Python 3.11 or later. Wheels are available for Linux (x86_64 and aarch64, plus musl on x86_64), macOS (Intel and Apple silicon) and Windows (x86_64).

Quick start

import oxedi835

result = oxedi835.parse_file("remittance.835")

claims = result.tables["claims"].to_polars()      # or .to_pandas()
services = result.tables["services"].to_polars()

print(result.count_claims(), result.sum_payments())  # sum_payments() is a Decimal
print(result.payer["name"], result.payee["name"])

for diagnostic in result.diagnostics:
    print(diagnostic)

oxedi835.parse(data) does the same from bytes. A file that is not an 835 at all (for example, one that does not start with an ISA segment) raises oxedi835.ParseError.

Tables

Table One row per Linked by
payments payment (transaction) —
claims claim payment
services service line payment, claim
adjustments claim or service adjustment payment, claim, service
provider_adjustments provider-level adjustment payment

result.tables.keys() lists them and table.columns lists a table's columns. Amounts are decimals, dates are dates, and text fields are kept as the raw bytes from the file (Arrow binary), so nothing is lost to an encoding guess. Tables follow the Arrow PyCapsule interface, so any Arrow-aware library reads them directly:

import duckdb, polars as pl

claims = result.tables["claims"]
duckdb.sql("select claim_status, sum(payment_amount) from claims group by 1")
pl.DataFrame(result.tables["services"])

Large files

from pathlib import Path

for batch in oxedi835.stream(Path("big.835").read_bytes()):
    services = batch.tables["services"].to_polars()

Each batch holds the tables and diagnostics of one transaction. Pass by="2100" (or any other loop id) to get one batch per claim instead. Parsing releases the GIL, so several files can be parsed in parallel from threads.

Writing the file back

data = Path("remittance.835").read_bytes()
assert oxedi835.parse(data).document.write() == data

Extending the spec

The structure of the 835 and the columns of each table are defined by a JSON spec. A patch in JSON Merge Patch format (RFC 7386) adapts it to a payer's variations:

spec = oxedi835.Spec.builtin().patch({
    "tables": {"claims": {"columns": {
        "contract_class": {"segment": "REF", "where": {"1": "CE"}, "element": 2}
    }}}
})
result = oxedi835.parse(data, spec=spec)   # claims now has a contract_class column

Objects merge key by key, while arrays are replaced whole: to allow an extra segment in a loop, list the loop's full segments:

{"loops": {"1000A": {"segments": ["N3", "N4", "REF", "PER", "XX"]}}}

parse and stream both accept spec=.

Coming from another library

Coming from edi-835-parser? See the migration guide.

Versioning

The project follows semantic versioning. While the version is 0.x, a minor release may change the API. See the changelog.

License

MIT. See LICENSE and THIRD_PARTY_NOTICES.

Metadata

Release files for oxedi835 0.1.0

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

Source distribution (sdist)

Source distribution for oxedi835 0.1.0
File Size Uploaded
oxedi835-0.1.0.tar.gz 177.0 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for oxedi835 0.1.0
File
oxedi835-0.1.0-cp311-abi3-win_amd64.whl CPython 3.11 abi3 Windows x86-64 Details
oxedi835-0.1.0-cp311-abi3-musllinux_1_2_x86_64.whl CPython 3.11 abi3 Linux musl 1.2+ x86-64 Details
oxedi835-0.1.0-cp311-abi3-manylinux_2_28_x86_64.whl CPython 3.11 abi3 Linux glibc 2.28+ x86-64 Details
oxedi835-0.1.0-cp311-abi3-manylinux_2_28_aarch64.whl CPython 3.11 abi3 Linux glibc 2.28+ ARM64 Details
oxedi835-0.1.0-cp311-abi3-macosx_11_0_arm64.whl CPython 3.11 abi3 macOS 11.0+ ARM64 Details
oxedi835-0.1.0-cp311-abi3-macosx_10_12_x86_64.whl CPython 3.11 abi3 macOS 10.12+ x86-64 Details

Total release size: 5.5 MB

Release files / oxedi835-0.1.0.tar.gz

Download URL oxedi835-0.1.0.tar.gz
Size 177.0 kB
Tags Source
SHA-256 checksum
How to use checksums
021a7b0d3226cd2820d80dd9ede352ff2d485ad158ac672b1ce2bdf781f3a2d2
BLAKE2b-256 checksum
How to use checksums
c026ef3f50f591b4c06f469f856a35806a9e0bb9759640a2b4cc384b17ff140c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 4, 2026.

Transparency log

Release files / oxedi835-0.1.0-cp311-abi3-win_amd64.whl

Download URL oxedi835-0.1.0-cp311-abi3-win_amd64.whl
Size 708.8 kB
Tags CPython 3.11 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
12b4c00eb61f7563a63560e8b1918820518c7bc8da7e9c234ffac3281d65281a
BLAKE2b-256 checksum
How to use checksums
9bf20610e8948e69813cd3f054acbbad14864be5e28da0595650b673a97b9ecb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 4, 2026.

Transparency log

Release files / oxedi835-0.1.0-cp311-abi3-musllinux_1_2_x86_64.whl

Download URL oxedi835-0.1.0-cp311-abi3-musllinux_1_2_x86_64.whl
Size 1.2 MB
Tags CPython 3.11 Linux musl 1.2+ x86-64 abi3
SHA-256 checksum
How to use checksums
405b8ad2bc54e25666513286e391e24b8e8711724997231bd0d1e4af12c2ffd3
BLAKE2b-256 checksum
How to use checksums
5ea0c28f0b6572990e52e9ab5f25a9f6487538202fb1b7b95d81f6d9ca629948
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 4, 2026.

Transparency log

Release files / oxedi835-0.1.0-cp311-abi3-manylinux_2_28_x86_64.whl

Download URL oxedi835-0.1.0-cp311-abi3-manylinux_2_28_x86_64.whl
Size 953.2 kB
Tags CPython 3.11 Linux glibc 2.28+ x86-64 abi3
SHA-256 checksum
How to use checksums
a1003cd37a25ba35ff85f4d2e85cc25c45d7eb7871f72971eab7ce59f7c8efe3
BLAKE2b-256 checksum
How to use checksums
6edda8c8c13d9a01e4c5ea46105967eaf141793e37ae5c0ad4ffddf08b22cabf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 4, 2026.

Transparency log

Release files / oxedi835-0.1.0-cp311-abi3-manylinux_2_28_aarch64.whl

Download URL oxedi835-0.1.0-cp311-abi3-manylinux_2_28_aarch64.whl
Size 912.0 kB
Tags CPython 3.11 Linux glibc 2.28+ ARM64 abi3
SHA-256 checksum
How to use checksums
3f33fef3fdb7d6475352fd0bfbcfdda92316f334c9ada4847cd44fa181b0b2be
BLAKE2b-256 checksum
How to use checksums
174baa906974753de2617c1a89f4288e71ce47a4392713ec149990b0e598f4a8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 4, 2026.

Transparency log

Release files / oxedi835-0.1.0-cp311-abi3-macosx_11_0_arm64.whl

Download URL oxedi835-0.1.0-cp311-abi3-macosx_11_0_arm64.whl
Size 801.6 kB
Tags CPython 3.11 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
24db81e1578e291345354d8daccb7a71e85dc126c2809f461b0b6fdbe54dbde8
BLAKE2b-256 checksum
How to use checksums
9a274697007c42ef5181f220f3ae2a489e84e027d428575b73e031f972b7ddf1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 4, 2026.

Transparency log

Release files / oxedi835-0.1.0-cp311-abi3-macosx_10_12_x86_64.whl

Download URL oxedi835-0.1.0-cp311-abi3-macosx_10_12_x86_64.whl
Size 836.9 kB
Tags CPython 3.11 abi3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
2641684b9dfd53dc95d35281625c5f17817f63cb32f8a68a688339b5603f7ee4
BLAKE2b-256 checksum
How to use checksums
0595f64d12891bee217141b9cfab15c2506469aeba3bfc51f97797f0e453791a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 4, 2026.

Transparency log

Release history Release notifications | RSS feed

0.2.1

7 release files

0.2.0

7 release files

This release

0.1.0 This release

7 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