| 开发者 | itdatex |
|---|---|
| 更新时间 | 2026年7月23日 15:29 |
| PHP版本: | 8.1 及以上 |
| WordPress版本: | 7.0 |
| 版权: | GPL-2.0-or-later |
| 版权网址: | 版权信息 |
wp ausrg issue --from=draft.json [--format=cii] for scripted issuingtools/e2e-validate.php) that you can run against a local KoSIT Validator instance to verify this on your own server.
Privacy by design
The free version performs all generation locally on your own server. No invoice data leaves your WordPress installation. There is no telemetry, no automatic update check against a third party, no analytics, no external font or asset loading.
A separate Pro version (sold via wp.itdatex.support, not part of this free plugin) adds optional cloud-assisted features — KoSIT deep validation via API, AI-based KoSIT-error explanations in plain German, e-mail dispatch — and is opt-in only.
GoBD-supporting, not GoBD-certified
The plugin supports GoBD-conformant processes through immutable storage, SHA-256 hash chaining and a complete audit trail. As with any tooling: software cannot be "GoBD-certified" — conformity is a property of your process. Consult your tax advisor.
Sister plugin
If you also need to receive incoming e-invoices, install itdatex E-Invoice Intake alongside this plugin. The two plugins share the same database schema and upload directory, so incoming and outgoing invoices live in the same hash chain. Either plugin works standalone; if both are installed, the order of activation does not matter.
Open source
The full source code is released under GPL-2.0-or-later. You can verify, audit and adapt the plugin yourself. Dependencies (josemmo/einvoicing for UBL, horstoeko/zugferd for CII/ZUGFeRD-PDF, setasign/fpdf for the PDF layout) are vendored with prefixed namespaces so they cannot conflict with other plugins in the same WordPress installation.
/wp-content/plugins/itdatex-e-invoice-output/, or install via the Plugins screen.*_reing_invoices, *_reing_files, *_reing_audit_log) and a protected upload directory under wp-content/uploads/itdatex-e-invoice-{random}/. If the sister plugin "itdatex E-Invoice Intake" is already installed, the existing tables and upload directory are reused — no duplicate storage.
On uninstall, invoice data and files are NOT deleted by default because of statutory retention requirements (8 to 10 years under German tax and commercial law).For B2G invoices to German authorities (Bund, Länder, Kommunen): XRechnung UBL with a Leitweg-ID in the Buyer Reference. For B2B invoices: ZUGFeRD-PDF is the most polite choice — the recipient sees a normal PDF, machine-readable systems extract the XML. CII is useful when the recipient expects the EN 16931 CII payload without a PDF carrier (e.g. via PEPPOL).
In the position editor, set the VAT category to E (exempt — Kleinunternehmer) or AE (reverse charge) and the VAT rate to 0. The plugin generates the correct EN-16931 tax breakdown.
It does not. The field is labelled "Leitweg-ID / Buyer Reference" because BT-10 (BR-DE-15) is XRechnung-mandatory but its content is up to you: in B2G that is the official Leitweg-ID; in B2B you can use a customer- or order-number. The plugin does not validate the format against the Leitweg pattern.
The free version makes no external HTTP calls. All generation, validation and storage happens locally. You can verify this by inspecting the source — the only network code path would be the optional Pro upgrade, which is not part of this free plugin.
Yes. The plugin creates its own tables and upload directory on activation. If you later install the Intake plugin, both plugins share the existing schema — no migration needed.
Every issued file is hashed (SHA-256) and compared against the file table. Re-running the same draft (same numbers, same VAT, same line items) produces an identical XML/PDF byte sequence and triggers a duplicate response with the existing invoice id. This is intentional: invoice numbers should be re-used at the invoice level, not at the file level. To re-issue a corrected version, change at least one byte (e.g. the issue date or the buyer reference).
Yes. The protected upload directory uses both .htaccess (Apache/LiteSpeed) and a randomized directory name so that path guessing fails. File downloads always go through a capability-and-nonce-checked endpoint, never via a direct URL.
wp ausrg issue --from=draft.json --format=ubl|cii|zugferd-pdf reads a JSON draft and runs the same pipeline as the admin form. Useful for migrations from a different billing system. The seller data falls back to the plugin Settings if not present in the JSON.