Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Shopify Order Printer Template with product image, variations and line item properties
<p style="float: right; text-align: right; margin: 0;">
{{ "now" | date: "%m/%d/%y" }}<br />
Invoice for {{ order_name }}
</p>
<div style="float: left; margin: 0 0 1.5em 0;" >
<strong style="font-size: 2em;">{{ shop_name }}</strong><br /><br />
{{ shop.address }}<br/>
{{ shop.city }} {{ shop.province_code }} {{ shop.zip | upcase }}<br/>
{{ shop.country }}
</div>
<hr />
<h3 style="margin: 0 0 1em 0;">Item Details</h3>
<table class="table-tabular" style="margin: 0 0 1.5em 0;">
<thead>
<tr>
<th>Product Image</th>
<th>Quantity</th>
<th>Item</th>
<th>Device<th>
{% if show_line_item_taxes %}
<th>Taxes</th>
{% endif %}
<th>Price</th>
</tr>
</thead>
<tbody>
{% for line_item in line_items %}
<tr>
<td><img src="{{ line_item.product.featured_image | product_img_url: 'thumb' }}" /></td>
<td>{{ line_item.quantity }} </td>
<td>{{ line_item.quantity }} <b>{{ line_item.title }}</b></td>
{% comment %}
<td>
{% unless line_item.variant.title contains 'Default' %}
{{ line_item.variant.title }}
{% endunless %}
</td>
{% endcomment %}
<td>
{% assign property_size = line_item.properties | size %}
{% if property_size > 0 %}
{% for p in line_item.properties %}
{% unless p.last == blank %}
<b>{{ p.first }}:</b>
{% if p.last contains '/uploads/' %}
<a href="{{ p.last }}">{{ p.last | split: '/' | last }}</a>
{% else %}
<b>{{ p.last }}</b>
{% endif %}
<br>
{% endunless %}
{% endfor %}
{% endif %}
<td/>
{% if line_item.tax_lines %}
<td>
{% for tax_line in line_item.tax_lines %}
{{ tax_line.price | money }} {{ tax_line.title }}<br/>
{% endfor %}
</td>
{% endif %}
<td>{{ line_item.price | money }}</td>
</tr>
{% endfor %}
</tbody>
</table>
{% if transactions.size > 1 %}
<h3 style="margin: 0 0 1em 0;">Transaction Details</h3>
<table class="table-tabular" style="margin: 0 0 1.5em 0;">
<thead>
<tr>
<th>Type</th>
<th>Amount</th>
<th>Kind</th>
<th>Status</th>
</tr>
</thead>
<tbody>
{% for transaction in transactions %}
<tr>
<td>{{ transaction.gateway | payment_method }}</td>
<td>{{ transaction.amount | money }}</td>
<td>{{ transaction.kind }}</td>
<td>{{ transaction.status }}</td>
</tr>
{% endfor %}
</tbody>
</table>
{% endif %}
<h3 style="margin: 0 0 1em 0;">Payment Details</h3>
<table class="table-tabular" style="margin: 0 0 1.5em 0;">
<tr>
<td>Subtotal price:</td>
<td>{{ subtotal_price | money }}</td>
</tr>
{% for discount in discounts %}
<tr>
<td>Includes discount "{{ discount.code }}"</td>
<td>{{ discount.savings | money }}</td>
</tr>
{% endfor %}
<tr>
<td>Total tax:</td>
<td>{{ tax_price | money }}</td>
</tr>
{% if shipping_address %}
<tr>
<td>Shipping:</td>
<td>{{ shipping_price | money }}</td>
</tr>
{% endif %}
<tr>
<td><strong>Total price:</strong></td>
<td><strong>{{ total_price | money }}</strong></td>
</tr>
{% if total_paid != total_price %}
<tr>
<td><strong>Total paid:</strong></td>
<td><strong>{{ total_paid | money }}</strong></td>
</tr>
<tr>
<td><strong>Outstanding Amount:</strong></td>
<td><strong>{{ total_price | minus: total_paid | money }}</strong></td>
</tr>
{% endif %}
</table>
{% if note %}
<h3 style="margin: 0 0 1em 0;">Note</h3>
<p>{{ note }}</p>
{% endif %}
{% if shipping_address %}
<h3 style="margin: 0 0 1em 0;">Shipping Details</h3>
<div style="margin: 0 0 1em 0; padding: 1em; border: 1px solid black;">
<strong>{{ shipping_address.name }}</strong><br/>
{% if shipping_address.company %}
{{ shipping_address.company }}<br/>
{% endif %}
{{ shipping_address.street }}<br/>
{{ shipping_address.city }}
{{ shipping_address.province_code }}
{{ shipping_address.zip | upcase }}<br/>
{{ shipping_address.country }}
</div>
{% endif %}
<p>If you have any questions, please send an email to <u>{{ shop.email }}</u></p>
@ahmedesoliman

This comment has been minimized.

Copy link

@ahmedesoliman ahmedesoliman commented Oct 4, 2018

That's Amazing!! Thank You so much!

@ahmedesoliman

This comment has been minimized.

Copy link

@ahmedesoliman ahmedesoliman commented Oct 4, 2018

Is there is a way to include the product SKU no to the template? Thanks in advance1

@MrBayoumi

This comment has been minimized.

Copy link

@MrBayoumi MrBayoumi commented Oct 18, 2019

Almost a year later and i have put this to good use, thanks a lot!
I still have a question: What is this for?

 <td>
        {% assign property_size = line_item.properties | size %}
                    {% if property_size > 0 %}
                      {% for p in line_item.properties %}
                        {% unless p.last == blank %}
                          <b>{{ p.first }}:</b>

                          {% if p.last contains '/uploads/' %}
                            <a href="{{ p.last }}">{{ p.last | split: '/' | last }}</a>
                          {% else %}
                            <b>{{ p.last }}</b>
                          {% endif %}

                          <br>
                        {% endunless %}
                      {% endfor %}
                    {% endif %}
        <td/>
@enamhasan

This comment has been minimized.

Copy link
Owner Author

@enamhasan enamhasan commented Oct 19, 2019

Hi,

Glad to know this helps to you. The part of code above is for line item properties / custom fields from shopify product page.
To know more about line item properties, you can read this article

https://help.shopify.com/en/themes/customization/products/features/get-customization-information-for-products

Thank you.
Enam

@IrakliZakaidze

This comment has been minimized.

Copy link

@IrakliZakaidze IrakliZakaidze commented Apr 2, 2020

@enamhasan My friend, I copied up your html template and saved it in Shopify's order printer. I'm satisfied with everything, except that it's in letter size. I have a small zebra label printer which is a length of 8inch and width of 4inch. If you can, please provide a template for this data.

@gabesqueda

This comment has been minimized.

Copy link

@gabesqueda gabesqueda commented Aug 22, 2020

This is very useful, I only have one question, how can I delete the word "VAT" in the tax description, I live in Mexico so I only need the Tax and the amount but not the VAT word.
Captura de Pantalla 2020-08-22 a la(s) 8 15 43 a  m

@csanyipeti

This comment has been minimized.

Copy link

@csanyipeti csanyipeti commented Sep 16, 2020

Hey there! Big question: is there a way to enlarge the product image in the template? Much appreciate your help :)

@briscolion

This comment has been minimized.

Copy link

@briscolion briscolion commented Sep 24, 2020

is there a way to minus discount amount from to show actual outstanding amount after discount

@Himal32

This comment has been minimized.

Copy link

@Himal32 Himal32 commented Feb 5, 2021

Best and correct post.

@ebproject

This comment has been minimized.

Copy link

@ebproject ebproject commented May 12, 2021

This is very useful, I only have one question, how can I delete the word "VAT" in the tax description, I live in Mexico so I only need the Tax and the amount but not the VAT word.
Captura de Pantalla 2020-08-22 a la(s) 8 15 43 a  m

Remove {{ tax_line.title }} from the code, that'll remove VAT

@ebproject

This comment has been minimized.

Copy link

@ebproject ebproject commented May 12, 2021

Hey there! Big question: is there a way to enlarge the product image in the template? Much appreciate your help :)

Try adding width="100px" or whatever px size you desire in the img tag.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment