Credit, Net Terms, & Invoicing
If some of your B2B customers have a credit limit in place, it's possible to display this when they login to your website, giving them visibility on their credit status.

Credit limits work by specifying an amount against a customer record and, when the customer signs in, and places an order using Pay on Account, they'll be notified if they are about to place an order that exceeds their credit limit.
In our example below, the customer has exceeded their credit limit and their ability to "Pay on Account" has been blocked (i.e. they are only able to "Pay Online by Card")

This feature works by enabling a special setting against a customer that can then be manually adjusted according to their agreed terms. You can also specify an account balance that will automatically update each time a successful order is placed (this can also be adjusted manually if required).
Please note By default, if a customer exceeds their credit limit, the "Pay on Account" payment method will be disabled. If you'd prefer to still allow the order to be placed by this payment method, you can enable this setting here.
Setting up metafields on Shopify To learn more about how to configure metafields on Shopify for SparkLayer, please refer to our guide here
Item | Details |
---|---|
Custom data type | |
Metafield type | This must be set as an JSON string |
Namespace | This must be set as sparklayer |
Key | This must be set as payment_on_account |
Value | This is applied on a specific customer record. This must be specified in the following format:{"credit_limit":1000,"balance":250} |
If you're using multiple currencies for your B2B customers (see Shopify Markets & Currencies), you can specify their exact currency when viewing the credit limit and account balanace. To set this up, simply change the value key against a customer to the below format, changing usd to your required currency:
Item | Details |
---|---|
Value | This is applied on a specific customer record. {"credit_limit":1000,"currency_code":"usd","balance":250} |
You can also modify the text that is shown to a customer by updating the SparkLayer language strings. They'll see special messaging both in their My Account area and during the checkout if they exceed their credit limit.


It's possible to set specific "Net terms" for a customer (such as Net 30, Net 60) giving the customer visibility on their payment terms. Once it's set up, this will display in the customer's My Account area under "Financials'.

When the customer then goes through the checkout, they can simply select "Pay on Account" to trigger their net payment terms.

First, you'll need to ensure the "Payment on Account" payment method is enabled within the Customer Groups area of the SparkLayer Dashboard for your chosen customer group. Click the Edit icon and you'll see a section called Payment Methods. From here, simply ensure that "Payment on Account" is ticked.

When an order then arrives into Shopify, it will be created as a Draft order. With the payment terms set (as above), this will then update the "Payment due later" setting and populate the "Payment terms" and "Issue date" fields.

You can even automatically convert the Draft order into a Completed order within Shopify and then manually collect payment at a later date (such as offline via your accounting system). To activate this, from the SparkLayer Dashboard, turn on "Auto-complete Shopify Draft orders" and ensure "Payment on Account orders - automatically mark as paid" is turned off. If you do want to automatically mark the order as paid, you can achieve this via Shopify Flow. Learn more.

Setting up metafields on Shopify To learn more about how to configure metafields on Shopify for SparkLayer, please refer to our guide here
Item | Details |
---|---|
Custom data type | |
Metafield type | This must be set as an JSON string |
Namespace | This must be set as sparklayer |
Key | This must be set as payment_on_account |
Value | This is applied on a specific customer record. This must be specified in the following format:{"net_terms":"30_days"} If you're also the credit feature (see above), this should be populated as follows:{"credit_limit":1000,"balance":250,"net_terms":"30_days"} |
In terms of configuring the net terms, the following values are supported:
Net terms | Value |
---|---|
7 days | 7_days |
15 days | 15_days |
30 days | 30_days |
45 days | 45_days |
60 days | 60_days |
90 days | 90_days |
Please note If you're using Auto-complete Shopify Draft orders on your store setup, this will not work in parallel to customers using "Payment on Account" with specific net terms (as detailed above)
Shopify automations You can also automate how your net payments work with our ready-made Shopify Flows. You can learn more in our guide here
Are you looking to create and send invoices for your B2B customers? SparkLayer offers a variety of ways to allow invoices to be sent, streamlining your B2B operations:
Method | Details | Use-case |
---|---|---|
SparkLayer Invoices | Customers can view & download invoices directly via SparkLayer. | Your invoicing requirements are relatively simple and you don't want to use additional third-party apps. Learn more |
Send invoices via your online store | Depending on which eCommerce platform you're using, it's also possible to send invoices directly from your store administration area. | You have relatively basic requirements and you want to use your existing eCommerce platform to manage the process. Learn more in the guide below. |
Metafield and attaching invoices | Add custom invoice details within your store using special metafields that can be associated with an order (manually or automatically). | You have an existing back-office system that is already generating invoices for your store and you can access these as files (e.g. a PDF). Learn more in the guide below. |
Third-party app | Tools such as Sufio allow you to automatically integrate their solution into SparkLayer. | You require invoicing beyond B2B (e.g. for your regular cusotmers also) and need more design customisation. Learn more in the guide below. |
To learn about SparkLayer's own invoicing solution, please see our guide here.
Depending on which eCommerce platform you're using, it's also possible to send invoices directly from your store administration area. Whilst the functionality may be basic, it can act as a good way to start testing your B2B invoicing process before using a more comprehensive invoicing solution.
When an order is placed (as a draft order)
When a customer places an order via your website via a manual payment method (such as Payment by Invoice), it's possible to have this order come into Shopify as a 'Draft' order.

Shopify then has the ability to 'Send an invoice' that allows you to send a customise message and a link to the Shopify checkout to make payment. This uses the 'Send invoice' feature of Shopify Draft orders and you can learn more about how this works here.
Once the customer completes their purchase by making payment, the order is then marked as paid and will then display within your Shopify Orders area.

You can edit this email template by going to Settings > Notifications within Shopify and search for the Draft order invoice template
If the customer hasn't made payment for any reason or you are processing it manually, within Shopify you can open the order and easily resend or manually mark as paid. Please note, the order will stay as a Draft order until action has been taken.

When a customer places an order and payment has been completed against it, the order will appear in their My Account area. When viewing an order, in addition to the order details (such as products ordered, order status, address), it's possible to attach an invoice against an order that the customer can subsequently download.
To get started, you'll need to add a custom metafield to your Shopify store, using the "Orders" metafields
Setting up metafields on Shopify To learn more about how to configure metafields on Shopify for SparkLayer, please refer to our guide here
Item | Details |
---|---|
Custom data type | Orders |
Metafield type | This must be set as anURL or File. One value or lists of values are supported. |
Namespace | This must be set as sparklayer |
Key | This must be set as invoice_url |
Value | NOTE: It's very important the file name or URL is not guessable. We recommend having a UUID placed within the URL which makes it impossible to guess. |
Once you've set up the metafield, simply navigate to an order in Shopify and you'll see the field appear to specify the invoice URL.

If you don't already have the invoice file(s) hosted, you can use the built-in Shopify content system to do this. Simply upload the file and copy the link to your clipboard. This can then be pasted within the filed detailed above.

Once the B2B customer logs in, they'll then be able to download this from their order history on your website. As this is using the Shopify metafield system, the process of attaching invoices could be actioned in bulk or you could even automate this process from your backend system (e.g. ERP, CRM).

If you're looking for a more feature-rich invoicing solution, you may also want to consider using a third-party app such as Sufio Invoicing