Wholesale

Shopify Plus

The Wholesale channel is only available on Shopify Plus plans.

If you are on the Shopify Plus plan, then you can add the Wholesale channel to give your buyers access to a separate, password-protected wholesale store.

You can customize the prices that you offer your wholesale buyers by:

  • Setting percentage-based discounts across your entire store or across a collection.
  • Setting variant-specific prices in price lists (such as a flat price).
  • Providing different prices to different buyers.
  • Setting a minimum order amount for all wholesale orders.

After you invite a customer to activate a wholesale account, they can log in and create purchase orders. These orders appear as draft orders in your Shopify admin. When you receive a draft order, you can process it by:

  • Sending an invoice to be fulfilled using your Shopify payment system.
  • Sending a customized email that allows for fulfillment using a different payment method, such as a wire transfer.
  • Marking the invoice as paid or partially paid as you receive payments.

Wholesale price lists and wholesale customer accounts

A price list includes the products that you want to offer at specific wholesale prices.

You can apply discounts to all products or a set of collections, or set prices on individual products and variants. Prices set on products will override any discounts applied.

You can create separate price lists for different groups of products or customers. For example, you could reward your high-volume buyers by creating a price list that offers them your best prices or you could create a price list that contains all the your holiday-themed items.

Price lists can contain:

  • All products offered at the same percentage discount.
  • A set of collections of products offered at different percentage discounts.
  • Specific products offered at set prices. Prices set on products will override any discounts applied.

You can assign a customer to multiple price lists. It is possible, and often likely, for a product to be offered at different prices on different price lists. For example, you could have a regular price list that offers all products at a 40% discount and a clearance price list that offers set prices on a few lower moving products. To run a sale, you could simply assign the clearance price list to the customer.

Wholesale customer accounts

Before a customer can access your wholesale store, you need to:

  1. Assign the customers to a price list.
  2. Send the customer an invitation to activate their wholesale account. When your customer signs into your wholesale store, they will see only the products and prices that are included in the price lists that they are assigned to.

Assigning customers to a price list

You assign a customer to a price list by tagging them with the same tag that you assigned to the price list. When you assign a customer to a price list, they can access it when they are signed into the wholesale store. A customer can only sign into a wholesale store if they have a wholesale account. If the customer does not have a wholesale account, then assigning the customer a price list results in them being added to the Accounts page in the Wholesale channel. From this page, you can send the customer an invitation to activate their a wholesale account.

Because a customer appears in the Accounts page when you assign them to a price list, only add the price list tag to the customers that you intend to invite to the wholesale store.

Naming your price lists

When you choose titles for your price lists and customer tags, be descriptive and consider following a naming convention. Using a convention makes it easier to identify the characteristics of a price list without having to look up its details. For example, a price list that offers the best prices for your most valuable customers could be named pl-goldlevel-minimumprice.

Enforcing minimum price amounts

You can make sure that your customers submit orders that meet or exceed a specified dollar amount. Choose a minimum order value on the Wholesale store page in the Wholesale channel. See Set the minimum amount for wholesale orders

Wholesale FAQ

How can I exclude products from my wholesale store?

The easiest way to exclude products from your wholesale store is to not include them in the price list. For example, don't create a price list that applies to all products in the store. Instead create a price list that applies to a collection, and exclude the products from that collection.

If you need to exclude a product temporarily from your wholesale store and you don't want to change your price lists, then turn off the visibility of the product in the Wholesale channel. For each product that you don't want to appear in your wholesale store, open its product page, and then deselect the Wholesale channel from the Visibility list.

Screenshot of the Product page highlighting the Visibility section

Can I offer net terms, such as 30-net and 60-net?

Many wholesale merchants offer trade credit to their customers to allow their customers to delay paying for their order by a specified amount of time. For example, you can offer a customer a net-60 day term, which allows a customer to delay completing the payment for 60 days after their order is shipped.

When you process a net draft order, mark the draft order as pending to convert the draft order to an order that you can fulfill. This order appears in the table on the Orders page with its status set to Payment. When you receive the complete payment, open the order and mark it as paid. See Accept payment outside Shopify.

Can I customize the email invoice that is sent to my wholesale customers?

Yes. By default, email invoices from your wholesale store use the same email template as the online store. You can specify a different invoice template to use for your wholesale orders. See Send custom email invoices for wholesale orders.

How can I create a wholesale draft order on behalf of a customer?

When you need to create a draft order on behalf of a wholesale customer, create a draft order and manually replace each product's price with your customer's wholesale price. You can look up a customer's wholesale prices from the Accounts page in the Wholesale channel. Find the customer in the Accounts table, and then click Price List to look up the customer's prices. See Look up the prices that they're eligible for.

What happens when a product's inventory is depleted?

Because your wholesale customers can only create draft orders and not orders, you approve the quantities before any payment occurs. If you don't have enough inventory to fulfill a draft order or you want to limit the number of items that a customer wants to purchase, then adjust the quantity in the draft order. See Keep your wholesale inventory and orders in sync.

Q:How can I ask customers to apply to access my wholesale store?

In your online store, add a page that contains an application form for the wholesale store. When a customer submits a form, you can review it and decide whether to grant them access to the wholesale store.

Can I direct wholesale notification emails to an email address that is different from my online store email address?

Yes. By default, notifications for your wholesale store are sent to the email address for your Shopify account. To have wholesale notification emails sent to a different account, go to the Wholesale store page in the Wholesale channel and provide a different email address.

Getting started with your wholesale store

This tutorial guides you through setting up a wholesale store including adding the Wholesale channel, creating price lists and wholesale customer accounts, signing into the store as a customer, and processing an order.

Requirements

In your Shopify admin, you have at least one product and a test customer with a valid email address. The wholesale store is password-protected, so even you need to sign in as a wholesale customer to view it.

Step 1: Set up the wholesale store

  1. Create your wholesale store by adding the Wholesale channel.
  2. In the Wholesale channel, create a wholesale price list. You can apply discounts to all products or a set of collections, or set prices on individual products and variants. Prices set on products will override any discounts applied.
  3. In your Shopify admin, assign the price list to individual customers by tagging them with the same tag that is associated with the price list.
  4. If you want to look up the prices that they're eligible for, then check the Accounts page in the Wholesale channel.
  5. Create a wholesale account for your test customer, and invite them to activate their account by signing into the wholesale store.

Step 2: Log into the wholesale store as a test customer

  1. Click the link in your test customer's email to activate the wholesale account. Activate your account and sign in.
  2. Create a draft order by adding add an item and then submit it. Your customers cannot order directly from the wholesale store. Instead, they create a draft order, which is sent to your Shopify admin for review.

Step 3: Process a draft order

  1. In your Shopify admin, click Orders.
  2. Click Drafts.
  3. Review the draft order and verify the prices and quantities of the ordered items.
  4. Click Reserve Inventory to temporarily place a hold on the items listed in the draft order. It is not uncommon for a draft order to require a back and forth communication between you and the customer. Reserving the inventory makes sure that the products are available when the customer is ready to make the actual purchase.
    Screenshot of the Create Price List page
  5. Add shipping costs, taxes, and discounts to the draft order, then click Save.
  6. Click Email invoices to send an email invoice to your customer.
  7. Choose the method of payment that you want your customer to use:
    • Credit card payments: Click Review Email and then click Send Notification. The credit card will be processed using the payment gateway that you've set up in your Shopify admin.
    • Non-credit card payments: Click Notifications and change the default email template for your wholesale invoice emails. For example, let your customers know that they need to contact you by email to complete payment for their orders.
  8. If your customer pays by credit card, then their draft order is converted to an order as soon as they pay. If your customer pays by another payment method, then you need to manually convert the draft order to an order as you receive payment. Select one of the following options:
  9. Customer pays in installments: Click Mark as Pending to create the order. The order's status is set to Pending to show that the payment has not yet been made in full. When the final payment is made for this order, open the invoice and then click Mark as Paid.
  10. Customer pays in full: Click Mark as Paid to create the order.
  11. Click Continue and complete the order.
  12. After you've fulfilled the order, click Fulfilled.

Add the Wholesale channel

Create a separate, password-protected version of your online store by adding the Wholesale channel to your Shopify admin.

Requirements

  • Your store must be on a Shopify Plus plan.
  • You must sign into your Shopify admin with either the Shopify account owner credentials or with a staff account that has the Applications and the Settings permissions.

To add the Wholesale channel:

  1. From your Shopify admin, click the + button beside the Sales channels heading:
  2. On the Add sales channel dialog, find Wholesale in the list of available channels, and then click Learn more.
  3. Click Add channel. After you add the Wholesale channel, it appears on the sidebar in your Shopify admin:

Your wholesale store is created and it is password-protected. To sign in, everyone (including the Shopify account owner) needs a wholesale customer account.

The site address for your wholesale store uses the following format: https://your-shopify-store-name.wholesale.shopifyapps.com.

Next Steps

Before you can create a wholesale account for a customer, you need to create a price list and assign it to the customer.

Visit your wholesale store

You can find the site address for your wholesale store on the Wholesale store page in the Wholesale channel. Wholesale site addresses use the following format: https://your-shopify-store-name.wholesale.shopifyapps.com.

Because your wholesale store is password-protected, your customers need to sign in as a wholesale customer to view it.

To visit your wholesale store:

  1. From your Shopify admin, click Wholesale, and then click Wholesale store.
  2. Copy the URL for your wholesale store from the Site address section of the Wholesale store page.
  3. Paste the URL for your wholesale store into your web browser, and sign in using your customer account.

Set the minimum amount for wholesale orders

You can change the following settings on the Wholesale store page in the Wholesale channel:

  • your store contact email
  • the minimum order value for all wholesale orders
  • the background image used on the sign in and password reset pages
  • the logo that appears in the header.

Create wholesale price lists

You can create a price list for your products so you can assign it to your wholesale customers. Price lists can contain:

  • All products offered at the same percentage discount.
  • A set of collections of products offered at different percentage discounts.
  • Specific products offered at set prices. Prices set on products will override any discounts applied.

Requirements

  • You need to have at least one product in your online store. If you want to create a price list based on a collection, then you need to have at least one collection.
  • You have at least one customer tag in your online store that you want to use to tag your wholesale customers.

To create a price list:

  1. From your Shopify admin, click Wholesale.
  2. On the Price lists page, click Create price list.
  3. Enter a title for your new price list. The title will appear only on the Price lists page in Shopify. It won’t appear on your wholesale store.
  4. In the Discounts section, either click Discount collections to select specific product collections, or click Set product prices to create a store-wide price list.

  5. In the Customers section, click Select tags.

  6. On the Select customer tags dialog, select the tags that you want to use to give customers access to this price list, and then click Select tags:

  7. When you're done, click Save.

Next steps

Now that you've created your price list, you need to assign the price list to your wholesale customers by tagging them with the price list tag.

You can choose a minimum order amount for all orders on the Wholesale store page.

Import wholesale products

When you create the CSV file to import wholesale products, include tags to help you manage the products in your Shopify admin.

Requirements

Before you import products for wholesale, consider your tagging and add product tags to your CSV. It is faster to add tags to your products in the CSV file before the import than it is afterwards. For example, if you automate the maintenance of your collections and have filters that use product tags, then add these tags to your products in your CSV file.

To import wholesale products

  1. Prepare a CSV file to import your wholesale products. If you use any tags for your products, then add them to the CSV file, so that your products are tagged when they are imported. Tag your wholesale products with a tag that identifies the import. You will use this import tag in your Shopify admin to find the newly imported products and publish them to the Wholesale channel. For example, the tag could contain a date and timestamp or include the source of the product.
  2. Import the products.
  3. Publish the products to the Wholesale channel.
  4. In your Shopify admin, click Products.
  5. Use a filter show the newly imported products.
  6. Click Filter Products.
  7. In the Show all products where drop-down, select Tagged with and choose the import tag that you created in step 1.
  8. Click Add Filter.
  9. Select all products in the table, and then click Bulk Edit>Publish Selected Products and enable the Wholesale option. You can verify that a product has been published or is visible to the Wholesale channel by opening the product's profile.
    Screenshot of the Product page highlighting the Visibility section

Your products have been imported into your Shopify admin and are now available to the Wholesale channel.

Create wholesale customer accounts

Creating a wholesale customer account is a two step process that requires you to assign a price list to a customer and then invite the customer to sign into the wholesale store.

Requirements

  • You have at least one customer who has an email associated with their account.
  • You have at least one price list.

To create a wholesale customer:

  1. In your Shopify admin, assign price lists to your customers.
  2. In the Wholesale channel, create the wholesale account by inviting your customer to sign into your wholesale store.

You can look up the prices that your customers are eligible for from the Accounts page in the Wholesale channel.

Assign price lists to wholesale customers

You can assign a price list to a customer to give them access to the price list in your wholesale store or to make the customer eligible to be invited to your wholesale store.

Requirements

  • You have a wholesale price list that has a tag associated with it.
  • You have a customer and this customer has an email associated with their account.

To tag your eligible customers:

  1. From your Shopify admin, click Customers (or press G C):

    Customers

  2. On the Customers page in your Shopify admin, click the name of the customer that you want to invite to your wholesale store.

  3. On the customer information page, choose a tag that you associated with one of your wholesale price lists:

    Tag customer

  4. When you're done, click Save.

If the customer has a wholesale account, then they now have access to the price list when they sign into the wholesale store. Otherwise, the customer is added to the table on the Accounts page in the Wholesale channel and you need to create a wholesale account for them.

Invite customers to sign into your wholesale store

You can create a wholesale account for your customers by inviting them to the wholesale store. Invitations include a direct link to your wholesale store, and instructions for creating a username and password.

Requirements

  • You have a customer and this customer has an email associated with their account. The customer has a price list assigned to them and the customer appears in the table on the Accounts page in the Wholesale channel.

To invite customers to your wholesale store:

  1. From your Shopify admin, click Wholesale.
  2. Click Accounts.
  3. On the Accounts page, click the checkbox beside the name of the customer that you want to invite:
    Select customer
    You can select multiple customers.
  4. From the Bulk actions drop-down menu, select Send invite:
    Send invite
  5. On the Send invitation dialog, click Send:
    Send invite confirm

After you invite a customer, they appear under the Invited tab on the Accounts page. After your customers accept your invitation, they appear under the Active tab on the Accounts page.

Look up the prices that your customers are eligible for

You can view a list of a customer's eligible products and prices.

Because you can tag each customer for multiple price lists, it can be difficult to keep track of which products and prices your customers are eligible for.

To look up the prices that your customers are eligible for:

  1. From the Wholesale channel click Accounts.
  2. In the table, click the Price lookup button Price lookup logo button beside the name of the customer whose prices you want to view.
Price lookup button

From the customer's account page, you can see the products that they can purchase and the prices that they're eligible for:

Price lookup account page

Import wholesale customers

You can use a CSV file to import your customers, and assign the price lists to the customers. After the import, you can create their wholesale accounts from the Accounts page in the Wholesale channel.

It is faster to add tags to your customers in the CSV file before you import than it is afterwards.

To import wholesale customers:

  1. Create a CSV file to import customers. Add the tags associated with your price lists to the customers.
  2. From the Customers page in your Shopify admin, import the customers.
  3. From the Accounts page in the Wholesale channel, create the wholesale accounts, and send the email invitations to your customers.

Manage wholesale orders

When a customer makes a purchase from your wholesale store, their payment isn't processed immediately. Instead, their purchase appears as a draft order on the Drafts page in your Shopify admin.

When you're ready to complete a draft order, you can accept payment, mark it as fulfilled, or send an email invoice to your customer. You can use draft orders to manage your wholesale orders in a few different ways:

Keep your wholesale inventory and orders in sync

If a customer makes an order but you don’t have enough inventory to fulfill it, then you can change the draft order to include a lower product quantity.

To change the product quantity in a draft order:

  1. From your Shopify admin, click Orders (or press G O):

    Orders
  2. Click Drafts.

  3. Click the draft order that you want to change.

  4. In the Order details section, enter a new quantity beside the line item that you want to change:

    Change product quantity

  5. Click Save. Your customer will receive a notification of the change to the draft order, and their account page on your wholesale store will display the new product quantity.

Apply discounts, shipping, and taxes

When you're ready to complete a draft order, you can add any discounts, shipping costs, and tax amounts to the draft order.

To add discounts, shipping, or taxes:

  1. From your Shopify admin, click Orders (or press G O):

    Orders
  2. Click Drafts.

  3. Click the draft order that you want to change.

  4. In the Order details section, click Add discount, Add shipping, or Taxes:

    Discount shipping taxes

  5. When you're done, click Save. Your customer will receive a notification of the change to the draft order, and their account page on your wholesale store will display the updated total.

Accept payment outside Shopify

By default, your wholesale email invoices support credit card payments through your online checkout. They don’t allow your customers to use other payment methods such as net terms, direct payment, or money transfer.

You can still use draft orders to keep track of payments that you've received outside of Shopify. When you open a draft order, you have the following options:

Draft order payment options
  • Click Pay with credit card to enter credit card payments in Shopify for sales you've made by phone, in person, or elsewhere.
  • Click Mark as paid if you already received payment outside Shopify (such as a money transfer or cheque).
  • Click Mark as pending if payment will be received later (if you have implemented Net terms, for example). You can add a comment on the draft order if you want to keep track of the payment terms on the same draft order.

After you select any of these options, the draft order will be replaced with an order. It will now appear on the Orders page instead of the Drafts page in your Shopify admin.

Note

You can contact your customer directly to make sure that any changes to the draft order are approved before starting the payment process.

Email wholesale invoices

When you're ready to complete a draft order, you can email an invoice to your customer. By default, email invoices offer your customers a checkout link, where they can make payments using a credit card. These payments will be processed using the payment gateway that you've set up in your Shopify admin.

Note

If you want to accept payments for wholesale orders without using your Shopify checkout, then you can change your wholesale email invoice template to remove the checkout link.

To email invoices to your customers:

  1. From your Shopify admin, click Orders (or press G O):

    Orders
  2. Click Drafts.

  3. Click the draft order that you want to change.

  4. From the order's information page, click Email invoice:

    Email invoice

  5. On the Send invoice dialog, click Review email:

    Email invoice review

  6. After you've reviewed the email, click Send notification.

Send custom email invoices for wholesale orders

If you don't want to accept credit card payments for your wholesale orders, then you can change your wholesale invoice email template to let your customers know that they need to contact you by email to complete payment for their orders.

The wholesale invoice email template is applied only to wholesale orders. It doesn't affect the email invoices for your retail draft orders.

To change your wholesale invoice email template:

  1. In the Email Templates section, click Draft order invoice:
    Draft order invoice
  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 is required to replace the default email text for wholesale draft orders (and leave the email text for other draft orders unchanged): {% if tags contains "wholesale" %}. When you review your draft orders, do not remove the wholesale tag.

    {% 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>
    
  1. From your Shopify admin, click Orders (or press G O):

    Orders
  2. Click Drafts.

  3. Click any wholesale draft order.

  4. From the order's information page, click Email invoice:

    Email invoice

  5. On the Send invoice dialog, make sure that the custom message is blank, and then click Review email. Your invoice should resemble this example:

    Wholesale invoice example

Troubleshooting

Q: I assigned a tag that is associated with my price list to a customer, but I can't see my customers in the Accounts page in the Wholesale channel.

Verify that the customer has an email associated with their account, and that the product has been published (is visible) to the Wholesale channel.

Screenshot of the Product page highlighting the Visibility section

Q: Why can't my customers see products from a specific price lists?

Price lists are visible only to customers whose profiles you've tagged with the same tag that you added to the price list. Make sure the customer is tagged, and that the tag matches the one you’ve set up for the price list.

Q: How do I offer a product on wholesale only?

To make sure that a product only appears in your wholesale store, remove its visibility settings from the online store and other channels. You can change a product's visibility settings from the Product's page.

Q: Why can't I edit the theme for my wholesale store?

Because B2B selling is different from B2C selling, the wholesale store does not offer theme customization. Instead, it has been optimized to make it easy for your wholesale buyers to quickly order the product and variants that they need.

Want to discuss this page?

Visit the Shopify Community

Ready to start selling online with Shopify?

Try it free