OpenFatture
OpenFatture is an agentic, CLI-first workspace for Italian electronic invoicing. Describe the work you need; the assistant coordinates the domain tools and returns an auditable result.
Why
Italian freelancers must issue invoices as FatturaPA XML and deliver them through SDI. The usual answer is a SaaS subscription that owns your client list, your invoices, and your archive. OpenFatture keeps all of it local: your data stays in a database on your machine, the XML is generated and validated offline, and every action is recorded in an event audit trail you can inspect. AI assistance is optional — the domain tools work without it.
Built for one-person businesses and small studios comfortable in a terminal.
Start
# Full stack (AI + RAG + ML + …). Core-only: uv sync
uv sync --all-extras
uv run openfatture init
uv run openfatture status
uv run openfatture assistant "Help me prepare an invoice for a software project"
Optional feature extras: ai, rag, ml, all.
See docs/CONFIGURATION.md.
AI tools default to a read-only allowlist (AI_ENABLED_TOOLS). SDI/PEC send
stays off unless you add send_invoice_to_sdi there, and
AI_TOOLS_REQUIRE_CONFIRMATION (default true) requires an explicit human yes
before any transmit. The model cannot confirm itself. Interactive TTY
sessions may prompt; source="human" with confirmed=True is an API for
human-facing callers. No built-in UI uses that path yet (there is no TUI).
For a terminal conversation:
uv run openfatture interactive start
Public CLI
The supported surface is intentionally small:
initcreates local state and guides setup.assistanthandles business requests in natural language.interactive startopens a conversational session.configreads or updates configuration.statusreports local readiness without mutation.
What it covers
- FatturaPA XML generation and validation
- PEC/SDI delivery and notification processing
- Client, invoice, quote, payment, and batch workflows
- Event audit trail, reports, and hooks
- Optional AI assistance (assistant + domain tools), RAG, and forecasting extras
Status
Version 2.4.0, Python 3.12+ and uv. Credit notes (TD04), real XML
generation, professional PDF templates, and natura/DatiCassaPrevidenziale
support — see docs/STATUS.md,
docs/releases/v2.4.0.md, and
docs/ARCHITECTURE.md.
Explicit non-goal: there is no browser frontend or web application surface, and adding one would be a separate product decision.
Documentation
- Quick start
- Configuration
- Architecture
- AI architecture
- AI-era redesign
- Current status
- Contributing
- Changelog
Development
uv sync --all-extras
uv run python -m pytest -q
uv run ruff check .
uv run ruff format --check .
uv run mypy openfatture/
OpenFatture is released under the MIT License.
Metadata
Release files for openfatture 2.4.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| openfatture-2.4.0.tar.gz | 824.5 kB | Without provenance | Details for openfatture-2.4.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| openfatture-2.4.0-py3-none-any.whl | Python 3 | none | any | Details for openfatture-2.4.0-py3-none-any.whl |
Total release size: 1.6 MB
Release files / openfatture-2.4.0.tar.gz
| Download URL | openfatture-2.4.0.tar.gz |
|---|---|
| Size | 824.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
54e2a5752c578c72cf8025223846fca3da7b6fceddf8bc6280d3c3041716eede
|
|
BLAKE2b-256 checksum How to use checksums |
6d4ce89399e7e3d84eae48b625306af14d4e438ffb10e3f325609b3162d7e0cd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.13
|
Release files / openfatture-2.4.0-py3-none-any.whl
| Download URL | openfatture-2.4.0-py3-none-any.whl |
|---|---|
| Size | 728.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
a972579a72acee94ec21a05461f1c225d7e691cb465bf6fb7b720f0ad178bcc8
|
|
BLAKE2b-256 checksum How to use checksums |
ef880873ccec1471cdd18ae7af56476b8efa5d1ff56de1c240824d78ac915500
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.13
|
Security for openfatture 2.4.0
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.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.