# Payment methods

URL: https://docs.sparklayer.io/help/ordering/payment-methods

Choose how each B2B customer group can pay (on account, by invoice or by card), see how each method affects the order, and rename or reorder them at checkout.

> **Quick summary**
>
> - SparkLayer has 3 B2B payment methods. With **Pay on Account** and **Pay by Invoice**, the customer orders now and pays you later. With **Pay Online by Card**, they pay in your store's checkout straight away.
> - Choose the methods for each customer group in its **Payment methods** rule at **Customers > Groups** in the SparkLayer Dashboard ([open](https://app.sparklayer.io/customers/groups)), or **SparkLayer Wholesale > Customers > Customer groups** in the Shopify app, where they have different names: see [Payment method names](#names).
> - On Shopify, on-account and invoice orders arrive as draft orders unless you turn on **Auto-complete draft orders**. Card orders arrive paid.
> - To let customers ask for a quote instead of paying, turn on the [Quoting Engine](https://docs.sparklayer.io/help/ordering/quoting.md). Quotes aren't a payment method.

## How it works

On the **Review & Pay** step of the [My Cart](https://docs.sparklayer.io/help/storefront/interfaces/my-cart.md), customers pick from the payment methods their customer group allows. Their choice decides whether they pay now, and how the order arrives in your store.

| Payment method | For the customer | For you and the order |
| --- | --- | --- |
| **Pay on Account** | Checks out without payment details. The order is charged to their account, for example on Net 30 terms. | An offline method. You can set a [credit limit and net terms](https://docs.sparklayer.io/help/ordering/credit-net-terms-and-invoicing.md) for each customer and collect payment later. |
| **Pay by Invoice** | Checks out without payment details, and pays later, for example on Net 30 terms. | An offline method. You take payment outside the store, for example by bank transfer, often against an [invoice](https://docs.sparklayer.io/help/ordering/invoices.md). You can set [net terms](https://docs.sparklayer.io/help/ordering/credit-net-terms-and-invoicing.md), but there's no credit limit. |
| **Pay Online by Card** | Pays straight away in your store's standard checkout, by card or any other method your store offers. Sometimes called pro forma payment. | The order arrives paid (completed), with nothing to collect. |

### Which method to offer

| If you want customers to... | Offer |
| --- | --- |
| Pay before you ship, for example new customers | **Pay Online by Card** |
| Order within a credit limit and pay on terms such as Net 30 or Net 60 | **Pay on Account**, with [credit limits and net terms](https://docs.sparklayer.io/help/ordering/credit-net-terms-and-invoicing.md) |
| Order now and pay later against an invoice, for example by bank transfer, with or without net terms but no credit limit | **Pay by Invoice** |
| Agree a price with your team before ordering | The [Quoting Engine](https://docs.sparklayer.io/help/ordering/quoting.md) |

A group can have several methods, for example card and on account for long-standing customers, and card only for new ones.

**Shopify only:**

To follow each method from checkout to payment, step by step, try the interactive guide [How payments work](https://docs.sparklayer.io/help/guides/how-payments-work.md).

### Which payment methods work with the SparkLayer checkout?

**Shopify only:**

| Payment method | Works? | How |
| --- | --- | --- |
| **Card gateways**, such as Shopify Payments or PayPal | Yes | Through **Pay Online by Card**, which takes the customer to Shopify's checkout. |
| **Manual (custom) methods**, such as Zelle or bank transfer | Yes | Zelle isn't a Shopify automated gateway. Add it as a manual payment method in **Settings > Payments** ([open in the Shopify admin](https://admin.shopify.com/settings/payments)), and it shows in Shopify's checkout with **Pay Online by Card**. Or offer **Pay by Invoice** and explain how to pay in a [payment method message](https://docs.sparklayer.io/help/ordering/cart-and-checkout.md#add-a-message-for-each-payment-method). |
| **ACH bank transfer** | Partly | It shows at Shopify's own payment step, the last step of the checkout, with **Pay Online by Card**. Full ACH support in the SparkLayer checkout is in development, with no date yet. |
| **Pay on Account** and **Pay by Invoice** | Yes | SparkLayer's own methods. The customer checks out without payment details and you collect payment later. |
| **Quotes** | Yes | Not a payment method: the customer chooses how to pay when they complete the quote. See [Set up quotes](https://docs.sparklayer.io/help/ordering/quoting.md). |
| **Shopify gift cards** | With card checkout only | Only in Shopify's checkout, with **Pay Online by Card**. Not with **Pay on Account** or **Pay by Invoice**. |

Each order has one payment method, so a customer can't split an order between methods, such as part on account and part by card.

### How orders arrive in your store

Which payment method the customer chooses decides how the order arrives in your platform: paid and ready to fulfil, or waiting for you to collect payment.

**Shopify:**

How B2B payment methods work with SparkLayer and Shopify, starting from the B2B checkout (SparkLayer):

- **Pay online by card (upfront):**
  - If it's a **sales agent order**, or a **company user order**, an email is sent to the customer to complete payment. The customer clicks the link, pays in the **Shopify checkout** and the order is completed in Shopify.
  - Otherwise the customer pays in the **Shopify checkout** and the order is completed in Shopify.
- **Payment on account or by invoice:** the order is completed in SparkLayer ("Order completed (SparkLayer)").
  - If **auto-complete draft orders** is on, a completed order is created in Shopify.
  - If it's off, a draft order is created in Shopify, which becomes a completed order once it's manually marked as complete.

| Payment method | How the order arrives |
| --- | --- |
| **Pay on Account** and **Pay by Invoice** | A [draft order](https://help.shopify.com/en/manual/orders/create-orders) by default, so you can make changes before you take payment and fulfil. To create completed orders instead, turn on **Auto-complete draft orders**. |
| **Pay Online by Card** | The customer pays in the Shopify checkout and the order arrives completed. If they don't finish paying, the order still shows in your Shopify draft orders. |
| **Pay Online by Card**, chosen by a **sales agent** or **company user** | The customer is emailed to complete payment, then the order continues as normal. |

**Auto-complete draft orders** is at **Integrations > Platform > Shopify order actions** in the SparkLayer Dashboard ([open](https://app.sparklayer.io/configuration/integrations/platform)), or **SparkLayer Wholesale > Integrations > Platform > Shopify order actions** in the Shopify app. See [Complete draft orders automatically](https://docs.sparklayer.io/help/ordering/automation-and-workflows.md) and [Shopify payment methods](https://docs.sparklayer.io/help/platforms/shopify/customisations/payment-methods.md).

**Wix:**

Orders are created in your Wix admin under **Sales > Orders**. Every method except **Pay Online by Card** creates an unpaid order.

| Payment method | How the order arrives |
| --- | --- |
| **Pay on Account** | Payment status "UNPAID". Mark it as paid once you've received payment, for example offline. |
| **Pay by Invoice** | Payment status "UNPAID". Mark it as paid once you've received payment. |
| **Pay Online by Card** (**Card at checkout** in the customer group) | Payment status "PAID". You can fulfil it straight away. |

Pay Online by Card takes customers to the Wix checkout, with all the Wix payment methods you've set up, such as card or PayPal.

**Other platforms:**

| Payment method | What happens |
| --- | --- |
| **Pay on Account** and **Pay by Invoice** | The customer places the order without entering payment details. |
| **Pay Online by Card** | The customer goes to your store's checkout, enters their card details and sees the payment methods you've set up there. |

For how orders are created on your platform, see the [developer docs](https://docs.sparklayer.io/developers.md).

## Choose which payment methods a customer group can use

1. Go to **Customers > Groups** in the SparkLayer Dashboard ([open](https://app.sparklayer.io/customers/groups)), or **SparkLayer Wholesale > Customers > Customer groups** in the Shopify app and click the group's name. To change every group, click **Edit** on the base customer group.
2. Under **Inherited rules**, click **+ Override** next to **Payment methods** (on the base group, **+ Customize**). The rule moves up to **Customized rules**.
3. Tick the methods the group can use: **Pay by invoice** ("Place an order and be invoiced later"), **Payment on account** ("Order on account, e.g. net terms and credit") and **Card at checkout** ("Pay online by card").
4. Click **Save**.

Groups inherit the base customer group's methods until you override them. Click **Reset** on the rule to hand it back. See [Customer groups](https://docs.sparklayer.io/help/customers/customer-groups.md#choose-payment-methods).

## Set up net terms and credit limits

[Net terms](https://docs.sparklayer.io/help/glossary.md#net-terms) (such as Net 30) are how many days a customer has to pay an order they didn't pay for at checkout, so they apply to both **Pay on Account** and **Pay by Invoice**. A credit limit applies to **Pay on Account** only. Both are on every plan. You set them on each customer in a [metafield](https://docs.sparklayer.io/help/glossary.md#metafields) (an extra field on the customer record in your store admin). Customers see them in the **Financials** section of [My Account](https://docs.sparklayer.io/help/storefront/interfaces/my-account.md). See [Credit limits and net terms](https://docs.sparklayer.io/help/ordering/credit-net-terms-and-invoicing.md).

## Rename payment methods

Change the names customers see at **Storefront > Options > Translation overrides** in the SparkLayer Dashboard ([open](https://app.sparklayer.io/storefront/options)), or **SparkLayer Wholesale > Storefront > Options > Translation overrides** in the Shopify app, without code: add an override for the key and enter the new name. See [Change checkout text](https://docs.sparklayer.io/help/ordering/cart-and-checkout.md#change-checkout-text).

| Default name | Translation key |
| --- | --- |
| **Pay by Invoice** | `cart.checkout.payment-method.full.paymentByInvoice` |
| **Pay on Account** | `cart.checkout.payment-method.full.paymentOnAccount` |
| **Pay Online by Card** | `cart.checkout.payment-method.full.upfrontPayment` |

**Core Script code for your developer**

A developer can set the same names in your [Core Script](https://docs.sparklayer.io/help/storefront/storefront-options.md#add-a-core-script-setting):

```javascript title="Core Script"
translations: {
  en: {
    "cart.checkout.payment-method.full.paymentByInvoice": "Pay by Invoice",
    "cart.checkout.payment-method.full.paymentOnAccount": "Pay on Account",
    "cart.checkout.payment-method.full.upfrontPayment": "Pay Online by Card",
  }
},
```

To explain a method, such as how Pay by Invoice works, add a message under it. See [Add a message for each payment method](https://docs.sparklayer.io/help/ordering/cart-and-checkout.md#add-a-message-for-each-payment-method).

## Change the order and default payment method

Customers see payment methods in a set order, and the first is selected by default. To change the order without code:

1. Go to **Storefront > Options** in the SparkLayer Dashboard ([open](https://app.sparklayer.io/storefront/options)), or **SparkLayer Wholesale > Storefront > Options** in the Shopify app and open **Checkout**.
2. Under **Payment methods, in order**, drag the methods into the order you want.
3. Click **Save and publish**.

The order only affects methods the customer's group can use.

**Core Script code for your developer**

A developer can set `paymentMethodsOrder` in your [Core Script](https://docs.sparklayer.io/help/storefront/storefront-options.md#add-a-core-script-setting) instead, using the Core Script names in [Payment method names](#names). Here, Payment on account is first, so it's the default:

```javascript title="Core Script"
paymentMethodsOrder: [
  "paymentOnAccount",
  "paymentByInvoice",
  "upfrontPayment",
],
```

To make card payment (`upfrontPayment`) the default, move it to the top:

```javascript title="Core Script"
paymentMethodsOrder: [
  "upfrontPayment",
  "paymentOnAccount",
  "paymentByInvoice",
],
```

## Choose which card payment options customers see (Shopify)

**Shopify only:**

**Pay Online by Card** takes customers to the Shopify checkout, with every [Shopify payment method](https://help.shopify.com/en/manual/payments/additional-payment-methods) you've set up, such as credit card, PayPal or cash on delivery.

To hide some of them from B2B customers on Shopify:

1. Install a Shopify app that hides payment methods, such as [ETP Hide and Sort Payment Methods](https://apps.shopify.com/etp-hide-sort-payments?) or [Payfy Conditional Payments](https://apps.shopify.com/payfy-conditional-payments).
2. In the app, add a rule for customers with the `b2b` tag, and choose the methods to hide, such as PayPal and Cash on Delivery.

Only Shopify Plus stores can hide the **Credit card** method. This is a limit of Shopify's Payment Customization API.

On other platforms, **Pay Online by Card** shows your standard checkout's payment methods.

## Show payment status to customers

**Shopify only:**

Payments visibility lets customers see whether each order is paid, their payment history and what they owe, in [My Account](https://docs.sparklayer.io/help/storefront/interfaces/my-account.md). It's for Shopify only.

1. Go to **Settings > Configurations > Ordering** in the SparkLayer Dashboard ([open](https://app.sparklayer.io/configuration/settings/general)), or **SparkLayer Wholesale > Settings > Configurations > Ordering** in the Shopify app.
2. Turn on **Payments visibility** ("Show the payment status of orders in the My Account area").
3. Click **Save**.

It's the same setting as **Show payment status** at **Storefront > Options > My Account** in the SparkLayer Dashboard ([open](https://app.sparklayer.io/storefront/options)), or **SparkLayer Wholesale > Storefront > Options > My Account** in the Shopify app: turning on either turns on both. Once it's on:

- The My Account order list has a **Payment** column, showing **Paid** or **Unpaid**. It updates when you change the payment status in Shopify.
- The order's [timeline](https://docs.sparklayer.io/help/customers/timeline.md) logs each payment, with the amount and date, such as "US$666.90 paid against order".
- With [Xero](https://docs.sparklayer.io/help/integrations/accountancy/xero.md), payments against Xero invoices appear as transactions on the order.

## Show a real-time account balance

**Shopify only:**

With Payments visibility on, SparkLayer keeps a real-time account balance for each customer. The **Financials** section of My Account shows their **Payment terms**, **Unpaid Balance** and **Credit Limit**.

SparkLayer starts from an **opening balance** (what the customer owed on a given date), then tracks every new order and payment. This works with Shopify, Xero and QuickBooks Online, so customers can see which orders are paid or outstanding, and your team gets fewer balance queries.

### Set an opening balance

**Shopify only:**

The opening balance goes in the same customer metafield as the credit limit: **Credit Limit and Account Balance** (namespace `sparklayer`, key `payment_on_account`). To set up the metafield, see [Credit limits and net terms](https://docs.sparklayer.io/help/ordering/credit-net-terms-and-invoicing.md).

1. In the form below, enter the **Balance** the customer owes and the **Balance date** it applies from, plus their **Credit limit** and **Net terms** if they have them: the value replaces everything in the field. It writes the date in the format SparkLayer needs.
2. In the Shopify admin, go to **Customers** ([open in the Shopify admin](https://admin.shopify.com/customers)) and open the customer.
3. Paste the value into the **Credit Limit and Account Balance** metafield, replacing what's there, and save the customer.

| Property | What it is | Example |
| --- | --- | --- |
| `balance` | The amount owed on a specific date. | `150.00` |
| `balance_date` | The date and time of the balance, in RFC 3339 format. | `2025-01-01T18:00:00+08:00` |

Whenever you update the metafield, SparkLayer recalculates the balance from the new values.

## Payment method names

Each method has a different label in each part of SparkLayer: the checkout, a customer group's **Payment methods** rule at **Customers > Groups** in the SparkLayer Dashboard ([open](https://app.sparklayer.io/customers/groups)), or **SparkLayer Wholesale > Customers > Customer groups** in the Shopify app, and **Payment methods, in order** at **Storefront > Options > Checkout** in the SparkLayer Dashboard ([open](https://app.sparklayer.io/storefront/options)), or **SparkLayer Wholesale > Storefront > Options > Checkout** in the Shopify app.

| Buyers see at checkout | Customer group rule | Storefront options | Core Script name |
| --- | --- | --- | --- |
| **Pay on Account** | **Payment on account** | **Payment on account** | `paymentOnAccount` |
| **Pay by Invoice** | **Pay by invoice** | **Payment by invoice** | `paymentByInvoice` |
| **Pay Online by Card** | **Card at checkout** | **Upfront payment** | `upfrontPayment` |
| **Request for Quote** (retired) | – | **Quote** | `quote` |

## FAQs

**Why do customers only see card payment, with Pay by Invoice not showing?**

Their customer group only allows **Card at checkout**. Customers see the payment methods their group allows, so a card-only group shows credit card (upfront) payment and nothing else. Tick **Pay by invoice** or **Payment on account** on the group: see [Choose which payment methods a customer group can use](#choose-which-payment-methods-a-customer-group-can-use).

**How do I turn off card payment and offer pay by invoice only?**

On the customer group, untick **Card at checkout** and tick **Pay by invoice**, then click **Save**. Customers in the group then check out without paying upfront, and on Shopify the order arrives as a draft order by default, for you to invoice. See [Choose which payment methods a customer group can use](#choose-which-payment-methods-a-customer-group-can-use).

**How often does the customer's balance update?**

Whenever a new order is placed, or a payment syncs from your store or accounting tool (Xero or QuickBooks Online).

**Can I update balances in bulk?**

Yes. Update the **Credit Limit and Account Balance** metafield for several customers with Shopify's bulk editor or a CSV import tool.

**Why is the "Payment on Account" metafield not updating?**

The metafield keeps the values you set. The real-time balance is calculated and held in SparkLayer, not written back to the metafield.

**Can I still use Request for Quote?**

No. Quotes use the [Quoting Engine](https://docs.sparklayer.io/help/ordering/quoting.md), and Request for Quote can't be selected in a customer group.

**Can I add a message to explain a payment method?**

Yes. A message can show under each payment method on **Review & Pay**, the same for every customer. See [Add a message for each payment method](https://docs.sparklayer.io/help/ordering/cart-and-checkout.md#add-a-message-for-each-payment-method).

**Can I preselect a different payment method for each customer group?**

No. The first method in **Payment methods, in order** is selected by default, and the order is the same for every customer group. See [Change the order and default payment method](#change-the-order-and-default-payment-method).

**Can customers pay with Zelle or ACH?**

Zelle works as a Shopify manual payment method. ACH bank transfer shows at Shopify's own payment step, and full ACH support is in development. See [Which payment methods work with the SparkLayer checkout?](#which-payment-methods-work-with-the-sparklayer-checkout)
