How to create a WooCommerce pay later system for schools & other repeat customers

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 use WooCommerce Product Table with some other plugins 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 YITH 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 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 Options plugin. Extra product field plugins like this are perfect for repeat ordering because they let 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 Options add-on. For example, check out our separate tutorial about how to create a daily order form with WooCommerce Product Table and Product Options.

Alternatively, if you want to collect information for the entire order rather than each specific product, then you can do this with the WooCommerce YITH Checkout Manager 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.

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 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!


  1. Everything i search for on my Woocommerce store always seems to lead me back to Barn2!
    Following on from setting up my online food ordering store (with your help), the next challenge is going to be using that store to allow dine-in customers to order from their tables (or via our staff who will be using the site as POS), and having the orders tally up onto tabs to be paid at the end of the meal. I'd really like to skip the process of someone having to collate and add up the individual orders manually (often an error-prone process during busy times). Do you think it is possible?

    • Hi, Trev. I believe we have just the tutorial for what you describe - please see: WooCommerce POS: Taking Food Orders at the Counter or Table using an iPad/Tablet.

      As for collating or adding up separate orders, you can avoid having to do this by either:

      • Implementing a "pay as you order" system or collecting payment upfront, or
      • Using the Cash on Delivery (COD) or Check Payments (see WooCommerce Core Payment Options) for the initial order as this will prevent it from being set to "completed" status. This then allows you or your staff to add or remove products to the same order for each customer or table until they settle payment.

      I hope this makes sense and helps. Let me know if you have any other questions. You can also get in touch with us via our Support Center.

  2. Hello guys,
    I run a distribution company in which i have people come to my physical store and buy products, we also sell online through a shopping cart HOWEVER, I have hospitals and school systems that call orders in, or email it and then we bill them the invoice at then end of the month. Some customer need to use PO Numbers.

    How can I add a PAY LATER or INVOICE ME LATER button to CERTAIN customers and not all of them?

    • Hello, Samuel. My apologies for my late reply. You can achieve this by enabling the default offline payment methods in the WooCommerce plugin itself, such as Cash on Delivery or Check Payments (which you can manage/edit/rename) and then setting the WooCommerce Payment Roles so that the payment method will only be available to a certain User Role which you then add the desired User accounts to. You can add/edit User Roles via the free User Role Editor plugin. You can also refer to the WooCommerce documentation for Payments Settings and Core Payment Options. Thanks.

  3. Sorry but it seems to me that half this article is false. None of these solutions allow pay later in any shape or form. Please guys if you get it wrong, update the article to correct it, but don't give us gibberish like: "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)".

    Pre-pay later? That will go down in history. 🤣I'll try it in the pub when lockdown is over!

    I do think there is a market for a payment gateway that allows credit accounts for customers with a specific role. It would allow credit control so admins can see how much is outstanding at a particular time, and how long it is outstanding for, as well as applying payments to it automatically and manually, and reminder emails with statements and credit limits.

    • Hi, Chris. Sorry for the late reply and for any misunderstanding. Using WooCommerce Subscriptions allows users to have a running tab/bill on their account's balance, which having a subscription will help with by automatically paying/settling a fixed balance periodically.

  4. I would like my product to have a payment plan option that I can set three payment prices due by three set dates. Is this possible?

    Example: User chooses payment plan and pays $325 on the spot,
    the next $325 is due July 31, the last payment of $325 is due Sept. 30.

    Any plugins/work arounds that will allow this?
    Deposits only allows rounded percentages with the next instalment X amount of days after first instalment. This isn't what I need.

    • Hi, Amanda. My apologies for the late reply. I'm afraid this is beyond what the plugins mentioned are designed to do, and you could achieve it by adding it as a bespoke feature or customization. If you don't have a developer who can do this for you, then I recommend posting a job on Codeable where their pre-approved WordPress experts will send you a quote. We have partnered with them to provide plugin customization for our customers. Thanks.

Please share your thoughts...

Your email address will not be published. Required fields are marked *