Common use cases
Showing a different billing account per currency
Using the document.currency
variable, you can easily display different messages based on the document's currency. A common use case is to show a different bank account for euros and dollars.
{% if document.currency == 'EUR' %}
<p>Show EUR bank account</p>
{% elsif document.currency == 'USD' %}
<p>Show USD bank account</p>
{% endif %}
Adding a negative sign for refunds
In Quaderno, refunds are shown with a positive sign. If you prefer to display them with a negative sign, simply add the following conditional before each amount.
<tr>
<td colspan="2"> </td>
<td class="label">{{ labels.subtotal }}</td>
<td class="right">
<strong>
{% if document.type == 'Credit' %}
-
{% endif %}
{{ document.subtotal | money }}
</strong>
</td>
</tr>
Displaying applied discounts by line item
In the sample templates, discounts are shown totalized. If you need to show discounts broken down by line item, you'll need to access the {{ item.discount_rate }}
variable and modify the loop that renders the line items. You can also show the gross amount (subtotal - discount) per line item with the {{ item.gross_amount }}
variable.
In the table's head, add a description (in the example, {{labels.subtotal}}
). Then in the loop for the invoice's line items, add the {{item.discount_rate}}
variable to the table, and if you want, the {{item.gross_amount | money}}
too:
<!-- items table -->
<table id="items">
<thead>
<tr>
<th class="w60per">{{labels.description}}</th>
<th class="right">{{labels.quantity}}</th>
<th class="right">{{labels.unit_price}}</th>
<th class="right">{{labels.amount}}</th>
<th class="right">{{labels.subtotal}}</th>
</tr>
</thead>
<tbody>
{% for item in document.items %}
<tr>
<td>{{item.description}}</td>
<td class="right">{{item.quantity | precision}}</td>
<td class="right">{{item.unit_price | money}}</td>
<td class="right">{% if item.discount_rate > 0 %}{{item.discount_rate}}%{% endif %}</td>
<td class="right">{{item.gross_amount | money}}</td>
</tr>
{% endfor %}
</tbody>
<tfoot>
<tr>
<td colspan="5">
In the table footer, make sure to change the colspan
from 4 to 5 columns. You might also want to show the total gross amount of the document, like so:
<tfoot>
<tr>
<td colspan="5">
<p>{{labels.subtotal}}: {{document.subtotal | money}}</p>
{% if document.discount > 0 %}
<p>{{labels.discount}}: {{document.discount | money}}</p>
<p>{{labels.subtotal}} - {{labels.discount}}: {{document.gross_amount | money}}</p>
{% endif %}
Note that some integrations might send discounts as negative line items with no discount.
Breaking tables across PDF pages
You can apply different styles when printing and exporting documents as PDF, by modifying the @media print
CSS rules included in the default templates.
For instance, when printing documents with a lot of items tables will be shown as a whole by default, moving the entire table to the next page if needed. In case you prefer to break down the items table across pages to optimize the space used in the PDF, you can modify the default behaviour overriding this line:
#items tr { page-break-inside: auto !important }
Now tables with lots of items will use all available space and continue on the next PDF page.
Customize decimal precision in your invoices
Easily adjust decimal precision in Quaderno documents using the precision
filter. By default, it displays two decimal places, but you can specify a different number, like in {{ total_amount | precision: 3 }}
for three decimal places.
Displaying order numbers or other document data
You can display any data that can be obtained through Quaderno variables. To show the order number, use {{ document.po_number }}
.
Adding information to your documents via API
Using our API, you can add additional information to any document using the custom_metadata
hash.
For example, when creating an invoice, send the following hash:
{ "custom_metadata": { "your_internal_field": "value" } }
And you will be able to access your_internal_field
from document
with {{ document.your_internal_field }}
.
Displaying a message for non-European customers
In some cases, regulatory agencies in a country may recommend including specific text on an invoice, for example, to reference a legal article justifying the absence of taxes in a particular situation.
In this example, we'll display a message in French when the customer is outside the EU:
{% unless contact.eu_member? %}
<p> TVA non applicable pour les clients hors UE - art. 259-1 du CGI</p>
{% endunless %}
Displaying the currency ISO code
Sometimes it might be confusing to show just the currency symbol, as some are shared in different countries. For instance, the "$" symbol is used in both the United States and Canada.
To display the currency ISO code, you can use the money
filter: {{ document.total | money: true }}
Showing reverse charge legal notes in your B2B invoices
You can show a legal note when reverse charge applies to your invoice, with:
{% if document.reverse_charged? %}
<p> Your country's reverse charge text </p>
{% endif %}
The variable document.reverse_charged?
is true when a valid customer tax id was provided on the transaction. Check the “selling to businesses” use case from our tax calculation guide to learn more.
Please note that invoices created from Stripe’s charges already provide a message “Tax amount subject to reverse charge” into the document.notes
, and all sample templates show that variable when it exists.