Tallystick
Deterministic, local-first invoice & e-invoice intelligence. Finance-grade document processing that runs 100% on your machine — no cloud, no API keys, no subscription, no AI hallucinations. Same input, same output, every time.
A tally stick was the original tamper-proof financial record: a notched stick split in two, one half for each party. Verification meant matching the halves. Tallystick does the same for your documents — everything must tally.
What it does
- E-invoice native — reads Factur-X / ZUGFeRD (XML embedded in PDF), UBL 2.1 and UN/CEFACT CII directly: zero OCR, perfect accuracy. Ready for the 2026–2028 global e-invoicing mandates (FR, DE, MY, ID, …).
- Template extraction — digital PDF invoices are extracted with deterministic per-vendor templates (invoice2data format). Teach a vendor once in Teach Studio; every later invoice extracts instantly.
- Finance-grade validation — line math, net+tax=gross reconciliation, duplicate detection, review queue. Nothing silently wrong.
- Automation — watch folder, batch processing, full CLI, local audit trail.
- Export — XLSX, CSV, JSON, QBO (QuickBooks) — plus built-in analytics.
Run
python -m venv .venv
.venv\Scripts\python.exe -m pip install -r requirements.txt
.venv\Scripts\python.exe app.py # desktop app
.venv\Scripts\python.exe cli.py --help # headless CLI
CLI
cli.py process <files-or-dir> # extract + validate + store
cli.py export --format xlsx --out invoices.xlsx
cli.py watch <dir> # watch-folder daemon
cli.py stats # vendor/month totals
Sample data
.venv\Scripts\python.exe sampledata/make_einvoice_samples.py
.venv\Scripts\python.exe sampledata/make_pdf_samples.py
.venv\Scripts\python.exe cli.py process sampledata/out
Architecture
engine/einvoice.py Factur-X/ZUGFeRD/UBL/CII parsers (lxml + pikepdf)
engine/extract.py invoice2data template extraction (pdfplumber backend)
engine/teach.py teach-once template drafting (candidates -> YAML)
engine/validate.py arithmetic + consistency checks
engine/exports.py XLSX/CSV/JSON/QBO
store.py SQLite archive + audit trail
ui/ PySide6 "Counting House" interface
All processing is offline. The only optional download is an OCR pack for scanned documents (planned; scans are detected and flagged today).
License note
Built on MIT/BSD/Apache dependencies only (pdfplumber, pypdfium2, invoice2data, pikepdf, lxml, pandas). No AGPL components.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file tallystick_core-1.0.0-py3-none-any.whl.
File metadata
- Download URL: tallystick_core-1.0.0-py3-none-any.whl
- Upload date:
- Size: 64.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
uv/0.11.29 {"installer":{"name":"uv","version":"0.11.29","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
64e4eec57fef6d7ef1d3d9ee84cc6d4570b31bb1868485fba0e3b3a41c39b98e
|
|
| MD5 |
781482d72d301e0359526d8ed6861111
|
|
| BLAKE2b-256 |
dcf6f2b36264e83df499197a6ac07d85bd0d14dbf66b1cf3521f50a8a29c2637
|