Description
Database requirement: this plugin stores money in its own tables and relies
on transactions to keep a payment and the invoices it settles consistent with
each other. Those tables must use InnoDB, which is the default on every MySQL
since 5.5 and every MariaDB. On a server configured to default to MyISAM the
tables are created without transaction support and a failure part-way through
recording a payment could leave the entry saved and its allocation missing.
If your store ships before it gets paid, WooCommerce alone cannot tell you what you are owed. An order marked Processing means the goods went out, not that the money came in, and the gap between the two is where a spreadsheet usually appears.
This plugin closes that gap. It watches orders placed through the payment methods you nominate — bank transfer, cheque, cash on delivery, purchase order, anything that defers payment — and records each one as a charge against that customer. When money arrives, you record it, and the balance moves.
What it does
- An accounts receivable dashboard: total outstanding, how many customers carry a balance, and how much is overdue including the age of the oldest overdue amount
- A receivables trend chart covering the last six months
- A customer list showing each account’s balance, company, email and oldest unpaid date, sortable by balance, name or oldest unpaid date
- Charges created automatically from orders placed with the payment methods you choose
- Payments recorded against a customer with the amount, the date the money actually arrived, the method, a reference such as a cheque number, and a note
- Payments applied automatically to the oldest open charges first, which is how B2B receivables are normally settled
- Credits and write-offs, each requiring a note, and corrections for an entry recorded in error
- Payment terms for the store — Due on Receipt through NET 120 — giving every new charge a due date
- A screen for each customer: their balance, the invoices still open against them, and their full history with a running balance
- Historical import, so orders already in your store can be brought in as charges without duplicating anything — an order that was already refunded arrives as its gross invoice plus each refund as its own dated credit
- Customer balances exported to CSV
What happens when an order changes
An order is not a fixed document, and the ledger follows what actually happened to it rather than what it looked like on the day it was placed.
- A refund is recorded as a credit dated the day the refund was issued, not the day the order was placed. Deleting that refund in WooCommerce reverses the credit.
- Cancelling an order withdraws its charge. Any payment already sitting on that charge is released and applied to whatever else the customer owes, rather than disappearing with it.
- Editing an order’s total records the difference as its own dated entry — an increase as a charge, a decrease as a credit. The original invoice is left as it was, so the history shows what was billed and when it changed.
- Orders placed in a currency other than your store’s base currency are left out rather than converted, and the plugin tells you how many, so an absence is never silent.
- Two payments recorded against the same customer at the same moment cannot interleave: each customer’s entries are written under a lock, so a payment and the invoices it settles are always consistent with each other.
Built for real money
Amounts are stored and calculated as exact whole units of your currency rather than as decimal fractions, so a balance never drifts by a fraction of a penny and a fully paid charge closes at exactly zero. Your currency’s decimal places are respected throughout, including currencies with none such as the Japanese yen and currencies with three such as the Kuwaiti dinar. An amount typed with more precision than your currency allows is reported back to you rather than quietly rounded.
Works with what you already run
Requires WooCommerce. Compatible with High-Performance Order Storage, and every order lookup goes through the WooCommerce API rather than direct database access. Any customer role can be treated as a B2B account, including roles created by other B2B plugins, and an optional filter restricts tracking to the roles you nominate.
Your data stays in your database. The plugin makes no external requests of any kind.
A paid add-on, Kascado Accounts Receivable Pro, adds aging reports, automated payment reminders, credit limits and a customer-facing balance page.
Screenshots






Installation
- Upload the plugin folder to
/wp-content/plugins/or install it through Plugins Add New. - Activate it through the Plugins screen.
- Make sure WooCommerce is installed and active.
- Go to Kascado Accounts Receivable to see the dashboard.
- Open the settings and choose which payment methods create a receivable. Instant-payment methods such as card or PayPal should be left unticked — those orders are paid at checkout.
FAQ
-
Which orders become receivables?
-
Only orders placed with the payment methods you tick in the settings. On activation the plugin pre-selects the common deferred-payment gateways it finds, such as bank transfer, cheque and cash on delivery, and you can change that selection at any time.
-
Does an order marked Processing or Completed count as paid?
-
No, and deliberately so. Those statuses tell you the order has been handled or shipped, not that the money arrived. A charge is only settled when you record a payment against it.
-
How are payments matched to charges?
-
Oldest open charge first. A single payment covering several invoices is spread across them in that order, and a charge that is only partly covered keeps its remaining balance. You do not have to nominate an invoice when recording a payment.
-
Can I record a payment that is not tied to any order?
-
Yes. A payment belongs to the customer, not to an order, so a cheque covering five invoices or a payment received in advance are both recorded the same way.
-
Can I correct a mistake?
-
The ledger is append-only, so nothing is edited or deleted. Credits, write-offs and corrections are recorded as new dated entries alongside the entry they relate to, each with a note explaining it, which keeps the history intact for audit.
-
Does it work with my currency?
-
Yes, including currencies with no decimal places and currencies with three. Amounts are stored as exact whole units of your currency, and the entry form only accepts the precision your currency actually uses.
-
Will it slow my store down?
-
No. The dashboard runs on indexed queries against its own tables, and its scripts and styles load only on its own admin screens. The plugin adds no scripts, styles or markup to your storefront. The one thing that runs on a storefront request is the hook that records a charge when a qualifying order is placed, which is a single insert against the plugin’s own table.
-
What happens to my data if I remove the plugin?
-
Deactivating changes nothing. Uninstalling removes the plugin’s tables, options and settings completely.
Reviews
There are no reviews for this plugin.
Contributors & Developers
“Kascado Accounts Receivable for WooCommerce” is open source software. The following people have contributed to this plugin.
ContributorsTranslate “Kascado Accounts Receivable for WooCommerce” into your language.
Interested in development?
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
Changelog
1.0.0
- First public release.
