Articles on: Regios Discounts

Incorrect Shipping Costs in Draft Order Invoices

Screenshot of shipping incorrectly appearing as free with a $0 discount


If your draft order invoice is displaying incorrect shipping values when using a shipping discount from our app, the most likely reason is that your draft order invoice template has subtle issues in its Liquid code.


Go to Settings > Notifications > Customer notifications > Draft order invoice, click Edit code, and make the following changes if necessary (we recommend saving a backup copy first):


Don't Assume Shipping Is Free

Analyze your draft order invoice template code to make sure it only displays "Free" shipping if the discounted shipping price actually is 0. You can use shipping_price | minus: shipping_amount to get the discounted shipping price.


(shipping_amount is a variable assigned in the default invoice template).


For example, the reference template below introduces a discounted_shipping_price variable used for display purposes.


Ignore Discount Applications with a Zero Value

Replace with {% if discount_application.target_type == 'shipping_line' %} with {% if discount_application.target_type == 'shipping_line' and discount_application.total_allocated_amount > 0 %}.


Screenshot of extra shipping line items in a draft order


In draft orders, we've noticed that Shopify adds a shipping line item for each delivery method to the draft order, but sets the price for all except the selected one to $0.00. The default invoice template code always reassigns shipping_amount, even if the discount_application.total_allocated_amount is 0. Therefore, the actual shipping discount value gets overwritten with $0.00 when it's time to render the HTML. To work around this, we recommend changing that line to {% if discount_application.target_type == 'shipping_line' and discount_application.total_allocated_amount > 0 %}. We've done this on line 429 of the reference invoice template below.


Example of a Working Template

{% capture email_title %}
{% if payment_terms %}
Review and confirm to complete your order
{% else %}
Complete your purchase
{% endif %}
{% endcapture %}
{% capture email_body %}
{% if item_count > 1 %}
These items will be reserved for you until {{ reserve_inventory_until | date: format: 'date_at_time' }}.
{% else %}
This item will be reserved for you until {{ reserve_inventory_until | date: format: 'date_at_time' }}.
{% endif %}
{% endcapture %}

<!DOCTYPE html>
<html lang="en">
<head>
<title>{{ email_title }}</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width">
<link rel="stylesheet" type="text/css" href="/assets/notifications/styles.css">
<style>
.button__cell { background: {{ shop.email_accent_color }}; }
a, a:hover, a:active, a:visited { color: {{ shop.email_accent_color }}; }
</style>
</head>

<body>
<table class="body">
<tr>
<td>
<table class="header row">
<tr>
<td class="header__cell">
<center>

<table class="container">
<tr>
<td>

<table class="row">
<tr>
<td class="shop-name__cell">
{%- if shop.email_logo_url %}
<img src="{{shop.email_logo_url}}" alt="{{ shop.name }}" width="{{ shop.email_logo_width }}">
{%- else %}
<h1 class="shop-name__text">
<a href="{{shop.url}}">{{ shop.name }}</a>
</h1>
{%- endif %}
</td>

<td>
<table class="order-po-number__container">
<tr>
<td class="order-number__cell">
<span class="order-number__text">
Invoice {{ name }}
</span>
</td>
</tr>
{%- if po_number %}
<tr>
<td class="po-number__cell">
<span class="po-number__text">
PO number #{{ po_number }}
</span>
</td>
</tr>
{%- endif %}
</table>
</td>
</tr>
</table>

</td>
</tr>
</table>

</center>
</td>
</tr>
</table>

<table class="row content">
<tr>
<td class="content__cell">
<center>
<table class="container">
<tr>
<td>

<h2>{{ email_title }}</h2>
{% if custom_message != blank %}
<p>{{ custom_message }}</p>
{% elsif reserve_inventory_until %}
<p>{{ email_body }}</p>
{% endif %}
{% if payment_terms %}
<table class="row actions">
<tr>
<td class="empty-line">&nbsp;</td>
</tr>
<tr>
<td class="actions__cell">
<table class="button main-action-cell">
<tr>
<td class="button__cell"><a href="{{ invoice_url }}" class="button__text">Confirm order</a></td>
</tr>
</table>
{% if shop.url %}
<table class="link secondary-action-cell">
<tr>
<td class="link__cell">or <a href="{{ shop.url }}">Visit our store</a></td>
</tr>
</table>
{% endif %}

</td>
</tr>
</table>

{% else %}
<table class="row actions">
<tr>
<td class="empty-line">&nbsp;</td>
</tr>
<tr>
<td class="actions__cell">
<table class="button main-action-cell">
<tr>
<td class="button__cell"><a href="{{ invoice_url }}" class="button__text">Complete your purchase</a></td>
</tr>
</table>
{% if shop.url %}
<table class="link secondary-action-cell">
<tr>
<td class="link__cell">or <a href="{{ shop.url }}">Visit our store</a></td>
</tr>
</table>
{% endif %}

</td>
</tr>
</table>

{% endif %}

</td>
</tr>
</table>
</center>
</td>
</tr>
</table>

<table class="row section">
<tr>
<td class="section__cell">
<center>
<table class="container">
<tr>
<td>
<h3>Order summary</h3>
</td>
</tr>
</table>
<table class="container">
<tr>
<td>


<table class="row">
{% for line in subtotal_line_items %}

{% comment %} Skip child add-ons since they will be rendered under the parent line item {% endcomment %}
{% unless line.nested_line_child? %}

{% assign is_parent = false %}
{% if line.bundle_parent? or line.nested_line_parent? %}
{% assign is_parent = true %}
{% endif %}

<tr class="order-list__item">
<td class="order-list__item__cell">
<table>

{% if true and is_parent %}
<td class="order-list__parent-image-cell">
{% if line.image %}
<img src="{{ line | img_url: 'compact_cropped' }}" align="left" width="60" height="60" class="order-list__product-image"/>
{% else %}
<div class="order-list__no-image-cell">
<img src="{{ 'notifications/no-image.png' | shopify_asset_url }}" align="left" width="60" height="60" class="order-list__no-product-image"/>
</div>
{% endif %}
</td>
{% else %}
<td class="order-list__image-cell">
{% if line.image %}
<img src="{{ line | img_url: 'compact_cropped' }}" align="left" width="60" height="60" class="order-list__product-image"/>
{% else %}
<div class="order-list__no-image-cell">
<img src="{{ 'notifications/no-image.png' | shopify_asset_url }}" align="left" width="60" height="60" class="order-list__no-product-image"/>
</div>
{% endif %}
</td>
{% endif %}
<td class="order-list__product-description-cell">
{% if line.presentment_title %}
{% assign line_title = line.presentment_title %}
{% elsif line.title %}
{% assign line_title = line.title %}
{% else %}
{% assign line_title = line.product.title %}
{% endif %}
{% if line.quantity < line.quantity %}
{% capture line_display %}
{{ line.quantity }} of {{ line.quantity }}
{% endcapture %}
{% else %}
{% assign line_display = line.quantity %}
{% endif %}

<span class="order-list__item-title">{{ line_title }}&nbsp;&times;&nbsp;{{ line_display }}</span><br/>

{% if line.variant.title != 'Default Title' and is_parent == false %}
<span class="order-list__item-variant">{{ line.variant.title }}</span><br/>
{% elsif line.variant.title != 'Default Title' and line.nested_line_parent? %}
<span class="order-list__item-variant">{{ line.variant.title }}</span><br/>
{% elsif line.variant.title != 'Default Title' and line.bundle_parent? and true == false %}
<span class="order-list__item-variant">{{ line.variant.title }}</span><br/>
{% endif %}

{% if true %}
{% for child_line in line.bundle_components %}

{% if true %}
{% assign css_class = 'order-list__bundle-item' %}
{% else %}
{% assign css_class = 'order-list__deliverable-item_abandoned' %}
{% endif %}

<table>
<tr class="order-list__item">
<td class="{{ css_class }}">
<table>
<td class="order-list__image-cell">
{% if child_line.image %}
<img src="{{ child_line | img_url: 'compact_cropped' }}" align="left" width="40" height="40" class="order-list__product-image small"/>
{% else %}
<div class="order-list__no-image-cell small">
<img src="{{ 'notifications/no-image.png' | shopify_asset_url }}" align="left" width="40" height="40" class="order-list__no-product-image small"/>
</div>
{% endif %}
</td>

<td class="order-list__product-description-cell">
{% if child_line.product.title %}
{% assign item_title = child_line.product.title %}
{% else %}
{% assign item_title = child_line.title %}
{% endif %}

{% assign item_display = child_line.quantity %}

<span class="order-list__item-title">{{ item_display }}&nbsp;&times;&nbsp;{{ item_title }}</span><br>

{% if child_line.variant.title != 'Default Title'%}
<span class="order-list__item-variant">{{ child_line.variant.title }}</span>
{% endif %}
</td>
</table>
</td>
</tr>
</table>
{% endfor %}
{% else %}
{% for group in line.groups %}
{% if group.deliverable? %}
<span class="order-list__item-variant">For: {{ group.display_title }}</span><br/>
{% else %}
<span class="order-list__item-variant">Part of: {{ group.display_title }}</span><br/>
{% endif %}
{% endfor %}
{% endif %}

{% if line.gift_card and line.properties["__shopify_send_gift_card_to_recipient"] %}
{% for property in line.properties %}
{% assign property_first_char = property.first | slice: 0 %}
{% if property.last != blank and property_first_char != '_' %}
<div class="order-list__item-property">
<dt>{{ property.first }}:</dt>
<dd>
{% if property.last contains '/uploads/' %}
<a href="{{ property.last }}" class="link" target="_blank">
{{ property.last | split: '/' | last }}
</a>
{% else %}
{{ property.last }}
{% endif %}
</dd>
</div>
{% endif %}
{% endfor %}

{% endif %}

{% if line.selling_plan_allocation %}
<span class="order-list__item-variant">{{ line.selling_plan_allocation.selling_plan.name }}</span><br/>
{% endif %}

{% if line.refunded_quantity > 0 %}
<span class="order-list__item-refunded">Refunded</span>
{% endif %}

{% if line.discount_allocations %}
{% for discount_allocation in line.discount_allocations %}
{% if discount_allocation.discount_application.target_selection != 'all' %}
<p>
<span class="order-list__item-discount-allocation">
<img src="{{ 'notifications/discounttag.png' | shopify_asset_url }}" width="18" height="18" class="discount-tag-icon" />
<span>
{{ discount_allocation.discount_application.title | upcase }}
(-{{ discount_allocation.amount | money }})
</span>
</span>
</p>
{% endif %}
{% endfor %}
{% endif %}
</td>
{% if true and is_parent %}
<td class="order-list__parent-price-cell">
{% else %}
<td class="order-list__price-cell">
{% endif %}
{% if line.original_line_price != line.final_line_price %}
<del class="order-list__item-original-price">{{ line.original_line_price | money }}</del>
{% endif %}
<p class="order-list__item-price">
{% if line.final_line_price > 0 %}
{{ line.final_line_price | money }}
{% if line.unit_price_measurement %}
<div class="order-list__unit-price">
{{- line.unit_price | unit_price_with_measurement: line.unit_price_measurement -}}
</div>
{% endif %}
{% else %}
Free
{% endif %}
</p>
</td>
{% if line.nested_line_parent? %}
{% for child_line in line.nested_lines %}

{% if false %}
{% assign css_class = 'order-list__bundle-item' %}
{% else %}
{% assign css_class = 'order-list__deliverable-item_abandoned' %}
{% endif %}

<table>
<tr class="order-list__item">
<td class="{{ css_class }}">
<table>
<td class="order-list__image-cell">
{% if child_line.image %}
<img src="{{ child_line | img_url: 'compact_cropped' }}" align="left" width="40" height="40" class="order-list__product-image small"/>
{% else %}
<div class="order-list__no-image-cell small">
<img src="{{ 'notifications/no-image.png' | shopify_asset_url }}" align="left" width="40" height="40" class="order-list__no-product-image small"/>
</div>
{% endif %}
</td>

<td class="order-list__product-description-cell">
{% if child_line.product.title %}
{% assign item_title = child_line.product.title %}
{% else %}
{% assign item_title = child_line.title %}
{% endif %}

{% assign item_display = child_line.quantity %}

<span class="order-list__item-title">{{ item_title }}&nbsp;&times;&nbsp;{{ item_display }}</span><br>

{% if child_line.variant.title != 'Default Title'%}
<span class="order-list__item-variant">{{ child_line.variant.title }}</span>
{% endif %}
</td>
</table>
</td>
</tr>
</table>
{% endfor %}
{% endif %}
</table>
</td>
</tr>

{% endunless %}

{% endfor %}
</table>

<table class="row subtotal-lines">
<tr>
<td class="subtotal-spacer"></td>
<td>
<table class="row subtotal-table">


{% assign order_discount_count = 0 %}
{% assign total_order_discount_amount = 0 %}
{% assign subtotal_order_amount = 0 %}
{% assign has_shipping_discount = false %}

{% for discount_application in discount_applications %}
{% if discount_application.target_selection == 'all' and discount_application.target_type == 'line_item' %}
{% assign order_discount_count = order_discount_count | plus: 1 %}
{% assign total_order_discount_amount = total_order_discount_amount | plus: discount_application.total_allocated_amount %}
{% assign subtotal_order_amount = subtotal_order_amount | plus: discount_application.total_allocated_amount %}
{% endif %}
{% if discount_application.target_type == 'shipping_line' and discount_application.total_allocated_amount > 0 %}
{% assign has_shipping_discount = true %}
{% assign shipping_discount = discount_application.title %}
{% assign shipping_amount = discount_application.total_allocated_amount %}
{% assign subtotal_order_amount = subtotal_order_amount | plus: discount_application.total_allocated_amount %}
{% assign discounted_shipping_price = shipping_price | minus: shipping_amount %}
{% endif %}
{% endfor %}



<tr class="subtotal-line">
<td class="subtotal-line__title">
<p>
<span>Subtotal</span>
</p>
</td>
<td class="subtotal-line__value">
<strong>{{ subtotal_price | plus: subtotal_order_amount | money }}</strong>
</td>
</tr>



{% if order_discount_count > 0 %}
{% if order_discount_count == 1 %}

<tr class="subtotal-line">
<td class="subtotal-line__title">
<p>
<span>Order discount</span>
</p>
</td>
<td class="subtotal-line__value">
<strong>-{{ total_order_discount_amount | money }}</strong>
</td>
</tr>

{% else %}

<tr class="subtotal-line">
<td class="subtotal-line__title">
<p>
<span>Order discounts</span>
</p>
</td>
<td class="subtotal-line__value">
<strong>-{{ total_order_discount_amount | money }}</strong>
</td>
</tr>

{% endif %}
{% for discount_application in discount_applications %}
{% if discount_application.target_selection == 'all' and discount_application.target_type != 'shipping_line' %}
<tr class="subtotal-line">
<td class="subtotal-line__title">
<p>
<span class="subtotal-line__discount">
<img src="{{ 'notifications/discounttag.png' | shopify_asset_url }}" width="18" height="18" class="discount-tag-icon" />
<span class="subtotal-line__discount-title">
{{ discount_application.title }} (-{{ discount_application.total_allocated_amount | money }})
</span>
</span>
</p>
</td>
</tr>

{% endif %}
{% endfor %}
{% endif %}


{% if delivery_method == 'pick-up' %}

<tr class="subtotal-line">
<td class="subtotal-line__title">
<p>
<span>Pickup</span>
</p>
</td>
<td class="subtotal-line__value">
<strong>{{ shipping_price | money }}</strong>
</td>
</tr>

{% else %}
{% if has_shipping_discount %}
{% if discounted_shipping_price > 0 %}

<tr class="subtotal-line">
<td class="subtotal-line__title">
<p>
<span>Shipping</span>
</p>
</td>
<td class="subtotal-line__value">
<strong>{{ discounted_shipping_price | money }}</strong>
</td>
</tr>

<tr class="subtotal-line">
<td class="subtotal-line__title">
<p>
<span class="subtotal-line__discount">
<img src="{{ 'notifications/discounttag.png' | shopify_asset_url }}" width="18" height="18" class="discount-tag-icon" />
<span class="subtotal-line__discount-title">
{{ shipping_discount }} (-{{ shipping_amount | money }})
</span>
</span>
</p>
</td>
</tr>

{% else %}

<tr class="subtotal-line">
<td class="subtotal-line__title">
<p>
<span>Shipping</span>
</p>
</td>
<td class="subtotal-line__value">
<strong>Free</strong>
</td>
</tr>

<tr class="subtotal-line">
<td class="subtotal-line__title">
<p>
<span class="subtotal-line__discount">
<img src="{{ 'notifications/discounttag.png' | shopify_asset_url }}" width="18" height="18" class="discount-tag-icon" />
<span class="subtotal-line__discount-title">
{{ shipping_discount }} (-{{ shipping_amount | money }})
</span>
</span>
</p>
</td>
</tr>

{% endif %}
{% else %}

<tr class="subtotal-line">
<td class="subtotal-line__title">
<p>
<span>Shipping</span>
</p>
</td>
<td class="subtotal-line__value">
<strong>{{ shipping_price | money }}</strong>
</td>
</tr>

{% endif %}

{% endif %}

{% if total_duties %}

<tr class="subtotal-line">
<td class="subtotal-line__title">
<p>
<span>Duties</span>
</p>
</td>
<td class="subtotal-line__value">
<strong>{{ total_duties | money }}</strong>
</td>
</tr>

{% endif %}


<tr class="subtotal-line">
<td class="subtotal-line__title">
<p>
<span>Estimated taxes</span>
</p>
</td>
<td class="subtotal-line__value">
<strong>{{ tax_price | money }}</strong>
</td>
</tr>


{% if total_tip and total_tip > 0 %}

<tr class="subtotal-line">
<td class="subtotal-line__title">
<p>
<span>Tip</span>
</p>
</td>
<td class="subtotal-line__value">
<strong>{{ total_tip | money }}</strong>
</td>
</tr>

{% endif %}
</table>

<table class="row subtotal-table subtotal-table--total">
{% if payment_terms %}

<tr class="subtotal-line">
<td class="subtotal-line__title">
<p>
<span>Total due today</span>
</p>
</td>
<td class="subtotal-line__value">
<strong>{{ amount_due_now | money_with_currency }}</strong>
</td>
</tr>

<div class="payment-terms">
{% assign next_payment = payment_terms.next_payment %}
{% assign due_at_date = next_payment.due_at | date: format: 'date' %}
{% assign next_amount_due = total_price | minus: amount_due_now %}

{% if payment_terms.type == 'receipt' %}

<tr class="subtotal-line">
<td class="subtotal-line__title">
<p>
<span>Total due on receipt</span>
</p>
</td>
<td class="subtotal-line__value">
<strong>{{ next_amount_due | money_with_currency }}</strong>
</td>
</tr>

{% elsif payment_terms.type == 'fulfillment' %}

<tr class="subtotal-line">
<td class="subtotal-line__title">
<p>
<span>Total due on fulfillment</span>
</p>
</td>
<td class="subtotal-line__value">
<strong>{{ next_amount_due | money_with_currency }}</strong>
</td>
</tr>

{% else %}

<tr class="subtotal-line">
<td class="subtotal-line__title">
<p>
<span>Total due {{ due_at_date }}</span>
</p>
</td>
<td class="subtotal-line__value">
<strong>{{ next_amount_due | money_with_currency }}</strong>
</td>
</tr>

{% endif %}
</div>
{% else %}

<tr class="subtotal-line">
<td class="subtotal-line__title">
<p>
<span>Total</span>
</p>
</td>
<td class="subtotal-line__value">
<strong>{{ total_price | money_with_currency }}</strong>
</td>
</tr>

{% endif %}
</table>

{% if total_discounts > 0 %}
<p class="total-discount">
You saved <span class="total-discount--amount">{{ total_discounts | money }}</span>
</p>
{% endif %}

{% unless payment_terms %}


{% endunless %}
</td>
</tr>
</table>


</td>
</tr>
</table>
</center>
</td>
</tr>
</table>

{% if shipping_address or billing_address or shipping_method or company_location or payment_terms %}
<table class="row section">
<tr>
<td class="section__cell">
<center>
<table class="container">
<tr>
<td>
<h3>Customer information</h3>
</td>
</tr>
</table>
<table class="container">
<tr>
<td>

<table class="row">
<tr>
{% if shipping_address %}
<td class="customer-info__item">
<h4>Shipping address</h4>
{{ shipping_address | format_address }}
</td>
{% endif %}

{% if billing_address %}
<td class="customer-info__item">
<h4>Billing address</h4>
{{ billing_address | format_address }}
</td>
{% endif %}
</tr>
</table>
{% if shipping_method or company_location or payment_terms %}
<table class="row">
<tr>
{% if company_location %}
<td class="customer-info__item">
<h4>Location</h4>
<p>
{{ company_location.name }}
</p>
</td>
{% endif %}

{% if payment_terms %}
<td class="customer-info__item">
<h4>Payment</h4>
{% assign due_date = payment_terms.next_payment.due_at | default: nil %}
{% if payment_terms.type == 'receipt' or payment_terms.type == 'fulfillment' %}
<p>{{ payment_terms.translated_name }}</p>
{% else %}
<p>{{ payment_terms.translated_name }}: Due {{ due_date | date: format: 'date' }}</p>
{% endif %}
</td>
{% endif %}
</tr>
<tr>
{% if shipping_method %}
<td class="customer-info__item customer-info__item--last">
<h4>Shipping method</h4>
{% if local_pickup %}
<p>Local pickup - {{ shipping_method.title }}</p>
{% if local_pickup_address %}
{{ local_pickup_address | format_address }}
{% endif %}
{% else %}
<p>{{ shipping_method.title }}<br/>{{ shipping_method.price | money }}</p>
{% endif %}
</td>
<td class="customer-info__item customer-info__item--last">
</td>
{% endif %}
</tr>
</table>
{% endif %}

</td>
</tr>
</table>
</center>
</td>
</tr>
</table>
{% endif %}

<table class="row footer">
<tr>
<td class="footer__cell">
<center>
<table class="container">
<tr>
<td>

<p class="disclaimer__subtext">If you have any questions, reply to this email or contact us at <a href="mailto:{{ shop.email }}">{{ shop.email }}</a></p>
</td>
</tr>
</table>
</center>
</td>
</tr>
</table>

<img src="{{ 'notifications/spacer.png' | shopify_asset_url }}" class="spacer" height="1" />

</td>
</tr>
</table>
</body>
</html>

Updated on: 15/08/2025

Was this article helpful?

Share your feedback

Cancel

Thank you!