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.1.tar.gz (873.7 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.1-py3-none-any.whl (143.3 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: finanzonline_uid-2.7.1.tar.gz
  • Upload date:
  • Size: 873.7 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.1.tar.gz
Algorithm Hash digest
SHA256 261da129f2a82600679c3dd8838f1c124339fc41156f3ebc215d24d37962ada7
MD5 be71129ea9f3f4c8d219684db42ff1af
BLAKE2b-256 350fbf52031dbd6ca97ff5221825679e3d780f7df0b5aceb8bf4d3c080526d02

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for finanzonline_uid-2.7.1-py3-none-any.whl
Algorithm Hash digest
SHA256 4fbc3e3faa62e36e4bf277f9f88e3beb968dd32f3fe292f9e7e457262d05139e
MD5 d92b5d501058ddc6c16f1237444c8ecb
BLAKE2b-256 438774e96f18e479e38f631e12e2692ffb05efb2094f4ffe09e00e48f71c5204

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