Skip to content
Log in

Create or update a POS receipt template

On this page

In StoreConnect, receipt templates are created created using a combination of Liquid templating code and print markup tags.

For this procedure, you will need to be familiar with Liquid and print markup. You will also need the right Salesforce Admin access to add and update templates.

Add or update a receipt template

  1. Open your store in StoreConnect.
  2. Go to the Additional Relationships tab
  3. In the Store Printable Templates section, select New or open an existing template. Receipt template window
  4. Give the template a Name. Choose something you will recognize easily later.
  5. In the Printer Type field, select Receipt.
  6. In the Type field, select Product.
  7. Leave the height and width fields blank.
  8. In the Template field, enter the code for the receipt structure. An example and explanations are provided below.
  9. Select Save.
  10. Test and update code until you are happy with the results.

Sample receipt template

```liquid {% assign outlet = current_order.outlet %} {document word-wrap=true } {# header }

{center} {image src=”{{ outlet.images[“receipt-logo”].url }}” size=80 dither=atkinson } {line} {% if current_order.type == “layby” %} LAYBY DOCKET {line} {% endif %} {bold} {{ outlet.store.name }} {endBold} {{ outlet.name }} {line} ABN {{ current_order.store.tax_number }} {line} {{ outlet.address }} Ph: {{ outlet.phone }} {left} {line} {table cols=2 margin=1 align=[left,right] row=[”{{ current_order.ordered_at | date: “%d/%m/%Y” }}”, “{{ current_order.ordered_at | date: “%l:%M:%S%p” }}”] } {# items }

{line} {bold} {table cols=3 margin=1 align=[left,right,right] width=[,4,8] row=[“Item”,”Qty”,”Total”] } {endBold} {rule} {table cols=3 margin=1 align=[left,right,right] width=[,4,8] {% for item in current_order.items %} row=[”{{ item.product.name }}”, “{{ item.quantity }}”, “{{ item.total_price | money }}”] row=[”{{ item.product.product_code }} @{{ item.unit_price | money }} ea.”, “”, “”] {% endfor %} }

{# total }

{center} {rule} {left} {table cols=2 margin=1 align=[left,right] width=[*,8] row=[“Subtotal”,”{{ current_order.subtotal | money }}”] row=[“Tax”,”{{ current_order.tax | money }}”] }

{bold} {table cols=2 margin=1 align=[left,right] width=[,8] row=[“Total”,”{{ current_order.total | money }}”] } {endBold} {line} {table cols=2 margin=1 align=[left,right] width=[,8] {% for payment in current_order.payments %} row=[”{{ payment.type }}”,”{{ payment.amount | money }}”] {% if payment.type == “Cash” and payment.change > 0 %} row=[“Change”,”{{ payment.change | times: -1 | money }}”] {% endif %} {% endfor %} } {bold} {table cols=2 margin=1 align=[left,right] width=[,8] row=[“Balance”,”{{ current_order.balance | money }}”] } {endBold} {line} {table cols=2 margin=1 align=[left,right] width=[10,] row=[“Reference”,”{{ current_order.order_reference }}”] row=[“Staff”,”{{ current_order.register_shift_user.user.code }}”] row=[“Customer”,”{{ current_order.contact.name }}”] {% if current_order.contact.email %} row=[“Email”,”{{ current_order.contact.email }}”] {% endif %} {% if current_order.contact.phone %} row=[“Phone”,”{{ current_order.contact.phone }}”] {% endif %} } {line} {center} {qrcode data=”{{ current_order.url }}” size=6 model=1 } {# layby }

{% if current_order.type == “layby” %} {line} {rule} {line} {bold} {left} Layby Terms & Conditions {endBold} 1) Maximum layby period 3 months 2) Payments due every 2 weeks 3) Cancellations incur 10% fee {% endif %} ```

Explanation of receipt template code by section

The way the receipt code works is to display data already defined in StoreConnect, e.g. your store and outlet information, and combine this with transaction information.

liquid {image src="{{ outlet.images["receipt-logo"].url }}" ...} LAYBY DOCKET {{ outlet.store.name }} ABN {{ current_order.store.tax_number }}

Displays elements defined in other parts of StoreConnect:

  • A logo from the outlet settings
  • Business name and ABN
  • LAYBY notice if applicable

Items table

liquid {table cols=3 ... row=["Item","Qty","Total"] ...}

Dynamically lists purchased items with quantity and total per item. Uses a nested loop to show both product name and unit price on two lines, per product.

Totals and payments

liquid row=["Subtotal","{{ current_order.subtotal | money }}"] row=["Tax","{{ current_order.tax | money }}"] row=["Total","{{ current_order.total | money }}"]

Shows financial breakdown of subtotal, tax, and total. Then loops through current_order.payments to show all payment types and any change.

liquid row=["Staff","{{ current_order.register_shift_user.user.code }}"] row=["Customer","{{ current_order.contact.name }}"]

Can include:

  • Staff and customer info
  • Optional phone/email
  • QR code linking to order URL

Layby terms and conditions (if applicable)

liquid {% if current_order.type == "layby" %} Layby Terms & Conditions... {% endif %}

Conditionally displays terms and conditions, if the order type is layby.

Was this article helpful?

Was this article helpful?