Customizing wholesale invoices

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

When you send an invoice email to your customers, the email is generated using the invoice template. By default, this template provides customers with a link to a checkout page where they can enter billing information, select a shipping method, and submit payment. Customers can pay using any of the payment providers that are enabled in your Shopify admin.

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

Edit the invoice template

  1. From your Shopify admin, go to Settings > Notifications.
  2. In the Orders section, click Draft order invoice.
  3. Replace the code in the Email body (HTML) section with your customized template. Learn more about editing email templates.
  4. Click Save.

Example

The following code checks whether the invoice email is for a wholesale order. If the invoice is for a wholesale order, then the email contains instructions for the customer to contact you to pay for their order. Otherwise, the default invoice is sent.

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

  1. Open a draft order that was submitted from your wholesale store.
  2. From the order's information page, click Email invoice.
  3. On the Send invoice dialog, make sure that the custom message is empty, then click Review email.
  4. Verify that the invoice is correct, then click Send notification.

Ready to start selling with Shopify?

Try it free