Zum Inhalt springen

Buchhaltungsintegrationen

Das Modul verbindet WooCommerce mit polnischen Fakturierungssystemen: wFirma, Fakturownia und iFirma. Rechnungen werden automatisch gesendet, mit Retry bei API-Fehlern.

SystemAPI-FormatAPI-VersionAuthentifizierung
wFirmaXMLv2API key + API secret
FakturowniaJSONv3API token
iFirmaJSONv1Login + API key (klucz faktur)

Es kann jeweils nur eine Buchhaltungsintegration aktiv sein.

Gehen Sie zu WooCommerce > Ustawienia > Polski PRO > Księgowość.

Waehlen Sie das Buchhaltungssystem und geben Sie die Authentifizierungsdaten ein.

EinstellungBeschreibung
API keyAPI-Schluessel aus dem wFirma-Panel
API secretAPI-Geheimschluessel
Firmen-IDFirmenkennung in wFirma
RechnungsserieNummerierungsserie (z. B. “FV”, “FVS”)
EinstellungBeschreibung
SubdomainSubdomainname (z. B. mojafirma.fakturownia.pl)
API tokenAPI-Token aus den Kontoeinstellungen
Abteilungs-IDOptional - ID der rechnungsausstellenden Abteilung
Rechnungssprachepl oder en
EinstellungBeschreibung
LoginLogin zum iFirma-Konto
Rechnungs-API-SchluesselAPI-Schluessel zum Ausstellen von Rechnungen
Abonnenten-API-SchluesselAbonnenten-API-Schluessel (zum Abrufen von Daten)
EinstellungStandardwertBeschreibung
Automatisches AusstellenJaRechnung automatisch nach Bestellbezahlung ausstellen
Ausloesender StatusprocessingBestellstatus, der die Rechnungserstellung ausloest
DokumenttypMwSt.-RechnungMwSt.-Rechnung, Proforma-Rechnung, Quittung
Zur E-Mail hinzufuegenJaPDF-Rechnung an die Bestell-E-Mail anhaengen
Retry bei FehlerJaBei API-Fehler erneut versuchen
Maximale Versuche5Limit fuer Wiederholungsversuche
  1. WooCommerce-Bestellung wechselt in den Status processing (oder einen anderen konfigurierten)
  2. Das Modul sammelt Bestelldaten und mappt sie auf das Anbieterformat
  3. Daten werden asynchron an die API des Buchhaltungssystems gesendet
  4. Nach erfolgreicher Erstellung wird die Rechnungs-ID in den Bestellmeta gespeichert
  5. Die PDF-Rechnung wird heruntergeladen und an die Kunden-E-Mail angehaengt

Das Modul mappt WooCommerce-Bestelldaten automatisch auf das erforderliche API-Format:

WooCommerce-DatenwFirma (XML)Fakturownia (JSON)iFirma (JSON)
Firmenname<contractor><name>buyer_nameKontrahent.Nazwa
NIP<contractor><nip>buyer_tax_noKontrahent.NIP
Adresse<contractor><street>buyer_streetKontrahent.Ulica
Bestellpositionen<invoicecontents>positionsPozycje
MwSt.-Satz<vat_code>taxStawkaVat
Zahlungsmethode<paymentmethod>payment_typeSposobZaplaty
<api>
<invoices>
<invoice>
<contractor>
<name>Firma Testowa Sp. z o.o.</name>
<nip>1234567890</nip>
<street>ul. Testowa 1</street>
<city>Warszawa</city>
<zip>00-001</zip>
</contractor>
<invoicecontents>
<invoicecontent>
<name>Produkt testowy</name>
<unit>szt.</unit>
<count>2</count>
<price>100.00</price>
<vat_code>23</vat_code>
</invoicecontent>
</invoicecontents>
<paymentmethod>transfer</paymentmethod>
<paymentdate>2026-04-12</paymentdate>
</invoice>
</invoices>
</api>
{
"invoice": {
"kind": "vat",
"number": null,
"buyer_name": "Firma Testowa Sp. z o.o.",
"buyer_tax_no": "1234567890",
"buyer_street": "ul. Testowa 1",
"buyer_city": "Warszawa",
"buyer_post_code": "00-001",
"positions": [
{
"name": "Produkt testowy",
"quantity": 2,
"total_price_gross": "246.00",
"tax": "23"
}
],
"payment_type": "transfer",
"payment_to": "2026-04-12"
}
}

Wenn die API einen Fehler zurueckgibt (HTTP 5xx, Timeout, Verbindungsfehler), plant das Modul automatisch einen erneuten Versuch mit exponentiellem Backoff:

VersuchVerzoegerungZeit seit erstem Versuch
1Sofort0 s
230 s30 s
32 min2 min 30 s
48 min10 min 30 s
532 min42 min 30 s

Die Verzoegerung wird nach der Formel berechnet: delay = base_delay * 2^(attempt - 1), wobei base_delay = 30 Sekunden.

Client-Fehler (HTTP 4xx) werden nicht automatisch wiederholt, da sie auf ein Datenproblem und nicht auf ein API-Problem hinweisen:

  • 400 Bad Request - ungueltige Daten
  • 401 Unauthorized - fehlerhafter API-Token
  • 403 Forbidden - fehlende Berechtigungen
  • 422 Unprocessable Entity - Datenvalidierung

Diese Fehler werden protokolliert und erfordern Eingriff des Administrators.

Rechnungen werden asynchron ueber WC_Action_Scheduler gesendet, was bedeutet, dass der Bestellvorgang nicht blockiert wird. Der Kunde sieht die Bestellbestaetigung sofort, und die Rechnung wird im Hintergrund generiert.

/**
* Akcja wywoływana po pomyślnym wystawieniu faktury.
*
* @param int $order_id ID zamówienia
* @param string $invoice_id ID faktury w systemie księgowym
* @param string $provider Nazwa dostawcy ('wfirma', 'fakturownia', 'ifirma')
*/
do_action('polski_pro/accounting/invoice_created', int $order_id, string $invoice_id, string $provider);

Beispiel - Protokollierung in einem externen System:

add_action('polski_pro/accounting/invoice_created', function (
int $order_id,
string $invoice_id,
string $provider
): void {
error_log(sprintf(
'[Polski PRO] Faktura %s wystawiona w %s dla zamówienia #%d',
$invoice_id,
$provider,
$order_id
));
}, 10, 3);
/**
* Akcja wywoływana po wyczerpaniu prób wysłania faktury.
*
* @param int $order_id ID zamówienia
* @param string $provider Nazwa dostawcy
* @param string $error Komunikat błędu
* @param int $attempts Liczba wykonanych prób
*/
do_action('polski_pro/accounting/invoice_failed', int $order_id, string $provider, string $error, int $attempts);

Beispiel - Administrator benachrichtigen:

add_action('polski_pro/accounting/invoice_failed', function (
int $order_id,
string $provider,
string $error,
int $attempts
): void {
$admin_email = get_option('admin_email');
wp_mail(
$admin_email,
sprintf('Błąd wystawienia faktury - zamówienie #%d', $order_id),
sprintf(
"Nie udało się wystawić faktury w %s po %d próbach.\n\nBłąd: %s\n\nSprawdź zamówienie: %s",
$provider,
$attempts,
$error,
admin_url(sprintf('post.php?post=%d&action=edit', $order_id))
)
);
}, 10, 4);
/**
* Filtruje dane faktury przed wysłaniem do API.
*
* @param array $invoice_data Dane faktury w formacie dostawcy
* @param \WC_Order $order Zamówienie WooCommerce
* @param string $provider Nazwa dostawcy
*/
apply_filters('polski_pro/accounting/invoice_data', array $invoice_data, \WC_Order $order, string $provider): array;

Beispiel - Anmerkungen zur Rechnung hinzufuegen:

add_filter('polski_pro/accounting/invoice_data', function (
array $invoice_data,
\WC_Order $order,
string $provider
): array {
if ($provider === 'fakturownia') {
$invoice_data['invoice']['description'] = sprintf(
'Zamówienie internetowe #%s',
$order->get_order_number()
);
}
return $invoice_data;
}, 10, 3);

Auf der WooCommerce-Bestellliste wird eine Spalte “Rechnung” hinzugefuegt, die Folgendes anzeigt:

  • Gruenes Symbol - Rechnung erfolgreich ausgestellt
  • Gelbes Symbol - wird gesendet / Retry
  • Rotes Symbol - Fehler (klicken fuer Details)
  • Graues Symbol - nicht zutreffend (kein automatisches Ausstellen)

Auf der Bestellbearbeitungsseite kann der Administrator im Panel Rechnung:

  1. Rechnung manuell ausstellen (wenn das automatische Ausstellen fehlgeschlagen ist)
  2. PDF-Rechnung herunterladen
  3. Rechnungsversand wiederholen
  4. Versuchs- und Fehlerprotokoll anzeigen

Rechnung wird nicht automatisch ausgestellt Pruefen Sie, ob der ausloesende Status korrekt ist. Stellen Sie sicher, dass der Action Scheduler funktioniert (WooCommerce > Status > Geplante Aktionen). Pruefen Sie das Fehlerprotokoll unter WooCommerce > Status > Logs.

Fehler “Unauthorized” bei API-Verbindung Ueberpruefen Sie die Authentifizierungsdaten. Bei wFirma pruefen Sie, ob API key und secret vom Hauptkonto (nicht Unterkonto) stammen. Bei Fakturownia stellen Sie sicher, dass die Subdomain korrekt ist.

Doppelte Rechnungen Das Modul schuetzt vor Duplikaten durch Pruefung des Meta _polski_pro_invoice_id vor dem Ausstellen. Wenn Duplikate auftreten, pruefen Sie, ob ein anderes Plugin denselben Bestell-Hook ausloest.

Diese Seite dient ausschließlich zu Informationszwecken und stellt keine Rechtsberatung dar. Konsultieren Sie vor der Umsetzung einen Anwalt. Polski for WooCommerce ist Open-Source-Software (GPLv2) ohne Garantie.