Integration
Formfeed für WooCommerce
WooCommerce führt Ihre Bestellungen: die Produkte, den Versand, die Gebühren, die Gutscheine und die Umsatzsteuer je Satz. Ein Webhook auf Order updated und eine Funktion machen aus jeder fertiggestellten Bestellung eine ZUGFeRD- / Factur-X-E-Rechnung, ein PDF/A-3 mit der Rechnung als XML darin, geprüft, bevor sie Sie erreicht. Im Shop wird kein Plugin installiert, und nichts wird neu berechnet: Die E-Rechnung nennt, was die Bestellung sagt.
Kein Plugin zu installieren: Ein Webhook-Handler und eine Funktion erledigen es heute.
Kostenloser Plan mit 100 Einheiten im Monat, keine Kreditkarte
Ein Webhook, eine Funktion
WooCommerce sendet order.updated bei jeder Änderung einer Bestellung. Der Handler prüft die Signatur, liest die fertiggestellte Bestellung über die REST-API, macht aus ihr den _invoice-Block und rendert ihn mit einer Vorlage, die den Block druckt, etwa dem Beispiel „E-Rechnung“ in der App; die Rendering-ID, die er in die Metadaten der Bestellung schreibt, hält jede spätere Änderung davon ab, eine zweite zu erzeugen. Das Rezept, mit der ganzen Funktion und demselben in n8n, steht in der Dokumentation.
const order = await shop('GET', `orders/${id}`);
if (order.meta_data.some((meta) => meta.key === 'formfeed_render')) return;
const render = await formfeed.renders.create(
{
template: 'e-rechnung',
data: { _invoice: wooToInvoice(order, config) },
post: { einvoice: {} },
filename: `${order.number}.pdf`,
},
{ idempotencyKey: `woocommerce-${id}` },
);
await shop('PUT', `orders/${id}`, {
meta_data: [{ key: 'formfeed_render', value: render.id }],
});Was die Funktion aus der Bestellung übernimmt
- Produkte, Versand und Gebühren als Positionen, je mit ihrer Umsatzsteuer. Ein Gutschein bleibt als Nachlass an seiner Position sichtbar, und eine negative Gebühr ist eine negative Menge.
- Die Umsatzsteuer je Satz, wie die Bestellung sie nennt. Sätze über 0 % sind Kategorie S; ein Satz von 0 % und ein Kunde, den WooCommerce von der Umsatzsteuer befreit, werden die Kategorie, die Sie einmal festlegen, denn diese Wahl treffen Sie und Ihre Steuerberatung.
- Den Gesamtbetrag der Bestellung. Die Positionen mit ihrer Umsatzsteuer müssen ihn ergeben, und eine Bestellung, für die WooCommerce ein Zahlungsdatum hat, steht als bezahlt in der Rechnung.
- Den Käufer aus der Rechnungsadresse, mit der USt-IdNr., die Ihr USt-IdNr.-Plugin in den Metadaten der Bestellung speichert.
Sie lehnt ab, statt zu raten
Zusammengesetzte Steuern, eine Position mit zwei Steuern, ein Satz von 0 % ohne Kategorie und Summen, die um einen Cent abweichen, wie es das Runden der Steuer auf Zwischensummenebene verursachen kann, halten die Funktion mit der Nummer der Bestellung an, statt eine E-Rechnung zu erzeugen, die von der Bestellung abweicht. Die API prüft den Block danach gegen EN 16931, bevor etwas gerendert oder berechnet wird. Lehnt sie einen ab, fehlen Daten in der Bestellung, meist das Land der Rechnungsadresse, und die Ablehnung nennt jedes Feld und die Regel, die es verletzt.
Gut zu wissen, bevor Sie es bauen
- Live-E-Rechnungen setzen den Starter-Plan oder höher voraus. Während Sie bauen, erzeugt ein Test-Schlüssel gültige E-Rechnungen mit der Testmarkierung, im Free-Plan bis zu 20 am Tag.
- Die Bestellnummer ist die Rechnungsnummer, sofern Ihr Shop Rechnungen nicht gesondert nummeriert und seine eigene übergibt.
- Eine Erstattung braucht eine Gutschrift, die die Funktion nicht erzeugt.
- Formfeed erzeugt und prüft die Datei. Sie an Ihren Kunden zu senden und zu archivieren, bleibt bei Ihnen: Formfeed bewahrt die Datei nur für die Aufbewahrungsfrist des Workspace auf (30 Tage im Starter-Plan, ein Jahr im Pro-Plan), nicht für die Jahre, die eine Rechnung aufbewahrt werden muss.