Title: Stackedboost COD Deposit Rules for WooCommerce
Author: stackedboost
Published: <strong>August 19, 2026</strong>
Last modified: August 19, 2026

---

Search plugins

![](https://ps.w.org/stackedboost-cod-deposit-rules/assets/banner-772x250.png?rev
=3654058)

![](https://ps.w.org/stackedboost-cod-deposit-rules/assets/icon-256x256.png?rev=
3654058)

# Stackedboost COD Deposit Rules for WooCommerce

 By [stackedboost](https://profiles.wordpress.org/stackedboost/)

[Download](https://downloads.wordpress.org/plugin/stackedboost-cod-deposit-rules.1.4.0.zip)

 * [Details](https://wordpress.org/plugins/stackedboost-cod-deposit-rules/#description)
 * [Reviews](https://wordpress.org/plugins/stackedboost-cod-deposit-rules/#reviews)
 *  [Installation](https://wordpress.org/plugins/stackedboost-cod-deposit-rules/#installation)
 * [Development](https://wordpress.org/plugins/stackedboost-cod-deposit-rules/#developers)

 [Support](https://wordpress.org/support/plugin/stackedboost-cod-deposit-rules/)

## Description

Cash on Delivery is convenient for customers, but it is also the order type most
likely to be refused at the door. The customer never answers, the courier goes back,
and the merchant pays for shipping in both directions with nothing to show for it.

Stackedboost COD Deposit Rules lets you set rules that catch the orders most likely
to fail. When a rule matches it either asks for a partial advance payment, so the
customer pays some of it now and the rest on delivery, or it simply takes Cash on
Delivery off the table for that order.

Every rule runs on data your own store already has. There is no external service,
no API key, no account to create, and no data leaves your site.

**What the free version does, in full:**

 * Require an advance payment, as a percentage or a flat amount. When a rule matches,
   the checkout total drops to the deposit, the customer pays that with any normal
   payment method, and the balance is collected on delivery as usual. Cash on Delivery
   itself is withdrawn for that order, because Cash on Delivery collects nothing
   at checkout and so cannot take a deposit.
 * Or skip the deposit entirely and simply hide COD when a rule matches, so the 
   customer pays the full amount up front.
 * Rules you can combine, all checked locally:
    - Cart total is above a threshold you set
    - Shipping country is different from billing country
    - Guest checkout with no previous completed order on the store
    - Customer has a previous order that was cancelled or failed while paying by
      COD
 * Works with the classic checkout and the block based checkout.
 * Compatible with High-Performance Order Storage (HPOS).
 * Shows the balance still due on delivery on the order screen, in the admin order
   list, and in the order emails sent to the customer.

**How each rule works, and when to switch it on**

The four rules are checked with OR: any single match triggers the action you chose.
They are deliberately simple, because a rule you cannot predict is a rule you will
turn off the first time it surprises a real customer.

_Order value is at or above an amount you set._ The most expensive parcel to get
back is the one worth the most, and a refused high-value order ties up stock as 
well as shipping. Most stores start here, with the threshold set around the point
where a returned parcel stops being an annoyance and starts being a real loss. If
you sell one product at one price, this rule is either always on or always off, 
so use one of the others instead.

_Shipping country is different from the billing country._ A cheap signal that the
two addresses were not typed by the same person. It is not proof of anything, and
it has honest explanations, such as gifts and forwarding services. Useful if you
ship internationally and see refusals cluster on cross-border orders. Pointless 
if you only ship domestically, because it will never match.

_Guest checkout with no previous completed order._ There is nobody to lose face 
with and no account to lose, and in most stores this is where the majority of refusals
at the door come from. This is the broadest of the four, so it is the one most likely
to ask a genuine first-time customer for a deposit. Pair it with a modest percentage
rather than a large one.

_The customer has cancelled or failed a Cash on Delivery order before._ Counted 
from your own order history, against the billing email, and only from orders that
were paid by Cash on Delivery. A cancelled card order costs you nothing and is not
counted. You set how many previous failures are enough. This is the most precise
of the four and the least likely to catch someone unfairly, but it only works on
customers who have ordered before.

**How the deposit is worked out**

You set either a percentage of the order or a flat amount, and optionally a floor
so that a small order still carries a deposit worth collecting. The deposit is never
larger than the order itself.

The deposit and the balance are both gross figures, because that is what the customer
and the delivery driver deal in. Internally the reduction handed to WooCommerce 
is worked out as the same proportion of the net amount, which is what keeps the 
final total correct whether your store runs tax-exclusive pricing, tax-inclusive
pricing, or no tax at all.

One point that surprises people: when a rule matches, Cash on Delivery is withdrawn
for that order in both modes, not only in hide mode. This is not a limitation, it
is the only honest reading of the feature. Cash on Delivery collects nothing at 
checkout, so leaving it available while reducing the total to the deposit would 
simply record a 100 order as a 20 order and collect nothing at all. The customer
pays the deposit with a real payment method, and the balance is collected at the
door exactly as before.

**What the customer sees**

The checkout total drops to the deposit, with a line showing the balance that is
still due on delivery, worded however you like. The same line appears on the order
confirmation page and in the order emails, so the amount the courier will ask for
is never a surprise. If you chose to hide Cash on Delivery instead, the customer
sees a short message explaining that it is not available for this order, which you
can also reword.

On your side, the balance appears on the order screen, in a column on the orders
list so a matching order is obvious without opening it, and in the admin order emails.

**Who this is for**

Stores in markets where Cash on Delivery is a large share of orders rather than 
a rarity, which is most of Central and Eastern Europe, Southern Europe, the Middle
East, North Africa, South Asia and South East Asia. If refused deliveries, or what
carriers call return to origin, is a line item you actually feel, this plugin exists
to shrink it.

If Cash on Delivery is only a small percentage of your orders and refusals are rare,
you probably do not need this. It is not worth adding friction to a checkout that
is working.

**The one manual step, and how the plugin helps**

The plugin reduces the checkout to the deposit, so WooCommerce records the order
as being worth the deposit. That matters when you create the shipping label: if 
the label is generated from the order total, the courier is told to collect the 
deposit again instead of the balance, and your customer pays twice.

The plugin does not talk to any courier, and it deliberately does not try to. Cash
on delivery markets run on dozens of carriers and no single integration would cover
them. Instead it puts the balance everywhere a human will see it before the parcel
leaves: on the order screen, in a column on the orders list, in the order emails,
and, if you use WooCommerce PDF Invoices & Packing Slips, in a bordered box at the
top of the packing slip and invoice that states the amount to collect and warns 
against collecting the full total.

If you create labels in bulk instead, the balance and the deposit are available 
as columns in Advanced Order Export For WooCommerce, so the right figure reaches
whatever you upload to your courier.

Whatever you use to create labels, take the number from there.

**What this plugin does not do**

It does not score customers against any external blocklist, database or reputation
service, because it makes no external requests at all. It does not verify phone 
numbers or addresses. It does not cancel or hold orders automatically after the 
fact. It does not replace a payment gateway, and it cannot take the deposit itself:
a real gateway does that. It does not work on stores where Cash on Delivery is the
only payment method enabled, because withdrawing Cash on Delivery there would leave
the customer with nothing to pay with, and the plugin warns you about this on its
settings screen.

None of this is a fraud guarantee. It reduces your exposure by moving part of the
payment up front on the orders most likely to be refused. Customers can still refuse
a COD order after paying a deposit, though it happens far less often once money 
has changed hands.

**Stackedboost COD Deposit Rules Pro**

Free treats every matching order the same: one flat deposit for everyone. Pro sizes
the deposit per customer, from what that customer has already done in your store.

 * A customer who has completed orders with you and never refused a delivery can
   pay no deposit at all.
 * A customer who has refused deliveries before pays more up front, or loses cash
   on delivery for that order.
 * Every order shows you the record the decision was made on.

The record is read from the orders already in your database, so it works from the
day you activate it. Nothing about your customers or your orders leaves your server.

Pro is $79 a year for one site. The free version does not need Pro to be useful.

### External services

The free plugin makes no external requests at all. Every rule is checked against
your own store data.

If you buy Pro, the plugin contacts the Stackedboost licence service at `https://
email-risk-guard-production.up.railway.app` to check your licence. This happens 
only when you click Activate on the settings screen, and it sends only two things:
the licence key you pasted, and your site address, so the licence can be tied to
this site.

No customer data, order data or email address is ever sent. Checkout is handled 
by Polar (Polar Software, Inc.), which acts as merchant of record and issues the
licence key.

Stackedboost terms: https://stackedboost.com/terms/ and privacy: https://stackedboost.
com/privacy/
 Polar terms: https://polar.sh/legal/terms and privacy: https://polar.
sh/legal/privacy

## Screenshots

[⌊The COD Deposit Rules settings screen: when to act, how much to take up front,
and the rules that decide.⌉⌊The COD Deposit Rules settings screen: when to act, 
how much to take up front, and the rules that decide.⌉[

The COD Deposit Rules settings screen: when to act, how much to take up front, and
the rules that decide.

[⌊The four built-in rules with their thresholds: order value, shipping versus billing
country, guest with no prior order, and previous cancelled or failed COD orders.⌉⌊
The four built-in rules with their thresholds: order value, shipping versus billing
country, guest with no prior order, and previous cancelled or failed COD orders.⌉[

The four built-in rules with their thresholds: order value, shipping versus billing
country, guest with no prior order, and previous cancelled or failed COD orders.

[⌊The block checkout from the customer's side once a rule has matched. The order
summary shows the subtotal, the balance held back for delivery, and the reduced 
amount payable now.⌉⌊The block checkout from the customer's side once a rule has
matched. The order summary shows the subtotal, the balance held back for delivery,
and the reduced amount payable now.⌉[

The block checkout from the customer’s side once a rule has matched. The order summary
shows the subtotal, the balance held back for delivery, and the reduced amount payable
now.

[⌊The order screen, showing what was paid at checkout, what the driver should collect,
and which rules matched.⌉⌊The order screen, showing what was paid at checkout, what
the driver should collect, and which rules matched.⌉[

The order screen, showing what was paid at checkout, what the driver should collect,
and which rules matched.

[⌊The orders list with the On delivery column, so a matching order is obvious without
opening it.⌉⌊The orders list with the On delivery column, so a matching order is
obvious without opening it.⌉[

The orders list with the On delivery column, so a matching order is obvious without
opening it.

## Installation

 1. Upload the `stackedboost-cod-deposit-rules` folder to `/wp-content/plugins/`, or
    install it through the Plugins screen in WordPress by searching for “Stackedboost
    COD Deposit Rules”.
 2. Activate the plugin through the Plugins screen.
 3. Go to WooCommerce > Settings > COD Deposit Rules to set your rules and your advance
    payment amount or percentage.
 4. Save. The rules take effect on the next checkout that matches them.

## FAQ

### Does this work with the WooCommerce block based checkout, or only the classic shortcode checkout?

Both, and the block checkout needed real work rather than a claim. The advance payment
is applied as a cart fee, which both checkouts calculate the same way. Hiding Cash
on Delivery is different: the block checkout does not honour the usual payment gateway
filter, so a plugin that only filters the gateway will appear to work on the classic
checkout and quietly do nothing on the block one. This plugin publishes the decision
onto the Store API cart and registers the front end callback WooCommerce documents
for this, so the method is genuinely withdrawn in both. The gateway filter stays
in place as well, so even if the script fails to load, an order cannot be placed
with Cash on Delivery when a rule matched.

### Does this plugin send any of my store or customer data anywhere?

No. Every rule is evaluated using data already stored in your WordPress database,
on your own server. There is no external API call, no license check that phones 
home for the free version, and no analytics collection. Nothing about your orders
or customers leaves your site.

### What actually happens to the advance payment and the balance?

The advance payment is charged at checkout through whichever payment gateway you
already use for prepaid methods on your store, exactly like a normal order paid 
in full. The remaining balance is recorded as a separate amount on the order (visible
on the order screen, in the admin order list, and in the emails sent to the customer)
so you and the customer both know what is still owed on delivery. The plugin does
not automatically charge the balance. Collecting it on delivery is a manual, real-
world step, the same as any other COD order.

### Does it work with my payment gateway?

Yes, with any gateway. The advance payment is simply charged as the order total 
at checkout, using whatever gateway is enabled for that order. COD Deposit Rules
does not require a specific gateway or add one of its own.

### Will this affect my sales reports or accounting?

Be aware of this before you rely on it: when an advance payment applies, the order
total recorded in WooCommerce is the amount actually charged at checkout, not the
full cart value. The remaining balance is recorded separately, not folded into the
order total. If you build reports directly off order totals, a COD order with an
advance payment will show the deposit amount, not the full order value, so factor
that in when reading revenue reports for COD orders.

### Can I set different rules for different amounts or countries at the same time?

In the free version, all your active rules are checked together and if any one matches,
the action you configured (require advance payment or hide COD) applies. Combining
rules with AND/OR logic, so you can require different behavior depending on which
combination of conditions is met, is a Pro feature.

### Does this stop chargebacks or guarantee I won’t get a fake order?

No. Nothing can guarantee that. This plugin reduces the financial exposure of a 
refused COD delivery by collecting part of the payment before the order ships. It
does not detect fraud, verify identity, or block anyone from ordering.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“Stackedboost COD Deposit Rules for WooCommerce” is open source software. The following
people have contributed to this plugin.

Contributors

 *   [ stackedboost ](https://profiles.wordpress.org/stackedboost/)

[Translate “Stackedboost COD Deposit Rules for WooCommerce” into your language.](https://translate.wordpress.org/projects/wp-plugins/stackedboost-cod-deposit-rules)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/stackedboost-cod-deposit-rules/),
check out the [SVN repository](https://plugins.svn.wordpress.org/stackedboost-cod-deposit-rules/),
or subscribe to the [development log](https://plugins.trac.wordpress.org/log/stackedboost-cod-deposit-rules/)
by [RSS](https://plugins.trac.wordpress.org/log/stackedboost-cod-deposit-rules/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 1.4.0

 * The balance and the deposit are now available as export columns in Advanced Order
   Export For WooCommerce, for merchants who create labels from a CSV rather than
   one order at a time.
 * Both columns are off by default, so an existing export keeps exactly the shape
   whatever you upload it to expects.

#### 1.3.0

 * The outstanding balance is now printed in a bordered box at the top of the packing
   slip and the invoice, when using WooCommerce PDF Invoices & Packing Slips. It
   states the amount to collect and warns against collecting the full order total.
 * This closes the one place the plugin could cost you money: a label created from
   the reduced order total tells the courier to collect the deposit again instead
   of the balance.
 * No carrier integration, and none planned. The document is the surface every carrier
   has in common.

#### 1.2.0

 * New in Pro: the deposit now follows each customer’s own record in your store.
   Customers who have completed orders and never refused a delivery can pay nothing
   up front; customers who have refused before pay more, or lose cash on delivery
   for that order.
 * The record each decision was made on is now shown on the order screen.
 * Free is unchanged. Every rule still runs against your own store data with no 
   external requests.

#### 1.1.0

 * New settings screen, built around the split this plugin creates: money taken 
   at checkout against money still due on delivery, read from your own orders.
 * Added a breakdown of which rules actually matched, so you can see which risk 
   is real in your store.
 * Before any order has matched, the screen now previews the split your current 
   settings would produce on an example order.
 * The order screen panel now shows the same two figures in the same layout.
 * New plugin icon and banner.
 * No changes to how deposits are calculated or collected.

#### 1.0.0

 * Initial release.
 * Advance payment (percentage or flat amount) before COD is allowed.
 * Option to hide COD entirely when a rule matches.
 * Built-in rules: cart total threshold, shipping/billing country mismatch, guest
   checkout with no prior order, prior cancelled or failed COD order.
 * Classic checkout and block checkout support.
 * HPOS compatible.
 * Balance due on delivery shown on the order, in admin, and in order emails.

## Meta

 *  Version **1.4.0**
 *  Last updated **6 hours ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.0 or higher **
 *  Tested up to **7.0.4**
 *  PHP version ** 7.4 or higher **
 * Tags
 * [advance payment](https://wordpress.org/plugins/tags/advance-payment/)[cash on delivery](https://wordpress.org/plugins/tags/cash-on-delivery/)
   [cod](https://wordpress.org/plugins/tags/cod/)[fake orders](https://wordpress.org/plugins/tags/fake-orders/)
   [partial payment](https://wordpress.org/plugins/tags/partial-payment/)
 *  [Advanced View](https://wordpress.org/plugins/stackedboost-cod-deposit-rules/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/stackedboost-cod-deposit-rules/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/stackedboost-cod-deposit-rules/reviews/)

## Contributors

 *   [ stackedboost ](https://profiles.wordpress.org/stackedboost/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/stackedboost-cod-deposit-rules/)