How to Create a WooCommerce Pay Later System for Schools & Other Repeat Customers

Last Updated: January 28, 2020 8 comments

WooCommerce pay later balance plugin

Most online stores work by charging customers at the time they place their order. But what if you want customers to have a balance or virtual wallet, where they add credit and use this to pre-pay for their orders? Or what if you want customers to place orders online, and then pay later by paying off their balance at the end of the month?

Today, I’m going to show you how to create a WooCommerce pay later system for regular customers. We’ll do it using off-the-shelf plugins, and you don’t need any technical expertise or coding skills.

Let’s get started!

Example use case – school website for parent ordering and payments

WooCommerce school plugin

Before we start, let’s look at a typical use case that will benefit from WooCommerce pay later plugin. This is actually a real-life example, as one of our WooCommerce Product Table customers expressed an interest in a credit system for their store.

Many schools save time and reduce administrative costs by creating an online system for managing parents’ payments and balances. Parents use the system to order school dinners, snacks, school uniform, and school trips. They can login and pay online, add funds, or top up their balance.

When a parent places an order for school dinners or snacks, they are not required to pay straight away. This is crucial because parents might order on a regular basis, and most schools prefer them to pay later or take payment from a pre-paid balance. That’s what makes a WooCommerce pay later system different from a typical WooCommerce store.

As well as a credit-based pay later plugin, the school needs some other features that are different from other WP and WooCommerce websites.

WooCommerce Product Table plugin with product variations displayed on separate rows.
Since parents are ordering the same products (i.e. school meals and snacks) on a regular basis, a standard e-commerce store layout is not appropriate. They don’t want to spend hours browsing through multiple pages and large images of each school lunch option! Instead, products should be listed in a structured table layout where parents can quickly make their choices and add to the cart.

Many WooCommerce pay later websites are also aimed at pre-approved customers only, such as parents of children at a school. As a result, they need a way to hide the ordering and payment pages from public view. The school might be using WordPress for their main website, but only parents should have access to the private parent area for ordering school dinners and making payments online.

What plugins will I need?

I’m going to tell how to achieve all of this by creating a WordPress WooCommerce plugin with 3 handy extensions. You will need:

  • A WordPress website.
  • The free Woocommerce plugin.
  • A WooCommerce pay later plugin for letting customers top up their balance and use it to pay for orders.
  • WooCommerce Product Table to list products in a space-saving order form that will help your repeat customers.
  • (Optional) A WooCommerce privacy plugin to create hidden, protected areas for your store.

Keep reading to learn how to choose the best plugins for your WooCommerce credit system, and how to set them up.

Step 1. Set up WooCommerce

The first step is to set up WooCommerce and add your products:

  1. Install the free WooCommerce plugin on your WordPress website. The WooCommerce Setup Wizard makes this easy. You can also use the official documentation for extra tips on getting started.
  2. Next, add a product for each item that you want parents to be able to buy. For example, if you’re a school then you’ll probably want to create 1 product called ‘School Lunch’, and another for ‘Snack’ or ‘School Trip – London’. You can also add items of school uniform as individual products, with a variation for each size option.
  3. Use WooCommerce to set up payment gateways, depending on how you want customers to be able to pay and top up their balance. I recommend PayPal and Stripe, which are both very easy to set up. These payment gateways will cater for customers who like to use PayPal, and those who prefer to pay with credit or debit card.

Step 2. Add a WooCommerce pay later plugin

The next step is to transform your store into a WooCommerce pay later system where customers can add credit and use their balance to pay for their orders. To do this, you need to add a WooCommerce credit plugin.

Use the documentation to set it up.

WooCommerce balance pluginAccount Funds is an official WooCommerce extension available from It gives customers an online wallet on your WordPress website, where they can add funds, top up their balance, and pay for orders using their balance.

Account Funds works perfectly with WooCommerce Subscriptions. This is ideal if you want customers to set up an automatic monthly payment to pay off a set amount each month. It’s a good alternative to having to top up their balance manually every time.

Get Account Funds

Step 3. List your products in a table

WooCommerce order form plugin demoAs I mentioned earlier, WooCommerce websites with credit systems and online balances are aimed at repeat customers. This means that the traditional WooCommerce store layout isn’t suitable.

By default, your store will list products in a grid layout with about 3 products per row and large images. Customers will have to click through to a separate page for each product in order to choose quantities, variations, and add to the cart. Obviously, that’s no use for customers who know what they want and need to order quickly.

WooCommerce product order form layout

Instead, you need a quick WooCommerce order form layout which lists products in a user-friendly table. You’ll need the WooCommerce Product Table plugin for this:

WooCommerce Product Table
Create a quick order form perfect and speed up the ordering process for repeat customers.

WooCommerce Product Table takes the products that you added in Step 1, and lists them in a quick order form with quantity pickers, variation dropdowns, and more. This is a much better way to sell to regular customers who are already familiar with your product offering.

Collect extra information with each order

woocommerce daily order form example

The other good news is that WooCommerce Product Table integrates nicely with the Product Add-Ons plugin. Product Add-Ons is perfect for repeat ordering because it lets you add extra fields where customers can provide additional information.

For example, if you’re a school creating an online ordering and payments system for parents, then parents need a way to indicate which day of the week their child requires school dinners. If they have more than one child, then they’ll also need to confirm which child the order relates to. You can easily do this with the Product Add-Ons extension. For example, check out our separate tutorial about how to create a daily order form with WooCommerce Product Table and Product Add-Ons.

Alternatively, if you want to collect information for the entire order rather than each specific product, then you can do this with the WooCommerce Checkout Field Editor plugin.

Step 4. Create private and hidden shopping areas

Some WooCommerce pay later websites are open to the public, and anyone can register and order. If that’s you, then you can skip this step. Or if you only want specific people to be able to add credit and place an order, then keep reading.

I’m going to let you choose between 2 plugins for this bit. Which plugin you choose depends on whether you want to make your entire WC store private (e.g. a school selling exclusively to parents), or whether you want to show different products to different people (e.g. a university with a public shop, a hidden staff store, and a hidden shop for alumni).

Related tutorial: How to use WooCommerce to Sell Protected Products to Schools

Plugin option 1 – WooCommerce Private Store

WooCommerce Private Store provides a ridiculously easy way to hide the shop parts of your WordPress site from public view.

The non e-commerce parts of your website will remain available for everyone for view. This is perfect if this is also your main company or school website.

All the WooCommerce-related content – such as the shop page, product pages, cart and account pages – will be hidden from public view. You can choose whether to let people unlock the store using a simple password, or whether the store will automatically unlock when they log into their individual user accounts.

For example, a school might be using WordPress for their main school website. They use Woo Private Store to create a hidden e-commerce area where parents can order school dinners and school uniform, top up their balance, and pay later on a monthly basis or whenever they choose.

WooCommerce Private Store
Make WooCommerce private in less than 2 minutes.

Plugin option 2 – WooCommerce Protected Categories

If you need to sell different products to different people, or if you need to sell to the public as well as privately, then you’ll need WooCommerce Protected Categories instead.

WooCommerce Protected Categories offers more fine-grained control over who can access different parts of your store. For example, you can use it to have a public shop and one or more private areas that are hidden from public view. You can use it to let anyone browse your shop, but require them to login or enter a password before they can make a purchase. You can also use it to create multiple hidden shops, for example a parents shop and a teachers shop.

WooCommerce Protected Categories
Start hiding areas of your WooCommerce store today.


WooCommerce credit plugin pay laterStraight out of the box, it’s not possible to create a WooCommerce online shop with the ability for customers to manage their balance and pay later. However, you can easily achieve this by adding some extra plugins.

Choose the plugins that fit the specific needs of your website, and start setting it up today!

In this article, we’ve talked about how to create a WooCommerce pay later credit system for parents at a school. This is just one use case and I’d love to hear why you need a similar system for your own store. Please let us know in the comments below!

Katie Keith

An active member of the global WordPress community, Barn2 Co-Founder Katie loves collaborating with other plugin companies. Her articles have been published on high profile sites including WPTavern, Torque and IndieHackers. She oversees all plugin support and deals with 'Tier 2' support requests about how to use Barn2's plugins in advanced ways.


  1. Eoin H
    December 2, 2019 Reply

    I have a bit of a different situation from the others who commented already. I sell tours (woocommerce products), which clients can pay a deposit and pay the rest later. The issue I am having is that I can't fins a way for clients to pay a partial payment without having to be stuck to an agreed payment plan (like with woocommerce deposit plugin).

    So, lets say a client purchases a tour for 1000, pays a 300 deposit, and has 700 left to pay off. I would like the client to be able to log in at any time and pay off whatever they can afford at that time, and not have to use a set payment plan.

    I thought this would a somewhat common thing, but I can't find a solution anywhere, and hoping you may be able to point me in the right direction, or have come across a plugin yourself that can do this.

    • EJ
      December 17, 2019 Reply

      Hi, Eoin. I get what you mean. This would entail using a WooCommerce pay later plugin (in Step 2) which would allow for a payment plan and an optional deposit (e.g. the official WooCommerce extension WooCommerce Deposits). Alternatively, you could sell your products with payment options such as check payments or C.O.D. and then offer a personal deferred payment scheme that you settle outside of WooCommerce instead. Needless to say, such types of payment model can be risky.

  2. Jean
    October 17, 2019 Reply

    I've looked into the WooCommerce Account Funds plugin for our Food Co-Op. Unfortunately, you can't pay later because the plugin doesn't allow a negative balance. You first need to top up the Account balance, like a PayPal wallet.
    Has anyone found a way to work around this ?

    • EJ
      November 21, 2019 Reply

      Hi, Jean. You're right that Account Funds doesn't allow for a negative balance. To allow users to pay later, we mention to use it with WooCommerce Subscriptions, which is ideal for users to set up an automatic monthly payment to pay off a set amount each month (pre-pay later) as an alternative to having to top up their balance manually every time. Thanks!

  3. BreeAnn Biederman
    August 20, 2019 Reply


    Following up from Juan - I think we are trying to ask the same thing. I want customers to be about to order a product and pay when it actually ships or is delivered. Our example - we are a market garden and are trying to sell spring seedlings. I want customers to be able to order them in advance (as we need to know what to plant), but pay when they actually receive them (which could be weeks in the future)- without having to have funds loaded on their account. I already have your product table and the rest of the lot - but trying to figure out how to delay payments until the product is received. It seems like backorders and pre-order plug-ins are not going to work...

    Cheers! Thanks in advance

    • EJ
      September 22, 2019 Reply

      Hi, BreeAnn.

      Thanks for the follow up and info. It sounds like the built-in/native WooCommerce payment settings/methods for Check Payments and/or Cash on Delivery might be what you should use for your use case.

      I hope this helps and sorry for the late reply. Should you have any other questions, please get in touch with us via our Support Center. Many thanks.

  4. Juan Carlos Aparicio
    April 24, 2019 Reply

    Hello, I wanted to know if there is any possibility in woocommerce when you want to buy a product offer the option to pay now do not pay at the end of the month, is there a plugin that allows that without having a wallet with funds?

    • Katie Keith
      April 25, 2019 Reply

      Hi Juan, do you mean that you would like people to be able to pay at the time they place the order? That's just how WooCommerce itself is designed to work by default, so you don't need any special plugins for that.

Please share your thoughts...

Your email address will not be published.