Erstellen Sie ein Preisangebot mit Rabatt und Summen
Drei Positionen, ein fester Rabatt und 21 Tage Gültigkeit werden zu einem strukturierten Angebot mit Zeilensummen, Zwischensumme, Rabatt und Endsumme, alles mit Ihrem Währungscode: Geben Sie Leistungen, Mengen und Preise ein. Kostenlos in Ihrem Browser.
- Kostenlos
- Läuft in Ihrem Browser
- Ohne Anmeldung
- Ihre Daten bleiben auf Ihrem Gerät
Im Browser ausführen – kostenlos
Rechenbeispiel
- Rabatt
- 250
- Währung
- usd
- Gültigkeit (Tage)
- 21
- Angebotsreferenz
- Q-2026-104
- Kundenname
- Northwind Studio
- Dokumenttyp
- quote
- Währung
- USD
Verwandeln Sie eine Liste von Leistungen oder Produkten in ein einheitliches, strukturiertes Angebot, ohne Beträge zwischen Rechner und Vorlage zu übertragen. Der Generator berechnet jede Position, die Zwischensumme, einen festen Rabatt und die Endsumme und hält fest, wie viele Tage das Angebot gültig bleibt. Außerdem können Sie Währungscode, Kundenname und Angebotsreferenz angeben.
Bereiten Sie eindeutige Angebotspositionen vor
Legen Sie für jede Leistung oder jedes Produkt, das der Kunde erwägt, einen Datensatz an. Jeder Datensatz benötigt eine Beschreibung und einen Einzelpreis; ohne Mengenangabe wird eins verwendet. Wählen Sie Beschreibungen, die auch außerhalb des Verkaufsgesprächs verständlich bleiben: Benennen Sie Liefergegenstand, Paket, Lizenz oder Arbeitsphase, statt interne Kürzel zu verwenden.
Mengen können physische Einheiten, Abonnementplätze, Beratungstage oder ein anderes einheitliches Maß darstellen. Der Generator multipliziert jeden Einzelpreis mit seiner Menge und rundet den Positionsbetrag auf zwei Dezimalstellen. Preise müssen mindestens null und Mengen positiv sein.
Mit einer kostenlosen Position können Sie eine enthaltene Leistung oder eine Zugabe dokumentieren, ohne die Zwischensumme zu verändern. Alle Positionen verwenden den für das Dokument angegebenen Währungscode. Diese Funktion kennzeichnet Geldbeträge mit diesem Code, führt jedoch keine Währungsumrechnung durch, fügt keine Steuern hinzu und ruft keine Katalogpreise ab.
Geben Sie endgültige, angebotstaugliche Geschäftszahlen ein. Eindeutige Eingaben machen das zurückgegebene Dokument vorhersehbar, prüfbar und für nachgelagerte Automatisierungen geeignet.
Wenden Sie den Rabatt an und prüfen Sie die Summen
Der optionale Rabatt ist ein fester Betrag in derselben Währung wie die Positionen. Wenn Sie ihn weglassen, verwendet der Generator null. Zunächst wird jeder Positionsbetrag berechnet.
Anschließend werden die gerundeten Werte zur Zwischensumme addiert, der Rabatt auf zwei Dezimalstellen gerundet und für die Endsumme abgezogen. Diese Reihenfolge liefert stabile Ergebnisse für Rechnungen, Freigabesysteme und Dokumentgeneratoren, die übliche Währungsgenauigkeit erwarten. Der Rabatt darf weder negativ sein noch die Zwischensumme überschreiten.
Ist er höher, gibt die Anfrage einen Fehler wegen ungültiger Eingabe zurück, statt ein Angebot mit negativer Summe zu erzeugen. Diese Sicherung ist besonders nützlich, wenn Rabatte aus einem CRM-Feld oder einer automatischen Vertriebsregel stammen, die nach Änderungen an Positionen veraltet sein kann. Steuern, Anzahlungen, Zahlungspläne und prozentuale Rabatte gehören bewusst nicht zu dieser Berechnung.
Wandeln Sie prozentuale Aktionen vor dem Aufruf in einen genehmigten Festbetrag um, damit Berechnung und Dokument eindeutig bleiben.
Nutzen Sie das strukturierte Dokument und seine Gültigkeit
Das Ergebnis ist ein strukturiertes Angebot und kein gestaltetes PDF. Es enthält Dokumenttyp, Währung, Gültigkeitsdauer in Kalendertagen, normalisierte Positionen und eine Summenübersicht. Optionale Kunden- und Referenzfelder erscheinen nur, wenn Sie diese angeben.
So bleibt die Ausgabe für Systeme sauber, die zwischen fehlenden und leeren Angaben unterscheiden. Die Gültigkeit beträgt standardmäßig dreißig Tage und lässt sich auf einen Wert zwischen einem und 3,650 Tagen einstellen. Da diese Funktion deterministisch arbeitet und nie die aktuelle Uhrzeit liest, gibt sie die Gültigkeit als Dauer an, statt ein Ausstellungs- oder Ablaufdatum zu erfinden.
Ihr empfangendes System kann diese Dauer beim Versand oder Speichern mit dem tatsächlichen Zeitstempel verbinden. Diese Trennung verhindert unterschiedliche Ergebnisse bei Wiederholungen und ermöglicht zuverlässige Referenztests. Für eine fertig gestaltete Datei übergeben Sie die validierte Struktur an Ihren eigenen Renderer.
Die Funktion stellt keine Netzwerkanfragen, speichert keine Kundendaten und liefert bei derselben Eingabe stets dasselbe Ergebnis.
Anwendungsfälle
Erstellen Sie ein Leistungsangebot
Berechnen Sie Workshops, Umsetzungstage und Supportpakete in einer einheitlichen Übersicht.
Kalkulieren Sie Produktmengen
Überführen Sie Einzelpreise und Mengen vor der Dokumenterstellung in geprüfte Positionsbeträge.
Automatisieren Sie Vertriebsfreigaben
Erzeugen Sie stabile Daten mit Zwischensumme, Nachlass, Endsumme und Gültigkeit für den Freigabeprozess.
Häufige Fragen
Ist der Rabatt ein Prozentsatz?
Nein. Der Rabatt ist ein fester Geldbetrag in der Währung des Angebots.
Was geschieht, wenn der Rabatt die Zwischensumme übersteigt?
Die Anfrage meldet eine ungültige Eingabe und erstellt kein Angebotsdokument.
Berechnet der Generator Steuern?
Nein. Er berechnet nur Positionen, Zwischensumme, festen Rabatt und Endsumme.
Enthält die Gültigkeit ein Ablaufdatum?
Nein. Sie erhalten eine deterministische Anzahl von Tagen, die Ihr System mit dem tatsächlichen Ausstellungsdatum verbindet.
Kann ich eine Leistung ohne Berechnung ins Angebot aufnehmen?
Ja. Eine Position mit dem Preis null dokumentiert eine enthaltene Leistung oder Kulanz, ohne die Zwischensumme zu ändern, und zeigt dem Kunden den vollen Umfang des Angebots.
Verwandte Tools
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/quote-estimate-generate \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"items":[{"description":"Discovery workshop","price":450,"quantity":1},{"description":"Implementation day","price":800,"quantity":3}]}'const res = await fetch("https://api.kit.forhosting.com/doc/quote-estimate-generate", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"items": [
{
"description": "Discovery workshop",
"price": 450,
"quantity": 1
},
{
"description": "Implementation day",
"price": 800,
"quantity": 3
}
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/doc/quote-estimate-generate",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"items": [
{
"description": "Discovery workshop",
"price": 450,
"quantity": 1
},
{
"description": "Implementation day",
"price": 800,
"quantity": 3
}
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/doc/quote-estimate-generate", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"items":[{"description":"Discovery workshop","price":450,"quantity":1},{"description":"Implementation day","price":800,"quantity":3}]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"items":[{"description":"Discovery workshop","price":450,"quantity":1},{"description":"Implementation day","price":800,"quantity":3}]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/doc/quote-estimate-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
{
"items": [
{
"description": "Discovery workshop",
"price": 450,
"quantity": 1
},
{
"description": "Implementation day",
"price": 800,
"quantity": 3
}
]
}Beispiel-Antwort
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "doc.quote_estimate_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. |
Technische Hinweise
Das Ergebnis ist deterministisches JSON für Freigaben, Kundenportale, Dokumentvorlagen, E-Mails oder interne Akten, dessen Berechnungen leicht geprüft werden können.
Wenden Sie den Rabatt an und prüfen Sie die Summen
Vergleichen Sie vor dem Versand die zurückgegebene Zusammenfassung mit der kaufmännischen Freigabe: subtotal zeigt den Wert vor Nachlässen, discount_amount weist den Nachlass klar aus und total nennt den angebotenen Betrag.
Nutzen Sie das strukturierte Dokument und seine Gültigkeit
Verwenden Sie das zurückgegebene JSON direkt in einem Kundenportal, übertragen Sie es in eine Markenvorlage, hängen Sie es an eine Verkaufschance oder leiten Sie es an einen Freigabeprozess weiter.
Technische Fragen
Was kostet eine Anfrage?
Jede Anfrage kostet $0.002.