Send customized invoices to your wholesale customers

Send your wholesale customers invoices that are different from the invoices that you send to your retail customers.

Shopify Plus

The Wholesale channel is available to Shopify Plus plans only.

Edit the invoice template

When you send an invoice to your customers, the email is created using an invoice template. By default, this template offers your customers a checkout link, where they can make payments using the payment provider that you've set up in your Shopify admin.

You can edit this template to offer your wholesale customers alternative payment options or terms. For example, you could add code that sends one invoice to your online store customers and a different invoice to your wholesale store customers.

To edit the invoice template:

  1. In the Email Templates section, click Draft order invoice:
    Screenshot of the Email Templates section.
  2. Replace the code in the Email body (HTML) section with the following code, and then click Save.

    Note

    By default, all wholesale draft orders are tagged with an order tag named wholesale. The following line of code checks if the order has the wholesale tag: {% if tags contains "wholesale" %}. When you review your draft orders, do not remove the wholesale tag.

See Edit an email template.

  {% capture email_title %}
    {% if tags contains "wholesale" %}
        Complete your wholesale order

        <p>To complete your wholesale order, contact us at <a href="mailto:{{ shop.email }}">{{ shop.email }}</a>.<br/>
        Your order can't be processed until we hear from you.</p><br/>
    {% else %}
        Complete your purchase
    {% endif %}
  {% endcapture %}

  {% capture email_body %}
    {% if item_count > 1 %}These items{% else %}This item{% endif %} will be reserved for you until: <strong>{{ reserve_inventory_until | date: "%B %d, %Y at %I:%M %p %Z" }}</strong>
  {% 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 class="order-number__cell">
                          <span class="order-number__text">
                            Invoice {{ name }}
                          </span>
                        </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 %}
                <table class="row actions">



                </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 line_items %}

      {% if item_count == 1 %}
        {% assign columnWrapperClass = 'order-list__item--single' %}
      {% elsif forloop.first == true %}
        {% assign columnWrapperClass = 'order-list__item--first' %}
      {% elsif forloop.last == true %}
        {% assign columnWrapperClass = 'order-list__item--last' %}
      {% else %}
        {% assign columnWrapperClass = '' %}
      {% endif %}
      <tr class="order-list__item {{columnWrapperClass}}">
        <td class="order-list__item__cell">
          <table>
            <td>
              {% if line.image %}
                <img src="{{ line | img_url: 'compact_cropped' }}" align="left" width="60" height="60"  class="order-list__product-image"/>
              {% endif %}
            </td>
            <td class="order-list__product-description-cell">
              {% if line.product.title %}
                {% assign line_title = line.product.title %}
              {% else %}
                {% assign line_title = line.title %}
              {% endif %}
              <span class="order-list__item-title">{{ line_title }} × {{ line.quantity }}</span><br/>
              {% if line.variant.title != 'Default Title' %}
                <span class="order-list__item-variant">{{ line.variant.title }}</span>
              {% endif %}
            </td>
              <td class="order-list__price-cell">
                {% if line.original_line_price != line.line_price %}
                  <del class="order-list__item-original-price">{{ line.original_line_price | money }}</del>
                {% endif %}
                <p class="order-list__item-price">{{ line.line_price | money }}</p>
              </td>
          </table>
        </td>
      </tr>{% endfor %}
    </table>

                <table class="row subtotal-lines">
      <tr>
        <td class="subtotal-spacer"></td>
        <td>
          <table class="row subtotal-table">
            {% if discounts %}
              {% capture discount_title %}Discount {% if discounts.first.code %}({{ discounts.first.code }}){% endif %}{% endcapture %}

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

            {% endif %}


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


    <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>


            {% for line in tax_lines %}

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

            {% endfor %}
          </table>
          <table class="row subtotal-table subtotal-table--total">

    <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>

          </table>

          {% assign transaction_size = 0 %}
          {% for transaction in transactions %}
            {% unless transaction.kind == "capture" or transaction.kind == "void" %}
              {% assign transaction_size = transaction_size | plus: 1 %}
            {% endunless %}
          {% endfor %}

          {% if transaction_size > 1 %}
            <table class="row subtotal-table">
              <tr><td colspan="2" class="subtotal-table__line"></td></tr>
              <tr><td colspan="2" class="subtotal-table__small-space"></td></tr>

              {% for transaction in transactions %}
                {% if transaction.status == "success" and transaction.kind == "authorization" or transaction.kind == "sale" %}
                  {% if transaction.payment_details.credit_card_company %}
                    {% capture transaction_name %}{{ transaction.payment_details.credit_card_company }} (ending in {{ transaction.payment_details.credit_card_last_four_digits }}){% endcapture %}
                  {% else %}
                    {% capture transaction_name %}{{ transaction.gateway | replace: "_", " " | capitalize }}{% endcapture %}
                  {% endif %}


    <tr class="subtotal-line">
      <td class="subtotal-line__title">
        <p>
          <span>{{transaction_name}}</span>
        </p>
      </td>
      <td class="subtotal-line__value">
        <strong>{{ transaction.amount | money }}</strong>
      </td>
    </tr>

                {% endif %}
                {% if transaction.kind == 'refund' %}
                  {% if transaction.payment_details.credit_card_company %}
                    {% assign refund_method_title = transaction.payment_details.credit_card_company %}
                  {% else %}
                    {% assign refund_method_title = transaction.gateway %}
                  {% endif %}


    <tr class="subtotal-line">
      <td class="subtotal-line__title">
        <p>
          <span>Refund</span>
            <br>
            <small>{{ refund_method_title | capitalize }}</small>
        </p>
      </td>
      <td class="subtotal-line__value">
        <strong>- {{ transaction.amount | money }}</strong>
      </td>
    </tr>

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


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

              {% if shipping_address or billing_address or shipping_method %}
                <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>
                          <p>
      {{ shipping_address.name }}<br/>
      {{ shipping_address.address1 }}
      {% if shipping_address.address2 %}
      <br/>{{ shipping_address.address2 }}
      {% endif %}
      <br/>{{ shipping_address.city }}, {{ shipping_address.province }} {{ shipping_address.zip }}
      <br/>{{ shipping_address.country }}
    </p>

                        </td>
                      {% endif %}

                      {% if billing_address %}
                        <td class="customer-info__item">
                          <h4>Billing address</h4>
                          <p>
      {{ billing_address.name }}<br/>
      {{ billing_address.address1 }}
      {% if billing_address.address2 %}
      <br/>{{ billing_address.address2 }}
      {% endif %}
      <br/>{{ billing_address.city }}, {{ billing_address.province }} {{ billing_address.zip }}
      <br/>{{ billing_address.country }}
    </p>

                        </td>
                      {% endif %}
                    </tr>
                  </table>
                  {% if shipping_method %}
                    <table class="row">
                      <tr>
                        <td class="customer-info__item customer-info__item--last">
                          <h4>Shipping method</h4>
                          <p>{{ shipping_method.title }}<br/>{{ shipping_method.price | money }}</p>
                        </td>
                      </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>
    

Preview an invoice

To view a preview of an invoice email:

  1. Open a wholesale draft order.
  2. From the order's information page, click Email invoice:
    Screenshot of orders information page
  3. On the Send invoice dialog, make sure that the custom message is empty, and then click Review email. Your invoice should resemble the following example:
    Screenshot of the customized email

Want to discuss this page?

Visit the Shopify Community

Ready to start selling online with Shopify?

Try it free