Skip to main content

Python library and CLI for querying Level 2 UID checks via FinanzOnline Austria

Project description

finanzonline_uid

CI CodeQL License: MIT Open in Codespaces PyPI PyPI - Downloads Code Style: Ruff codecov Maintainability security: bandit

🇬🇧 English version available (README_en.md)

finanzonline_uid ist eine Python-Bibliothek und CLI zur Abfrage von Stufe 2 UID-Prüfungen (Umsatzsteuer-Identifikationsnummer-Verifizierung) über den österreichischen FinanzOnline-Webservice. Stufe-2-Abfragen liefern detaillierte Bestätigungen von EU-Umsatzsteuer-Identifikationsnummern einschließlich des registrierten Firmennamens und der Adresse.

Warum finanzonline_uid?

Die Verifizierung von UID-Nummern über das FinanzOnline-Webportal erfordert Anmeldung, Navigation durch Menüs und manuelle Dateneingabe - mühsam und nicht automatisierbar. Mit finanzonline_uid:

  • Kein Browser erforderlich - läuft vollständig über die Kommandozeile oder per Windows-Icon.
  • Vollständig skriptfähig - Integration in Fakturierungssysteme, Batch-Prozesse oder CI-Pipelines.
  • E-Mail-Benachrichtigungen - automatische Bestätigungs-E-Mails mit Prüfergebnissen.
  • Ergebnis-Caching - Vermeidung redundanter API-Aufrufe durch konfigurierbare Zwischenspeicherung.
  • Ratenlimit-Schutz - integriertes Tracking mit E-Mail-Warnungen bei Annäherung an Limits.
  • Einfache Bedienung - einfach die zu prüfende UID übergeben und sofort Ergebnisse erhalten.
  • FREIE SOFTWARE - diese Software ist und bleibt kostenlos. Bei Bedarf an Installation oder Support kann dieser beim Autor gebucht werden.

Funktionen:

  • Abfrage von FinanzOnline für Stufe-2-UID-Verifizierung
  • CLI-Einstiegspunkt mit rich-click (rich-Ausgabe + click-Ergonomie)
  • Automatische E-Mail-Benachrichtigungen mit HTML-Formatierung (standardmäßig aktiviert)
  • Mehrsprachige Unterstützung - Englisch, Deutsch, Spanisch, Französisch, Russisch
  • Menschenlesbare und JSON-Ausgabeformate
  • Dateiausgabe - gültige Ergebnisse als Textdateien speichern (--outputdir)
  • Ergebnis-Caching mit konfigurierbarer TTL (Standard: 48 Stunden)
  • Ratenlimit-Tracking mit Warn-E-Mails
  • UID-Eingabe-Bereinigung - automatische Entfernung von Copy-Paste-Artefakten (Leerzeichen, unsichtbare Zeichen)
  • Wiederholungsmodus - automatische Wiederholung bei temporären Fehlern mit animiertem Countdown
  • Mehrschichtiges Konfigurationssystem mit lib_layered_config
  • Strukturiertes Logging mit lib_log_rich
  • Exit-Code- und Meldungshelfer durch lib_cli_exit_tools

Zukünftige Entwicklung:

  • in Kürze: Automatischer Download von Bestätigungsdokumenten aus Ihrer FinanzOnline Databox. Dies MÜSSEN Sie derzeit manuell erledigen - siehe Aufbewahrungspflichten
  • benötigen Sie weitere Funktionalität, zögern Sie nicht uns zu kontaktieren.

Beispiel:

# Beispiel: eine UID verifizieren
finanzonline_uid check DE123456789

Fair-Use-Richtlinie

Wie sollte der UID-Verifizierungsdienst richtig verwendet werden?

UID-Verifizierungen sollten nur zum Zeitpunkt der innergemeinschaftlichen steuerfreien Lieferungen oder sonstigen Leistungen an Kunden in anderen EU-Mitgliedstaaten angefordert werden - nicht im Voraus oder in großen Mengen. Das dauerhafte Abfragen aller UID-Nummern in Ihrer Datenbank stellt keine faire Nutzung dar.

Bitte unterlassen Sie unnötige UID-Verifizierungsanfragen.

BMF-Ratenlimits

Seit 6. April 2023 kann jede UID-Nummer nur zweimal pro Tag pro Teilnehmer über den Webservice abgefragt werden. Überschreitung dieses Limits liefert Code 1513.

Lokales Ratenlimit-Tracking

Dieses Tool enthält integriertes Ratenlimit-Tracking (Standard: 50 Abfragen pro 24 Stunden), das:

  • Warnt, bevor Sie BMF-Limits erreichen
  • E-Mail-Benachrichtigungen bei Überschreitung sendet
  • Erfolgreiche Abfragen werden lokal zwischengespeichert, um versehentliche Limit-Überschreitungen zu vermeiden
  • Abfragen werden NICHT blockiert - das BMF führt die eigentliche Durchsetzung durch

Konfiguration über finanzonline.ratelimit_queries und finanzonline.ratelimit_hours.

FinanzOnline Webservice-Benutzer

WICHTIG: Der Benutzer (BENID) muss in der FinanzOnline-Benutzerverwaltung als Webservice-Benutzer konfiguriert sein.

Häufige Fehler:

  • -4 = Ungültige Zugangsdaten
  • -7 = Benutzer ist kein Webservice-Benutzer
  • -8 = Teilnehmer gesperrt oder nicht für Webservice autorisiert

Bestätigungsdokumente (Aufbewahrungspflichten)

WICHTIG: Das offizielle Bestätigungsdokument wird am folgenden Tag in Ihre FinanzOnline Databox zugestellt.

Dieses Dokument muss gemäß § 132 BAO (Bundesabgabenordnung) ausgedruckt und als Nachweis der UID-Verifizierung aufbewahrt werden.

Der ausgedruckte Beleg dient als offizielle Dokumentation für Steuerprüfungen und muss gemäß den österreichischen Aufbewahrungsvorschriften aufbewahrt werden (üblicherweise 7 Jahre).

Automatischer Download: Die Bestätigungsdokumente können automatisch aus der FinanzOnline Databox heruntergeladen werden mit finanzonline_databox (auch auf PyPI verfügbar).


Inhaltsverzeichnis


Schnellstart

Ihr IT-Personal sollte diese Anwendung problemlos installieren können. Bei Bedarf an Support können Sie den Autor für bezahlten Support kontaktieren.

Empfohlen: Ausführung via uvx für automatisch die neueste Version

UV - der ultraschnelle Installer - geschrieben in Rust (10-20x schneller als pip/poetry)

# Python installieren (erfordert >= **Python 3.10+**)
# UV installieren
pip install --upgrade uv
# Konfigurationsdateien erstellen
uvx finanzonline_uid@latest config-deploy --target user

Erstellen Sie Ihre persönliche Konfigurationsdatei im config.d/-Verzeichnis (Einstellungen werden tief zusammengeführt, sodass Updates der Standardkonfigurationen Ihre Einstellungen nicht beeinflussen):

# Linux:   ~/.config/finanzonline-uid/config.d/99-myconfig.toml
# macOS:   ~/Library/Application Support/bitranox/FinanzOnline UID/config.d/99-myconfig.toml
# Windows: %APPDATA%\bitranox\FinanzOnline UID\config.d\99-myconfig.toml
# 99-myconfig.toml - Ihre persönlichen Einstellungen
[finanzonline]
tid = "123456789"           # Teilnehmer-ID
benid = "WEBUSER"           # Benutzer-ID - muss Webservice-Benutzer sein!
pin = "yourpassword"        # Passwort/PIN
uid_tn = "ATU12345678"      # Ihre österreichische UID (muss mit "ATU" beginnen)
herstellerid = "ATU12345678" # Software-Hersteller UID (Ihre österreichische UID eintragen)
default_recipients = ["buchhaltung@ihre-firma.at"]

[email]
smtp_hosts = ["smtp.beispiel.at:587"]
from_address = "uidcheck@ihre-firma.at"
# Neueste Version ohne weitere Installation starten
uvx finanzonline_uid@latest check DE123456789

Für alternative Installationswege (pip, pipx, uvx, Source-Builds) siehe INSTALL_de.md.


Verwendung

# Prüfung per Kommandozeile
uvx finanzonline_uid@latest check NL123456789

# Interaktive Prüfung (fragt nach der zu prüfenden UID):
uvx finanzonline_uid@latest check --interactive

# Wiederholungsmodus: bei temporären Fehlern alle 5 Minuten wiederholen
uvx finanzonline_uid@latest check --interactive --retryminutes 5

Die Ergebnisse werden angezeigt und eine E-Mail mit den Ergebnissen wird an die konfigurierten E-Mail-Adressen gesendet.

UID-Eingabe-Bereinigung

UID-Nummern werden automatisch von Copy-Paste-Artefakten bereinigt:

  • Leerzeichen, Tabs und Zeilenumbrüche werden entfernt
  • Unsichtbare Zeichen (Zero-Width-Spaces, BOM) werden entfernt
  • Automatische Umwandlung in Großbuchstaben

Beispiel: " de 123 456 789 " wird zu "DE123456789"

Wiederholungsmodus

Mit --retryminutes können Sie bei temporären Fehlern (Netzwerk, Rate-Limit) automatisch wiederholen lassen:

# Alle 5 Minuten wiederholen bis Erfolg oder Abbruch mit Ctrl+C
finanzonline-uid check --interactive --retryminutes 5
  • Animierter Countdown zeigt Zeit bis zum nächsten Versuch
  • E-Mail wird nur bei Erfolg oder endgültigem Fehler gesendet
  • Bei dauerhaften Fehlern (ungültige UID, Authentifizierung) wird sofort abgebrochen

BMF-Rückgabecodes

Eine vollständige Liste aller BMF-Rückgabecodes finden Sie in der Rückgabecode-Referenz (RETURNCODES_de.md).


Weitere Dokumentation

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

finanzonline_uid-2.7.2.tar.gz (874.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

finanzonline_uid-2.7.2-py3-none-any.whl (143.9 kB view details)

Uploaded Python 3

File details

Details for the file finanzonline_uid-2.7.2.tar.gz.

File metadata

  • Download URL: finanzonline_uid-2.7.2.tar.gz
  • Upload date:
  • Size: 874.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for finanzonline_uid-2.7.2.tar.gz
Algorithm Hash digest
SHA256 99d289269f8c4947c2e2e76b7c8197e7cfb2fbf7b56e63328ecf1da9186b6a96
MD5 e755d233e8205d1b2def321383fc25ef
BLAKE2b-256 f9092ec14ef2cd7378b47f45eeb712aa2e4c24818c311c83116c377d1e31b39b

See more details on using hashes here.

File details

Details for the file finanzonline_uid-2.7.2-py3-none-any.whl.

File metadata

File hashes

Hashes for finanzonline_uid-2.7.2-py3-none-any.whl
Algorithm Hash digest
SHA256 6e50b8c57b0922b2b4f23bce9b6d29f446540a7c955c5af6f48be6b7be10781c
MD5 1a1417f47f2cbec9418fca7e09573a16
BLAKE2b-256 e032f2f350f47a129f5b77a4f37162c690a4fde81fe07944c34428ca74626e0f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page