Setting up payment terms in B2B

Payment terms let you set the time period that a company has to pay for an order. You can set payment terms for any company location that you create. After payment terms are set for a location, any B2B customer for that location can enter payment information for an order. You can also use payment terms when you create a draft order for a B2B customer.

You can also set up a deposit requirement for your payment terms for orders and draft orders.

Payment term types

Review the following table to learn more about different types of payment terms that you can set up for company locations:

Payment term types
Payment termDescription
No payment termsPayment terms are set to none by default. Your customers pay for orders immediately during checkout.
Net (period)
  • Your customers pay for orders in a specific time period that you select. The available terms are net 7, net 15, net 30, net 45, net 60, and net 90. For example, if you select net 30 terms, then your customer needs to pay for an order within 30 days.
  • If you assign net terms to a company location, then any B2B customer for that location can pay for orders at any time between when they have placed the order and the due date. Customers can make their payment by logging in to their account, selecting an order, and then clicking Pay now.
  • Due on fulfillment
  • Your customers pay for orders after all items are fulfilled in an order.
  • If you assign due on fulfillment to a company location, then any B2B customer for that location can pay for orders at any time between when they have placed the order and when all items are fulfilled in an order. Customers can make their payment by logging in to their account, selecting an order, and then clicking Pay now.
  • Orders and draft orders with B2B customers or from the B2B checkout must be manually captured when they don't have a valid authorization and due on fulfillment payment terms.

    Set up payment terms for a company location

    You can set up payment terms for a specific company location.

    Steps:

    1. From your Shopify admin, go to Customers > Companies.

    2. Click a company that you want to set up payment terms for.

    3. In the Locations section, click a company location that you want to set up payment terms for.

    4. In the Payment terms section, click the pencil icon.

    5. From the drop-down menu, select a payment term type.

    6. Optional: Set up a deposit for your payment terms:

      1. Select Require deposit on orders created at checkout.
      2. Enter a percentage amount deposit requirement, such as 20%.
    7. Click Save.

    Set up payment terms for a company

    You can set up payment terms for all locations in a company.

    Steps:

    1. From your Shopify admin, go to Customers > Companies.

    2. Click a company that you want to set up payment terms for.

    3. In the Payment terms section, click the pencil icon.

    4. From the drop-down menu, select a payment term type.

    5. Optional: Set up a deposit for your payment terms:

      1. Select Require deposit on orders created at checkout.
      2. Enter a percentage amount deposit requirement, such as 20%.
    6. Click Save.

    Set up payment terms for companies in bulk

    You can set up payment terms for multiple companies at the same time from the Companies index page.

    Steps:

    1. From your Shopify admin, go to Customers > Companies.

    2. Use the checkboxes to select the companies that you want to set up payment terms for.

    3. Click Edit payment terms.

    4. From the drop-down menu, select a payment term type.

    5. Optional: Set up a deposit for your payment terms:

      1. Select Require deposit on orders created at checkout.
      2. Enter a percentage amount deposit requirement, such as 20%.
    6. Click Save.

    Deposits for your payment terms in B2B

    You can set up a percentage-based deposit requirement for your payment terms. Deposits work with orders and draft orders. Your customers need to pay the deposit amount when placing an order at checkout. Deposits can be paid with a credit card or a manual payment method, such as a bank deposit.

    You can set up a deposit for all locations in a company or for a specific company location.

    Draft orders and deposits

    You can create a draft order to require a deposit, and then send an invoice to your customer to request payment for a deposit.

    For company locations that are set to submit orders as drafts for review and have payment terms with a deposit requirement, the deposit requirement is displayed to your customers at checkout, and the payment terms that get automatically applied to the draft order include the deposit. If a customer has vaulted a credit card, then you can charge the card for the deposit when confirming the order.

    Customer experience

    The deposit amount and the payment schedule for the outstanding balance are displayed to your customers at checkout, on the thank you page, and in new customer account pages. If you create a draft order with a deposit, then the deposit amount is also displayed in the invoice that you send to your customer.

    Order payment status

    When a deposit payment is captured automatically, the order's payment status displays as Partially paid in your Shopify admin. When a deposit payment isn't captured automatically, such as in cases where payments are captured manually or the customer chose to make a manual payment, the order's payment status displays as Payment pending and Due. You must select Collect payment to capture the deposit payment or confirm the manual payment for the deposit as paid.

    Update the Draft order invoice email notification for deposits

    If your store uses customized notification templates, then you might need to update your Draft order invoice notification manually to ensure that deposits are displayed in the Draft order invoice notification.

    These changes require familiarity with the code that is used in Shopify's notification templates. If your templates are highly customized and you're not sure how to apply the necessary changes, then contact the developer that made the changes or click Revert to default to restore your template to its original state. Reverting to default removes any customizations you have made, but reverting to default ensures that your templates are the most current version.

    Before you make any changes, back up your template by copying and pasting it into another document, such as Google Docs. After you make changes, click Preview to review your changes and ensure that they function as expected before you click Save.

    Steps:

    1. From your Shopify admin, go to Settings > Notifications.

    2. Click Customer notifications.

    3. In the Order processing section, click Draft order invoice.

    4. Click Edit code.

    5. Locate the section of the code that begins with {% if payment_terms %}, and then replace the section below up to {% endif %} with the following code snippet:

    <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>
    1. Optional: To preview your changes, click Preview.
    2. Click Save.
    Can’t find the answers you’re looking for? We’re here to help.