[CH10] Layout mit Schweizer QR-Code (Banana+)
[CH10] Layout mit Schweizer QR-Code (Banana+)Dieses Rechnungsdruck-Layout (genannt CH10) ermöglicht den Druck von kundenspezifischen Rechnungen, inklusive des Drucks des Schweizer QR-Codes, der eine einfache Zahlungsabwicklung und Kontrolle ermöglicht.
- Video-Tutorial: Anpassung von Rechnungen mit Schweizer QR-Code (Layout CH10).
Voraussetzungen
Um diese Erweiterung zu benutzen, müssen Sie Banana Buchhaltung Plus verwenden.
Dieses und alle anderen Layouts können in folgenden Anwendungen genutzt werden:
Wie man den Rechnungsausdruck individuell gestalten kann
Der Rechnungsausdruck kann individuell gestaltet und an die jeweiligen Bedürfnisse angepasst werden.
- Gestaltung des Rechnungsausdrucks - integrierte Fakturierung in die Buchhaltungsdatei
- Gestaltung des Rechnungsausdrucks - mit separater Applikation 'Offerten und Rechnungen'
Individuelle Anpassung und QR-Code-Konfiguration
In den Rechnungseinstellungen können Sie den QR-Code-Druck aktivieren und die Parameter festlegen.
Wichtig: QR-Rechnungen, die mit Banana Buchhaltung+ erstellt wurden, sind nicht mit TWINT kompatibel. Sie können nicht mit TWINT bezahlt werden und es kann kein TWINT QR-Code erzeugt werden.
Anpassung des Rechnungsausdruckes
Das Drucklayout der Rechnung ist bereits eingestellt. Sie können es jedoch nach Belieben anpassen. Sie können den Rechnungsausdruck leicht an Ihre Wünsche anpassen, entscheiden, welche Elemente ausgedruckt werden sollen und die Textbeschreibung ändern.
- Über Dialogfenster Einstellungen können Sie:
- Die Elemente der Rechnung auswählen, welche Sie in den Druck einschliessen möchten.
- Die Rechnungsadresse rechts oder links ausdrucken
- Angeben, welche Detailspalten aufgenommen werden sollen, und die Reihenfolge festlegen. Sie können eine Rechnung mit Mengen und Preisen oder nur mit Gesamtbeträgen oder sogar mit Spalten, die Sie in der Tabelle Buchungen hinzugefügt haben, erstellen.
- Die Standardtexte, die beim Drucken verwendet werden sollen, ändern.
- Übersetzungen in anderen Sprachen hinzufügen
- Die Schriftart des Ausdrucks ändern
- Die gewünschte Farbkombination auswählen
- Rechnungsbeispiele (Anpassungen)
- Hinzufügen eines Logos
- Adresse an anderer Stelle ausdrucken
- Versandadresse ausdrucken
- Hinzufügen von benutzerdefiniertem Text
- Ändern des Spalten-Layouts
- Rechnungen ohne Beträge
- Bild der Produkte ausdrucken
- Andere Beispiele
Individuelle Anpassung durch Programmierung
Layouts können durch Programmierung angepasst und neue Layouts können erstellt werden.
Funktionen, die nur im Advanced-Plan verfügbar sind
Die folgenden Anpassungen sind nur mit dem Advanced-Plan verfügbar.
- Ausdrucken zusätzlicher Spalten der Tabelle Artikel oder der Tabelle Buchungen (Buchhaltung).
- Bild der Artikel ausdrucken
- Benutzerdefinierte Felder des Informationsbereiches (Offerten und Rechnungen) ausdrucken.
- Anpassungen mit CSS-Programmierung.
Einschliesslich (siehe Beispiele):- Schriftart, Position und Farbe von Kopfzeile, Adresse und anderen Rechnungselementen ändern.
- Zeilenabstände ändern
- Unterstreichung der Zeile Totalsumme ändern
- Anpassungen mit Javascript-Programmierung.
Darunter (siehe Beispiele):- Schlusstext oder einen anderen Text aufgrund der Rechnungsdaten ändern
- Unterschiedliche Datumsformate verwenden
- Verschiedene Druckformate verwenden, je nach Art der gedruckten Artikel
- Feldnamen in Titel, Anfangs- und Schlusstext einfügen
- Lieferscheine ausdrucken (erfordert Version 10.1.18)
- Mahnungen/Zahlungserinnerungen ausdrucken (erfordert Version 10.1.18)
Chronologie der Änderungen
Bitte sehen Sie unsere Seite Chronologie der Änderungen (Seite in Englisch).
Einstellungen und Anpassungen des Rechnungsdrucks im CH10-Layout
Bei diesem Layout für den Rechnungsausdruck können Sie die Druckeinstellungen im Dialogfenster Einstellungen ändern. Die Einstellungen sind ähnlich wie beim UNI11-Layout mit der zusätzlichen Option, den Schweizer QR-Code auszudrucken.
Mehr dazu:
- Allgemeine Informationen zur Anpassung des Rechnungsdrucks
- Offerten und Rechnungen
- Rechnungen in der Buchhaltung
Dialogfenster Einstellungen Rechnungen
Sie haben zwei Möglichkeiten, auf das Dialogfenster zur Einstellung der Rechnungsparameter zuzugreifen:
- Im Dialogfenster Rechnungsdruck, Sektion Layout, Schaltfläche Einstellungen
- Klicken Sie in der Seitenansicht auf das Zahnradsymbol (Einstellungen)
Das Dialogfenster besteht aus mehreren Ebenen und Unterebenen, die es Ihnen ermöglichen, in bestimmte Teile der Rechnung einzugreifen:
- Ausdrucken
Die Elemente, aus denen der Ausdruck der Rechnung besteht, mit der Möglichkeit, sie individuell zu gestalten. - Texte
Die Texte in den verschiedenen Sprachen, die für den Ausdruck verwendet werden - QR-Code
Die Einstellungen für den Ausdruck des Schweizer QR-Codes - Schriftarten
Ändern Sie die Schriftart und die Farben - Programmierung (eigene JavaScript/CSS-Dateien)
Dies ist ein noch höherer Grad der Anpassung, erfordert aber Programmierkenntnisse.
Sie können in die verschiedenen Elemente des Ausdrucks eingreifen, indem Sie sie ändern oder ersetzen.
Die Schaltfläche Standardwerte wiederherstellen im Dialogfenster setzt alle Einstellungen auf die Standardwerte zurück.
Bestätigen Sie mit Ok und speichern Sie die eingegebenen Parameter.
Mit dem Befehl Menü > Bearbeiten > Rückgängig können Sie Änderungen an Parametern rückgängig machen und wiederherstellen.
Eigenschaften Ausdrucken
Diese Ebene legt fest, welche Elemente der Rechnung für den Rechnungsdruck einbezogen oder welche ausgeschlossen werden sollen.

Sie ist in mehrere Unterebenen unterteilt, die es ermöglichen, verschiedene Elemente der Rechnung zu verwalten.
Überschrift
Element des Dialogfensters, mit dem Sie die Überschrift im oberen Bereich der Rechnungsseite festlegen können.
- Seitenkopf drucken
Aktivieren Sie das Feld, um die Adresse des Absenders in den Rechnungskopf aufzunehmen.
Die Adresse wird automatisch aus den Basisdaten der Datei übernommen, die unter Datei > Eigenschaften (Stammdaten) > Adresse definiert sind. Der Mehrwertsteuercode ist obligatorisch und muss in das entsprechende Feld (MWST/USt-Nummer) eingegeben werden. - Kopfzeilentext 1 ... Kopfzeilentext 5
Wenn Sie die Basisdaten der Adresse nicht verwenden möchten, können Sie die gewünschten Texte manuell eingeben.
Diese Texte werden in der Überschrift angezeigt und ersetzen alle in den Dateieigenschaften (Menü Datei > Eigenschaften (Stammdaten) > Adresse) definierten Texte.
In diesem Fall wird die Mehrwertsteuernummer nicht automatisch gedruckt. Da sie obligatorisch ist, muss sie manuell in einer der Zeilen hinzugefügt werden. - Logo
Aktivieren Sie diese Option, um das Logo im Rechnungskopf einzufügen.
Das Logo wird unter Menü Datei > Logo einrichten definiert. Dort können Sie auch die Grösse, die Ausrichtung (links, Mitte, rechts) und die Ausrichtung der Adresse am Logo festlegen. - Logo-Name
Geben Sie den Namen der Logo-Anpassung ein, den Sie im Menü Datei > Logo einrichten > Registerkarte 'Anpassung' definiert haben, und achten Sie dabei auf Gross- und Kleinschreibung.
Kundenadresse
Element des Dialogfensters, mit dem bestimmte Parameter für den Druck der Rechnungsadresse eingestellt werden können.
Die Kundenadressen werden aus den Spalten der Tabelle Konten > Ansicht Adresse für die integrierte Rechnungsstellung und aus der Tabelle Kontakte für die Anwendung 'Offerten und Rechnungen' übernommen.
- Absenderadresse (<none>)
Oberhalb der Kundenadresse können Sie eine Zeile einfügen, in der die Absenderadresse angegeben wird, falls ein Briefumschlag mit Fenster verwendet wird.
Lassen Sie das Feld leer, um die unter Menü Datei > Eigenschaften (Stammdaten) > Registerkarte Adresse definierte Adresse zu verwenden.
Löschen Sie den Standardwert <none>, um die unterstrichene Zeile des Absenders oberhalb der Kundenadresse einzuschliessen. - Zusammensetzung der Adresse
Entscheiden Sie, wie die Adresse zusammengesetzt sein soll. Geben Sie hierzu die XML-Namen der Spalten der Adressen in der gewünschten Reihenfolge ein:
für die integrierte Fakturierung Tabelle Konten ( Ansicht Adresse), für die Anwendung Offerten und Rechnungen Tabelle Kontakte.
Jeder Spaltenname muss zwischen den Zeichen "<" und ">" eingefügt werden.
Sie können den XML-Namen jeder Spalte mit dem Befehl Spalten einrichten, Registerkarte Einstellungen anzeigen.
Sie können nur die folgenden Spalten verwenden (andere Spalten können nicht verwendet werden):
Spalte Anrede (XML-Name = NamePrefix)
Spalte Organisation (XML-Name = OrganisationName)
Spalte Vorname (Name XML = FirstName)
Spalte Nachname (Name XML = FamilyName)
Spalte Strasse (Name XML = Street)
Spalte Hausnummer (Name XML = BuildingNumber)
Spalte AdresseExtra (Name XML = AdressExtra)
Spalte Postfach (XML-Name = POBox)
Spalte Postleitzahl (XML-Name = PostalCode)
Spalte Ortschaft (XML-Name = Locality)
Spalte Region (XML-Name = Region)
Spalte Land (XML-Name = Country)
Spalte Ländercode (XML-Name = CountryCode)
Spalte Büro Email (XML-Name = EmailWork)
Beispiele: - Geben Sie den Namen der Firma, Adresse, Postleitzahl und Ort an:
<OrganisationName>
<Street>
<PostalCode> <Locality> - Geben Sie Vorwahl, Vorname, Nachname, Adresse, Postleitzahl und Ort an:
<NamePrefix>
<FirstName> <FamilyName>
<Street>
<PostalCode> <Locality> - Geben Sie eine zusätzliche Adresse, ein Postfach und die Code des Landes an:
<OrganisationName>
<NamePrefix>
<FirstName> <FamilyName>
<Street> <BuildingNumber>
<POBox>
<CountryCode> - <PostalCode> <Locality>
- Adresse linksbündig
Aktivieren Sie diese Option, um die Adresse links auszudrucken. Andernfalls wird sie rechts gedruckt. - Horizontal verschieben +/- (in cm, Voreinstellung 0)
Geben Sie einen Wert in cm ein, um die Kundenadresse nach rechts (positiver Wert) oder links (negativer Wert) zu verschieben. - Vertikal verschieben +/- (in cm, Voreinstellung 0)
Geben Sie einen Wert in cm ein, um die Kundenadresse nach unten (positiver Wert) oder oben (negativer Wert) zu verschieben. - Lieferadresse
Nur für die in die Buchhaltung integrierte Fakturierung verfügbar.
Die Lieferadresse wird ebenfalls gedruckt.
Die Lieferadresse wird mit dem Code :sadr in der Spalte BelegTyp der Tabelle Buchungen erfasst, um die Lieferadresse zu definieren.
Informationen
Dieses Element des Dialogs erlaubt festzulegen, welche Elemente der Rechnung für den Rechnungsdruck einbezogen und welche ausgeschlossen werden sollen (oben links):
Integrierte Fakturierung
- Rechnungsnummer / Gutschrift
Angegeben in der Spalte DocInvoice der Tabelle Buchungen - Rechnungsdatum
Wird in der Spalte Datum der Tabelle Buchungen erfasst. - Bestellnummer
Angegeben in der Spalte BelegTyp der Tabelle Buchungen mit dem Code :ordn - Bestelldatum
Wird in der Spalte BelegTyp der Tabelle Buchungen durch den Code :ordd angegeben. - Kundennummer
Wird in der Rechnungsbuchung in der Tabelle Buchungen angegeben. - Kunden-MWST/USt-Nummer
Diese wird in der Spalte MWST/USt-Nummer der Konten-Tabelle, Ansicht Verschiedene hinterlegt. - Kunden-Steuernummer
Diese wird in der Spalte Steuernummer der Konten-Tabelle, Ansicht Verschiedene angegeben. - Fälligkeit der Rechnung
Die Fälligkeit der Rechnung kann auf verschiedene Arten festgelegt werden. Weitere Informationen finden Sie auf der Seite Fälligkeiten und Zahlungskonditionen. - Seitenzahl
Die Nummer der aktuellen Seite
Applikation Offerten und Rechnungen:
- Nummer der Rechnung / Offerte
Angegeben in der Spalte Id der Tabelle Rechnungen/Offerten - Datum Rechnung
Angegeben in der Spalte Datum der Tabelle Rechnungen / Offerten - Bestellnummer
Angegeben im Feld Bestellnummer im Dialogfenster Rechnung erstellen/bearbeiten - Bestelldatum
Angegeben im Feld Bestelldatum im Dialogfenster Rechnung erstellen/bearbeiten - Kundennummer
Angegeben in der Spalte Kontakt Id der Tabelle Rechnungen / Offerten - Kunden-MWST/USt-Nummer
Angegeben in der Spalte MWST-Nummer der Tabelle Kontakte - Kunden-Steuernummer
Angegeben in der Spalte Steuernummer der Tabelle Kontakte - Fälligkeit der Rechnung
Angegeben in der Spalte Fälligkeit der Tabelle Rechnungen / Offerten.
Die Fälligkeit der Rechnung kann auf verschiedene Arten festgelegt werden. Weitere Informationen finden Sie auf der Seite Zahlungsfrist der Rechnung festlegen. - Seitenzahl
Die Nummer der aktuellen Seite - Benutzerdefinierte Felder
Nur im Advanced-Plan
Alle benutzerdefinierten Felder für zusätzliche Informationen, die in Registerkarte Rechnung im Dialogfenster Rechnung definiert sind, werden hinzugefügt
Rechnungsdetails
Unter Rechnungsdetails verstehen wir die Tabelle mit den Artikeln, Mengen, Preisen und Gesamtbeträgen.
Anpassung Vordefinierte Spalten
Ermöglicht Ihnen, die Spalten auszuwählen, die in den Rechnungsdetails angezeigt werden sollen, und zwar direkt aus einer Liste. Die Liste enthält einige Anpassungen von vordefinierten Spalten, aus denen Sie wählen können. Für einige von ihnen ist der Advanced Plan von Banana Buchhaltung Plus erforderlich.

Wählen Sie eine vordefinierte Spaltenzusammensetzung aus der Liste und bestätigen Sie.
Die Werte der Eigenschaften Spaltennamen, Spaltenbreite, Titelausrichtung, Textausrichtung der Sektion Rechnungsdetails und der Eigenschaft Spaltennamen der Rechnungsdetails der Sektion Texte werden vom Programm automatisch eingestellt.
Verfügbar ab Version 10.0.10.21348 oder neuer von Banana Buchhaltung Plus.
Logik der Spaltenanordnung
Die anzuzeigenden Spalten können auf diese Weise manuell definiert werden:
- In den Spaltennamen geben Sie die XML-Namen der zu druckenden Spalten an
- In den folgenden Feldern werden die Druckeigenschaften der einzelnen Spalten
- Spaltenbreite
- Ausrichtung des Titels
- Textausrichtung
- In Sektion Texte geben Sie die Texte für die Spaltenüberschriften ein.
- Für jede Sprache muss der Text der Überschrift angegeben werden
Wenn Sie eine Standardeinstellung für Spalten wählen, werden alle Elemente automatisch geändert.
Gilt für alle Elemente
- Die Elemente werden durch ";" getrennt und müssen der Anzahl der definierten Spalten entsprechen.
- Wenn eines dieser Elemente leer gelassen wird, werden die Standardwerte übernommen.
Spaltennamen
Geben Sie manuell an, welche Spalten in den Rechnungsdetails angezeigt werden sollen.
Geben Sie die XML-Namen der Spalten der Tabelle Buchungen ein. Sie können den XML-Namen jeder Spalte mit dem Befehl Spalten einrichten, Registerkarte Einstellungen anzeigen. Trennen Sie die Spaltennamen mit einem ";" (Strichpunkt).
Die Standardspalten sind:
- Für in die Buchhaltung integrierte Rechnungen:
- Number (Artikel-ID) Dies gilt sowohl für die Spalte Id der Tabelle Artikel in der Anwendung Offerten und Rechnungen als auch für die Spalte Artikel der Tabelle Buchungen in der integrierten Fakturierung.
- Description
- Quantity
- ReferenceUnit
- UnitPrice
- Amount
- VatRate
- Zusätzlich zur Anwendung Offerten Rechnungen:
- Date
- Discount
Mit dem Advanced-Plan von Banana Buchhaltung Plus können Sie weitere, auch persönlich eingefügte Spalten der Tabellen Buchungen (für die integrierte Fakturierung) und Artikel (integrierte Fakturierung und Applikation 'Offerten und Rechnungen') drucken, die nicht in der vorherigen Liste aufgeführt sind.
- Tabelle Buchungen (Transactions).
- Die zu verwendende Syntax lautet T. NameSpalte
"T." gibt an, dass es sich um eine Spalte der Tabelle Buchungen handelt, "NameSpalte" ist der XML-Name der Spalte (z.B. "T.Notes", "T.DateWork", etc.).
- Die zu verwendende Syntax lautet T. NameSpalte
- Tabelle Artikel (Items)
- Die Syntax ist I.NameSpalte
"I." bedeutet, dass es sich um eine Spalte in der Tabelle Artikel handelt, "NameSpalte" ist der XML-Name der Spalte (z. B. "I.Links", usw.)
- Die Syntax ist I.NameSpalte

Breite der Spalten
Geben Sie die Breite jeder Spalte mit einem Prozentwert an. Jeder Wert gibt an, wie viel Platz eine Spalte im Verhältnis zur Gesamtbreite der Seite einnimmt. Die Summe muss 100% betragen.
Trennen Sie die Spaltenbreiten durch einen ";" (Strichpunkt).
Ausrichtung der Titel
Geben Sie die Ausrichtung des Titels für jede Spalte an.Sie können den Text links ausrichten (left), mittig (center) und rechts (right). Trennen Sie jede Ausrichtung mit einem ";" (Strichpunkt).
Textausrichtung
Geben Sie die Textausrichtung für jede Spalte an. Sie können den Text links ausrichten (left), mittig (center) und rechts (right). Trennen Sie jede Ausrichtung mit einem ";" (Strichpunkt).
Bruttobeträge (einschliesslich Mehrwertsteuer)
Sie können entscheiden, ob Sie Bruttobeträge einschliesslich Mehrwertsteuer oder Nettobeträge ohne Mehrwertsteuer verwenden möchten.
Drucken zusätzlicher Beschreibungen
Nur für die in die Buchhaltung integrierte Rechnungsstellung verfügbar.
Sie können entscheiden, ob Sie zusätzliche Beschreibungen in mehreren Zeilen eingeben möchten.
Erstellen Sie in der Tabelle Buchungen Spalten mit dem Namen Description gefolgt von einer Nummer (z.B. "Description1", "Description2", ...). Die XML-Namen der Spalten müssen unbedingt "Description1", "Description2", usw. lauten.
Der Text jeder Spalte wird in einer neuen Zeile unmittelbar unter der Hauptbeschreibung eingefügt.

Einige Beispiele
Die Spalten Beschreibung, Menge, Einheit, Preis pro Einheit und Betrag einschliessen:
- Description;Quantity;ReferenceUnit;UnitPrice;Amount
50%;10%;10%;15%;15%
center;center;center;center;center
left;center;center;right;right
Schliessen Sie nur die Spalten Beschreibung und Betrag ein:
- Description;Amount
70%;30%
center;right
left;right
Schliessen Sie die Spalten Beschreibung, Anmerkungen und Betrag ein. Anmerkungen ist keine Standardspalte, dem Namen muss ein "T." vorangestellt werden. Erfordert den Advanced-Plan von Banana Buchhaltung Plus.
- Description;T.Notes;Amount
35%;35%;30%
left;left;right
left;left;right
Schliessen Sie die Spalten Beschreibung, Datum Arbeit, Menge, Einheit, Stückpreis und Betrag ein (DateWork ist eine manuell erstellte Spalte, dem Namen muss ein "T" vorangestellt werden). Erfordert den Advanced-Plan von Banana Buchhaltung Plus.
- Description;T.DateWork;Quantity;ReferenceUnit;UnitPrice;Amount
35%;15%;10%;10%;15%;15%
left;center;center;center;right;right
left;center;center;center;right;right
Für die Anwendung Offerten und Rechnungen: Schliessen Sie die Spalten Nummer, Datum, Beschreibung, Menge, Einheit, Preis, Rabatt und Betrag ein.
- Item;Date;Description;Quantity;ReferenceUnit;UnitPrice;Discount;Amount
10%;10%;50%;10%;10%,10%;15%;15%
left;left;left;right;right;right;right;right
left;left;left;right;right;right;right;right
Fusszeile
Element des Dialogfensters, mit dem eine Fusszeile eingefügt werden kann.

- Fusszeile drucken
Hier legen Sie fest, ob die Fusszeile – bestehend aus drei Spalten – in den Ausdruck einbezogen werden soll (siehe Abschnitt "Texteigenschaften" weiter unten).
Wichtiger Hinweis: Die Fusszeile kann nur eingefügt werden, wenn der QR-Code vom Druck ausgeschlossen ist. Wird der QR-Code eingefügt, wird die Fusszeile automatisch vom Druck ausgeschlossen. - Trennlinie drucken
Hier legen Sie fest, ob oberhalb der Fusszeile eine Trennlinie eingefügt werden soll.
Die Fusszeile ist in drei Textblöcke unterteilt, die als drei Spalten angeordnet sind:
- Linker Block, linksbündig
- Zentraler Block, zentriert
- Rechter Block, rechtsbündig
Jeder Block kann eine oder mehrere Textzeilen enthalten. Die Inhalte werden in den Feldern unter Texte > Fusszeilentext links / zentriert / rechts eingegeben.
In den Feldern "Fusszeilentext links" und "Fusszeilentext rechts" sind vordefinierte Texte vorhanden, die Sie jederzeit anpassen können.
Wenn Sie verhindern möchten, dass ein Block gedruckt wird, geben Sie im entsprechenden Feld den Text <none> ein.
Es ist auch möglich, einen einzigen Text über die gesamte Seitenbreite zu drucken. Geben Sie dazu den gewünschten Text im Feld "Fusszeilentext links" ein und setzen Sie <none> in die Felder "Fusszeilentext zentriert" und "Fusszeilentext rechts".
Der Fusszeilenbereich kann mittels JavaScript-Programmierung mit der Funktion hook_print_footer() angepasst werden (erfordert den Advanced-Plan).
Texteigenschaften
Diese Ebene definiert alle Rechnungstexte. Sie sind gruppiert und nach Sprache unterteilt.

Sprachen
Sie können die für jede Sprache zu verwendenden Texte ändern und auch Übersetzungen in andere Sprachen hinzufügen.
Die zu verwendende Sprache wird entsprechend der für den Kunden angegebenen Sprache gewählt:
- Für die integrierte Rechnungsstellung wird sie in der Tabelle Konten, Ansicht Adresse, Spalte Sprache definiert.
- Für die Anwendung Offerten und Rechnungen wird sie in der Tabelle Kontakte, Spalte Sprache definiert.
Wenn für den Kunden keine Sprache angegeben ist, wird die Sprache der Buchhaltung verwendet.
Die Standardsprachen, für die eine vollständige Übersetzung vorliegt, sind Deutsch, Englisch, Französisch und Italienisch.
Die erste Sprache, die im Dialogfenster erscheint, ist immer die aktuelle Sprache der Datei, welche in dieser unter Menü Datei > Eigenschaften (Stammdaten) > Verschiedene definiert wurde. Die übrigen Sprachen sind in alphabetischer Reihenfolge aufgeführt.
Sprachen definieren
- Standardwerte: de;en;fr;it
- Erstellen Sie die Liste der Sprachen mit dem zweistelligen Code:
- de = Deutsch
- en = Englisch
- fr = Französisch
- it = Italienisch
- Die Sprachcodes sind durch Eingabe des Wertes ";" (Strichpunkt) zu trennen.
Sprache hinzufügen
- Geben Sie im Feld Sprachen die Abkürzung der Sprache ein, die Sie hinzufügen möchten.
- Kicken Sie unten auf OK.
- Öffnen Sie erneut das Dialogfenster Einstellungen. Dort gibt es jetzt einen neuen Abschnitt für die von Ihnen hinzugefügte Sprache mit englischen Texten.
- Ersetzen Sie im Abschnitt für die hinzugefügte Sprache die vorhandenen Texte durch die gewünschten in der neuen Sprache.
Sprache entfernen
- Löschen Sie im Feld Sprache den Sprachcode der Sprache, welche Sie zu entfernen wünschen.
- Klicken Sie im Dialogfenster Einstellungen auf OK.
- Bestätigen Sie die Meldung im sich nun öffnenden Dialogfenster mit Ja, um die Sprache und ihre Texte aus der Liste zu entfernen.
- Öffnen Sie erneut das Dialogfenster Einstellungen. Die entfernte Sprach-Sektion ist jetzt nicht mehr vorhanden.
Sektion Texte für jede Sprache
Für jede Sprache ist ein eigener Abschnitt vorhanden, welcher mit dem zweistelligen Sprachcode beginnt. Enthält die Liste der Texte, die Sie bearbeiten können.
Wenn Sie den Inhalt löschen und mit OK bestätigen, wird automatisch der Standardtext wiederverwendet.
- Rechnungsnummer
Text in den Informationen vor der Rechnungsnummer. - Rechnungsdatum
Text in den Informationen vor dem Rechnungsdatum. - Bestellung Rechnung
Text in den Informationen vor der Bestellnummer. - Bestelldatum
Text in den Informationen vor dem Bestelldatum. - Kundennummer
Text in den Informationen vor der Kundennummer. - MWST-Nummer Kunde
Text in den Informationen vor der MWST-Nummer des Kunden. - Steuernummer Kunde
Text in den Informationen vor der Steuernummer des Kunden. - Fälligkeit Rechnung
Text in den Informationen vor dem Fälligkeitsdatum der Rechnung. - Seitennummer
Text in den Informationen vor der Seitennummer. - Lieferadresse
Text in den Informationen über der Lieferadresse. - Rechnungstitel
Fakultativer Text, der vor der Tabelle Details eingefügt wird.
Geben Sie <none> ein, um keinen Text anzuzeigen. - Gutschriftstitel
Fakultativer Text, der vor der Tabelle Details eingefügt wird.
Geben Sie <none> ein, um keinen Text anzuzeigen. - Anfangstext
Fakultativer Text in einer oder mehreren Zeilen, der sofort nach der Rechnungsüberschrift eingefügt wird. - Spaltennamen Rechnungsdetails
Text der Spaltenüberschriften der Rechnungsdetails.
Sie müssen durch einen ';' (Strichpunkt) getrennt werden
Wenn Sie die in der Rechnung anzuzeigenden Spalten ändern (Registerkarte Ausdrucken, Rechnungsdetails, Spaltennamen), müssen Sie immer auch die Texte für die Spaltenüberschriften anpassen. - Gesamtbetrag Rechnung
Text, der in der Zeile der Gesamtsumme der Rechnung erscheint. - Schlusstext
Fakultativer Text, der in einer oder mehreren Zeilen am Ende der Rechnung eingefügt wird.
Dieser Text hat Vorrang vor dem hinzugefügten Text des Dialogfensters Rechnungen ausdrucken > Optionen > Schlusstext. - Fusszeile Text links/mittig/rechts
Der Code <Seite> wird durch die Seitenzahl ersetzt.
Geben Sie <none> ein, um keinen Text anzuzeigen.
Spezifische Texte für den Ausdruck von Proforma-Rechnungen, Offerten, Lieferscheinen, Bestellbestätigungen und Mahnungen (erfordert Advanced-Plan):
- Proforma-Rechnung
- Titel
Fakultativer Text eingegeben vor der Tabelle der Details. Geben Sie <none> ein, um keinen Text anzuzeigen. - Anfangstext
Fakultativer Text auf einer oder mehreren Zeilen, sofort nach der Überschrift der Proforma-Rechnung eingegeben. - Schlusstext
Fakultativer Text auf einer oder mehreren Zeilen, am Ende der Proforma-Rechnung eingegeben.
- Titel
- Offerte
- Nummer
Text in den Informationen vor der Nummer der Offerte. - Datum
Text in den Informationen vor dem Datum der Offerte. - Gültigkeit
Text in den Informationen vor dem Gültigkeitsdatum der Offerte. - Titel
Fakultativer Text eingegeben vor der Tabelle der Details. - Anfangstext
Fakultativer Text auf einer oder mehreren Zeilen, sofort nach der Überschrift der Offerte eingegeben. - Schlusstext
Fakultativer Text auf einer oder mehreren Zeilen, am Ende der Offerte eingegeben.
- Nummer
- Lieferschein
- Lieferscheinnummer
Text in den Informationen vor der Lieferscheinnummer. - Lieferscheindatum
Text in den Informationen vor dem Datum des Lieferscheins. - Titel
Fakultativer Text eingegeben vor der Tabelle der Details. Geben Sie <none> ein, um keinen Text anzuzeigen. - Anfangstext
Fakultativer Text auf einer oder mehreren Zeilen, sofort nach der Überschrift des Lieferscheins eingegeben. - Schlusstext
Fakultativer Text auf einer oder mehreren Zeilen, am Ende des Lieferscheins eingegeben.
- Lieferscheinnummer
- Bestellbestätigung
- Bestellbestätigungsnummer
Text in den Informationen vor der Bestellbestätigungsnummer. - Bestellbestätigungsdatum
Text in den Informationen vor dem Datum des Bestellbestätigung. - Titel.
Fakultativer Text eingegeben vor der Tabelle der Details. Geben Sie <none> ein, um keinen Text anzuzeigen. - Anfangstext
Fakultativer Text auf einer oder mehreren Zeilen, sofort nach der Überschrift. - Schlusstext
Fakultativer Text auf einer oder mehreren Zeilen, am Ende.
- Bestellbestätigungsnummer
- Zahlungserinnerung/Mahnung
- Rechnungsdatum (nur für die in die Buchhaltung integrierte Rechnungsstellung).
Text in den Informationen vor dem Rechnungsdatum.
Wird verwendet, wenn es einen Datensatz mit einem Rückrufdatum gibt, der über den Befehl Berichte > Kunden > Zahlungserinnerungen ausdrucken erstellt wurde. - Datum (nur für die in die Buchhaltung integrierte Rechnungsstellung).
Text in den Informationen vor dem Datum der Zahlungserinnerung.
Wird verwendet, wenn der Datensatz mit dem Rückrufdatum, der mit dem Befehl Berichte > Kunden > Zahlungserinnerungen ausdrucken erstellt wurde. - Fälligkeitsdatum (nur für die in die Buchhaltung integrierte Rechnungsstellung).
Text in den Informationen vor dem Fälligkeitsdatum der Zahlungserinnerung.
Wird verwendet, wenn der Datensatz mit dem Rückrufdatum existiert, der mit dem Befehl Berichte > Kunden > Zahlungserinnerungen ausdrucken erstellt wurde. - Titel
Fakultativer Text eingegeben vor der Tabelle der Details. Geben Sie <none> ein, um keinen Text anzuzeigen. - Anfangstext
Fakultativer Text auf einer oder mehreren Zeilen, sofort nach der Überschrift der Zahlungserinnerung eingegeben. - Schlusstext
Fakultativer Text auf einer oder mehreren Zeilen, am Ende der Zahlungserinnerung eingegeben.
- Rechnungsdatum (nur für die in die Buchhaltung integrierte Rechnungsstellung).
Fettgedruckt
Mit einer speziellen Anmerkung können Sie bestimmte Texte fett markieren. Fügen Sie dazu die gewünschten Texte zwischen zwei Sternchen ** ein.
Anwendbar auf:
- Anfangstext
- Schlusstext
- Beschreibungen der Elemente, die in den Rechnungsdetails erscheinen.
Beispiele:
**text** = Text
**text1 text2**, text3 = Text1 Text2, Text3
Überschrift, Anfangs- und Schlusstext individuell gestalten
Die Daten für die Überschrift, den Anfangs- und Schlusstext werden übernommen und bei jeder neuen Rechnung automatisch eingefügt.
Wenn Sie in diese Texte auch Kundeninformationen (Name, Vorname usw.) oder die Rechnungsnummer einfügen möchten:
- Mit dem Professional-Plan müssen die Daten bei jeder Rechnungserstellung manuell eingegeben werden.
- Mit dem Advanced-Plan können Sie die Dateneingabe für alle Rechnungen automatisieren.
Für die automatische Dateneingabe (nur mit dem Advanced-Plan) müssen Sie die vordefinierten Spalten verwenden, aus denen die Daten entnommen werden:
- Spalten mit Kundenadressen
- In der integrierten Fakturierung, in der Tabelle Konten, Ansicht Adresse
- In der Anwendung Offerten und Rechnungen, in der Tabelle Kontakte
- Spalte Rechnungsnummer
- In der integrierten Fakturierung, in der Tabelle Konten, Spalte Rechnung.
- In der Anwendung Offerten und Rechnungen, in der Tabelle Rechnungen, Spalte Id
In den Texten müssen Sie die folgenden Spalten einfügen, wobei Sie den XML-Namen der Spalten zwischen den Zeichen "<" und ">" angeben.
- Adresse
- <NamePrefix>, <OrganisationName>, <FirstName>, <FamilyName>, <Street>, <BuildingNumber>, <AddressExtra>, <POBox>, <PostalCode>, <Locality>, <Region>, <Country>, <CountryCode>, <EmailWork>.
- Rechnungsnummer
- <DocInvoice>.
In diesem Fall wird DocInvoice sowohl für die integrierte Rechnungsstellung als auch für die Anwendung Offerten und Rechnungen verwendet.
- <DocInvoice>.
Um den XML-Namen der einzelnen Spalten anzuzeigen, verwenden Sie den Befehl Spalten einrichten, Sektion Einstellungen.
Beim Erstellen der Rechnung werden diese Texte durch die tatsächlichen Werte ersetzt.
Beispiele:
- Der Text "Rechnung <DocInvoice>" wird in "Rechnung 10" umgewandelt.
- Der Text "Rechnung <DocInvoice>, <FirstName> <FamilyName>" wird in "Rechnung 10, James Johnson" umgewandelt.
Stil-Eigenschaften
Diese Ebene definiert die Parameter, die das optische Erscheinungsbild der Rechnung beeinflussen, wie Schriftart, Schriftgrösse und Farben.

Schriftart und Schriftgrösse
Die Schriftart und die Schriftgrösse wird für alle Texte der Rechnung verwendet, mit Ausnahme der Überschrift, die eine feste Grösse hat, die nur durch Anpassung der CSS-Programmierung geändert werden kann.
Die Grösse des Titels und der Zeile der Totalsumme wird automatisch entsprechend der gewählten Schriftgrösse angepasst.
Weitere Informationen betreffend verwendbaren Schriftarten und zum Exportieren in PDF finden Sie auf der Seite PDF erstellen.
Farben
Geben Sie die Farben ein, die Sie für Ihren Rechnungsdruck verwenden möchten.
- Textfarbe
Die Farbe, die auf alle Rechnungstexte angewendet wird: Überschrift, Informationen, Adresse, Anfangstext, Rechnungsdetails, Schlusstext, Fusszeile.
Die Farbe des QR-Einzahlungsscheins kann nicht geändert werden. - Hintergrundfarbe Überschrift Details
Die Hauptfarbe der Rechnung. Gilt für: Überschrift Rechnungsdetails, horizontale Linien, Zeile Totalsumme und doppelte Unterstreichung. - Textfarbe Überschrift Details
Die Farbe der Texte in den Überschriften der Spalten der Tabelle Rechnungsdetails. - Hintergrundfarbe für alternierende Zeilen
Die Hintergrundfarbe, die auf die Zeilen der verschiedenen Rechnungspositionen angewendet wird. - Farbe vom Titel und Totalsumme
Die Farbe des Titels und der gesamten Zeile (Text und Unterstreichungen).
Es gibt zwei Möglichkeiten, eine Farbe einzugeben:
- Wählen Sie eine der verfügbaren Farben aus.
- Geben Sie den Hexadezimalcode der Farbe (HEX) ein. Dies ist ein Code, der mit # beginnt, gefolgt von sechs Zeichen (z. B. #000000, #009FE3, #FF00EA).
Farbcodes sind im Internet leicht zu finden. Sie können zum Beispiel die Tabelle unter https://www.w3schools.com/cssref/css_colors.asp einsehen.
Wenn Sie keine Farbe eingeben (Sie lassen das Feld leer), wird die Standardfarbe eingestellt. Dies gilt für jedes Farbfeld. Nützlich, wenn Sie die ursprünglichen Farben wiederherstellen wollen.
Texte der integrierten Fakturierung
In der integrierten Fakturierung können einige Texte auch bei der Erfassung von Rechnungsdaten in der Tabelle Buchungen definiert werden.
- Rechnungstitel / Gutschrift
- Geben Sie in der Spalte BelegTyp den Befehl 10:tit (12:tit für Gutschrift) ein
- Geben Sie den gewünschten Text in der Spalte Beschreibung ein
- Hat Vorrang vor eventuellen Texten, die in den Einstellungen des Rechnungslayouts definiert sind
- Anfangstext
- In der Spalte BelegTyp geben Sie den Befehl 10:beg ein.
- Geben Sie den gewünschten Text in der Spalte Beschreibung ein.
- Es kann nur eine Textzeile eingegeben werden
- Hat Vorrang vor dem Text, der in den Einstellungen für das Rechnungslayout definiert wurde
- Anmerkungen
- In der Spalte BelegTyp geben Sie den Befehl 10:not ein.
- Geben Sie den gewünschten Text in der Spalte Beschreibung ein
- Es können mehrere Zeilen mit Bemerkungen eingegeben werden. Jede Bemerkung muss in einer neuen Zeile in der Tabelle Buchungen definiert werden.
- Grussworte
- In der Spalte BelegTyp geben Sie den Befehl 10:gre
- Geben Sie den gewünschten Text in der Spalte Beschreibung ein
- Es kann nur eine Zeile mit Grussworten eingegeben werden
Priorität Titel und Anfangstext:
| Priorität 1 | Priorität 2 | |
| Rechnung Proforma-Rechnung | Tabelle Buchungen (10:tit / 10:beg) | Dialog Layout-Einstellungen |
| Offerte | Tabelle Buchungen (10:tit / 10:beg) | Dialog Layout-Einstellungen |
| Lieferschein | Dialog Layout-Einstellungen | - |
| Mahnung | Dialog Layout-Einstellungen | - |
Priorität Schlusstext:
| Priorität 1 | Priorität 2 | Priorität 3 | |
| Rechnung Proforma-Rechnung | Tabelle Buchungen (10:not / 10:gre) | Dialog Layout-Einstellungen | Dialog 'Rechnungen ausdrucken' > Registerkarte 'Optionen' |
| Offerte | Tabelle Buchungen (10:not / 10:gre) | Dialog Layout-Einstellungen | - |
| Lieferschein | Dialog Layout-Einstellungen | - | - |
| Mahnung | Dialog Layout-Einstellungen | - | - |
Fehlermeldungen
- @error Die Namen von Text und Spalten stimmen nicht überein.
Die Anzahl der Spalten der Tabelle mit den Rechnungsdetails (Abschnitt Drucken > Rechnungsdetails einschliessen > XML-Spaltennamen) stimmen nicht mit den zu druckenden Texten (Texte > Sprachen > Spaltennamen Rechnungsdetails) überein. Überprüfen und korrigieren Sie bitte die Rechnungseinstellungen.
Personalisierung des QR-Codes im Schweizer Rechnungsausdruck
Diese Seite erklärt, wie der Schweizer QR-Code auf Rechnungen gedruckt wird, und verweist zudem auf technische Informationen zu den Anpassungsmöglichkeiten, zur Verwendung von Adressformaten und weiteren Aspekten.
Für die technischen Spezifikationen wird auf die Seite Normen und Standards des QR-Codes verwiesen.
Bankbewegungen importieren
- Im elektronischen Bankauszug (camt.053 und camt.054) sind die Informationen enthalten, die auf der QR-Rechnung aufgedruckt wurden.
- Mit der Import-Erweiterung Bankauszug Camt ISO 20022 Schweiz (Banana+) liest das Programm diese Daten ein und ergänzt die Buchung automatisch mit dem Kundenkonto und der Rechnungsnummer.
- Im Auszug der offenen Rechnungen sehen Sie, welche Rechnungen bezahlt, noch offen oder nur teilweise beglichen sind.
Abschnitt QR-Code
In den Rechnungseinstellungen gibt es einen speziellen Abschnitt für die Dateneingabe zum Ausdruck des QR-Abschnitts.
- Damit der QR-Code auf der Rechnung erscheint, muss die Option QR-Code drucken aktiviert werden.
Bevor Sie fortfahren, müssen Sie eine sehr wichtige Entscheidung treffen: Das QR-Code-System bietet grundsätzlich zwei Varianten, je nachdem, welche Art von Konto Sie verwenden möchten. Im Feld QR-Referenztyp legen Sie fest, welches System verwendet werden soll.
- QR-Rechnung mit IBAN-Konto (Standardauswahl)
- Sie können sofort mit dem Drucken von QR-Rechnungen beginnen, indem Sie Ihr bestehendes IBAN-Konto verwenden.
- Die Zahlungsdaten werden auf Ihrem normalen IBAN-Kontoauszug zusammen mit allen anderen Bewegungen aufgeführt.
- Für den Datenimport verwenden Sie das Format camt.053.
- QR-Rechnungen mit einem speziellen QR-IBAN-Konto drucken
- Sie müssen bei Ihrer Bank eine spezielle QR-IBAN-Kontonummer beantragen.
- Die Zahlungsdaten werden von der Bank auf dieses spezielle Konto verbucht.
Auf Ihrem normalen IBAN-Konto erscheint lediglich die Buchung des täglich eingegangenen Gesamtbetrags. - Dieses System eignet sich besonders für Personen oder Unternehmen mit vielen Zahlungseingängen, die diese vom regulären IBAN-Konto trennen möchten.
- Es handelt sich um das System, das mit dem früheren ESR-Verfahren kompatibel ist und eine 27-stellige numerische Referenznummer verwendet.
- Die Zahlungsdaten werden von der Bank im Format des elektronischen Kontoauszugs camt.054 zur Verfügung gestellt.
Hinweis: Die folgenden Einstellungen sind unabhängig vom gewählten QR-Referenztyp verfügbar.

Zahlungsempfänger-Adresse ändern
- Adresse "Zahlbar an"
Das Programm übernimmt standardmässig die Adresse des Zahlungsempfängers aus den Adressangaben in den Dateieigenschaften.
Es ist jedoch möglich, eine andere Adresse anzugeben, indem Sie die Felder im Abschnitt Zahlbar an ausfüllen.
Weitere Informationen finden Sie im Abschnitt Technische Informationen.
In der Druckausgabe ein-/ausschliessen
- Zusätzliche Informationen angeben (XML-Spaltenname)
Im Abschnitt "Zusätzliche Informationen" können Sie weitere Angaben zur Rechnung erfassen, die im QR-Zahlteil angezeigt werden.
Im Dialogfenster Rechnungseinstellungen > Abschnitt QR > Zusätzliche Informationen einbeziehen geben Sie den XML-Namen der Spalte an, aus der die zusätzlichen Informationen übernommen werden sollen.
Sehen Sie: Wie man die XML-Namen der Spalte anzeigt.
Sehen Sie: Wie man neue Spalten hinzufügt.
- Integrierte Fakturierung/Rechnungsstellung
Fügen Sie in der Tabelle Buchungen eine neue Spalte hinzu, um die zusätzlichen Informationen einzutragen, oder verwenden Sie eine bestehende Spalte, wie z.B. die Spalte "Bemerkungen".
- Applikation Offerten und Rechnungen
Fügen Sie in der Tabelle Rechnungen eine neue Spalte hinzu, um die zusätzlichen Informationen einzutragen – zum Beispiel eine Spalte mit dem Namen "Info".
Wichtig: Verwenden Sie nicht die Spalte "Bemerkungen", da diese für die Anzeige der Schlusstexte der Rechnung genutzt wird.
- Integrierte Fakturierung/Rechnungsstellung
- Rechnungsinformationen einschliessen (optional)
Automatisch generierte, strukturierte Rechnungsinformationen hinzufügen.
Wenn vorhanden, werden sie nach den zusätzlichen Informationen eingefügt (siehe vorheriger Punkt). - Rechnungsadresse ausschliessen
Die Rechnungsadresse des Kunden ausblenden und ein Feld freilassen, damit die Adresse manuell eingetragen werden kann. - Rechnungsbetrag ausschliessen
Den Rechnungsbetrag ausblenden und ein Feld freilassen, um den Betrag von Hand einzutragen. Zu verwenden, wenn der Kunde den zu zahlenden Betrag selbst wählen kann.
Druckformat QR-Abschnitt
- QR-Code auf neuer Seite drucken
Druckt die Zahlungs- und Empfangsabschnitte der QR-Rechnung auf einer separaten Seite aus.
So bleibt auf der ersten Seite mehr Platz für die Rechnung. - Trennlinie drucken
Druckt eine gestrichelte Trennlinie zur Abgrenzung der Rechnung vom Zahlungs- und Empfangsabschnitt. - Scherensymbol drucken
Druckt ein Scherensymbol an der Trennlinie. - QR-Position X und QR-Position Y (optional)
Ändert die horizontale und vertikale Position des QR-Code-Abschnitts. In der Regel ist es nicht notwendig, die Standardwerte zu ändern.
Weitere Informationen
- Die Adressen, die im Zahlungs- und Empfangsabschnitt erscheinen, müssen folgende Angaben enthalten:
- Vor- und Nachname oder Firmenname (der Firmenname hat Vorrang, wenn beide angegeben sind)
- Strasse und Hausnummer
- Postleitzahl und Ort
- Ländercode (wird nicht auf dem Ausdruck angezeigt, ist aber im QR-Code enthalten).
- Der Ländercode ist ein zweistelliger Code gemäss der ISO-3166-1-Norm (z.B. CH, LI, AT, DE, IT, FR).
- Der Ländercode des Rechnungsabsenders wird im Menü Datei > Eigenschaften (Stammdaten) > Registerkarte Adresse, im Feld "Nation / Code" erfasst.
- Der Ländercode des Kunden wird in der Tabelle Konten, in der Spalte Nation K. (Nationskennzeichen), der Ansicht Adresse eingetragen.
Technische Informationen
Im QR-Code der QR-Rechnung sind die Adressen des Rechnungsausstellers und des Kunden immer vom Adress-Typ strukturiert (S). Dieser Adress-Typ bestimmt, wie die Adressdaten innerhalb des QR-Code-Bildes dargestellt werden.
Die Adresse wird im QR-Zahlteil – sowohl im Empfangsschein als auch im Zahlungsabschnitt – identisch ausgegeben.
Details zur strukturierten Adresse
Die Zeilen der strukturierten Adresse im QR-Code sind wie folgt aufgebaut:
| Position | Element | Informationen |
| Zeile 1 | Firmenname oder Vor- und Nachname des Kunden | – obligatorisch, maximal 70 Zeichen |
| Zeile 2 | Strasse / Postfach | – optional, maximal 70 Zeichen – kann die Hausnummer enthalten, wenn diese nicht in Zeile 3 steht |
| Zeile 3 | Hausnummer | – optional, maximal 16 Zeichen – wenn nicht in Zeile 2 enthalten |
| Zeile 4 | Postleitzahl | – optional, maximal 16 Zeichen |
| Zeile 5 | Ort | – obligatorisch, maximal 35 Zeichen |
| Zeile 6 | Ländercode | – obligatorisch, maximal zwei Zeichen – gemäss ISO-3166-1-Standard |
Im QR-Code müssen Adressen immer entweder den Namen der Organisation oder den Vor- und Nachnamen enthalten.
Der Organisationsname hat Vorrang: Wenn er vorhanden ist, wird er verwendet – andernfalls wird der Vor- und Nachname eingesetzt.
Beide gleichzeitig anzugeben ist nicht möglich, da die Zeilen begrenzt sind und jede Zeile eine klar definierte Information enthalten muss.
Beim Ausdruck auf der Rechnung ist die Adressstruktur wie folgt:
- Name der Organisation oder Vor- und Nachname
- Strasse und Hausnummer
- Postleitzahl und Ort
Die Adressen, die im QR unter den Angaben "Zahlbar an" und "Zahlbar durch" erscheinen, entsprechen den Vorgaben des Swiss-QR-Standards.
Es ist nicht möglich, zusätzliche Zeilen hinzuzufügen oder die Struktur der Adressen im QR in irgendeiner Weise zu verändern.
Adresse des Rechnungsausstellers
Die Adresse des Rechnungsausstellers kann auf zwei Arten definiert werden:
- Über die Datei-Eigenschaften
- Die Adresse wird automatisch aus den Stammdaten Datei > Eigenschaften (Stammdaten) > Adresse übernommen.
- Über die Rechnungseinstellungen
- Die Adresse wird aus den Rechnungseinstellungen, Abschnitt QR-Code > Zahlbar an, übernommen.
- Aktivieren Sie den Abschnitt QR-Code > Zahlbar an
- Erfassen Sie die Adressdaten in den nachfolgenden dafür vorgesehenen Feldern.

Kundenadresse
Die Kundenadresse wird entweder in der Tabelle Konten (integrierte Fakturierung) oder in der Tabelle Kontakte (Applikation 'Offerten und Rechnungen') erfasst.
Die Hausnummer kann entweder in der Spalte Strasse oder in der Spalte Hausnummer eingetragen werden – beide Varianten sind zulässig.
Die Spalte Hausnummer erlaubt beliebige Zeichen mit einer maximalen Länge von 16 Zeichen.

Die Spalte Strasse erlaubt beliebige Zeichen mit einer maximalen Länge von 70 Zeichen.
Druck und Versand in Papierform
Die QR-Rechnung kann gedruckt und im Papierformat versendet werden. Dazu muss ein spezielles perforiertes weisses Papier verwendet werden.
QR-Code testen
Die PDF-Dateien von Rechnungen mit QR-Codes können über die offizielle Validierungsseite wie folgt überprüft werden:
- Erstellen und speichern Sie die QR-Rechnung als PDF.
- Besuchen Sie die offizielle Seite 'Validator für QR-Rechnung': https://www.swiss-qr-invoice.org/validator
- Ziehen Sie die PDF-Datei in den blauen Bereich auf der Webseite.
Auf der Validierungsseite wird bei einem korrekten QR-Code der Inhalt angezeigt. Bei Fehlern erscheinen entsprechende Hinweise in Rot.
Wenn keine roten Meldungen angezeigt werden, gilt der QR-Code als korrekt (siehe folgendes Beispiel).

QR-Rechnung mit Verwendung des IBAN-Kontos
Mit der QR-Rechnung können Sie Ihr IBAN-Konto angeben, über das Sie Zahlungen erhalten. Wenn Sie Daten des Kontoauszugs (Camt053) importieren, verwendet das Programm automatisch das Kundenkonto. So können Sie Zahlungen effizient verwalten.
Kontonummer IBAN eingeben
Beim ersten Rechnungsausdruck müssen Sie das IBAN-Konto angeben.
- Die IBAN für ein Konto in CHF
- Sie wird automatisch aus den Stammdaten Datei > Eigenschaften (Stammdaten) > Adresse, Feld IBAN/Bankkonto übernommen
- Wenn sie nicht in den Stammdaten definiert ist, wird die IBAN aus den Rechnungseinstellungen, Sektion QR-Code > SCOR/NON > IBAN übernommen
- Wenn die IBAN sowohl in den Dateieigenschaften als auch in den Rechnungseinstellungen angegeben ist, wird die in den Rechnungseinstellungen angegebene IBAN verwendet.
- Die IBAN für ein Konto in EUR
- Wird aus den Rechnungseinstellungen, Sektion QR-Code > SCOR/NON > IBAN EUR übernommen.
Typ und IBAN einstellen:
- Wählen Sie das Dialogfenster Rechnungseinstellungen, Sektion QR-Code aus.
- Stellen Sie sicher, dass SCOR im QR-Referenztyp ausgewählt ist.
- Geben Sie unter SCOR/NON die IBAN des Kontos ein, auf welchem Zahlungen eingehen sollen.
Sie können das Standard Feld IBAN oder sonst das Feld IBAN EUR verwenden.

Die IBAN ist die internationale Kontonummer, auf die Zahlungen überwiesen werden.
- Das Format kann beispielsweise wie folgt aussehen:
- CHXX 0900 0XXX XXXX XXXX X
Ein Konto in der Schweiz beginnt mit "CH" - LIXX 0900 0XXX XXXX XXXX X
Ein Konto in Liechtenstein beginnt mit "LI"
- CHXX 0900 0XXX XXXX XXXX X
- Die IBAN besteht aus 21 Zeichen.
- Die IBAN ist obligatorisch und wird Ihnen von Ihrer Bank bereitgestellt.
QR-Rechnung mit IBAN mit Referenznummer
Der QR-Abschnitt wird alle für die Zahlung erforderlichen Daten enthalten:
- Die IBAN-Kontonummer, auf das die Zahlung eingehen wird, sowie Name und Adresse des Kontoinhabers
- Die Referenznummer mit Konto des Kunden und Rechnungsnummer
- Die Adresse des Kunden
- Kann für Beträge in CHF oder EUR verwendet werden
![]() | IBANSie muss entweder in den Stammdaten Datei > Eigenschaften (Stammdaten) > Adresse oder im entsprechenden Feld des Dialogfensters Rechnungseinstellungen eingetragen werden. | |||
ReferenzWird automatisch anhand der Kundennummer und der Rechnungsnummer generiert. |
Referenz (Creditor Reference)
Diese enthält die Kontonummer und die Rechnungsnummer des Kunden und dient dazu, die Erfassung von Rechnungszahlungen zu automatisieren.
- Die Structured Creditor Reference (SCOR) folgt dem ISO 11649-Standard, der die Verwendung der QR-Rechnung im internationalen und europäischen Zahlungsverkehr (SEPA) ermöglicht.
- Die Creditor Reference wird automatisch anhand der Kundennummer und der Rechnungsnummer generiert.
- Sie liegt im Format RFXX XXXX XXXX XXXX vor.
- Die Creditor Reference ist eine alphanumerische Zeichenfolge, bis zu 25 Zeichen lang und beginnt mit den Buchstaben "RF".
Das Programm stellt die Referenz automatisch wie folgt zusammen:

- Anfangsbuchstaben "RF" (1).
- Nach den Buchstaben stehen zwei Prüfziffern (berechnet nach Normvorgaben) (1).
- Darauf folgt die Kontonummer des Kunden aus dem Kontenplan, der die Rechnung erhält (2).
- Das erste numerische Zeichen gibt die Länge des Kontos an (mindestens 1, höchstens 7)
- Der Rest ist die Identifizierung des Kundenkontos
Es können ausschliesslich Ziffern oder Buchstaben des ASCII-Alphabets (A-Z) gewählt werden. Sie darf keine Leer- und Trennzeichen oder andere Zeichen enthalten. Diese werden entfernt. - Wenn die Kundennummer nicht vorhanden ist, wird eine "0" angezeigt
- Es folgt die Rechnungsnummer (3).
- Das erste numerische Zeichen gibt die Länge der Rechnungsnummer an (mindestens 1, höchstens 7).
- Es können ausschliesslich Ziffern oder Buchstaben des ASCII-Alphabets (A-Z) mit einer maximalen Länge von 7 Zeichen gewählt werden. Sie darf keine Leer- und Trennzeichen oder andere Zeichen enthalten. Solche werden entfernt. Es ist daher möglich, dass das Programm beim Importieren der Zahlungsdaten die Abstimmung nicht durchführen kann.
- Wenn keine Rechnungsnummer vorhanden ist, wird eine "0" angegeben.
QR-Rechnung mit IBAN, Referenz und ohne Betrag
Die Rechnung ohne Betrag wird verwendet, wenn Sie dem Kunden die Wahl des zu zahlenden Betrags überlassen möchten.
Sie enthält die Referenznummer des Kunden, so dass die Beträge dem jeweiligen Kunden zugeordnet und offene Rechnungen automatisch geschlossen werden können.
Auf dem Ausdruck bleibt ein leeres Feld, in das der Betrag eingetragen werden kann. Dies wird verwendet für:
- Für Spenden, bei denen der Zahler den Betrag frei bestimmt.
- Für Verbände, bei denen der Zahler verschiedene Beträge wählen kann.
- Für verschiedene Zahlungen, immer spezifisch für denselben Kunden.
Zum Beispiel für die Mietzahlung. - Sie können Beträge in CHF und EUR angeben.
![]() | IBANSie muss entweder in den Stammdaten Datei > Eigenschaften (Stammdaten) > Adresse oder im entsprechenden Feld des Dialogfensters Rechnungseinstellungen eingetragen werden. | |||
ReferenzWird automatisch anhand der Kundennummer und der Rechnungsnummer generiert. | ||||
Ohne BetragIm Abschnitt QR-Code des Dialogs Rechnungseinstellungen muss die Option Rechnungsbetrag ausschliessen ausgewählt werden. |
Der Druck ohne Betrag ist nicht mit der Rechnung mit Nullbetrag zu verwechseln. Ist der Betrag gleich Null, bedeutet dies, dass der Kunde nichts zahlen muss, und es gibt einen Hinweis auf dem Einzahlungsschein, dass er nicht in Anspruch genommen werden soll.
QR-Rechnung mit IBAN und ohne Referenz-Nummer
Dieser Modus wird verwendet, wenn Sie Policen ohne Rechnungsnummer und ohne Kundennummer drucken möchten.
Sie kann daher nicht zur automatischen Aufzeichnung von Zahlungen verwendet werden.
Für den Zahlungsraum in CHF (CH/FL), ohne Referenz. Ersetzt den aktuellen roten Einzahlungsschein ES.
![]() | IBANSie muss entweder in den Stammdaten Datei > Eigenschaften (Stammdaten) > Adresse oder im entsprechenden Feld des Dialogfensters Rechnungseinstellungen eingetragen werden. | |||
|
- Zahlungsgrund: Es ist nicht möglich, den Zahlungsgrund manuell in die QR-Rechnung zu vermerken; er ist immer mit dem QR-Code zu drucken.
Geben Sie Ihre Daten ein:
- Rufen Sie das Dialogfenster Einstellungen auf.
- Gehen Sie zum Abschnitt QR-Code und füllen Sie diesen wie folgt aus:
- In der Liste QR-Referenztyp wählen Sie die Option NON
- Geben Sie unter SCOR/NON die IBAN ein

Importieren von Zahlungsdaten
Mit der Erweiterung Bankauszug Camt ISO 20022 (Schweiz) können Sie die Bewegungen des Kontoauszugs importieren und sie in Buchhaltungsbewegungen umwandeln.
Die Zahlungsdaten sind im normalen Kontoauszug (camt53) enthalten. Das Programm wird also beim Einlesen der Bankdaten automatisch festhalten, dass die Rechnung bezahlt wurde.
Wenn eine Rechnung nur teilweise bezahlt wurde, sehen Sie dies im Kontoauszug der offenen Rechnungen.
QR-Rechnung mit Verwendung des QR-IBAN-Sonderkontos (ESR-kompatibel)
Mit der QR-Rechnung können Sie Ihr QR-IBAN-Konto angeben, über das Sie Zahlungen erhalten. Das Fakturierungssystem mit QR-IBAN ist für diejenigen gedacht, die ein Fakturierungs- und Zahlungserfassungssystem haben, das mit den orangen (ESR) und roten (ES) Einzahlungsscheinen des ESR-Systems kompatibel ist. Ihre Bank muss Ihnen hierzu eine QR-IBAN-Kontonummer zuweisen.
Der QR-IBAN enthält die Informationen, die aus der Datei im ISO 20022-Format übernommen werden.
- Um Zahlungen zu erfassen, müssen Sie die passende Datei (camt054) herunterladen.
- Wenn Sie die Daten des Kontoauszugs (camt053) importieren, haben Sie nur die täglichen zusammenfassenden Daten.
QR-IBAN-Kontonummer erfassen
Das QR-IBAN-Konto wird aus den QR-Rechnungseinstellungen übernommen.
Um diese Variante der QR-Rechnung zu verwenden, gehen Sie zum Dialogfenster Rechnungseinstellungen und geben Sie Ihre Daten ein.
- Begeben Sie sich in das Dialogfenster Rechnungseinstellungen.
- Gehen Sie zum Abschnitt QR-Code.
- Aktivieren Sie QR-Code drucken.
- Wählen Sie aus der QR-Referenztyp-Liste die Option QRR.
- Tragen Sie unter QRR Folgendes ein:
- QR-IBAN
- Teilnehmernummer.
Diese wird falls vorhanden von Ihrer Bank zur Verfügung gestellt.
Nur für Banken, für PostFinance leer lassen.

QR-Rechnung mit QR-IBAN
Wird den aktuellen orangen Einzahlungsschein ESR ersetzen und ist auf den CHF-Zahlungsbereich (CH/FL) beschränkt.
![]() | QR-IBANMuss im entsprechenden Feld des Dialogfensters Einstellungen der Rechnung erfasst werden. | |||
QR-ReferenzSie wird anhand der Teilnehmernummer (falls vorhanden), der Kunden- und Rechnungsnummer erstellt. |
QR-IBAN-Konto
- CHXX 3000 0XXX XXXX X
Für ein Konto in der Schweiz beginnen Sie mit "CH". - LIXX 3000 0XXX XXXX X
Für ein Konto in Liechtenstein beginnen Sie mit "LI". - Die QR-IBAN ist obligatorisch und wird von der Bank bereitgestellt.
- Die QR-IBAN enthält einen speziellen Code, der zur Identifizierung des Finanzinstituts dient (IID-QR). Die Nummern 30000 bis 31999 sind für diesen Code reserviert.
QR-Referenz (QRR)
Sie enthält die Daten, mit welchen Sie die bezahlte Rechnung genau identifizieren können. Die QRR wird zum Zeitpunkt der Zahlung zurückgegeben, was dem Programm erlaubt, die Registrierung der bezahlten Rechnung automatisch abzuschliessen.
- XX XXXXX XXXXX XXXXX XXXXX XXXXX
- Die QR-Referenz ist obligatorisch
- Die QR-Referenz hat denselben Aufbau wie die ESR-Referenz (27 numerische Zeichen).
Das Programm setzt die Referenznummer automatisch wie folgt zusammen:

- Teilnehmernummer (1)
- Diese wird falls vorhanden von Ihrer Bank zur Verfügung gestellt und muss in den Rechnungseinstellungen eingegeben werden (sie wird von PostFinance nicht zur Verfügung gestellt).
- Die maximal zulässige Länge beträgt 8 Ziffern.
- Wenn sie nicht vorhanden ist, werden Nullen eingefügt.
- Die darauf folgenden 3 Ziffern sind immer "000" (4).
- Kundennummer (2)
- Die maximal zulässige Länge beträgt 7 Ziffern.
- Sie darf ausschliesslich aus Ziffern bestehen. Sie darf keine ASCII-Buchstaben (A-Z), Leerzeichen, Trennzeichen oder andere Zeichen enthalten.
- Sie ist rechtsbündig mit Nullen vorangestellt.
- Rechnungsnummer (3)
- Die maximal zulässige Länge beträgt 7 Ziffern.
- Sie darf ausschliesslich aus Ziffern bestehen. Sie darf keine ASCII (A-Z)-Buchstaben, Leerzeichen, Trennzeichen oder andere Zeichen enthalten.
- Sie ist rechtsbündig mit Nullen davor.
- Die vorletzte Ziffer ist immer "0" (5).
- Die letzte Ziffer ist die Prüfziffer (berechnet nach Standardvorgaben) (5).
Importieren von Zahlungsdaten
Mit der Erweiterung Bankauszug Camt ISO 20022 (Schweiz) können Sie die Bewegungen des Kontoauszugs importieren und sie in Buchhaltungsbewegungen umwandeln.
Die Daten der mit QR-IBAN ausgestellten Rechnungen werden in einer Datei im Format camt054 bereitgestellt.
Im normalen Kontoauszug (camt053) erscheinen die Daten nur als Totalsumme aller Zahlungen des Tages.
Erweiterte Anpassungen am Rechnungslayout mit CSS und JavaScript
Für die folgenden fortgeschrittenen Anpassungen ist der Advanced-Plan von Banana Buchhaltung Plus erforderlich.
Erweiterte Anpassung des Layouts (mit Programmierung)
Das Layout CH10 kann durch entsprechende Programmierung individuell angepasst werden.
- Programmierung in Javascript (Dokumentation auf Englisch)
- Sie können den Druck noch weiter anpassen, indem Sie eigene Funktionen erstellen, die die Standardfunktionen für den Druck von Kopfzeile, Adressen, Details, Text und Fusszeile ersetzen.
- Erstellung von CSS-Stilen (Dokumentation auf Englisch)
- Sie können das Erscheinungsbild Ihrer Rechnung individuell gestalten, indem Sie eigene CSS-Stile definieren. So lassen sich beispielsweise Textformatierung, Positionierung von Elementen und andere Designaspekte anpassen.
Eigene Drucklayouts erstellen
- Sie haben die Möglichkeit, ein massgeschneidertes Layout zu erstellen. (Dokumentation auf Englisch)
- Erfordert die Programmierung in JavaScript
- Alternativ können Sie das bestehende Layout verwenden und es nach Ihren Wünschen anpassen.
Invoice customisation with JavaScript
The Banana invoice is constructed with a Javascript program. The Extension also allows you to add Javascript programming so that you can completely customize the content and format of the invoice (this functionality requires the Advanced plan).
See more about Banana Accounting API Extensions Reference.
Add your custom Javascript file
Three steps are required to define and use your Javascript file:
- Add the document table to the Banana Accounting file.
If it is not already present you need to add the Documents table in the Banana document with the menu command Tools > Add new features > Add document table. - Add a new Javascript type document to the document table.
- In the ID column enter the file name including the extension .js (e.g. "myFile.js").
If the id is missing the ".js" at the end, it won't work. - In the Description column enter a comment (optional).
- In the Attachments column, double click on the cell or select the edit symbol, then select Javascript Code and confirm with OK.
- An editor will open in which you can write the code.
- Delete everything in it.
- Insert the Javascript code. You can modify the content at any time.

Documents table - Javascript Code attachment
- In the ID column enter the file name including the extension .js (e.g. "myFile.js").
- Tell the invoice layout to use the customized Javascript attachment file.
- Select Settings of the Print invoices dialogue.
- In the Javascript/CSS > JS file name, enter the name of the newly created Javascript attachment file with the extension ".js" at the end (e.g. "myFile.js").
- Click Ok to confirm.

Settings Dialogue - Javascript File Property
Javascript Hook Replacement Functions
The invoice layout is created with a set of predefined Javascript functions.
The hook functions are Javascript replacements functions to be used instead of the the predefined.
The hook functions should be defined in the ".js" file of the Documents table.
- The name of the hook function is the name of the predefined function used in the layout, preceded by the text "hook_".
For example, if you want to change the header printing you have to define the hook_print_header() that will replace the predefined print_header() function.- The parameters must be the same as those used in the main function.
- If you create your own hook function, it is necessary to know how it works the function you want to replaces.
- When generating the invoice, the layout extension checks for the existence of a hook replacement function and, if available, utilizes it to substitute the predefined function.
- Hook functions let you selectively change some part of how the invoice is build, without directly modifying the original script of the invoice Layout.
Graphic explanation of the Hook functions
With the hook functions, you can customize the following sections of the invoice.

(1) hook_print_header()
Function that prints the header part of the invoice (logo and texts).
(2) hook_print_info_first_page() and hook_print_info_other_pages()
Functions that print the information parts of the invoice.
(3) hook_print_customer_address()
Function that prints the customer address part of the invoice.
(4) hook_print_shipping_address()
Function that prints the shipping address part of the invoice (in case it exists).
(5) hook_print_text_begin()
Function that prints the title and begin text parts of the invoice.
(6) hook_print_details_net_amounts() and hook_print_details_gross_amounts()
Functions that print the invoice details using net/gross amounts.
Use the hook_formatItemsValue() function to change the format and style of the items.
(7) hook_print_final_texts()
Function that prints the final texts, notes and greetings parts of the invoice, right after the invoice details.
(8) hook_print_footer()
Function that prints the footer at the bottom of the page (usable only when not printing the QR slip).
Invoice Layout Hook Functions Reference
This document provides a reference for all available invoice layout hook functions, including their exact names, the required parameters in the correct order, and detailed descriptions of each parameter’s purpose, and example usage. The empty function bodies should be replaced with your own implementation.
Rules:
- You must use the exact function name listed.
- Parameters must be passed in exact order shown.
- You cannot add, remove, or rename parameters.
- All parameters are required.
List of available invoice layout hook functions:
/**
* Sets or updates all variables used by the invoice layout script.
* @param {Object} variables - MUTABLE object containing layout variables (colors, fonts, decimals, margins).
* @param {Object} userParam - User parameters that may override or extend the variables.
* @returns {void}
*/
function hook_set_variables(variables, userParam) {...}
/**
* Prints the header at the top of the page (logo, company name, address).
* @param {Object} repDocObj - Document object for output.
* @param {Object} userParam - User parameters that include affecting header content and style.
* @param {Object} repStyleObj - Document CSS style object.
* @param {Object} invoiceObj - Invoice data (issuer, customer, logo, etc.).
* @param {Object} texts - Localized labels and strings (e.g., "Address", "Phone").
* @returns {void}
*/
function hook_print_header(repDocObj, userParam, repStyleObj, invoiceObj, texts) {...}
/**
* Prints invoice information on the first page (invoice number, date, terms, references).
* @param {Object} repDocObj - Document object for output.
* @param {Object} invoiceObj - Invoice data (number, dates, payment terms, etc.).
* @param {Object} texts - Localized labels for displayed fields.
* @param {Object} userParam - User parameters that include affecting information content for page 1.
* @returns {void}
*/
function hook_print_info_first_page(repDocObj, invoiceObj, texts, userParam) {...}
/**
* Prints invoice information from page 2 onwards (invoice number, date, terms, references).
* @param {Object} repDocObj - Document object for output.
* @param {Object} invoiceObj - Invoice data (number, dates, payment terms, etc.).
* @param {Object} texts - Localized labels for displayed fields.
* @param {Object} userParam - User parameters that include affecting information content for page > 1.
* @returns {void}
*/
function hook_print_info_other_pages(repDocObj, invoiceObj, texts, userParam) {...}
/**
* Prints the customer's billing address.
* @param {Object} repDocObj - Document object for output.
* @param {Object} invoiceObj - Invoice data with customer information (name, street, ZIP, city, country).
* @param {Object} userParam - User parameters that include affecting customer address content and style.
* @returns {void}
*/
function hook_print_customer_address(repDocObj, invoiceObj, userParam) {...}
/**
* Prints the shipping address.
* @param {Object} repDocObj - Document object for output.
* @param {Object} invoiceObj - Invoice data with shipping information (recipient, address).
* @param {Object} texts - Localized labels (e.g., "Ship to").
* @param {Object} userParam - User parameters that include affecting shipping address content visibility.
* @returns {void}
*/
function hook_print_shipping_address(repDocObj, invoiceObj, texts, userParam) {...}
/**
* Prints the introductory block before the invoice details (title, opening text).
* @param {Object} repDocObj - Document object for output.
* @param {Object} invoiceObj - Invoice data with begin text.
* @param {Object} texts - Localized titles and messages (e.g., "Invoice").
* @param {Object} userParam - User parameters that include affecting text begin content.
* @returns {void}
*/
function hook_print_text_begin(repDocObj, invoiceObj, texts, userParam) {...}
/**
* Prints the details table using NET amounts (VAT excluded).
* @param {Object} banDoc - Accounting/data source (for calculations or lookups).
* @param {Object} repDocObj - Document object for output.
* @param {Object} invoiceObj - Invoice data (currency, items, amounts, VAT, totals, etc.).
* @param {Object} texts - Column labels and strings (Qty, Price, VAT, Total, etc.).
* @param {Object} userParam - User parameters that include affecting invoice details content and style.
* @param {Array|Object} detailsTable - Rows/structure of the table (items, quantities, prices).
* @param {Object} variables - Calculated layout variables (column widths, CSS classes, partial totals).
* @returns {void}
*/
function hook_print_details_net_amounts(banDoc, repDocObj, invoiceObj, texts, userParam, detailsTable, variables) {...}
/**
* Prints the details table using GROSS amounts (VAT included).
* @param {Object} banDoc - Accounting/data source (for calculations or lookups).
* @param {Object} repDocObj - Document object for output.
* @param {Object} invoiceObj - Invoice data (currency, items, amounts, VAT, totals, etc.).
* @param {Object} texts - Column labels and strings (Qty, Price, VAT, Total, etc.).
* @param {Object} userParam - User parameters that include affecting invoice details content and style.
* @param {Array|Object} detailsTable - Rows/structure of the table (items, quantities, prices).
* @param {Object} variables - Calculated layout variables (column widths, CSS classes, partial totals).
* @returns {void}
*/
function hook_print_details_gross_amounts(banDoc, repDocObj, invoiceObj, texts, userParam, detailsTable, variables) {...}
/**
* Prints the final texts (notes, terms, thanks) after the details table.
* @param {Object} repDocObj - Document object for output.
* @param {Object} invoiceObj - Invoice data with final texts.
* @param {Object} userParam - User parameters that include affecting final texts content and style.
* @returns {void}
*/
function hook_print_final_texts(repDocObj, invoiceObj, userParam) {...}
/**
* Prints the footer at the bottom of the page. Use only when NOT printing the QR slip section.
* @param {Object} repDocObj - Document object for output.
* @param {Object} texts - Localized labels and strings.
* @param {Object} userParam - User parameters that include affecting footer content and style.
* @returns {void}
*/
function hook_print_footer(repDocObj, texts, userParam) {...}
/**
* Formats the value and sets the CSS className of the item.
* @param {*} value - Original cell value (number, string, date).
* @param {Object} variables - Layout/context variables for formatting rules.
* @param {string} columnName - Column name (for column-specific rules).
* @param {string} className - Initial className that can be changed.
* @param {Object} item - The current row/item object (for data-dependent rules).
* @returns {Object} - Return the formatted value and className.
*/
function hook_formatItemsValue(value, variables, columnName, className, item) {...}
/**
* Allows modification of QR code settings (fields and formatting) before printing.
* @param {Object} invoiceObj - Invoice data relevant to payment/QR.
* @param {Object} qrcodeData - QR settings object to read/overwrite (IBAN, amount, reference).
* @returns {void}
*/
function hook_modify_settings_qr(invoiceObj, qrcodeData) {...}Examples of a hook functions
Within your hook function you can call the original hook function. This way you can limit the changes to the code.
For example this hook function call the original one, only in a specific case.
/**
* This function prints the final text only for INVOICES and not for CREDIT NOTES.
* Invoices = DocType 10
* Credit notes = DocType 12
*/
function hook_print_final_texts(sectionClassFinalTexts, invoiceObj, userParam) {
// We can check the DocType and print the text only when is not 12
if (invoiceObj.document_info.doc_type !== "12") {
print_final_texts(sectionClassFinalTexts, invoiceObj, userParam);
}
}
Predefined variables
The predefined variables are the default used by the invoice layout script.
The variables for decimals start with "decimals_". (decimals_quantity, decimals_unit_price, decimals_amounts).
The variable that start with "$" are template variable that you can use in the CSS styles ($font_family, $font_size, $text_color, ...).
Example of an extract of the predefined CSS invoice layout.
body {
font-family: $font_family;
font-size: $font_size;
color: $text_color;
}
List of all predefined variables and their default values that you can override with the hook_set_variables() function:
/* Variable that sets the decimals of the Quantity column */
variables.decimals_quantity = "";
/* Variable that sets the decimals of the Unit Price column */
variables.decimals_unit_price = 2;
/* Variable that sets the decimals of the Amount column */
variables.decimals_amounts = 2;
/* Variables that set the colors */
variables.$text_color = userParam.text_color;
variables.$background_color_details_header = userParam.background_color_details_header;
variables.$text_color_details_header = userParam.text_color_details_header;
variables.$background_color_alternate_lines = userParam.background_color_alternate_lines;
variables.$color_title_total = userParam.color_title_total;
/* Variables that set the font */
variables.$font_family = userParam.font_family;
variables.$font_size = userParam.font_size+"pt";
/* Variables that set the font size and margins of the Invoice Begin Text */
variables.$font_size_title = userParam.font_size*1.4 +"pt";
/* Variables that set font size, margins, padding and borders of the Invoice Details */
variables.$font_size_header = userParam.font_size*1.2 +"pt";
variables.$font_size_total = userParam.font_size*1.2 +"pt";
/* Variables that set the position of the invoice address
* Default margins when the address on right: 12.3cm margin left, 4.5cm margin top
* Default margins when the address on left: 2.2cm margin left, 5.5cm margin top
* Sum userParam dX and dY adjustments to default values */
variables.$right_address_margin_left = parseFloat(12.3) + parseFloat(userParam.address_position_dX)+"cm";
variables.$right_address_margin_top = parseFloat(4.5) + parseFloat(userParam.address_position_dY)+"cm";
variables.$left_address_margin_left = parseFloat(2.2) + parseFloat(userParam.address_position_dX)+"cm";
variables.$left_address_margin_top = parseFloat(5.5) + parseFloat(userParam.address_position_dY)+"cm"; Example of 'hook_set_variables' function
You can overwrite the predefined variable with the hook_set_variables() function.
Only use the variable that you want to replace.
// Example of hook function usage that sets
// the decimals of the Amounts columns to 4
// the font type to Times New Roman
function hook_set_variables(variables, userParam) {
variables.decimals_amounts = 4;
variables.$font_family = "Times New Roman";
}
Customize invoice print with Javascript
The following examples show how to adapt invoice printing with custom JavaScript hook function codes.
See Javascript customization for more information.
Add the final text on a new page
This example shows how to add the final text on a new page of the invoice.
/**
* This function prints the final text on a new page of the invoice.
*/
function hook_print_final_texts(repDocObj, invoiceObj, userParam) {
// Adds a page break before printing the final text
repDocObj.addPageBreak();
print_final_texts(repDocObj, invoiceObj, userParam);
}Credit Notes without final text
Final text, notes and greetings are always printed, when defined, for both invoices and credit notes document types.
You can define a document type with the Type column of the Transactions table:
- For credit notes insert the value 12.
- For invoices insert the value 10.
In this example we want to make sure that all these texts are printed only for invoices but not for credit notes.
To do that, we simply define an hook function that replaces the default print_final_texts() function.
/**
* This function prints the final text only for INVOICES and not for CREDIT NOTES.
* Invoices = DocType 10
* Credit notes = DocType 12
*/
function hook_print_final_texts(repDocObj, invoiceObj, userParam) {
// We can check the DocType and print the text only when is not 12
if (invoiceObj.document_info.doc_type !== "12") {
print_final_texts(repDocObj, invoiceObj, userParam);
}
}
With this change the final text, notes and greetings are now printed only for invoices, and not for credit notes anymore.
Add information "Invoice paid" to the final text
This example shows how to add the information "Invoice paid" to the final text, when the invoice is paid.
/**
* This function prints the text "Invoice paid" on paid invoices.
*/
function hook_print_final_texts(repDocObj, invoiceObj, userParam) {
if (invoiceObj.payment_info && invoiceObj.payment_info.payment_date) {
var paragraph = repDocObj.addParagraph("","final_texts");
paragraph.addText("Invoice paid on " + Banana.Converter.toLocaleDateFormat(invoiceObj.payment_info.payment_date));
// [Optionally] Add a signature
repDocObj.addImage("documents:sign.jpg", "6cm", "auto");
}
}Add a custom table as final text
This example shows how to add a custom table in the final texts of the invoice.
The table consists of 2 columns and three rows:
- Row 1: the header of the table. Contains the titles of the columns (Description and Amount).
- Row 2: the first data row of the table.
- Row 3: the second data row of the table.
To do that, we simply define an hook function that replaces the default print_final_texts() function.
/**
* This function adds at the end of the invoice a table with a custom text.
*/
function hook_print_final_texts(repDocObj, invoiceObj, userParam) {
print_final_texts(repDocObj, invoiceObj, userParam);
// Add a table
var mytable = repDocObj.addTable("MyTable");
var tableRow;
// Row 1: the header of the table, columns titles
var header = mytable.getHeader();
tableRow = header.addRow();
tableRow.addCell("Description").setStyleAttributes("text-align:left; font-weight:bold; border:thin solid black;");
tableRow.addCell("Amount").setStyleAttributes("text-align:left; font-weight:bold; border:thin solid black;");
// Row 2: first data row of the table
tableRow = mytable.addRow();
tableRow.addCell("Workshop").setStyleAttributes("text-align:left; border:thin solid black;");
tableRow.addCell("2'600.00").setStyleAttributes("text-align:right; border:thin solid black;");
// Row 3: second data row of the table
tableRow = mytable.addRow();
tableRow.addCell("Material").setStyleAttributes("text-align:left; border:thin solid black;");
tableRow.addCell("76.00").setStyleAttributes("text-align:right; border:thin solid black;");
//...
}
You can easily add as many columns and rows as you like.
Use the setStyleAttributes() to apply CSS styles, like text-align, font-weight, color, border, ... Find more information on Syntax of a CSS stylesheet.
Find more examples in Working with Report Tables.
Example print:
Add a custom table as final text with bank details
This example shows how to add a custom table in the final texts of the invoice with the bank details for the payment.
The table consists of 2 columns and 6 rows:
- Row 1: for the beneficiary data.
- Row 2-3-4: for the bank name and address.
- Row 5: for the IBAN code.
- Row 6: for the Swift code.
To do that, we simply define an hook function that replaces the default print_final_texts() function.
/**
* This function adds at the end of the invoice a table with bank detais for the payment.
*/
function hook_print_final_texts(repDocObj, invoiceObj, userParam) {
print_final_texts(repDocObj, invoiceObj, userParam);
// Add a table
var mytable = repDocObj.addTable("MyTable");
var tableRow;
// Row 1
tableRow = mytable.addRow();
tableRow.addCell("Beneficiary:").setStyleAttributes("text-align:left;padding-left:1px;");
tableRow.addCell("BENEFICIARY NAME, ADDRESS, ZIP LOCALITY, COUNTRY").setStyleAttributes("text-align:left;padding-left:1px;");
// Row 2
tableRow = mytable.addRow();
tableRow.addCell("Bank: ").setStyleAttributes("text-align:left;padding-left:1px;");
tableRow.addCell("BANK NAME").setStyleAttributes("text-align:left;padding-left:1px;");
// Row 3
tableRow = mytable.addRow();
tableRow.addCell("").setStyleAttributes("text-align:left;padding-left:1px;");
tableRow.addCell("ADDRESS").setStyleAttributes("text-align:left;padding-left:1px;");
// Row 4
tableRow = mytable.addRow();
tableRow.addCell("").setStyleAttributes("text-align:left;padding-left:1px;");
tableRow.addCell("ZIP LOCALITY").setStyleAttributes("text-align:left;padding-left:1px;");
// Row 5
tableRow = mytable.addRow();
tableRow.addCell("IBAN: ").setStyleAttributes("text-align:left;padding-left:1px;");
tableRow.addCell("CHXX XXXX XXXX XXXX XXXX X").setStyleAttributes("text-align:left;padding-left:1px;");
// Row 6
tableRow = mytable.addRow();
tableRow.addCell("Swift:").setStyleAttributes("text-align:left;padding-left:1px;");
tableRow.addCell("AAAABBCCXXX").setStyleAttributes("text-align:left;padding-left:1px;");
//...
}
You can easily add as many columns and rows as you like.
Use the setStyleAttributes() to apply CSS styles, like text-align, font-weight, color, border, ... Find more information on Syntax of a CSS stylesheet.
Example print:
Add a custom table with text translation
This example shows how to add a custom table in the final texts of the invoice with text translations for different languages.
The table consists of 2 columns and three rows:
- Row 1: the header of the table. Contains the titles of the columns (Description and Amount).
- Row 2: the first data row of the table.
- Row 3: the second data row of the table.
To do that, we simply define an hook function that replaces the default print_final_texts() function.
/**
* This function adds at the end of the invoice a table with a custom text.
* The text is translated in different languages.
* We use the text in the language of the invoice.
*/
function hook_print_final_texts(repDocObj, invoiceObj, userParam) {
// Define the texts for all languages you need (en, de, fr, it, nl, pt, zh, es, ...)
// Check the language of the invoice to use the appropriate text translation
if (lang === "de") {
var text1 = "Beschreibung";
var text2 = "Betrag";
var text3 = "Werkstatt";
var text4 = "2'600.00";
var text5 = "Material";
var text6 = "76.00";
}
else if (lang === "it") {
var text1 = "Descrizione";
var text2 = "Importo";
var text3 = "Officina";
var text4 = "2'600.00";
var text5 = "Materiale";
var text6 = "76.00";
}
else {
var text1 = "Description";
var text2 = "Amount";
var text3 = "Workshop";
var text4 = "2'600.00";
var text5 = "Material";
var text6 = "76.00";
}
// Add a table
var mytable = repDocObj.addTable("MyTable");
var tableRow;
// Row 1: the header of the table, columns titles
var header = mytable.getHeader();
tableRow = header.addRow();
tableRow.addCell(text1).setStyleAttributes("text-align:left; font-weight:bold; border:thin solid black;");
tableRow.addCell(text2).setStyleAttributes("text-align:left; font-weight:bold; border:thin solid black;");
// Row 2: first data row of the table
tableRow = mytable.addRow();
tableRow.addCell(text3).setStyleAttributes("text-align:left; border:thin solid black;");
tableRow.addCell(text4).setStyleAttributes("text-align:right; border:thin solid black;");
// Row 3: second data row of the table
tableRow = mytable.addRow();
tableRow.addCell(text5).setStyleAttributes("text-align:left; border:thin solid black;");
tableRow.addCell(text6).setStyleAttributes("text-align:right; border:thin solid black;");
}
You can easily add as many columns and rows as you like.
Use the setStyleAttributes() to apply CSS styles, like text-align, font-weight, color, border, ... Find more information on Syntax of a CSS stylesheet.
Find more examples in Working with Report Tables.
Use a very long begin text
When you insert a begin text between the title and details of the invoice, the text is usually quite short. The printing of the invoice is designed for a begin text that is not too long. However, if the text you want to insert is very long (for example, even a page or more), it may not be printed correctly on the invoice, and some parts may be missing. To solve this problem, it is necessary to adapt the part of the script that deals with printing the begin text.
In the example below, we define the hook_print_text_begin() function that replaces the default print_text_begin() function. This function allows to print very long begin texts. While the original function adds all the text in one table cell (and when it gets too big it can cause problems), this version instead adds one row to the table for each row of text (a side effect is that the space between rows increases slightly).
function hook_print_text_begin(repDocObj, invoiceObj, texts, userParam) {
var textTitle = getTitle(invoiceObj, texts, userParam);
var textBegin = invoiceObj.document_info.text_begin ||
(invoiceObj.document_info.doc_type === "17" ? userParam[lang+'_text_begin_offer'] : userParam[lang+'_text_begin']) ||
'';
var table = repDocObj.addTable("begin_text_table");
if (textTitle) {
var titleCell = table.addRow().addCell("", "", 1);
titleCell.addParagraph(textTitle.replace(/<DocInvoice>/g, invoiceObj.document_info.number.trim()), "title_text");
}
var textBeginLines = textBegin.split('\n');
textBeginLines.forEach(line => {
var textCell = table.addRow().addCell("", "begin_text", 1);
addMdBoldText(textCell, columnNamesToValues(invoiceObj, line.trim() || " "));
});
}Use different long begin texts
This example allows you to define and use different begin texts in order to customize the estimates and invoices.
You can define your begin texts using the Documents table:
- First you must define the hook function that replaces the default print_text_begin().
- In the ID column enter the name of the javascript file with the extension .js at the end (e.g., "myFile.js").
- In the Attachments column, double click on the cell or select the edit symbol, then select Javascript Code and confirm with OK.
- Copy and paste the Javascript code included below.
- In the invoice layout settings, at the bottom, section JS file name (column ID in the document table), enter the id name of the javascript file from the Documents table (e.g., "myFile.js").
- Next you can create the documents you want to include.
- To include a normal text file
- In the ID column enter a name as you want.
- In the Attachments column, select text/plain type. An editor will open in which you can write your text.
- To include a markdown file
- In the ID column enter the name of the file with the extension .md at the end (e.g., "file2.md").
- In the Attachments column, select text/markdown type. An editor will open in which you can write your text.
- To include an html file
- In the ID column enter the name of the file with the extension .html at the end (e.g., "file3.html").
- In the Attachments column, select text/html type. An editor will open in which you can write your text.
- To include a normal text file
To use your texts when creating the estimate or invoice:
- In the Begin Text field of the estimate/invoice, on a new line enter the text "{{include document:<file>}}" where "<file>" is the ID of the attachment text defined in Documents table (e.g., "{{include document:file1}}", "{{include document:file2.md}}", "{{include document:file3.html}}").
You can add a page break somewhere in the text:
- In the Begin Text field of the estimate/invoice, on a new line enter the "{{page-break}}" text.
Here are some examples:
- Example 1: Include the content of the file1 defined in Documents table and a page break right after. In the Begin Text field of the estimate/invoice enter the following text:
{{include document:file1}}
{{page-break}} - Example 2: Include the content of the file1 defined in Documents table, then add a page break, then include the content of the file2 defined in Documents table, then add a page break, then include the content of the file3 defined in Documents table, then add a final page break.
{{include document:file1}}
{{page-break}}
{{include document:file2.md}}
{{page-break}}
{{include document:file3.html}}
{{page-break}} - Example 3: Combine the text written in the Begin Text field of the estimates/invoices with a text defined in Documents table.
"This is a begin text:"
{{include document:file1}} - Example 4: Simply add a page break after the begin text in the Begin Text filed of the estimates/invoices.
"This is a begin text"
{{page-break}}
Add your custom Javascript file using the following Javascript hook_print_text_begin function code:
function hook_print_text_begin(repDocObj, invoiceObj, texts, userParam) {
var textTitle = getTitle(invoiceObj, texts, userParam);
var textBegin = invoiceObj.document_info.text_begin || userParam[lang + '_text_begin'] || (invoiceObj.document_info.doc_type === "17" ? userParam[lang + '_text_begin_offer'] : '');
var section = repDocObj.addSection();
section.setStyleAttributes("margin-bottom: 1.0cm;");
if (textTitle) {
section.addParagraph(textTitle.replace(/<DocInvoice>/g, invoiceObj.document_info.number.trim()), "title_text");
}
var textBeginLines = textBegin.split('\n');
textBeginLines.forEach(line => {
line = line.trim();
var paragraph = section.addParagraph("", "");
if (line === "{{page-break}}") {
section.addPageBreak();
} else if (line.includes("{{include document:")) {
var file = extractFileName(line);
var text = getEmbeddedTextFile(file);
if (file.includes(".md")) {
paragraph.addStructuredText(text || " ", "md", "");
} else if (file.includes(".html")) {
paragraph.addStructuredText(text || " ", "html", "");
} else {
addMdBoldText(paragraph, columnNamesToValues(invoiceObj, text || " "));
}
} else {
addMdBoldText(paragraph, columnNamesToValues(invoiceObj, line || " "));
}
});
}
function extractFileName(inputString) {
var match = inputString.match(/document:(.*?)\}\}/);
return match ? match[1] : "";
}
function getEmbeddedTextFile(file) {
var documentsTable = Banana.document.table("Documents");
if (!documentsTable) return "";
for (var i = 0; i < documentsTable.rowCount; i++) {
var tRow = documentsTable.row(i);
if (tRow.value("RowId") === file) {
return tRow.value("Attachments");
}
}
return "";
}Add a begin text with Markdown
This example for the Estimates and Invoice application, shows how to add a begin text of the invoice/estimate using the Markdown (requires Banana+ Dev Channel).
- Enter the markdown text from the Invoice dialog > Section (1) Information and Free Texts > Begin text.
- Define the hook function that replaces the default print_text_begin() function.
/**
* This function adds the begin text as Markdown
* Works with the Estimate and Invoice Application
*/
function hook_print_text_begin(repDocObj, invoiceObj, texts, userParam) {
var textTitle = getTitle(invoiceObj, texts, userParam);
var textBegin = invoiceObj.document_info.text_begin;
var table = repDocObj.addTable("begin_text_table");
if (textTitle) {
textTitle = textTitle.replace("<DocInvoice>", invoiceObj.document_info.number);
var tableRow = table.addRow();
var titleCell = tableRow.addCell("","",1);
titleCell.addParagraph(textTitle, "title_text");
}
if (textBegin) {
var tableRow = table.addRow();
var textCell = tableRow.addCell("","begin_text",1);
textCell.addStructuredText(textBegin, "md", "");
}
}
Add a final text with Markdown
This example for the Estimates and Invoice application, shows how to add a final text of the invoice/estimate using the Markdown (requires Banana+ Dev Channel).
- Enter the markdown text from the Invoice dialog > Section (1) Information and Free Texts > End text.
- Define the hook function that replaces the default print_final_texts() function.
/**
* This function adds the final text as Markdown
* Works with the Estimate and Invoice Application
*/
function hook_print_final_texts(repDocObj, invoiceObj, userParam) {
if (invoiceObj.note.length > 0) {
for (var i = 0; i < invoiceObj.note.length; i++) {
if (invoiceObj.note[i].description) {
var text = invoiceObj.note[i].description;
var paragraph = repDocObj.addParagraph("","final_texts");
paragraph.addStructuredText(text, "md", "");
}
}
}
}
First page without page number
Normally the page number is printed on each page of the invoice in the information section.
In this example we want to make sure that the page number is not printed on the first page of the invoice.
To do that, we simply define an hook function that replaces the default print_info_first_page() function.
/**
* This function do not prints the PAGE NUMBER on first page
*/
function hook_print_info_first_page(repDocObj, invoiceObj, texts, userParam) {
// Save the existing settings
var originalInfoPage = userParam.info_page;
// Set not to print the info_page
userParam.info_page = false;
// call the original function
print_info_first_page(repDocObj, invoiceObj, texts, userParam);
// Restore original values
userParam.info_page = originalInfoPage ;
}
With this change the page number is now printed only from page two and above.
Add an additional image
In case you want to add an additional image in any section of the invoice, you can do it using the Documents table.
- Add a new image to the Documents table.
- In the ID column enter the file name (e.g. "myImage").
- In the Description column enter a comment (optional).
- In the Attachments column, double click on the cell or select the edit symbol, then select Image and comfirm with Ok.
- Select the image you want to use and confirm.
- Use javascript code to add the image in the hook function of the invoice section you want.
- The code addImage("documents:<id_value>", "<width>", "<height>") allows to add the image to the ReportElement.
- <id_value> the value of the ID column of the Documents table (e.g. "myImage").
- <width> you can adjust the width of the image.
- <height> you can adjust the height of the image.
Let's suppose for example that we want to add an image in the final text section, after the invoice details.
To do that, we simply define an hook function that replaces the default print_final_texts() function.
/*
* This function adds an image in the final texts section
*/
function hook_print_final_texts(repDocObj, invoiceObj, userParam) {
//Print final texts
print_final_texts(repDocObj, invoiceObj, userParam);
//Add an image of the table Documents at the end
repDocObj.addImage("documents:myImage", "100%", "auto");
}
With this change, the image is printed at the end of the invoice.
It’s possible to achieve the same result for order confirmations as well. In this case, simply replace:
- the function name "hook_print_final_texts" with "hook_print_final_texts_order_confirmation"
- the function call "print_final_texts" with "print_final_texts_order_confirmation"
/*
* This function adds an image in the final texts section in the order confirmation
*/
function hook_print_final_texts_order_confirmation(repDocObj, invoiceObj, userParam) {
//Print final texts
print_final_texts_order_confirmation(repDocObj, invoiceObj, userParam);
//Add an image of the table Documents at the end
repDocObj.addImage("documents:myImage", "100%", "auto");
}Add additional notes based on quantity
Suppose you have an additional column called "AdditionalNotes", and you want to add a different text to this column depending on the quantity of the item.
For example, for quantities greater than 10 you want to add the text "Special price" in the "AdditionalNotes" column of the print, and you want to do it automatically without entering by hand the text on each invoice.
To do that, we define an hook function that replaces the default formatItemsValue() function.
function hook_formatItemsValue(value, columnName, className, item) {
var itemFormatted = {};
itemFormatted.value = "";
itemFormatted.className = "";
if (columnName === "additionalnotes") {
if (item.quantity > 10) {
itemFormatted.value = "Special price";
itemFormatted.className = className;
}
}
//If not used it must always return undefined
return itemFormatted;
}
The itemFormatted object has two properties:
- value is the value of the column that is printed in the invoice.
- className is the name of the class in the CSS file.
With this, when you create the invoice all the items with the quantity greater than 10 have an additional text in the "AdditionalNotes" column. For all the others it remains empty.
Example print:
Use macros to add texts
Suppose you want to add a different text to the Description column of the invoice print depending on the item, and you want to do it automatically without entering by hand the text on each invoice.
You could for example associate the desired text to macros, add the macros in the Description column of the Transactions table, and then replace these macros with the acutal text.
To do that:
- Define the macro name and the text associated to it. For example, we want to associate the text "Special offer!" to the macro called "#macro1".
- Add the "#macro1" text to the Description column of the Transaction table for all the items we want to add the "Special offer" text.
- Define an hook function that replaces the default formatItemsValue() function. This automatically replaces "#macro1“ with "Special offer!".
function hook_formatItemsValue(value, columnName, className, item) {
var itemFormatted = {};
itemFormatted.value = "";
itemFormatted.className = "";
if (columnName === "description") {
if (value && value.indexOf("#macro1") > -1) {
itemFormatted.value = value.replace("#macro1","\nSpecial offer!");
itemFormatted.className = className;
}
}
return itemFormatted;
}
The itemFormatted object has two properties:
- value is the value of the column that is printed in the invoice.
- className is the name of the class in the CSS file.
With this, when you create the invoice, the “#macro1“ text contained in the items description are replaced with the "Special offer!" text.
Example print:
Change style of an item value
Suppose you want to change the style of an item in the Description column of the invoice in order to print it bold.
To do that:
- Define the macro name like for example "#bold".
- Add the "#bold" text to the Description column of the Transaction table for all the items you want to change the text style to bold.
- Define an hook function that replaces the default formatItemsValue() function. This automatically removes the "#bold“ text and change the style.
function hook_formatItemsValue(value, columnName, className, item) {
var itemFormatted = {};
itemFormatted.value = "";
itemFormatted.className = "";
if (columnName === "description") {
if (value && value.indexOf("#bold") > -1) {
itemFormatted.value = value.replace("#bold","");
itemFormatted.className = "bold";
}
}
return itemFormatted;
}
The itemFormatted object has two properties:
- value is the value of the column that is printed in the invoice.
- className is the name of the class in the CSS file.
In this case all the texts “#bold“ contained in the items description are not printed, and the styles are changed to bold.
The class "bold" that we set in the line itemFormatted.className = "bold" already exists in the CSS file of the invoice. If you want to use other classes that don't exist, you need also to use the CSS customization in order to create them first.
Example print:
Change the font size of an item description
In this example, we want to change the font size of a specific item description text.
To do that we use the Javascript customization and also the CSS customization:
- Define a macro name like for example "#myFontSize". For each items description you want to change the font size, add the "#myFontSize" text at the end of the description.
- In Documents table:
- Add a new Javascript-type attachment.
Define then the hook function that replaces the default formatItemsValue() function.
This automatically removes the "#myFontSize“ text and changes the font size.
As ID name use for example "myStyle.js". - Add a new CSS-type attachment.
Define then the CSS class with the font size you want to use. Since the class that defines the font size does not exist in the CSS file of the invoice, you also have to create it.
As ID name use for example "myStyle.css".
- Add a new Javascript-type attachment.
- In CH10 / UNI11 layout settings, section Javascript / CSS, enter the appropriate names ("myStyle.js" and "myStyle.css").
Javascript hook function code:
function hook_formatItemsValue(value, columnName, className, item) {
var itemFormatted = {};
itemFormatted.value = "";
itemFormatted.className = "";
if (columnName === "description") {
if (value && value.indexOf("#myFontSize") > -1) {
itemFormatted.value = value.replace("#myFontSize","");
itemFormatted.className = "myFontSize";
}
}
return itemFormatted;
}
CSS code:
.myFontSize {
font-size: 8pt;
}Change the font size value as you desire.
When you create the invoice, the size of the texts in the descriptions changes.
Use different IBAN codes
The IBAN code is normally set either in the File → File and accounting properties → Address section or directly from the Invoice Settings under the related IBAN entry.
If you have more than one IBAN code to use and you want to decide to use one rather than another, you must manually change it when creating each invoice from the Invoice Settings.
However, using customization with Javascript it is possible to associate a different IBAN code to each customer. In this way, when you create the invoice, the script will automatically assign and insert the IBAN.
To do that we define the hook_modify_settings_qr() function that replaces the default modify_settings_qr() function.
function hook_modify_settings_qr(invoiceObj, qrcodeData) {
//Assign the IBAN code CHXXXXXXXXXXXXXXXXXXX to the customer 1101
if (invoiceObj.customer_info.number === "1101") {
qrcodeData.supplierIbanNumber = "CHXXXXXXXXXXXXXXXXXXX";
}
//Assign the IBAN code CHYYYYYYYYYYYYYYYYYYY to the customer 1102
else if (invoiceObj.customer_info.number === "1102") {
qrcodeData.supplierIbanNumber = "CHYYYYYYYYYYYYYYYYYYY";
}
//Assign the IBAN code CHZZZZZZZZZZZZZZZZZZZ to the customer numbers from 1103 to 1107
else if (invoiceObj.customer_info.number >= "1103" && invoiceObj.customer_info.number <= "1107") {
qrcodeData.supplierIbanNumber = "CHZZZZZZZZZZZZZZZZZZZ";
}
// ...
}
Copy the code above and just replace:
- the value of invoiceObj.customer_info.number with the customer account you want (e.g. 1101, 1102, 1103, ...)
- the value of qrcodeData.supplierIbanNumber with the IBAN number you want (e.g. CHXXXXXXXXXXXXXXXXXXX, CHYYYYYYYYYYYYYYYYYYY, CHZZZZZZZZZZZZZZZZZZZ, ...)
- You can also add/remove more cases.
With this, when you create the invoice the IBAN code is set automatically, and it is no longer necessary to change the invoice settings every time.
Select and use different IBAN codes
With JavaScript customization, you can define multiple IBAN codes and choose the appropriate one when printing the invoice.
This method displays a dialog that allows the user to select a specific IBAN from a list. The dialog is shown for each invoice being generated. For this reason, its use is recommended only when printing one invoice at a time.
It works ony for IBAN codes. Special QR-IBAN codes is not supported with this method.
To do this, we define the hook_modify_settings_qr() function, which replaces the default modify_settings_qr() function.
function hook_modify_settings_qr(invoiceObj, qrcodeData) {
// ENTER ALL THE IBAN CODES HERE
var ibanList = [
"CHXXXXXXXXXXXXXXXXXXX",
"CHYYYYYYYYYYYYYYYYYYY",
"CHZZZZZZZZZZZZZZZZZZZ"
];
// ENTER DE DEFAULT IBAN
var ibanDefault = "CHXXXXXXXXXXXXXXXXXXX";
qrcodeData.supplierIbanNumber = ibanDefault;
var invoiceNumber = invoiceObj.document_info.number;
var ibanSelected = Banana.Ui.getItem("Invoice " + invoiceNumber, "Select an IBAN account for the invoice " + invoiceNumber, ibanList, 0, false);
if (ibanSelected) {
qrcodeData.supplierIbanNumber = ibanSelected;
}
}Copy the code above and do the following:
- Replace ibanList with the actual IBAN codes you want to use. You can add as many IBAN codes as needed.
- Replace ibanDefault with the IBAN you want to use as the default. Only one default IBAN can be defined.
Use another date format
The date format is taken from the operating system settings.
This example shows how to use another date format for all Date-type columns in the invoice details, without changing the operating system settings.
To do that:
- The XML name of the column in Transaction table must begin with the word Date (eg DateWork, DateExecution, DateXxx).
- Define the hook_formatItemsValue() function.
- In the function set the format of the date you want to use.
Format examples:- dd.mm.yyyy
- dd/mm/yyyy
- dd-mm-yyyy
- yyyy.mm.dd
- yyyy/mm/dd
- yyyy-mm-dd
function hook_formatItemsValue(value, columnName, className, item) {
var itemFormatted = {};
itemFormatted.value = "";
itemFormatted.className = "";
if (columnName.startsWith("date")) {
itemFormatted.value = Banana.Converter.toLocaleDateFormat(value, "dd.mm.yyyy"); // insert here the format
itemFormatted.className = className;
}
return itemFormatted;
}
When you create the invoice, all dates in details table will be printed with the new format.
Example print:
Print images of items
This example shows how to add and print items images on the invoice details. Each item in the Items table is associated with an image and the image is then printed on the invoice.
To do this see the instructions:
- Invoice with product images (English)
- Rechnung mit Produktfotos (German)
- Fattura con immagini prodotti (Italian)
- Facture avec images des produits (French)
When you print the invoice, the items will be printed with an image.
Example print:
Print the items row numbers
This example shows how to print a column displaying the row numbers of the items.
The first item starts at row 1.
Steps
- Add the JavaScript code as attachment in the Documents table.
- If not present, add the Documents table from the menu Tools > Add/Remove functionalities > Add Documents table.
- In the ID column, enter the name of the attachment including the .js extension (e.g., "myFile.js").
- In the Attachments column, click on the icon at the top right and select Javascript code.
An editor opens where you can enter javascript code. Delete all. - Copy and paste
- the javascript code of the 'hook_print_details_net_amounts' function (that prints the invoice with net amounts).
- the javascript code of the 'hook_print_details_gross_amounts' function (that prints the invoice with gross amounts).
- Click OK.
- Sets the parameters of the invoice layout.
- In the Invoice Settings:
- In the Invoice Details section, add the columns "RowNumber".
RowNumber;Description;Quantity;ReferenceUnit;UnitPrice;Amount
10%;40%;10%;10%;15%;15%
left;left;right;center;right;right
left;left;right;center;right;right
- In the Texts section > Column names invoice details, add the texts for the column headings (e.g., “#;Description;Quantity;Unit;Unit Price;Amount”).
- In the Javascript / CSS > JS File Name section, enter the id of the attachment that contains the javascript code (e.g., "myFile.js").
- In the Invoice Details section, add the columns "RowNumber".
- In the Invoice Settings:
Example:
Print 0% VAT rate
This example shows how to print the VAT amounts with a rate of 0%.
To do this:
- add the following javascript snippet to your accounting in the documents table (see image below)
- add the reference to this hook in the settings dialog of the invoice extension (see image below)
function hook_print_details_net_amounts(banDoc, repDocObj, invoiceObj, texts, userParam, detailsTable, variables) {
//PRINT 0% VAT RATE
if (invoiceObj.billing_info.total_vat_rate_zero) {
invoiceObj.billing_info.total_vat_rate_zero.vat_rate="0.00";
invoiceObj.billing_info.total_vat_rates.unshift(invoiceObj.billing_info.total_vat_rate_zero);
}
print_details_net_amounts(banDoc, repDocObj, invoiceObj, texts, userParam, detailsTable, variables);
}
Example print:
Table documents where the custom javascript is defined
Settings dialog of the invoice extension where you have to indicate the hook that overwrites the original function
Print quantities without decimals
This example for the Integrated Invoice, shows how to print quantities without decimals.
To do this:
- Add the following javascript code to your accounting in the Documents table.
- Add the reference to this code in the Invoice Settings.
For more information see Add your custom Javascript file.
function hook_set_variables(variables, userParam) {
variables.decimals_quantity = 0;
}
Change decimals of amounts
This example for the integrated invoice shows how to change the decimals of the invoice amounts (quantity, unit price and amounts).
To do this:
- Add the following javascript code to your accounting in the Documents table.
- Change the number of decimals according to your needs.
- Add the reference to this javascript file in the Invoice Settings.
For more information see Add your custom Javascript file.
function hook_set_variables(variables, userParam) {
variables.decimals_quantity = 4;
variables.decimals_unit_price = 4;
variables.decimals_amounts = 4;
}Other examples and needs
With CSS and Javascript you can completely customize the invoice appearance.
If you have other specific needs, you can contact our customer service.
Invoice formatting with custom CSS Stylesheet
Banana invoices are formatted through a CSS Stylesheet. The extension allows you to use a customized stylesheet so you can fully modify the appearance of the invoice (this functionality requires the Advanced plan).
Following you will find information and examples that let anyone understand the basic of the CSS so that you are able to do a lot of customization to your invoice, even if you are not a CSS professional.
- See also the page CSS Examples.
Banana CSS Stylesheet file
The CSS file property let you specify an CSS stylesheet file to be used for formatting the invoice. You have to enter the name of a CSS document, contained in the Documents table.
The properties you define in the custom CSS file will extend or overwrite the styles of the default stylesheet.
Cascading Style Sheet (CSS) is a specification language that allows to customize the appearance of web pages, and a subset of the whole CSS specification is also used in Banana to prepare reports.
Here are some basics about CSS Stylesheet formatting.
- The document, in our case the invoice, is composed by a series of Elements that contains all the data of the invoice.
- Each element can have one or more class properties that specify which style should be used for that element.
- Each element can contain other elements.
- In the CSS stylesheet you specify the formatting properties of each class of style.
- The elements hynnerit the styles of the parent element.
- The main element for the invoice is the Document.
Add your custom CSS stylesheet
Three steps are required to define and use your CSS file:
- Add the document table to the Banana Accounting file.
If it is not already present you need to add the Documents table in the Banana document with the menu command Tools > Add new features > Add document table. - Add a new CSS type document to the document table.
- In the ID column enter the file name including the extension .css (e.g. "myStyle.css").
If the id is missing the ".css" at the end, it won't work. - In the Description column enter a comment (optional).
- In the Attachments column, double click on the cell or select the edit symbol, then select CSS stylesheet and confirm with Ok.
- An editor will open in which you can write the code.
- Enter or edit the script and confirm with Ok.
- Save the Banana Accounting file.

Documents table - CSS stylesheet attachment
- In the ID column enter the file name including the extension .css (e.g. "myStyle.css").
- Specify the CSS file created in the invoice layout extension.
- Select Settings of the Print invoices dialogue.
- In the Javascript/CSS > CSS file name, enter the name of the newly created CSS attachment file with the extension ".css" at the end (e.g. "myFile.css").
- Click Ok to confirm.

Settings Dialogue - CSS File Property
Syntax of a CSS stylesheet
The syntax of the CSS is quite simple as you see in this style definition that set the size of the Invoice title text element to 14 points and without bold.
/* this two lines are comment
title_text is for the invoice number */
.title_text {
font-family: Arial;
font-size: 14;
font-weight: normal;
color: #6495ED;
}Syntax rules:
- Element are case sensitive.
- You specify the style name ".title_text" starting with a dot (".") and followed by the curly open bracket "{".
- Property name, followed by the colon ":"
- Values followed by the semicolon ";"
- You can have has many allowed properties you need.
- End with the curly close bracket "}".
- You can have has many allowed style classes.
- The defined values overwrite the predefined one.
Comments:
- Add comments to the css by including the text within a /* comment */,
It help you remember the purpose of the code.
See the comments in the predefined CSS for explanations of the elements.
Most used properties
Font
- font-family
Specify the font name. - font-size
Specify the font size in points. - font-weight
Specify the font weight: normal, bold or value between 1-1000.
Text alignment
- text-align
Specify the horizontal alignment of the text.
It is used for example to align on the right of the cell all the amounts of the invoice (i.e. "text-align: right").
Colors
For the main colors you can use the name in English (black, yellow, white, blue, red, ...) or the hexadecimal values (HEX) preceded by the # sign (e.g. #000000, #009FE3, #FF00EA).
For codes see the table at https://www.w3schools.com/cssref/css_colors.asp.
- color
Define the color of a text. - background-color
Define the background color of an element.
It is used for example to set the background color of the header row of the invoice details.
Positioning
All elements in the invoice are positioned relative to the prior element. You can change the positioning.
- margin
- margin-top
To set the margin on the top of the element. - margin-right
To set the margin on the right side of the element. - margin-bottom
To set the margin on the bottom of the element. - margin-left
To set the margin on the left side of the element.
It is used for example in case it is required to move an element a bit to the right. More margin on the left means move the element to the right.
- margin-top
- padding
- padding-top
Sets the height of the area on the top of an element. - padding-right
Sets the width of the area on the right of an element. - padding-bottom
Sets the height of the area on the bottom of an element. - padding-left
Sets the width of the area on the left of an element.
- padding-top
/* For example it is used for the details table, to avoid that
all the texts are printed too close to the table border. */
.doc_table td {
padding-top: 5px;
padding-bottom: 1px;
padding-left: 4px;
padding-right: 4px;
}
Absolute positioning
Some elements are positioned relative to the begin of the document. The position of these elements does not depend on any other element in the document.
- postion
- For the logo, header text and address elements it is used the absolute positioning ("position: absolute").
Borders
To apply borders to tables and table rows.
- border-style
Sets the line style for all four sides of an element's border.- border-top-style
- border-right-style
- border-bottom-style
- border-left-style
- border-color
Sets the color for all four sides of an element's border.- border-top-color
- border-right-color
- border-bottom-color
- border-left-color
- border-width
Sets the width for all four sides of an element's border.- border-top-width
- border-right-width
- border-bottom-width
- border-left-width
/* For example use it to apply a double underline
to the total line of the invoice. */
.total_cell {
border-bottom-style: double;
border-bottom-color: #337ab7;
border-bottom-width: 1px;
}Display / Hide element
Set the attribute display to none to hide an element. In this case the Invoice number is hidden.
.title_text {
display: none;
}
Predefined Invoice CSS stylesheet
The JavaScript layout generates an invoice document where each element is assigned a specific CSS class. These classes control the position, spacing, and formatting of the elements according to the stylesheet rules.
If you need to introduce additional style classes, you must also update the JavaScript code to reference them, typically by using the available hook functions.
The following section shows the complete CSS stylesheet used for invoice documents. This stylesheet defines how each part of the invoice is displayed (e.g., headers, addresses, tables, totals, footers).
- Some style properties use predefined variables (values starting with $).
For example, $font_family is replaced with the font name selected by the user, while other variables are initialized through the JavaScript variable initialization function. - Comments inside the CSS are written between /* ... */.
They describe the purpose of each selector and when it should be applied.
Full CSS Code
/* @page
PURPOSE: Defines the physical page margins for printing.
EFFECT: All elements are positioned relative to these margins.
WHEN TO USE: When the user wants to change the page’s margin sizes. */
@page {
margin-top: 0cm;
margin-bottom: 0cm;
margin-left: 0cm;
margin-right: 0cm;
}
/* body
PURPOSE: Base style for the whole document.
EFFECT: Sets default font family, size, and text color for all content.
WHEN TO USE: When the user wants to change the default font, size, or text color for the whole document. */
body {
font-family: $font_family;
font-size: $font_size;
color: $text_color;
}
/* td
PURPOSE: Aligns table cell content vertically to the top.
WHEN TO USE: When the user wants all table cells aligned to the top vertically. */
td {
vertical-align: top;
}
/* .right
PURPOSE: Aligns text to the right.
USAGE: Often combined with other classes for layout control.
WHEN TO USE: When the user requests right-aligned text. */
.right {
text-align: right;
}
/* .center
PURPOSE: Centers text horizontally.
USAGE: Often combined with other classes for layout control.
WHEN TO USE: When the user requests centered text. */
.center {
text-align: center;
}
/* .bold
PURPOSE: Makes text bold.
USAGE: Often combined with other classes for layout control.
WHEN TO USE: When the user wants bold text. */
.bold {
font-weight: bold;
}
/* .padding-right
PURPOSE: Adds space inside the element on the right side.
EFFECT: 20px right padding.
WHEN TO USE: When the user wants extra padding on the right. */
.padding-right {
padding-right: 20px;
}
/* .padding-left
PURPOSE: Adds space inside the element on the left side.
EFFECT: 20px left padding.
WHEN TO USE: When the user wants extra padding on the left. */
.padding-left {
padding-left: 20px;
}
/* .border-top
PURPOSE: Adds a top border to an element.
TYPICAL USE: Horizontal separator (e.g., between item list and totals).
EFFECT: Solid, thin border in $color_title_total.
WHEN TO USE: When the user requests a horizontal line above an element. */
.border-top {
border-top-style: solid;
border-top-color: $color_title_total;
border-top-width: thin;
}
/* .header_text
PURPOSE: Styles the header text block alignment and position.
EFFECT: Sets margins, text alignment, and absolute positioning.
NOTE: Used when no logo is present, or with right-aligned text layouts.
WHEN TO USE: When the user wants to change or reposition the main header text. */
.header_text {
margin-top: 1.2cm;
margin-left: 1.2cm;
margin-right: 1.2cm;
text-align: right;
position: absolute;
}
/* .header_row_1
PURPOSE: Styles the first header row.
EFFECT: Bold text, 16pt font size.
WHEN TO USE: When the user wants to style the first line of header text (font weight, font size, font color, etc.). */
.header_row_1 {
font-weight: bold;
font-size: 16pt;
}
/* .header_row_2_to_5
PURPOSE: Styles header rows 2–5.
EFFECT: Bold text, 10pt font size.
WHEN TO USE: When the user wants to style the lines 2,3,4 and 5 of header text (font weight, font size, font color, etc.). */
.header_row_2_to_5 {
font-weight: bold;
font-size: 10pt;
}
/* .logo
PURPOSE: Positions the logo in the header.
EFFECT: Sets margins and absolute positioning.
WHEN TO USE: When the user wants to move or resize the logo position. */
.logo {
margin-top: 1.2cm;
margin-left: 1.34cm;
margin-right: 1.2cm;
position: absolute;
}
/* .info_table_left
PURPOSE: Positions and styles the information table on the left side, when the customer address block is positioned on the right side.
EFFECT: Sets font size and margins.
WHEN TO USE: When the user wants to style/move the left-side info table. */
.info_table_left {
font-size: $font_size;
margin-top: 4.5cm;
margin-left: 1.2cm;
margin-right: 1.2cm;
}
/* .info_table_right
PURPOSE: Positions and styles the information table on the right side, when the customer address block is positioned on the left side.
EFFECT: Sets font size and margins.
WHEN TO USE: When the user wants to style/move the right-side info table. */
.info_table_right {
font-size: $font_size;
margin-top: 5.5cm;
margin-left: 12.3cm;
margin-right: 1.2cm;
}
/* .info_table_row0
PURPOSE: Positions and styles the information table for page 2 and later.
EFFECT: Sets font size and margins.
WHEN TO USE: When the user wants to change the info table style for second and later pages. */
.info_table_row0 {
font-size: $font_size;
margin-top: 4.5cm;
margin-left: 1.2cm;
margin-right: 1.2cm;
}
/* table.info_table_left td
PURPOSE: Removes extra vertical padding in cells of left-side info tables.
WHEN TO USE: When the user wants to change spacing in left-side info table cells. */
table.info_table_left td {
padding-top: 0px;
padding-bottom: 0px;
}
/* table.info_table_right td
PURPOSE: Removes extra vertical padding in cells of right-side info tables.
WHEN TO USE: When the user wants to change spacing in right-side info table cells. */
table.info_table_right td {
padding-top: 0px;
padding-bottom: 0px;
}
/* table.info_table_row0 td
PURPOSE: Removes extra vertical padding in cells for page 2+ info tables.
WHEN TO USE: When the user wants to change spacing in page 2+ info table cells. */
table.info_table_row0 td {
padding-top: 0px;
padding-bottom: 0px;
}
/* @page:first-view table.info_table_row0
PURPOSE: Hides the page 2+ info table on the first page only.
NOTE: :first-view is a custom pseudo-class used to target the first rendering of an element.
WHEN TO USE: When the user wants to hide elements on the first page only. */
@page:first-view table.info_table_row0 {
display: none;
}
/* .info_table_first_column
PURPOSE: Optional override for the width of the first info-table column.
DEFAULT: If unset, the column uses the default width.
EXAMPLE: width: 100px;
WHEN TO USE: When the user wants to set a specific width for the first column. */
.info_table_first_column {}
/* .info_table_second_column
PURPOSE: Optional override for the width of the second info-table column.
DEFAULT: If unset, the column uses the default width.
EXAMPLE: width: 100px;
WHEN TO USE: When the user wants to set a specific width for the second column. */
.info_table_second_column {}
/* .address_table_right
PURPOSE: Positions the customer address block on the right side.
EFFECT: Sets font size, absolute position, and width.
WHEN TO USE: When the user wants to style or reposition the right-side address block. */
.address_table_right {
font-size: $font_size;
top: 4.5cm;
left: 12.3cm;
width: 7.5cm;
position: absolute;
}
/* .address_table_left
PURPOSE: Positions the customer address block on the left side.
EFFECT: Sets absolute position and width.
WHEN TO USE: When the user wants to style or reposition the left-side address block. */
.address_table_left {
top: 5.5cm;
left: 2.2cm;
width: 7.5cm;
position: absolute;
}
/* .custom_address_table_right
PURPOSE: Positions the right-side address using configurable margins.
SOURCE: $right_address_margin_top / $right_address_margin_left come from invoice settings.
WHEN TO USE: When the user wants to move the right address block using specific measurements. */
.custom_address_table_right {
font-size: $font_size;
top: $right_address_margin_top;
left: $right_address_margin_left;
width: 7.5cm;
position: absolute;
}
/* .custom_address_table_left
PURPOSE: Positions the left-side address using configurable margins.
SOURCE: $left_address_margin_top / $left_address_margin_left come from invoice settings.
WHEN TO USE: When the user wants to move the left address block using specific measurements. */
.custom_address_table_left {
top: $left_address_margin_top;
left: $left_address_margin_left;
width: 7.5cm;
position: absolute;
}
/* .small_address
PURPOSE: Styles the sender's small address line above the customer address.
EFFECT: 7pt font, centered text, bottom underline, 0.3cm bottom margin.
WHEN TO USE: When the user wants to style the small sender address above the customer’s. */
.small_address {
font-size: 7pt;
text-align: center;
border-bottom-style: solid;
border-bottom-color: $text_color;
border-bottom-width: 1px;
margin-bottom: 0.3cm;
}
/* .shipping_address
PURPOSE: Styles the shipping address block.
EFFECT: Sets font size and top/side margins.
WHEN TO USE: When the user wants to style the shipping address section. */
.shipping_address {
font-size: $font_size;
margin-top: 0.4cm;
margin-left: 1.2cm;
margin-right: 1.2cm;
}
/* .title_shipping_address
PURPOSE: Styles the "Shipping Address" title.
EFFECT: Bold text, $color_title_total color.
WHEN TO USE: When the user wants to style the shipping address title text. */
.title_shipping_address {
font-weight: bold;
color: $color_title_total;
}
/* .title_text
PURPOSE: Styles the invoice title.
EFFECT: Bold text, $font_size_title size, $color_title_total color.
WHEN TO USE: When the user wants to style the invoice title text. */
.title_text {
font-size: $font_size_title;
font-weight: bold;
color: $color_title_total;
}
/* .section_class_begin
PURPOSE: Container for the introductory (begin) text after the invoice title.
EFFECT: Full width with top/side margins.
WHEN TO USE: When the user wants to change the position or spacing of the intro text section. */
.section_class_begin {
margin-top: 1.0cm;
margin-left: 1.2cm;
margin-right: 1.2cm;
width: 100%;
}
/* .begin_text_table
PURPOSE: Table container for the "begin" text.
EFFECT: Full width.
WHEN TO USE: When the user wants to style the table of the begin text. */
.begin_text_table {
width: 100%;
}
/* .begin_text
PURPOSE: Styles the "begin" text.
EFFECT: Sets font size.
WHEN TO USE: When the user wants to change the style of the introductory text. */
.begin_text {
font-size: $font_size;
}
/* .section_class_details:first-view
PURPOSE: Applies a specific top margin to the details section on first render only.
NOTE: :first-view targets the first time the section is displayed.
WHEN TO USE: When the user wants to change the details section margin only on the first page. */
.section_class_details:first-view {
margin-top: 0.5cm;
}
/* .section_class_details
PURPOSE: Styles the invoice details section on all pages.
EFFECT: Sets font size and outer margins.
WHEN TO USE: When the user wants to style or adjust margins for the details section. */
.section_class_details {
font-size: $font_size;
margin-top: 0.5cm;
margin-bottom: 0.5cm;
margin-left: 1.3cm;
margin-right: 1.2cm;
}
/* .doc_table
PURPOSE: Table for invoice details.
EFFECT: Full width.
WHEN TO USE: When the user wants to style the details table. */
.doc_table {
width: 100%;
}
/* .doc_table_header
PURPOSE: Styles the header row of the invoice details table.
EFFECT: Bold, $font_size_header, custom text/background colors, bottom border.
WHEN TO USE: When the user wants to style the column headers of the details table. */
.doc_table_header {
font-size: $font_size_header;
font-weight: bold;
color: $text_color_details_header;
background-color: $background_color_details_header;
border-bottom: thin solid $color_title_total;
}
/* .doc_table td
PURPOSE: Sets cell padding for invoice details rows.
WHEN TO USE: When the user wants to adjust padding inside detail table cells. */
.doc_table td {
padding-top: 5px;
padding-bottom: 1px;
padding-left: 0px;
padding-right: 0px;
}
/* .doc_table_header td
PURPOSE: Sets cell padding for the invoice header row.
WHEN TO USE: When the user wants to adjust header cell padding in the details table. */
.doc_table_header td {
padding-top: 4px;
padding-bottom: 2px;
padding-left: 0px;
padding-right: 0px;
}
/* .item_cell
PURPOSE: Define the text style for each invoice item row.
USAGE: Apply to cells/rows containing individual items.
NOTE: Empty by default, add font/spacing/color rules as needed.
WHEN TO USE: When the user wants to style the text of each line item in the details table. */
.item_cell {}
/* .total_cell
PURPOSE: Styles the total row.
EFFECT: Bold, $font_size_total, $color_title_total color, double bottom border.
WHEN TO USE: When the user wants to style the row containing the total amount. */
.total_cell {
font-size: $font_size_total;
font-weight: bold;
color: $color_title_total;
border-bottom-style: double;
border-bottom-color: $color_title_total;
border-bottom-width: 1px;
}
/* .subtotal_cell
PURPOSE: Styles the subtotal row.
EFFECT: Bold text, single bottom border in $color_title_total.
WHEN TO USE: When the user wants to style the subtotal row in the details table. */
.subtotal_cell {
font-weight: bold;
border-bottom-style: solid;
border-bottom-color: $color_title_total;
border-bottom-width: thin;
}
/* .header_cell
PURPOSE: Styles any header cell in the invoice details.
EFFECT: Bold text.
WHEN TO USE: When the user wants to make any header cell bold in the details section. */
.header_cell {
font-weight: bold;
}
/* .vat_info
PURPOSE: Styles VAT-related text.
EFFECT: Sets font size (used for gross amount layouts).
WHEN TO USE: When the user wants to style VAT information text. */
.vat_info {
font-size: $font_size;
}
/* .even_rows_background_color
PURPOSE: Sets background color for even-numbered rows (striped tables).
WHEN TO USE: When the user wants alternating row background colors in tables. */
.even_rows_background_color {
background-color: $background_color_alternate_lines;
}
/* .section_class_final_texts
PURPOSE: Styles the final notes/greetings section after the details.
EFFECT: Sets top/side/bottom margins.
WHEN TO USE: When the user wants to style or adjust spacing for final texts or notes. */
.section_class_final_texts {
margin-top: 0cm;
margin-bottom: 0.5cm;
margin-left: 1.26cm;
margin-right: 1.0cm;
}
/* .footer_line
PURPOSE: Horizontal line above the footer section (separator).
EFFECT: Top border, side margins.
WHEN TO USE: When the user wants to add or style a separator line above the footer. */
.footer_line {
margin-left: 1.2cm;
margin-right: 1.0cm;
border-top-style: solid;
border-top-color: $color_title_total;
border-top-width: thin;
}
/* .footer_table
PURPOSE: Styles the footer table.
EFFECT: 8pt font, bottom margin, full width, side margins.
WHEN TO USE: When the user wants to style the footer section or adjust its spacing. */
.footer_table {
font-size: 8pt;
margin-bottom: 2.0cm;
margin-left: 1.2cm;
margin-right: 1.0cm;
width: 100%;
}CSS Class Reference
| Selector / Class | Purpose / Usage |
|---|---|
| @page | Defines page margins for printing. Use to change document margins. |
| body | Base font, size, and text color for the whole document. |
| td | Aligns table cells vertically to the top. |
| .right | Right-aligns text content. |
| .center | Center-aligns text content. |
| .bold | Makes text bold. |
| .padding-right | Adds padding on the right. |
| .padding-left | Adds padding on the left. |
| .border-top | Adds a border at the top (used as separator). |
| .header_text | Defines margins and styles of the header text block. |
| .header_row_1 | Defines styles of the first header row. |
| .header_row_2_to_5 | Defines styles of the header rows 2–5. |
| .logo | Defines margins of the logo in the header. |
| .info_table_left | Defines margins and styles of the left-side info table. |
| .info_table_right | Defines margins and styles of the right-side info table. |
| .info_table_row0 | Defines margins and styles of the Info table for page 2 and later. |
| table.info_table_left td | Defines spacing for left-side info table cells. |
| table.info_table_right td | Defines spacing for right-side info table cells. |
| table.info_table_row0 td | Defines spacing for page 2+ info table cells. |
| @page:first-view table.info_table_row0 | Hides info table (info_table_row0) on first page. |
| .info_table_first_column | Optional: defines width for first info table column. |
| .info_table_second_column | Optional: defines width for second info table column. |
| .address_table_right | Defines margins and styles for the right-side address block. |
| .address_table_left | Defines margins and styles for the left-side address block. |
| .custom_address_table_right | Defines margins and styles for the custom right address block. |
| .custom_address_table_left | Defines margins and styles for the custom left address block. |
| .small_address | Defines styles of the sender’s small address line. |
| .shipping_address | Defines margins and styles of the shipping address block. |
| .title_shipping_address | Defines styles of the shipping address title. |
| .title_text | Defines styles of the the invoice title. |
| .section_class_begin | Defines margins of the container for introductory text section. |
| .begin_text_table | Defines styles of the begin text in table. |
| .begin_text | Defines the styles of the introductory text. |
| .section_class_details:first-view | Adjusts details section margin on first page only. |
| .section_class_details | Defines margins and styles of the details section. |
| .doc_table | Defines the styles of the details table (items list). |
| .doc_table_header | Defines margins and styles for the header row of details table. |
| .doc_table td | Defines padding inside details table cells. |
| .doc_table_header td | Defines padding inside header row cells of details table. |
| .item_cell | Defines the styles of the invoice item rows (per line item). |
| .total_cell | Defines the styles of the total row. |
| .subtotal_cell | Defines the styles of the subtotal row. |
| .header_cell | Defines the styles of the invoice header rows. |
| .vat_info | Defines the styles of the VAT information text (for gross amounts only). |
| .even_rows_background_color | Applies background color to even table rows. |
| .section_class_final_texts | Defines margins and styles of the final notes/greetings section. |
| .footer_line | Defines margins and separator line above footer. |
| .footer_table | Defines margins and styles of the footer table. |
How to adapt the invoice print with CSS
The following examples show how to adapt invoice printing with custom CSS stylesheet files.
See CSS customization for more information.
Change margins of the page
Page margins are set automatically when creating the invoice. It is possible to change margins with CSS.
To do this, the different elements of the invoice must be changed in the CSS:
- Header (Logo and text).
- Invoice Information.
- Title and begin text.
- Invoice details.
- Final texts.
Copy and paste the following code into the editor, and change the margin-left and margin-right values:
/* Header Logo margins */
.logo {
margin-left: 1.34cm;
margin-right: 1.2cm;
margin-top: 1.2cm;
}
/* Header text margins (when logo is not used) */
.header_text {
margin-top: 1.2cm;
margin-left: 1.2cm;
margin-right: 1.2cm;
}
/* Information margins */
.info_table_left {
margin-left: 1.2cm;
}
/* Information margins (page 2+) */
.info_table_row0 {
margin-left: 1.2cm;
}
/* Title and begin texts margins */
.section_class_begin {
margin-left: 1.2cm;
margin-right: 1.2cm;
}
/* Invoice details margins */
.section_class_details {
margin-left: 1.3cm;
margin-right: 1.2cm;
}
/* Final texts margins */
.section_class_final_texts {
margin-left: 1.26cm;
margin-right: 1.2cm;
}
Change style of the header
The header text by default is always printed in bold, the font size of the first line is larger than the others, and the font is the same used for the rest of the invoice.
With this example we want to change something:
- Set the text color.
- Add a new declaration using the property color: and enter a color value.
- The color value is an hexadecimal value (HEX) preceded by the # sign (e.g. #000000, #009FE3, #FF00EA).
For codes see the table at https://www.w3schools.com/cssref/css_colors.asp.
- Remove the bold style.
- Change the font-weight: property value from bold to normal.
- Set the same font size for all the lines.
- Change the font-size: property value with a different size, e.g. 12pt.
- Change the font type.
- Add a new declaration using the property font-family: and enter a font, e.g. Times New Roman.
Copy and paste the following code into the editor:
/* Header row 1 */
.header_row_1 {
color: #0000FF;
font-weight: normal;
font-size: 12pt;
font-family: Times New Roman;
}
/* Header text row 2+ */
.header_row_2_to_5 {
color: #6495ED;
font-weight: normal;
font-size: 12pt;
font-family: Times New Roman;
}
The header text style is now changed from the original settings and is the same for all the lines.
Example print:
Change color of the header
The header text by default is always printed in black.
With this example we want to change the color:
- Set the text color.
- Add a new declaration using the property color: and enter a color value.
- The color value is an hexadecimal value (HEX) preceded by the # sign (e.g. #000000, #009FE3, #FF00EA).
For codes see the table at https://www.w3schools.com/cssref/css_colors.asp.
Copy and paste the following code into the editor, and change the color code:
/* Header row 1 */
.header_row_1 {
color: #6495ED;
}
/* Header text row 2+ */
.header_row_2_to_5 {
color: #6495ED;
}The header color is now changed from the original settings.
Use grayscale colours
With this example we set text and background colours with grayscale colours.
.total_cell {
color: black
}
.title_text {
color: black
}
.header_row_1 {
color: black;
}
.doc_table_header {
color: black;
background-color: white;
border-bottom: solid black thin;
}
Change position of information section
The information section of the invoice is always placed at the same height of the invoice address.
In this example we want to change the position of the information section. We do this by changing the the predefined margins values:
- To move vertically change the margin-top value.
- To move horizontally change the margin-left value.
In case the information section is on the left, copy and paste the following code into the editor and edit it with your values:
.info_table_left {
font-size: $font_size;
margin-top: 4.5cm;
margin-left: 1.2cm;
margin-right: 1.2cm;
}
In case the information section is on the right, copy and paste the following code into the editor and edit it with your values:
.info_table_right {
font-size: $font_size;
margin-top: 5.5cm;
margin-left: 12.3cm;
margin-right: 1.2cm;
}
For the information section on the second page, copy and paste the following code into the editor and edit it with your values:
.info_table_row0 {
font-size: $font_size;
margin-top: 4.5cm;
margin-left: 1.2cm;
margin-right: 1.2cm;
}
With these changes the information section starts now on a different position (and also the invoice details).
Example print:
Change position of the address
The position of the invoice address is normally fixed, but with this example we want to change it.
First we have to decide whether the address should be printed on the right or on the left.
For this example let's suppose that it is printed on the right.
In order to move the address (up, down, left, right) we can change the predefined margins values of the address element.
- Move up/down.
- To move the address up, change the top property value with a smaller value
(less space from the top margin means that the address goes up). - To move the address down, change the top property value with a bigger value
(more space from the top margin means that the address goes down).
- To move the address up, change the top property value with a smaller value
- Move left/right.
- To move the address left, change the left property value with a smaller value
(less space from the left margin means that the address goes left). - To move the address right, change the left property value with a bigger value
(more space from the left margin means that the address goes right).
- To move the address left, change the left property value with a smaller value
Copy and paste the following code into the editor and adjust the values of top and left:
.address_table_right {
font-size: $font_size;
top: 4.5cm;
left: 12.3cm;
width: 7.5cm;
height: 3.5cm;
position: absolute;
}
This works both when the address is printed on the right and when it is printed on the left.
Simply use the correct element: ".address_table_right" for the address on the right and ".address_table_left" for the address on the left.
With this change the invoice address starts now on a different position.
N.B. In previous example it was suggested to use margin-left and margin-top. From october 1st 2022 we recommend to use left and top with width and height attributes instead.
If you are using margin-left and margin-top within your custom css, you now have to replace them with left, top, width and height attributes.
Print the address in bold
This example shows how to print the invoice address in bold.
To do that, we have to add the font-weight:bold property to the address style. The address used in the example is the default one positioned on the right.
Copy and paste the following code into the editor:
.address_table_right {
font-size: $font_size;
top: 4.5cm;
left: 12.3cm;
width: 7.5cm;
height: 3.5cm;
position: absolute;
font-weight: bold;
}
Example print:
Change font type and font size of the address
This example shows how to print the invoice address with different font and size.
To do this:
- Add the font-family property to the address style. This is used to define the font type.
- Add the font-size property to the address style. This is used to define the font size.
If you are printing the address on the right, copy and paste the following code into the editor and replace the name of the font and the size:
.address_table_right {
font-family: Helvetica;
font-size: 12pt;
top: 4.5cm;
left: 12.3cm;
width: 7.5cm;
height: 3.5cm;
position: absolute;
}
If you are printing the address on the left, copy and paste the following code into the editor and replace the name of the font and the size:
.address_table_left {
font-family: Helvetica;
font-size: 12pt;
top: 5.5cm;
left: 2.2cm;
width: 7.5cm;
height: 3.5cm;
position: absolute;
}
In both examples you can also change the positions by editing the margin properties. More information Change position of the address.
Reduce space before and after invoice details
The positions of the elements and the space between them is predefined.
In this example we want to:
- Reduce spaces between address and title.
- Reduce spaces between details table and final texts.
Copy and paste the following code into the editor:
.section_class_begin {
margin-top: 0mm; /*reduce the default 10mm */
margin-left: 12mm;
margin-right: 12mm;
width: 100%;
}
.section_class_final_texts {
margin-top: 0mm; /*reduce the default 5mm */
margin-bottom: 10mm;
margin-left: 12mm;
margin-right: 10mm;
}
With this changes the spaces you have now less space before and after the invoice details.
Example print:
Change the title color
The title text by default is always printed with the same color of the total line.
With this example we want to change the title color without changing the total:
- Copy the code below.
- Change the color property value with the color you want.
.title_text {
font-size: $font_size_title;
font-weight: bold;
color: black;
}The title color is now changed from the original settings.
Change the size of the item rows
With this example we want to change the font size of the item rows:
- Copy the code below
- Change the font-size property value with the size you want.
.item_cell {
font-size: 9pt;
}Add a separator between items
In this example, we add a separator line between each item row.
- Copy the code below.
- Change the border-bottom property, specifying:
- the width of the line (1px, thin, etc.)
- the style of the line (solid, dotted, etc.)
- the color of the line (black, #000000, etc.)
.item_cell {
border-bottom: thin solid black;
}Change the total line bottom border
The total text by default is always printed with a double bottom border.
With this example we want to:
- Remove the bottom border.
- Change the border-bottom-style property value from double to none. This displays no border.
.total_cell {
font-size: $font_size_total;
font-weight: bold;
color: $color_title_total;
border-bottom-style: none;
border-bottom-color: $color_title_total;
border-bottom-width: 1px;
}
- Change the border style.
- Change the border-bottom-style property value with a different type (dotted, dashed, solid, double).
- Change the border-bottom-width property value with a different value (thin, thick, 1px, 2px,...).
- Change the border-bottom-color property value with a different color.
The total line style is now changed from the original settings.
Example print:
More space between total text and double underline
In this example we want to change the space between the total line text and the double underline.
The text is in the last row of the details table, and the double underline is done using a bottom border.
To increase or decrease the space in between we can use the padding property, that is used to generate space around an element's content (in this case the text), inside of any defined borders.
To do that we have to:
- Add a new selector that works specifically on all the cells of the total row.
- We use the total_cell selector that already exists (see example above).
- We combine it with the td selector in order to work on each data/cell of the row.
- Add the padding-bottom property only, and define a value we want.
Copy and paste the following code into the editor:
.total_cell td {
padding-bottom: 10px;
}
The bottom border distance of the total line is now changed from the original settings.
Example print:
Print a stamp
In this example we want print a text as a stamp over and under the invoice's content.
The text will be printed rotated. For that we will use the css attribute transform.
To do that, we have to:
- Add a new selector that works specifically on the stamp text.
- Add the text as last first paragraph, so that it will be under the content.
- Add the text as last last paragraph, so that it will overlap the content.
Copy and paste the following code into the css editor:
.stamp1 {
position: absolute;
transform: translate(-0cm,10cm),rotate(-45deg);
font-size: 60;
text-align: center;
color: #CCCCCCCC;
}
.stamp2 {
position: absolute;
transform: translate(-0cm,16cm),rotate(-45deg);
font-size: 60;
text-align: center;
color: #CCCCCCCC;
}Copy and paste the following code into the js editor:
function hook_print_header(repDocObj, userParam, repStyleObj, invoiceObj, texts) {
let stamp = repDocObj.addSection("stamp1");
stamp.addParagraph("Stamp under text!");
print_header(repDocObj, userParam, repStyleObj, invoiceObj, texts)
}
function hook_print_footer(repDocObj, texts, userParam) {
print_footer(repDocObj, texts, userParam)
let stamp = repDocObj.addSection("stamp2");
stamp.addParagraph("Stamp over text!");
}The bottom border distance of the total line is now changed from the original settings.
Example print:
Fehlermeldungen QR-Rechnung
Fehlermeldungen
@error QR-IBAN fehlt
- Der QR-IBAN-Code muss in den Rechnungseinstellungen unter QR-IBAN angegeben werden.
- Überprüfen Sie, dass der QR-IBAN-Code nicht in den Basisdaten eingegeben wurde Datei > Eigenschaften (Stammdaten) > Adresse.
@error Falscher QR-IBAN
Überprüfen, ob der in den Rechnungseinstellungen eingegebene QR-IBAN-Code korrekt ist. Bitte lesen Sie auch den Absatz QR-IBAN-Konto unserer Webseite QR-Rechnung mit QR-IBAN.
@error IBAN fehlt
- Der IBAN-Code für Konten in CHF kann auf zwei Arten angegeben werden
- In den Basisdaten Datei > Eigenschaften (Stammdaten) > Adresse.
- In den Rechnungseinstellungen, unter IBAN.
- Der IBAN-Code für ein Konto in EUR muss in den Rechnungseinstellungen, unter IBAN EUR eingegeben werden.
@error Falscher IBAN
- Überprüfen Sie, dass der IBAN-Code in den Basisdaten Datei > Eigenschaften (Stammdaten) > Adresse oder in den Rechnungseinstellungen korrekt ist.
- Überprüfen Sie, dass in den Basisdaten Datei > Eigenschaften (Stammdaten) > Adresse > nicht der QR-IBAN-Code eingegeben wurde. Der QR-IBAN-Code muss in den Rechnungseinstellungen eingegeben werden.
@error Adresse: Name/Firma fehlt
Vor- und Nachnamen oder Firmennamen des Absenders unter Datei > Eigenschaften (Stammdaten) > Adresse-Registerkarte erfassen, und die entsprechenden Kundendaten in der Konten-Tabelle > Adresse-Ansicht.
@error Adresse: PLZ fehlt
Postleitzahl (PLZ) des Absenders aus unter Datei > Eigenschaften (Stammdaten) > Adresse-Registerkarte erfassen, und die entsprechenden Kundendaten in der Konten-Tabelle > Adresse-Ansicht.
@error Adresse: Ort fehlt
Ort des Absenders unter Datei > Eigenschaften (Stammdaten) > Adresse-Registerkarte erfassen, und denjenigen des Kunden in der Konten-Tabelle > Adresse-Ansicht.
@error Adresse: Ländercode fehlt
Absenderadresse (Zahlbar an):
- Den Ländercode des Absenders über das Menü Datei > Eigenschaften (Stammdaten) > Registerkarte 'Adresse', im Feld "Nation/Code" festlegen.
- Oder, falls die im CH10-Rechnungslayout (personalisierter Rechnungsausdruck) definierte Adresse verwendet wird, den Ländercode des Absenders im CH10-Einstellungsdialog > Abschnitt "Zahlbar an..." eintragen.
Kundenadresse (Zahlbar von):
- In der integrierten Fakturierung/Rechnungsstellung: Den Ländercode des Kunden in der Tabelle 'Konten' > Ansicht 'Adresse '> Spalte 'Nation/Code' eintragen.
- In der separaten App 'Offerten und Rechnungen': Den Ländercode des Kunden in der Tabelle 'Kontakte' > Spalte 'Nation Kennzeichen' angeben.
@error Adresse: Falscher Ländercode
Der Ländercode muss nach Standard ISO 3166-1 aus zwei Zeichen bestehen (z.B. CH, LI, AT, DE, IT, FR).
@error isrId too long, max 8 chars. Your isrId %1
Die in den Rechnungseinstellungen eingegebene Teilnehmernummer ist zu lang. Die maximal zulässige Länge beträgt 8 Ziffern. Für weitere Informationen lesen Sie bitte QR-Referenz (QRR).
@error isrId invalid, only digits are permitted. Your isrId %1
Die in den Rechnungseinstellungen eingegebene Teilnehmernummer ist ungültig. Sie darf nur aus Zahlen bestehen. Für weitere Informationen lesen Sie bitte QR-Referenz (QRR).
@error customerNo too long, max 7 digits. Your customerNo %1
Die Kundennummer ist zu lang. Die maximal zulässige Länge beträgt 7 Ziffern. Für weitere Informationen lesen Sie bitte QR-Referenz (QRR).
@error customerNo invalid, only digits are permitted. Your customerNo %1
Die Kundennummer ist ungültig. Sie darf nur aus Zahlen bestehen. Sie darf keine ASCII (A-Z)-Buchstaben, Leerzeichen, Trennzeichen oder andere Zeichen enthalten. Für weitere Informationen lesen Sie bitte QR-Referenz (QRR).
@error invoiceNo too long, max 7 digits. Your invoiceNo %1
Die Rechnungsnummer ist zu lang. Die maximal zulässige Länge beträgt 7 Ziffern. Für weitere Informationen lesen Sie bitte QR-Referenz (QRR).
@error invoiceNo invalid, only digits are permitted. Your invoiceNo %1
Die Rechnungsnummer ist ungültig. Sie darf nur aus Zahlen bestehen. Sie darf keine ASCII (A-Z)-Buchstaben, Leerzeichen, Trennzeichen oder andere Zeichen enthalten. Für weitere Informationen lesen Sie bitte QR-Referenz (QRR).
@error Name zu lang, max. 70 Zeichen
Der Name ist zu lang. Die maximal zulässige Länge beträgt 70 Zeichen. Für weitere Informationen Technische Informationen.
@error Adresse zu lang, max. 70 Zeichen
Die Adresse ist zu lang. Die maximal zulässige Länge beträgt 70 Zeichen. Für weitere Informationen Technische Informationen.
@error Hausnummer zu lang, max. 16 Zeichen
Die Hausnummer ist zu lang. Die maximal zulässige Länge beträgt 16 Zeichen. Für weitere Informationen Technische Informationen.
@error Postleitzahl zu lang, max. 16 Zeichen
Die Postleitzahl ist zu lang. Die maximal zulässige Länge beträgt 16 Zeichen. Für weitere Informationen Technische Informationen.
@error Ort zu lang, max. 35 Zeichen
Der Ortstext ist zu lang. Die maximal zulässige Länge beträgt 35 Zeichen. Für weitere Informationen Technische Informationen.
@error Postleitzahl+Ort zu lang, max. 70 Zeichen
Der Text der Postleitzahl und des Ortes ist zu lang. Die maximal zulässige Länge beträgt 70 Zeichen. Für weitere Informationen Technische Informationen.
Beispiele von QR-Rechnungen
Diese Webseite zeigt Beispiele von möglichen Ausdrucken von QR-Rechnungen.
Rechnung mit Standardeinstellungen
- Benutzen Sie die Standardeinstellungen des Dialogfensters der Rechnung
- Erfassen Sie in den Dateieigenschaften (Datei > Eigenschaften (Stammdaten) > Adressen) oder in den Einstellungen der Rechnung eine IBAN-Kontonummer.
Beispiel eines Rechnungsausdrucks:
Rechnung mit Logo
Über den Menübefehl Datei > Logo einrichten:
- Definieren Sie das Logo, seine Grösse und die Ausrichtung
- Legen Sie die Ausrichtung des Textes der Rechnungsüberschrift fest
Definieren Sie den Kopftext im Menü Datei > Eigenschaften ( Stammdaten) > Adresse oder mithilfe der Felder im Dialogfenster Einstellungen der Rechnung
Beispiel eines Rechnungsdrucks mit dem Logo auf der linken Seite und dem Text auf der rechten Seite:
Beispiel eines Rechnungsdrucks mit dem Logo auf der rechten Seite und dem Text auf der linken Seite:
Rechnung mit Logo im Briefpapier-Stil (A4-Format)
Dieses Beispiel erklärt, wie ein ganzseitiges Logo (im Stil eines Briefpapiers) eingerichtet wird. Dabei wird ein Bild mit einem Logo im oberen Bereich und einer Fusszeile im unteren Bereich verwendet. Ziel ist es, eine Rechnung mit folgendem Layout zu drucken:
- Auf den Seiten mit den Rechnungsdetails werden sowohl das Logo als auch die Fusszeile angezeigt.
- Auf der letzten Seite mit dem QR-Einzahlungsschein wird nur das Logo ohne Fusszeile angezeigt.
Dies ist besonders nützlich, wenn eine QR-Rechnung mit Fusszeile gedruckt werden soll, da die Fusszeile normalerweise nur eingefügt werden kann, wenn der QR-Einzahlungsschein nicht mitgedruckt wird.
So funktioniert es:
- Erstellen Sie ein A4-Bild der Briefpapier-Vorlage mit dem Logo im oberen Bereich und der Fusszeile im unteren Bereich.
Beispiel:
- Fügen Sie das als Logo erstellte Bild ein, indem Sie im Menü Datei > Logo einrichten wählen.
- Definieren Sie die Grösse: Breite 21cm und Höhe 29.7cm (wenn die Bildabmessungen bereits korrekt sind, können diese beiden Einstellungen weggelassen werden).
- Definieren Sie die Ausrichtung auf der linken Seite.
- Die Position und Ausrichtung des Textes sind irrelevant, da kein Text in der Kopfzeile gedruckt wird.
- Verwenden Sie erweiterte Anpassungen mit CSS, um die Ränder des Logos zu ändern.
In der Tabelle Dokumente fügen Sie in einer neuen Zeile das CSS als Anhang hinzu.- In der Spalte ID geben Sie eine ID ein (z.B. logo.css). Diese muss mit ".css" enden.
- In der Spalte Anhänge klicken Sie zweimal auf die Zelle und wählen Sie CSS-Stilblatt aus.
- Im geöffneten Editor fügen Sie den folgenden Code ein:
.logo { margin-top: 0cm; margin-left: 0cm; margin-right: 0cm; }
- Stellen Sie einige Parameter im Dialogfenster 'Rechnungseinstellungen' ein:
- In der Sektion Drucken > Kopfzeile deaktivieren Sie das Kontrollkästchen Kopfzeile der Seite.
- In der Sektion Drucken > Kopfzeile aktivieren Sie das Kontrollkästchen Logo.
- In der Sektion Drucken > Kopfzeile, im Feld Anpassung für die Ausrichtung von Logo und Kopfzeile, geben Sie den Namen der Personalisierung ein, die Sie in Datei > Logo einrichten > Anpassung > Name definiert haben (Standardmässig "Logo").
- In der Sektion QR-Code aktivieren Sie das Kontrollkästchen QR auf separater Seite.
- In der Sektion Javascript / CSS, im Feld CSS-Dateiname, geben Sie die ID des CSS-Anhangs ein, den Sie in der Dokumenttabelle definiert haben (z.B. logo.css).
Beispiel einer QR-Rechnung: Auf der ersten Seite wird das Logo und die Fusszeile angezeigt, auf der zweiten Seite das Logo und der QR-Einzahlungsschein.

Rechnung ohne Logo und Adresse Kopfzeile links
Gehen Sie auf Datei > Logo einrichten:
- Fügen Sie kein Logo hinzu
- Was die Position des Textes betrifft, richten Sie folgendes ein:
- Auf Logo bezogene Position: linke Seite
- Horizontale Ausrichtung: Links
- Gehen Sie in die Sektion Anpassung und geben Sie im Feld Name einen Namen für die Anpassung ein (z.B. "Logo").

Gehen Sie nun in das Dialogfenster Rechnungseinstellungen, Registerkarte Drucken > Kopfzeile:
- Zeigen Sie das Feld Seitenkopf an
- Zeigen Sie das Feld Logo an ( obwohl kein Logobild geladen wird).
- In das Feld Logo-Name geben Sie den Namen der Anpassung ein, den Sie zuvor im Dialog Logo einrichten > Anpassung > Name definiert haben (z. B. "Logo").

Beispiel eines Ausdruckes:
Rechnung mit Kundenadresse auf der linken Seite
Über das Dialogfenster Rechnungseinstellungen, Registerkarte Kundenadresse:
- Definieren Sie die Zusammensetzung der Adresse, indem Sie die XML-Namen der Spalten für die Adressen in der Tabelle Konten angeben.
- Wählen Sie das Feld Links ausrichten, um die Adresse auf der linken Seite und den Informationsteil auf der rechten Seite zu drucken.

Beispiel eines Ausdruckes:
Rechnung mit Überschriften und Zwischensummen im Detail
In einigen Fällen kann es sinnvoll sein, in den Rechnungsdetails Überschriften und Zwischensummen hinzuzufügen.
Integrierte Fakturierung
Definieren Sie in der Tabelle Buchungen Kopfzeilen und Zwischensummen mithilfe der Spalte Typ:
- Kopfzeilen: Geben Sie den Befehl 10:hdr und den Text in der Spalte Beschreibung ein
- Zeilen der Zwischensummen: Geben Sie den Befehl 10:tot und den Text in der Spalte Beschreibung ein

Applikation Offerten und Rechnungen
Die Spalte "Typ" im Dialog zum Bearbeiten der Rechnung erlaubt es, einer Rechnungszeile eine spezielle Funktion zuzuweisen (zum Beispiel Kopfzeile, Notizen, Zwischensummen).

Beispiel einer mehrseitigen Rechnung:

Informationen zum Einfügen der Absenderadresse für Briefumschläge mit Fenster finden Sie im Abschnitt Kundenadresse auf der Seite Anpassungen des Rechnungsdrucks.
Rechnung mit Lieferadresse und den Spalten Beschreibung und Betrag
Über den Einstellungendialog der Rechnung:
- Im Abschnitt Kundenadresse die Option Lieferadresse aktivieren.
- Im Abschnitt Rechnungsdetails definieren Sie:
- Die zu verwendenden Spaltennamen, indem die XML-Namen der Spalten der Tabelle Buchungen angegeben wird.
- Die Breite jeder Spalte.
- Die Ausrichtung der Titel und Texte der Spalten.
- Im Abschnitt Texte definieren Sie für jede Spalte die Texte der Überschriften.
Fügen Sie nun noch für jede Sprache, die Sie verwenden möchten, die Übersetzung hinzu.
Beispiel eines Rechnungsausdrucks mit anderen Stil-Eigenschaften (z.B. Schriftart oder Farben)
Spalten der Tabelle Buchungen benutzen
Voraussetzungen:
- Abonnement für den Advanced-Plan von Banana Buchhaltung Plus.
Zusätzlich zu den Standardspalten (Beschreibung, Menge, Stückzahl, Stückpreis und Betrag) können Sie im Rechnungsausdruck weitere Spalten der Tabelle Buchungen hinzufügen, auch solche, die in der Tabelle manuell hinzugefügt wurden.
In einigen Fällen kann es sinnvoll sein, eine eigene (nicht im Programm vordefinierte) Spalte in die Rechnungsdetails aufzunehmen z.B. eine Spalte, in der das Ausführungsdatum eines Auftrages angegeben wird:
Erstellung einer Spalte:
- In der Tabelle Buchungen mit dem Befehl Spalten einrichten eine Spalte hinzufügen.
- Erstellen Sie die Spalte DateWork mit Datentyp Datum.
Der XML-Name jeder Spalte vom Typ Datum muss mit dem Wort "Date" beginnen (z. B. DateWork, DateExecution, DateXXX).
Für den Rechnungsausdruck übernimmt das Programm das Format des Datums, welches in den Einstellungen des Betriebssystems definiert ist.
- Erfassen Sie Ihre Buchungen für die Erstellung der Rechnung und erfassen Sie in dieser Spalte das Datum, an welchem die Arbeit ausgeführt wurde.
Mittels Einstellungendialog der Rechnung:
- Definieren Sie im Abschnitt Rechnungsdetails:
- Die zu verwendenden Spaltennamen, indem Sie die XML-Namen der Spalten der Tabelle Buchungen angeben.
Fügen Sie die auf diese Weise erstellte Spalte ein: T.DateWork (den eigenen Spalten muss ein "T." vorangestellt werden). - Fügen Sie die Breite der hinzugefügten Spalte hinzu und passen Sie die vorhandenen Spalten an.
- Fügen Sie die Ausrichtung der Überschriften und Texte der Spalten der hinzugefügten Spalte hinzu und passen Sie die vorhandenen Spalten an.
- Die zu verwendenden Spaltennamen, indem Sie die XML-Namen der Spalten der Tabelle Buchungen angeben.
- Im Abschnitt Texte definieren Sie die Texte für die Überschrift aller Spalten.
- Fügen Sie den Text der hinzugefügten Spalte hinzu und passen Sie falls notwendig die vorhandenen an.
- Fügen Sie für jede Sprache, die Sie verwenden möchten, die Übersetzung hinzu.

Mit personalisierten erweiterten Anpassungen in JavaScript können Sie eine Funktion hinzufügen, die das Format ändert, in dem das Datum gedruckt wird. Weitere Informationen finden Sie auf Seite Use another date format.
Beispiel eines Rechnungsdrucks:
Rechnung mit Anfangs- und Schlusstext, Bemerkungen und Gruss
In der Tabelle Buchungen definieren Sie mittels Typ-Spalte Anfangstexte, Bemerkungen und Grüsse:
- Anfangstext: Geben Sie in der Spalte Typ den Code 10:beg ein und erfassen Sie den gewünschten Text in der Spalte Beschreibung.
- Bemerkungen: Geben Sie in der Spalte Typ den Code 10:not ein und erfassen Sie den gewünschten Text in der Spalte Beschreibung.
- Grussformel-Text: Geben Sie in der Spalte Typ den Code 10:gre ein und erfassen Sie den gewünschten Text in der Spalte Beschreibung.
- Zwischen doppelten Sternchen (**) eingefügter Text wird fett dargestellt.

Mittels Einstellungendialog der Rechnung:
- Definieren Sie im Abschnitt Texte den Text am Ende, welcher unmittelbar nach den Rechnungsdetails eingefügt wird.
Zwischen doppelten Sternchen (**) eingefügter Text wird fett dargestellt.
Beispiel eines Rechnungsdrucks:
Rechnung ohne Betrag
Die Rechnung ohne Betrag wird verwendet, wenn Sie dem Kunden die Wahl des zu zahlenden Betrags überlassen möchten (z.B. bei Spenden).
Im QR-Zahlteil des Ausdrucks wird ein leeres Kästchen für den noch einzusetzenden Betrag belassen. Der Betrag ist handschriftlich einzufügen.
Geben Sie in der Buchungen-Tabelle die Buchung der Spende ohne Betrag ein.
Über den Einstellungen-Dialog der Rechnung, Absatz QR-Code ist die Option Rechnungsbetrag ausschliessen zu aktivieren.
Beispiel eines Rechnungsdrucks:

Rechnung mit Beschreibungen auf mehreren Zeilen (integrierte Fakturierung)
Mit der integrierten Fakturierung/Rechnungsstellung können Rechnungen mit mehreren aufeinanderfolgenden Textzeilen für Beschreibungen erstellt werden.
Vorgehensweise:
- Öffnen Sie den Menübefehl Daten > Spalten einrichten und fügen Sie eine oder mehrere zusätzliche Beschreibungsspalten in der Buchungen-Tabelle hinzu.
Erstellen Sie Spalten vom Typ Text mit dem Namen Description gefolgt von einer Zahl (z.B. "Description1", "Description2", ...).
Der XML-Name jeder Spalte muss mit der englischen Bezeichnung "Description" beginnen und von einer Zahl gefolgt werden (z.B. Description1, Description2, …).

- Geben Sie in den neu angelegten Spalten zusätzliche Beschreibungstexte für die Rechnungen ein.
Der Text jeder Spalte wird in einer neuen Zeile der Rechnungsbeschreibung angezeigt.
- Aktivieren Sie im Einstellungsdialog unter 'Druckeinstellungen der Rechnung' > Abschnitt Drucken > Rechnungsdetails einschliessen die Option Zusätzliche Beschreibungen drucken.

Wenn in der Buchungen-Tabelle zusätzliche Beschreibungsspalten vorhanden sind und Texte enthalten, werden diese auf dem Rechnungsausdruck angezeigt.
Beispiel eines Rechnungsdrucks:
Rechnung mit Beschreibungen auf mehreren Zeilen (Offerten und Rechnungen)
Mit der separaten Applikation Offerten und Rechnungen können Rechnungen mit mehreren aufeinanderfolgenden Textzeilen für Beschreibungen erstellt werden.
So vorgehen:
- Im Dialog zur Erstellung/Bearbeitung einer Rechnung, in der Sektion Rechnungsdetails, Spalte Beschreibung:
- Die gewünschten Beschreibungstexte eingeben.
- Zeilenumbrüche setzen und beliebig viele Zeilen hinzufügen.
- Leere Zeilen einfügen, falls gewünscht.
- Text fett hervorheben, indem er zwischen doppelte Sternchen gesetzt wird (z.B. **fett formatierter Text**).
- Den Betrag entweder in derselben Zeile wie die mehrzeilige Beschreibung oder in einer neuen Zeile einfügen (siehe Abbildung).

Beim Drucken der Rechnung werden die Beschreibungen auf mehreren Zeilen angezeigt – genauso wie im Dialog.
Beispiel eines Rechnungsdrucks:
Rechnung mit Spalte Artikelrabatt
Dieses Beispiel für die Fakturierung mit der Anwendung Offerten und Rechnungen zeigt, wie Sie die Spalte Artikelrabatt in den Rechnungsdetails hinzufügen.
Voraussetzungen:
- Abonnement für den Advanced-Plan von Banana Buchhaltung Plus.
- Beta Release-Version der Anwendung Offerten und Rechnungen
Dabei sind folgende Schritte zu beachten:
- Erstellen Sie Rechnungen, indem Sie die Spalte Rabatt benutzen. Geben Sie einen Prozentsatz oder einen Wert ein.

- Mittels Einstellungendialog der Rechnung:
- Fügen Sie im Abschnitt Rechnungsdetails die Spalte Discount (in Englisch) hinzu.
- Legen Sie die Spaltenbreiten fest.
- Fügen Sie die Ausrichtung der Überschriften und Texte der Spalten hinzu.
- Description;Quantity;ReferenceUnit;UnitPrice;Discount;Amount
35%;10%;10%;15%;15%;15%
left;center;center;right;right;right
left;center;center;right;right;right
- Description;Quantity;ReferenceUnit;UnitPrice;Discount;Amount
- Im Abschnitt Texte > Spaltenüberschrift Rechnungsdetails fügen Sie für jede Sprache, die Sie verwenden möchten, die Texte der Tabellenüberschriften hinzu, wobei Sie auch den Text der Spalte 'Rabatt' erfassen.
- Beschreibung;Menge;Einheit;Preiseinheit;Rabatt;Betrag
Beispiel eines Rechnungsdrucks:

Rechnung mit Produktfotos
Dieses Beispiel zeigt, wie Sie Produktbilder in den Rechnungsdetails einfügen und ausdrucken können.
- Voraussetzungen:
- Abonnement für den Advanced-Plan von Banana Buchhaltung Plus
- Personalisierte erweiterte Anpassungen in JavaScript
Für das Einbinden von Bildern Ihrer Produkte so vorgehen:
- Fügen Sie alle Produktfotos hinzu.
- Speichern Sie alle Bilder Ihrer Produkte:
- Wählen Sie dasselbe Verzeichnis oder Unterverzeichnis, in dem die Datei (.ac2) gespeichert wurde.
- Unterstützte Bildformate: png und jpg
- Es wird empfohlen, kleinformatige Bilder zu benutzen
Die endgültige Grösse der PDF-Datei hängt vom Gewichtsumfang der Bilder ab.
- Fügen Sie die Spalte Links hinzu.
- Machen Sie mittels Menübefehl Daten > Spalten einrichten die Spalte Links der Tabelle Artikel sichtbar..
- Verknüpfen Sie Bilder mit Artikeln.
- Fügen Sie nun in der Spalte Links der Tabelle Artikel den Link zum Bild für jedes Produkt in der Tabelle hinzu.
Klicken Sie auf das kleine Symbol in der oberen rechten Ecke der Zelle und wählen Sie das gewünschte Bild aus.
- Fügen Sie nun in der Spalte Links der Tabelle Artikel den Link zum Bild für jedes Produkt in der Tabelle hinzu.
- Speichern Sie alle Bilder Ihrer Produkte:
- Fügen Sie die Tabelle Dokumente hinzu.
- Falls noch nicht vorhanden, fügen Sie die Tabelle Dokumente hinzu.
Über das Menü Werkzeuge > Neue Funktionen hinzufügen > Dokumente-Tabelle.
- Falls noch nicht vorhanden, fügen Sie die Tabelle Dokumente hinzu.
- Fügen Sie in der Dokumente-Tabelle den JavaScript-Code als Beilage ein.
- Geben Sie in der ID-Spalte den Namen des Anhangs gefolgt von der Erweiterung .js ein (z.B. "myFile.js").
- Klicken Sie in der Spalte Beilagen auf das kleine Symbol, das in der oberen rechten Ecke der Zelle erscheint und wählen Sie als Dokumenttyp Javascript Code aus.
Es erscheint der Editor zum Schreiben von Texten, wo Sie den JavaScript-Code eingeben. - Kopieren Sie den JavaScript-Code der Funktion 'hook_print_details_net_amounts' In diesem Beispiel wurde die Funktion verwendet, die die Rechnung mit den Nettobeträgen (ohne MWST) druckt.
- Fügen Sie den Code im JavaScript-Editor ein und bestätigen Sie mit OK.
- Legen Sie die Parameter für das Rechnungslayout fest.
- Fügen Sie in den Rechnungseinstellungen > Rechnungsdetails die Spalten "I.Links" (Spalte für Bilder) und "Number" (Spalte für Artikelnummer) hinzu.
- Beispiel:
I.Links;Number;Description;Quantity;ReferenceUnit;UnitPrice;Amount
10%;10%;30%;10%;10%;15%;15%
left;left;left;right;center;right;right
left;left;left;right;center;right;right
- Beispiel:
- Geben Sie in den Rechnungseinstellungen > Texte die Namen der einzelnen Spalten ein.
- Image;Item;Description;Quantity;Unit;Unit Price;Amount
- Geben Sie in den Rechnungseinstellungen unter JavaScript/CSS > JS Dateiname ('ID-Spalte Dokumente-Tabelle) den Namen der Beilage ein, die den JavaScript-Code enthält (z.B. "myFile.js").
- Fügen Sie in den Rechnungseinstellungen > Rechnungsdetails die Spalten "I.Links" (Spalte für Bilder) und "Number" (Spalte für Artikelnummer) hinzu.
Im Rechnungslayout werden auch die Produktbilder eingeschlossen.
Beispiel eines Rechnungsdrucks:






