ESC
Type to search…
v2026
This documentation is still being improved and may not fully reflect how the application works. Join the forum to ask questions and share feedback →
Docs Settings Document Closings

Document Closings

A Document Closing ("Penutup Dokumen") is a reusable block printed at the end of a document — signatures, bank/payment details, and terms & conditions. You write it once under Settings, then optionally attach it to any transaction. It is authored in HTML + Liquid, just like a Document Template, but it is a small fragment rather than a whole page.

Signatures moved here. The built-in PDF no longer prints a fixed signature block. To show signatures on the built-in PDF, create a Document Closing that contains them — the built-in starter closing already includes a ready-made signature row.

Overview

Concept Description
Closing An HTML + Liquid fragment you write and save under Settings
Assignment Each transaction can optionally reference one closing
Optional If no closing is assigned, nothing extra is printed
Reusable Authored once and reused — unlike custom fields, it is not re-typed on every form

How a closing renders

A closing is shown differently depending on how the document is printed:

Output How the closing appears
Built-in PDF (default) Rendered as plain text at the very bottom of the document body. HTML tags are ignored — only line breaks are kept. Liquid placeholders still work.
HTML template (a Document Template is assigned) Exposed to the template as {{ closing }}. The template author places it, and its HTML renders in full.

This is the most important thing to understand: write Liquid placeholders for both, but use real HTML layout only when you target the HTML-template path. On the built-in PDF a <table> collapses to stacked text lines.

Creating a Closing

  1. Go to Administration → Document Closings.
  2. Click New.
  3. Enter a Name (e.g. "Signatures + BCA", "Standard Terms").
  4. Click Start from built-in example to pre-fill a signature row + bank-details example.
  5. Edit the HTML/Liquid code as needed.
  6. Keep Active checked so it appears in the dropdowns, then click Save.

Deactivating a closing hides it from the dropdowns without deleting it. Deleting a closing does not break transactions that used it — they simply stop showing it.

Assigning a Closing to a Transaction

On any Create or Edit form (Sales Invoice, Purchase Invoice, Payment, Receipt, Journal, Contra, Sales/Purchase Order, Delivery/Receipt Note, etc.), find the Document Closing field next to Print Template. Pick your closing or leave it as — None —.

The choice is saved with the transaction and applied every time that document is previewed or printed.

Using a Closing inside an HTML template

If a transaction also has a Document Template assigned, the closing is not appended automatically — you decide where it goes by placing {{ closing }} in your template:

<!-- ... your invoice body ... -->

{% if closing != "" %}
  <div class="closing" style="margin-top:12pt;">{{ closing }}</div>
{% endif %}

{{ closing }} outputs the closing's resolved HTML verbatim. The built-in starter template already includes this block just before the footer.

Liquid Variables

A closing has access to the same data model as a Document Template. All variables use {{ variable }} syntax and {% %} tags.

Availability differs by document type. Most documents expose the full model. Delivery Notes and Receipt Notes are the exception — inside their closings only business.* and labels.* are available; document.* and custom_fields resolve to empty. Keep note closings to business-level content (signatures, bank details).

Document type business labels document custom_fields
Sales/Purchase Invoice, Credit/Debit Note
Payment, Receipt, Journal, Contra
Sales Order, Purchase Order
Delivery Note, Receipt Note

Business

Variable Description
business.name Company name
business.address Full formatted address
business.logo_url Logo as base64 data URL
business.phone Phone number
business.email Email address
business.tax_number Tax registration number
business.currency Base currency code

Document

Variable Description
document.type Document type name (e.g. "Sales Invoice")
document.type_key Stable type key (e.g. SalesInvoice)
document.number Document number (e.g. "SI-2026-0001")
document.date / document.date_long Date, short / long format
document.due_date / document.due_date_long Due date, short / long format
document.reference_number Reference / supplier document number
document.narration Notes / description
document.currency Currency code (e.g. "IDR")
document.salesman / document.project Salesman / project name (if any)
document.amount_in_words Grand total in words

Document Totals

Variable Description
document.subtotal Total before tax and discount
document.total_discount Total discount amount
document.total_tax Total tax amount
document.total_wht Total withholding tax
document.grand_total Final payable amount
document.balance_due Grand total minus applied advances

Party (Customer / Supplier)

Variable Description
document.party.name Party name
document.party.address Full formatted address
document.party.tax_number Party tax number
document.party.phone Party phone number

Line items & custom fields

The full line-item collection (document.items, with item.item_name, item.quantity, item.amount, …) and document custom fields (custom_fields.header, each with .name / .value / .show_in_preview) are also available — see the Document Templates reference for the complete list. They are rarely needed in a closing, which usually shows only signatures, bank details, and terms.

Labels (Localised)

Use {{ labels.* }} for text that adapts to the active app language (English / Indonesian / Arabic).

Variable English Indonesian
labels.received_by Received by Diakui Pelanggan
labels.approved_by Approved by Disetujui Oleh
labels.prepared_by Prepared by Disiapkan Oleh
labels.notes Notes / Terms Catatan / Syarat
labels.amount_in_words Amount in Words Terbilang
labels.grand_total Total Total
labels.date Date Tanggal
labels.page Page Halaman

(The complete labels.* set is listed under Document Templates.)

Filters

Filter Example Output
money {{ document.grand_total \| money }} 1,500,000.00 (EN) / 1.500.000,00 (ID)
money0 {{ document.grand_total \| money0 }} 1,500,000 (no decimals)
upcase / downcase {{ document.type \| upcase }} SALES INVOICE

Examples

Signature row (renders as a 3-column table in HTML templates, stacked text on the built-in PDF)

<table style="width:100%; margin-top:18pt; font-size:9pt; border-collapse:collapse;">
  <tr>
    <td style="width:33%; text-align:center;">{{ labels.received_by }}<br><br><br>____________________</td>
    <td style="width:33%; text-align:center;">{{ labels.approved_by }}<br><br><br>____________________</td>
    <td style="width:33%; text-align:center;">{{ labels.prepared_by }}<br><br><br>____________________</td>
  </tr>
</table>

Bank / payment details

<div style="margin-top:10pt; font-size:8.5pt; color:#555;">
  Please pay to: BCA 123-456-7890 a.n. {{ business.name }}<br>
  Amount due: {{ document.grand_total | money }} {{ document.currency }}
</div>

Terms & conditions

<div style="margin-top:8pt; font-size:8pt; color:#777;">
  <strong>{{ labels.notes }}</strong><br>
  Goods sold are not returnable. Payment due within 30 days of the invoice date.
</div>

Tips

  • Built-in PDF = text. Tags like <table> and <div> are stripped on the built-in PDF; only line breaks (<br>, end of </p>/</div>/</tr>) survive. Design built-in closings as clean lines with Liquid placeholders; reserve rich HTML layout for the HTML-template path.
  • Placement. On the built-in PDF the closing sits at the very bottom of the body. In an HTML template it appears wherever you put {{ closing }}.
  • Notes are business-only. Delivery/Receipt Note closings can use business.* and labels.* only.
  • Inspect the data. When using an HTML template, the starter template logs a closing value (and the full model) to the browser console on the preview page.
  • Reusability. Create one closing per style (e.g. with vs. without bank details) and pick the right one per transaction.