English ·
Deutsch
Private promissory note in 2 minutes as PDF – Free & Open Source loan agreement generator under German law.
DE: Erstelle einen privaten Schuldschein als PDF – kostenlos, anonym, ohne Server.
EN: Create a private promissory note as PDF – free, anonymous, no server.
- Form → live preview → PDF download (100 % client-side)
- No storage, no cookies, no tracking
- Dark/Light mode with toggle (remembered locally)
- German/English switchable
- Automatic due date (contract date + term)
- IBAN plausibility check, amount formatting, amount in words
- Optional: witness, customizable document title, watermark in the PDF
- PDF engine: jsPDF (swappable)
.
├── index.html
├── css/
│ └── styles.css # Styles incl. dark/light
├── js/
│ ├── main.js # App logic & UI (main entry point)
│ ├── jsPdfController.js # PDF generation (jsPDF)
│ └── ValidationController.js # Validations (e.g. IBAN)
└── translations/
├── de-de.js # DE translations (JS, recommended)
├── en-us.js # EN translations (JS, recommended)
├── i18n.js # small i18n loader
├── de.json (optional backup) # JSON only as reference/backup
└── en.json (optional backup)
Note on translations:
Localfile://calls blockfetch()on JSON. Therefore translations are loaded as JS files (de-de.js,en-us.js). JSON files are optionally available as backup/reference.
translations/de-de.js,translations/en-us.jsregister dictionaries underwindow.TRANSLATIONS[locale].translations/i18n.jsprovidesi18n.t('key')andi18n.setLocale('de-DE'|'en-US').- The language is remembered in
localStorage; fallback based onnavigator.language.
This project uses Astro, Tailwind CSS and DaisyUI for all pages. Theming via data-theme.
Please do not add your own dark-mode CSS.
- Open locally:
index.htmlin the browser (no server needed)
(For CORS-free testing the local call is sufficient, since translations are included via JS.) - Fill out the form: mind the required fields
- Check the preview: the right column updates live
- Generate PDF: button "Download PDF"
- Styles:
css/styles.css(colors, spacing, dark/light) - PDF engine:
js/jsPdfController.js(jsPDF swappable) - Translations:
translations/de-de.js/en-us.js(extend/translate keys)
Add a new language:
// translations/fr-fr.js
window.TRANSLATIONS = window.TRANSLATIONS || {};
window.TRANSLATIONS["fr-FR"] = {
/* ... keys like de-DE/en-US ... */
};Then include it in index.html and offer it in the language toggle.
- PDF layout is optimized for "contract" use, but it is not a typesetting system (jsPDF)
- No server-side validation (everything client-side)
- Modern browsers recommended (2020+)
See offene_punkte.md for to-dos/ideas if available.
- No server connection
- No storage, no cookies
- All input stays in the browser (client-side only)
"Schuldschein Generator" is not a registered trademark.
This site is not affiliated with financial service providers, banks, or legal advisors.
Disclaimer: No legal advice. Use at your own risk.
Apache-2.0 © 2025 Michael Blaess
See LICENSE (unchanged) and NOTICE (attribution & notices).
info@schuldschein-generator.de
Repo: https://github.com/michaelblaess/schuldschein-generator
Website: https://schuldschein-generator.de