Universe
Create project in app

TiefLetter is a Typst template for creating professional invoices and offers. It is designed with freelancers in mind and currently supports both English and German output, with Euro as the only supported currency.

It provides a modern and customizable layout, localized text, VAT support, and a payment QR code. TiefLetter is being developed by Lena Tauchner to streamline document generation for small businesses and solo entrepreneurs.

Usage

To use TiefLetter with the Typst web app, choose “Start from template” and select TiefLetter. You will also need to include or install the Cormorant Garamond Fonts.

To import the package manually in your Typst project, use:

#import "@preview/tiefletter:0.1.0": invoice, offer

Alternatively, you can download the lib.typ file and use:

#import "lib.typ": invoice, offer

Invoice Example

#import "@preview/tiefletter:0.1.0": invoice

#invoice(
  invoice-number: "2025-001",
  invoice-date: "07.04.2025",
  seller: (
    name: "Tiefseetauchner",
    address: "Schottenring 12\n1010, Wien",
    uid: "ATUxxxxxxx",
    email: "email-address@example.com",
    tel: "+43 123 456 789",
  ),
  iban: "AT92 1234 1412 1245 3928",
  bic: "XXXXXXXXXXX",
  client: (
    gender-marker: "O",
    full-name: "Muster GesmbH",
    short-name: "Aron Schlosser",
    address: "Liselottenstraße 42c\n6049, Gamsagadorf",
  ),
  items: (
    (quantity: 2, description: "Beispiel 1", unit-price: 400.0),
    (quantity: 1, description: "Beispiel 2", unit-price: 300.0),
    (quantity: 1, description: "Beispiel 3", unit-price: 50.0, vat-rate: 10),
  ),
  payment-due-date: "21.04.2025",
)

Offer Example

#import "@preview/tiefletter:0.1.0": offer

#offer(
  offer-number: "2025-004",
  offer-date: "05.04.2025",
  offer-valid-until: "30.04.2025",
  seller: (
    name: "Tiefseetauchner",
    address: "Schottenring 12\n1010, Wien",
    uid: "ATUxxxxxxx",
    email: "email-address@example.com",
    tel: "+43 123 456 789",
  ),
  client: (
    gender-marker: "F",
    full-name: "Beispiel Kundin",
    short-name: "Maria Musterfrau",
    address: "Beispielstraße 11\n1020, Wien",
  ),
  items: (
    (quantity: 1, description: "Dienstleistung A", unit-price: 500.0),
    (quantity: 2, description: "Beratungseinheit", unit-price: 150.0),
  ),
  offer-text: [Die Dienstleistung A umfasst ......
  
  Außerdem bieten wir eine Beratungseinheit zu ......],
  pre-payment-amount: 20,
)

Configuration Options

Invoice Parameters

invoice-number: none,
invoice-date: none,
seller: (
name: none,
address: none,
uid: none,
tel: none,
email: none,
),
footer-middle: none,
footer-right: none,
banner-image: none,
client: (
gender-marker: none,
full-name: none,
short-name: none,
address: none,
),
items: none,
after-table-text: none,
payment-due-date: none,
iban: none,
bic: none,
lang: "en",

Offer Parameters

offer-number: none,
offer-date: none,
offer-valid-until: none,
seller: (
name: none,
address: none,
uid: none,
tel: none,
email: none,
),
footer-middle: none,
footer-right: none,
banner-image: none,
client: (
gender-marker: none,
full-name: none,
short-name: none,
address: none,
),
items: none,
offer-text: none,
pre-payment-amount: 20,
lang: "en",

License and Contributions

TiefLetter is currently under active development. Feedback, bug reports, and suggestions are welcome. Please open an issue or contribute via pull requests if you have ideas for improvement.

This package is released under the MIT License.