Zum Inhalt springen
Rechnungskit
E-Rechnung Software · made in Germany

Rechnungen für deine Lovable-App

Lovable baut deine App und wickelt Zahlungen über Stripe Checkout ab, erstellt aber keine rechtssichere E-Rechnung. Rechnungskit schließt diese Lücke: In einer Edge Function deiner App, etwa der, die den Stripe-Checkout startet, schickst du die Bestellung mit einem API-Aufruf an Rechnungskit. Die Zahlung holt sich Rechnungskit aus deinem verbundenen Stripe-Konto. Sobald sie zur Bestellung passt, entsteht automatisch eine GoBD-konforme ZUGFeRD-Rechnung nach EN 16931 mit deinem Nummernkreis, DATEV-Export und Archiv.

Ein API-Aufruf aus einer Edge Function deiner App, und aus jedem Verkauf deiner Lovable-App wird eine konforme E-Rechnung mit DATEV-Export, ohne dass du Buchhaltungslogik selbst baust.

Keine Kreditkarte · Anbindung in unter einer Stunde · persönliches Onboarding
Deine Lovable-App
Espresso-Set Stripe Checkout · bezahlt
49,00 €
POST /v1/orders
RE-2026-0517 E-Rechnung erzeugt
Espresso-Set 41,18 €
Leistungsdatum = Versandtag · zzgl. 19 % USt
ZUGFeRD nach EN 16931 · GoBD-archiviert
Versanddatum aus /v1/fulfillments (§ 13 UStG)
DATEV-Export · Steuersatz je EU-Land
Die Lücke

Rechnungen schreiben ist einfach. Rechtssicher schreiben nicht.

Der Unterschied zwischen einem PDF und einer konformen E-Rechnung entscheidet bei der nächsten Steuerprüfung. Rechnungskit schließt genau diese Lücke.

Ohne RechnungskitMit Rechnungskit
Lovable erzeugt die Stripe-Zahlung, aber nur eine Bestätigung, keine Rechnung ein API-Aufruf in der Edge Function, die Rechnung entsteht automatisch
E-Rechnung nach EN 16931, GoBD-Archiv und Umsatzsteuerlogik fehlen komplett jede Zahlung wird zur ZUGFeRD-Rechnung mit deinem eigenen Nummernkreis
deutsche Steuersätze je Land und Reverse Charge müsstest du selbst bauen Steuersatz je Land, OSS für B2C und Reverse Charge für B2B automatisch
kein fertiger DATEV-Export für deine Steuerkanzlei GoBD-Archiv und fertiger DATEV-Export, ohne eigene Buchhaltungslogik
So funktioniert es

In vier Schritten zur konformen E-Rechnung.

  1. 01
    API-Schlüssel anlegen
    In Rechnungskit unter Verbindungen → API erstellst du einen Schlüssel mit der Berechtigung orders:write (und invoices:read, wenn du die fertige Rechnung abrufen willst). Zum Testen nimmst du einen rk_test_-Schlüssel, der Code bleibt später identisch. Den Schlüssel legst du in Lovable unter Cloud, Secrets ab (mit eigenem Supabase-Projekt in dessen Edge-Function-Secrets), nie im Frontend.
  2. 02
    Stripe einmal verbinden
    Deine Lovable-App nutzt bereits deinen eigenen Stripe-Account. Denselben Account verbindest du einmalig in Rechnungskit unter Verbindungen → Connect und stellst als Verkaufsgrundlage deine API-Bestellungen ein. So weiß Rechnungskit, dass die Stripe-Zahlung zu deiner per API gemeldeten Bestellung gehört. Diesen Schritt macht kein Code, er läuft einmal im Dashboard.
  3. 03
    Bestellung aus der Edge Function melden
    Lovable baut den Stripe-Checkout mit Edge Functions, standardmäßig ohne Webhook. Den Aufruf an POST /v1/orders mit Käuferadresse und Positionen in ganzzahligen Cent ergänzt du entweder in der Funktion, die den Checkout startet (dann gehört deine Bestellnummer in die Metadaten der Zahlung), oder nach der Zahlung mit der Stripe-Zahlungsreferenz (payment_intent). Der Schlüssel bleibt serverseitig, der Aufruf ist ein einzelner fetch.
  4. 04
    Rechnung entsteht automatisch
    Sobald die Stripe-Zahlung bei Rechnungskit eintrifft und zur gemeldeten Bestellung passt, entsteht die E-Rechnung: geprüft nach EN 16931, mit korrektem Steuersatz, GoBD-archiviert und fertig für den DATEV-Export. Bei physischer Ware meldest du zusätzlich den Versand über POST /v1/fulfillments, damit das Leistungsdatum stimmt; bei digitalen Produkten entfällt das. Über GET /v1/orders/{orderNo} holst du dir bei Bedarf die fertige Rechnung samt PDF und XML in deine App zurück.

Lovable baut die App, aber nicht die Rechnung

Mit Lovable baust du in Stunden einen Shop oder eine SaaS und schaltest über Stripe Checkout Zahlungen frei (Lovable-Doku zur Stripe-Integration). Was danach fehlt, merkst du erst, wenn das Finanzamt oder deine Steuerkanzlei fragt: Lovable erzeugt eine Zahlung, aber keine Rechnung im deutschen Rechtssinn. Kein strukturierter Beleg nach EN 16931, kein GoBD-Archiv, keine Umsatzsteuerlogik nach Land, kein DATEV-Export. Das alles selbst in deiner App nachzubauen, ist genau die Arbeit, die man mit einem KI-Baukasten eigentlich vermeiden wollte.

Genau diese Lücke schließt Rechnungskit, und zwar dort, wo deine App den Kauf ohnehin verarbeitet: in einer Edge Function. Ein API-Aufruf meldet die Bestellung, die Zahlung kommt aus deinem verbundenen Stripe-Konto, und aus dem Verkauf wird eine ZUGFeRD-Rechnung mit deinem Nummernkreis, revisionssicher archiviert und fertig für die DATEV-Buchung.

Warum das mit Lovable gut zusammenpasst

Eine Lovable-App bringt schon mit, was die Anbindung braucht. Standardmäßig läuft sie auf dem eingebauten Backend Lovable Cloud mit Edge Functions und Secrets, wahlweise auf einem eigenen Supabase-Projekt (Lovable-Doku). Über Edge Functions ruft man eine externe API sauber auf: nicht aus dem Browser, sondern serverseitig, mit dem Schlüssel in den Secrets. Auch Lovables Stripe-Integration nutzt sie (Lovable-Doku).

Einen Webhook richtet Lovable dabei standardmäßig nicht ein. Deine App fragt den Zahlungsstatus direkt bei Stripe ab. Für Rechnungskit ist das kein Problem, denn die Zahlung holt sich Rechnungskit über dein verbundenes Stripe-Konto selbst. Deine App muss nur die Bestellung melden, und dafür gibt es zwei Stellen:

  • Beim Start des Checkouts. In der Edge Function, die die Checkout-Session anlegt, meldest du die Bestellung mit deiner Bestellnummer und trägst dieselbe Nummer als order_no in payment_intent_data.metadata ein. Bricht der Käufer ab, kommt keine Zahlung, und es entsteht keine Rechnung.
  • Nach der Zahlung. In der Funktion, die den Zahlungsstatus prüft, oder in einem Webhook, wenn du Lovable einen einrichten lässt, meldest du die Bestellung mit der Stripe-Zahlungsreferenz als paymentRef. Läuft diese Funktion nur, wenn der Käufer auf deine Erfolgsseite zurückkehrt, kann eine Bestellung fehlen, wenn er das Fenster vorher schließt. Dann zeigt Rechnungskit die Zahlung als Aufgabe „Zahlung ohne Zuordnung“, und du ordnest sie von Hand zu.

Der Aufruf, den du ergänzt

Das Beispiel zeigt den Weg nach der Zahlung: In der Edge Function, die den bezahlten Stripe-Checkout verarbeitet, kommt ein fetch auf POST /v1/orders dazu. Beträge in ganzzahligen Cent, die Stripe-Zahlungsreferenz als paymentRef, der API-Schlüssel aus den Secrets:

// Edge Function, nach bezahltem Stripe-Checkout (session per Stripe-API abgerufen)
const res = await fetch('https://api.rechnungskit.de/v1/orders', {
  method: 'POST',
  headers: {
    'Authorization': `Bearer ${Deno.env.get('RECHNUNGSKIT_API_KEY')}`,
    'Content-Type': 'application/json',
    'Idempotency-Key': session.id // Stripe-Session-ID: verhindert Doppel-Belege
  },
  body: JSON.stringify({
    orderNo: session.id,
    paymentRef: session.payment_intent, // pi_... aus Stripe
    email: session.customer_details?.email,
    billingAddress: {
      name: session.customer_details?.name,
      country_code: session.customer_details?.address?.country, // Pflicht für die USt
      postal_code: session.customer_details?.address?.postal_code,
      city: session.customer_details?.address?.city,
      street: session.customer_details?.address?.line1
    },
    items: [
      { name: 'Pro-Plan', quantity: 1, unitGrossCents: 2900, taxRate: 19 }
    ]
  })
})

Das war der Code. Die Rechnung selbst entsteht nicht in diesem Aufruf, sondern sobald die Stripe-Zahlung bei Rechnungskit eintrifft und zur Bestellung passt. Ein bezahlt-Feld gibt es bewusst nicht: Den Zahlungsstatus liefert immer dein Zahlungsdienst, nie der Absender. So kann aus einer abgebrochenen Bestellung nie eine echte Rechnung werden.

Woher kommt der API-Schlüssel?

Den Schlüssel erstellst du in Rechnungskit unter Verbindungen → API (direkt unter app.rechnungskit.de/settings/api). Klick auf Schlüssel erstellen, vergib die Berechtigung orders:write (und invoices:read, wenn du fertige Rechnungen zurückholen willst), und du bekommst den vollständigen Schlüssel genau einmal angezeigt. Zum Ausprobieren nimmst du einen rk_test_-Schlüssel, für den Echtbetrieb rk_live_. Den Wert legst du in Lovable unter Cloud, Secrets ab (zum Beispiel als RECHNUNGSKIT_API_KEY), nie im Frontend. In der Edge Function liest du ihn mit Deno.env.get('RECHNUNGSKIT_API_KEY'), genau wie im Beispiel oben.

Verkaufst du physische Ware? Ein Schritt mehr

Bei rein digitalen Produkten und SaaS bist du mit dem Aufruf oben fertig: Die Rechnung entsteht, sobald die Zahlung passt. Verschickst du dagegen echte Ware, kommt ein zweiter Aufruf dazu, denn das Leistungsdatum auf der Rechnung ist der Versandtag, nicht der Zahltag: Eine Versendungslieferung ist mit dem Beginn der Versendung ausgeführt (Abschnitt 13.1 Abs. 2 UStAE). Sobald du die Bestellung verschickst, meldest du das mit POST /v1/fulfillments:

// Wenn die Ware rausgeht (z. B. im "als versendet markieren"-Flow deiner App)
await fetch('https://api.rechnungskit.de/v1/fulfillments', {
  method: 'POST',
  headers: {
    'Authorization': `Bearer ${Deno.env.get('RECHNUNGSKIT_API_KEY')}`,
    'Content-Type': 'application/json',
    'Idempotency-Key': `fulfill-${orderNo}`
  },
  body: JSON.stringify({
    orderNo,                       // dieselbe Bestellnummer wie bei /v1/orders
    status: 'fulfilled',
    shippedAt: new Date().toISOString(),
    trackingNumber: 'DHL-1234567'  // optional
  })
})

Beim Anlegen der Bestellung setzt du dafür requiresShipping: true, dann wartet Rechnungskit auf diese Fulfillment-Meldung, bevor die Rechnung mit dem richtigen Leistungsdatum entsteht. Lässt du requiresShipping weg (Standard), gibt es keine Warte-Stufe und du brauchst /v1/fulfillments nie.

Einmalige Einrichtung, ehrlich benannt

Der Code ist einfach, aber ein paar Dinge richtest du einmal ein, sonst wundert man sich, warum keine Rechnung erscheint. Diese Punkte nimmt dir kein fetch ab:

  • Stripe im Dashboard verbinden und auf API stellen. Deinen Stripe-Account verbindest du einmalig in Rechnungskit unter Verbindungen → Connect und wählst als Verkaufsgrundlage deine API-Bestellungen. Erst dann bringt Rechnungskit Zahlung und Bestellung zusammen. Das ist ein Klick-Schritt, kein Code.
  • Länderkürzel mitschicken. Ohne country_code in der Rechnungsadresse lässt sich die Umsatzsteuer nicht bestimmen, und die Bestellung wird abgelehnt. Ein reiner E-Mail-Checkout reicht also nicht.
  • Idempotency-Key setzen. Jeder POST braucht den Header, sonst erzeugt ein doppelter Aufruf (etwa eine neu geladene Erfolgsseite) zwei Bestellungen. Die Stripe-Session-ID ist ein guter Wert.
  • Bei 5xx erneut senden. Deployments verursachen kurze Aussetzer. Wiederhol den Aufruf mit etwas Abstand, dann geht keine Bestellung verloren, während die Zahlung schon da ist.
  • Steuersätze deiner Produkte prüfen. Rechnungskit ordnet neue Produkte automatisch zu, du bestätigst die Zuordnung einmal. Fehlt sie, wird der Beleg zurückgestellt, nicht falsch ausgestellt.

Zeig deiner KI die Doku

Rechnungskit veröffentlicht eine vollständige OpenAPI-3.1-Spezifikation unter api.rechnungskit.de/v1/openapi.json. Du kannst sie der KI in Lovable oder ChatGPT direkt geben mit der Bitte, eine Edge Function zu erzeugen, die zum Stripe-Checkout eine Bestellung an Rechnungskit meldet. Weil die Spezifikation die Pflichtfelder und sogar die Wiederhol-Regel enthält, kommt meist eine korrekte Funktion heraus. Den einen Schritt, den die KI nicht aus dem Code kennt, das Verbinden von Stripe im Dashboard, findest du oben. Die komplette Referenz mit lauffähigen Beispielen steht in der API-Dokumentation. Baust du deine App lieber mit Bolt, Replit oder einem anderen Baukasten? Das funktioniert genauso, siehe Rechnungen für no-code und KI-App-Builder.

FAQ

Häufige Fragen zur E-Rechnung Software

Ja, und zwar auf dem Standardweg. Eine Lovable-App ruft externe APIs nicht direkt aus dem React-Frontend auf (das blockiert der Browser per CORS), sondern über eine Edge Function, die als serverseitiger Proxy dient. Edge Functions gehören zum eingebauten Backend Lovable Cloud, alternativ zu einem eigenen Supabase-Projekt (Lovable-Doku), und auch Lovables Stripe-Integration läuft darüber. Du ergänzt dort einen einzigen fetch-Aufruf an Rechnungskit. Den API-Schlüssel legst du in Lovable unter Cloud, Secrets ab, damit er nie im Browser landet.
Stand:

Rechnungskit ist keine Steuerberatung und keine Rechtsberatung. Dieser Beitrag erklärt allgemeine Zusammenhänge und ersetzt weder die Beratung durch deine Steuerkanzlei (§ 5 StBerG) noch eine Rechtsberatung (§ 3 RDG). Rechnungskit richtet sich an in Deutschland ansässige Unternehmen und bereitet Belege, Steuersätze und Buchungen automatisch auf. Wie dein Einzelfall zu bewerten ist, entscheidest du, im Zweifel gemeinsam mit deiner Steuerkanzlei oder einer Anwaltskanzlei.

Bereit für die E-Rechnungs-Pflicht?

Konto erstellen, Zahlungsquelle verbinden, im kostenlosen Testmodus prüfen. Abgerechnet wird erst ab dem Go-Live.

Jetzt testen
de en