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.
Metadata
Release files for tallystick-core 1.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| tallystick_core-1.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Release files / tallystick_core-1.0.0-py3-none-any.whl
| Download URL | tallystick_core-1.0.0-py3-none-any.whl |
|---|---|
| Size | 64.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
64e4eec57fef6d7ef1d3d9ee84cc6d4570b31bb1868485fba0e3b3a41c39b98e
|
|
BLAKE2b-256 checksum How to use checksums |
dcf6f2b36264e83df499197a6ac07d85bd0d14dbf66b1cf3521f50a8a29c2637
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is 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}
|