Setting up payment terms in B2B
Payment terms define how long a company has to pay for an order. You can set payment terms for each company location. After you set payment terms, B2B customers can view these terms on any orders they place through your online store.
You can also use payment terms when you create a draft order for a B2B customer.
To give you more flexibility with payments, you can set up a deposit requirement as part of your payment terms. This lets you to collect partial payment for an order when it's created, and the rest at a later date. Deposit requirements can be set up on any company location and on draft orders.
On this page
Payment term types
You can set up different payment terms for company locations and draft orders.
Review the following table to learn the different payment terms that you can set up for company locations and on draft orders:
Payment term | Description | Can be set on |
---|---|---|
No payment terms | Payment is due immediately. This is the default setting. | Company location and individual draft orders. |
Net (period) |
For example, if you select net 30 terms, then customers need to pay for their orders within 30 days. | Company location and individual draft orders. |
Due on fulfillment |
| Company location and individual draft orders. |
Fixed date |
For example, payment is due on January 27, 2026. | Individual draft orders. |
Set up payment terms for a company location
You can set up payment terms for a specific company location.
Steps:
From your Shopify admin, go to Customers > Companies.
Click a company that you want to set up payment terms for.
In the Locations section, click a company location that you want to set up payment terms for.
In the Payment terms section, click the pencil icon.
From the drop-down menu, select a payment term type.
Optional: Set up a deposit for your payment terms:
- Select Require deposit on orders created at checkout.
- Enter a percentage amount deposit requirement, such as 20%.
Click Save.
Set up payment terms for a company
You can set up payment terms for all locations in a company.
Steps:
From your Shopify admin, go to Customers > Companies.
Click a company that you want to set up payment terms for.
In the Payment terms section, click the pencil icon.
From the drop-down menu, select a payment term type.
Optional: Set up a deposit for your payment terms:
- Select Require deposit on orders created at checkout.
- Enter a percentage amount deposit requirement, such as 20%.
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 page.
Steps:
From your Shopify admin, go to Customers > Companies.
Use the checkboxes to select the companies that you want to set up payment terms for.
Click Edit payment terms.
From the drop-down menu, select a payment term type.
Optional: Set up a deposit for your payment terms:
- Select Require deposit on orders created at checkout.
- Enter a percentage amount deposit requirement, such as 20%.
Click Save.
Collecting payment for orders on payment terms
Customers don’t have to wait until the payment terms on an order expire to pay for the order. During the payment term period, B2B customers can log in to customer accounts, select an order, and pay for it by clicking Pay now. Customers can do this any time after the order is placed up until the due date. After the terms expire, customers can still make payments but the order displays as Overdue in customer accounts.
Payments aren’t automatically captured when the payment terms expire. For example, if a B2B customer saves a credit card for an order, then you must manually capture the payment by charging that credit card in your Shopify admin.
Adding deposits to payment terms for B2B
If you want to collect partial payment for an order upfront and the rest at a later date, then you can require a percentage deposit as part of the payment term. B2B customers need to pay the deposit amount when they place an order at checkout. Deposits can be paid with a credit card or manual payment method, such as a bank deposit.
To require a deposit on all orders, you can set up a deposit requirement for all locations in a company or for a specific company location. If you want to collect deposits only on specific orders, then you can also set a deposit requirement on draft orders.
After a deposit has been captured, the order’s payment status changes to Partially paid in your Shopify admin. If your customer pays a deposit with a manual payment method, then the order status changes to Payment pending until you record the manual payment on the order in your Shopify admin.
Draft orders and deposits
You can add a deposit requirement to a draft order that you or your staff create, and then send an invoice to your customer to request payment for the deposit.
If a company location is set to submit orders for review and has a deposit requirement, then your customers are presented with the deposit amount at checkout, but it’s not captured immediately. The order is submitted as a draft order for you to review. After you confirm the order, you can charge a credit for the deposit, record payment received by manual payment method, or send an invoice to your customer for payment. After payment has been recorded, the order’s payment status changes to Partially paid
Customer experience for B2B deposits
Customers can view the deposit amount and the due date for the outstanding balance at checkout, on the thank you page, and when they view the order in customer accounts. If you or your staff create a draft order with a deposit, then the deposit amount is also displayed on the invoice that you send to the customer.
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:
From your Shopify admin, go to Settings > Notifications.
Click Customer notifications.
In the Order processing section, click Draft order invoice.
Click Edit code.
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>
- Optional: To preview your changes, click Preview.
- Click Save.