Erstellen Sie einen Beleg mit Einzelposten
Wandeln Sie Kaufdaten in einen einheitlichen Beleg um, ohne Berechnung und Formatierung in jeder Anwendung neu zu entwickeln.
Im Browser ausführen – kostenlos
Geben Sie Händler, mindestens einen Posten und Zahlungsart an. Der Generator berechnet Zwischensummen, Steuern und Gesamtbetrag und vergibt eine stabile Nummer. Das JSON lässt sich speichern, anzeigen, einem Auftrag zuordnen oder an einen Dokumentenprozess übergeben.
Bereiten Sie vollständige Belegdaten vor
Tragen Sie den Händlernamen genau wie gewünscht ein und erfassen Sie jedes Produkt oder jede Leistung einzeln. Jede Zeile benötigt Beschreibung, Menge und Einzelpreis. Dezimalmengen eignen sich für gemessene Waren, Stunden, Gewicht oder Entfernung. Geben Sie einen Steuersatz nur für steuerpflichtige Posten an. Verwenden Sie eine anzeigbare Zahlungsart wie Bargeld, Überweisung oder eine maskierte Karte; vollständige Zugangsdaten gehören nicht hinein. Die Währung ist optional und lautet standardmäßig USD. Kurze Beschreibungen und geschützte Zahlungsangaben ergeben einen lesbaren Datensatz. Mindestens eine Zeile ist erforderlich, denn ein leerer Kauf kann keinen sinnvollen Beleg erzeugen.
Verstehen Sie Berechnung und Nummer
Der Generator wandelt jeden Preis vor der Multiplikation in kleinere Währungseinheiten um und vermeidet so Gleitkommaartefakte. Er rundet jede Zwischensumme und berechnet danach deren Steuer. Die allgemeine Zwischensumme addiert die Zeilen, die Gesamtsteuer deren Steuern und der Endbetrag beide Werte. Der Zahlungsbetrag stimmt stets damit überein. Die Belegnummer wird aus normalisierten Daten abgeleitet; dieselbe Anfrage liefert daher denselben Identifikator. Das unterstützt Wiederholungen und Dublettenerkennung. Die Nummer ersetzt jedoch keine amtliche Steuerfolge, behördliche Genehmigung oder gesetzlich vorgeschriebene Buchungsnummer.
Nutzen Sie das strukturierte Dokument
Die Antwort trennt Identität, Händler, berechnete Zeilen, Zahlung und Summen. Damit können Sie einen druckbaren Beleg darstellen, einen normierten Kauf archivieren, eine E-Mail füllen oder einen PDF-Generator speisen. Speichern Sie Antwort und ursprüngliche Anfrage gemeinsam, um Abstimmungen zu erleichtern. Die stabile Nummer ist eine praktische Referenz; Ihre Datenbank muss dennoch eigene Regeln durchsetzen. Unvollständige Eingaben werden ausdrücklich abgelehnt und nicht still ergänzt. Netzwerk, Speicherung, aktuelles Datum und Zufall werden nicht verwendet, sodass Ergebnisse wiederholbar bleiben. Jede Anfrage kostet $0.002 und eignet sich für kleine Transaktionsabläufe mit vorhersehbaren Belegdaten.
Anwendungsfälle
Bestellbeleg erstellen
Wandeln Sie Posten und eine maskierte Zahlungsangabe in einen einheitlichen Datensatz um.
Daten für PDF vorbereiten
Berechnen Sie verlässliche Zeilen und Summen vor der Übergabe an einen PDF-Renderer.
Manuelle Verkäufe normieren
Überführen Sie Kassen- oder Verwaltungsdaten in ein berechenbares Schema für Abgleich und Support.
Häufige Fragen
Was kostet die Nutzung?
Jede API-Anfrage kostet $0.002.
Kann ich einen Beleg ohne Posten erstellen?
Nein. Mindestens eine Zeile ist erforderlich; eine leere Liste führt zu einem Eingabefehler.
Wie werden Steuern berechnet?
Die Steuer wird je Zeile aus der gerundeten Zwischensumme berechnet und anschließend addiert.
Ist die Belegnummer zufällig?
Nein. Sie wird aus normalisierten Daten abgeleitet; identische Eingaben liefern dieselbe Nummer.
Ist dies eine rechtsgültige Steuerrechnung?
Nein. Für örtliche Nummerierungs- und Aufzeichnungspflichten sind Sie selbst verantwortlich.
Für Entwickler — API-Zugang
Alles auf dieser Seite ist auch per API verfügbar. Dieser Abschnitt richtet sich an Teams, die es in ihre eigenen Systeme einbinden möchten; alle anderen nutzen einfach das Tool oben.
Endpunkt
Authentifizierung per Bearer-Token. Ein einziger POST stellt die Aufgabe in die Warteschlange; das Ergebnis erhalten Sie per Webhook oder über einen signierten Link.
Aufruf aus Ihrem Stack
curl -X POST https://api.kit.forhosting.com/doc/receipt-generate \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"merchant_name":"Northwind Coffee","line_items":[{"description":"Cappuccino","quantity":2,"unit_price":4.5,"tax_rate":8.25},{"description":"Blueberry muffin","quantity":1,"unit_price":3.25}],"payment_method":"Visa ending 4242"}'const res = await fetch("https://api.kit.forhosting.com/doc/receipt-generate", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"merchant_name": "Northwind Coffee",
"line_items": [
{
"description": "Cappuccino",
"quantity": 2,
"unit_price": 4.5,
"tax_rate": 8.25
},
{
"description": "Blueberry muffin",
"quantity": 1,
"unit_price": 3.25
}
],
"payment_method": "Visa ending 4242"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/doc/receipt-generate",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"merchant_name": "Northwind Coffee",
"line_items": [
{
"description": "Cappuccino",
"quantity": 2,
"unit_price": 4.5,
"tax_rate": 8.25
},
{
"description": "Blueberry muffin",
"quantity": 1,
"unit_price": 3.25
}
],
"payment_method": "Visa ending 4242"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/doc/receipt-generate", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"merchant_name":"Northwind Coffee","line_items":[{"description":"Cappuccino","quantity":2,"unit_price":4.5,"tax_rate":8.25},{"description":"Blueberry muffin","quantity":1,"unit_price":3.25}],"payment_method":"Visa ending 4242"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"merchant_name":"Northwind Coffee","line_items":[{"description":"Cappuccino","quantity":2,"unit_price":4.5,"tax_rate":8.25},{"description":"Blueberry muffin","quantity":1,"unit_price":3.25}],"payment_method":"Visa ending 4242"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/doc/receipt-generate", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Beispiel-Anfrage
{
"merchant_name": "Northwind Coffee",
"line_items": [
{
"description": "Cappuccino",
"quantity": 2,
"unit_price": 4.5,
"tax_rate": 8.25
},
{
"description": "Blueberry muffin",
"quantity": 1,
"unit_price": 3.25
}
],
"payment_method": "Visa ending 4242"
}Beispiel-Antwort
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "doc.receipt_generate",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}Die API arbeitet asynchron: Sie erhalten sofort eine task_id. Polling ist mit 1 Anfrage pro Sekunde erlaubt.
Preis
Der Preis steht auf der Seite – keine Tokens, keine Credits. Fehlgeschlagene Aufgaben werden nicht berechnet.
Limits
max_mb | 25 |
max_pages | 200 |
Fehler
| HTTP | Code | Bedeutung |
|---|---|---|
401 | unauthorized | Der API-Schlüssel fehlt oder ist ungültig – prüfen Sie den Authorization-Header (Bearer). |
402 | insufficient_balance | Ihr Guthaben reicht für diese Aufgabe nicht aus – Aufladungen verfallen nicht. |
404 | unknown_type | Unbekannter Aufgabentyp – prüfen Sie das Feld „type“ gegen den Katalog. |
429 | rate_limited | Zu viele Anfragen – warten Sie kurz; Polling ist mit 1 Anfrage pro Sekunde erlaubt. |