Our Work

How We Built a Custom Cashback System for a Large WooCommerce Project in One Month

Jul 13, 2026 13 min read

Loyalty programs can be an effective way to encourage repeat purchases, improve customer retention, and increase the long-term value of every client.

However, a cashback system becomes much more complex when a business has specific rules for earning and spending rewards, promotional campaigns, expiration periods, refunds, and an established WooCommerce workflow.

One of our clients needed a complete cashback solution for a large e-commerce project. The system had to follow a detailed set of business requirements while remaining flexible enough to support future development.

Initially, we planned to use an existing WooCommerce plugin. We researched available solutions, tested several options, and contacted a third-party plugin developer to discuss whether the missing functionality could be added.

The conclusion was clear: none of the existing products could support all the required rules within one reliable system.

Instead of forcing the business to adapt its processes to the limitations of a third-party plugin, our developer created a custom cashback solution from scratch.

The complete system was designed, developed, tested, and launched in just one month.

The Challenge

The client already had an established online store with a large number of customers and orders.

They needed more than a basic reward points plugin. The cashback program had to operate as a real financial incentive while following precise rules for earning, using, canceling, expiring, and tracking cashback.

The system needed to:

  • calculate cashback only on the eligible order amount remaining after coupon discounts;
  • prevent cashback from being awarded on amounts already covered by promotional discounts;
  • allow customers to use cashback only when the order reached a specified minimum amount;
  • limit cashback usage to a predefined portion of the order;
  • allow customers to apply their available balance during checkout;
  • support different cashback rates and promotional conditions;
  • manage pending and available cashback separately;
  • account for canceled, refunded, and partially refunded orders;
  • restore or reverse cashback when necessary;
  • assign expiration dates to cashback transactions;
  • display a complete transaction history in the customer account;
  • provide administrators with control over balances and program settings;
  • remain compatible with the store’s existing checkout and order workflow;
  • support future custom features without rebuilding the entire system.

The main challenge was not simply calculating a percentage from an order.

The system had to determine whether an order qualified for cashback, calculate the correct eligible amount after coupon discounts, enforce spending limits during checkout, and connect every transaction to the relevant customer, order, status, expiration date, and business rule.

Why Existing Plugins Were Not Enough

The WooCommerce ecosystem offers many loyalty, reward point, and cashback plugins. Before beginning custom development, we reviewed several of the most suitable options.

We compared their functionality, tested how they worked with the existing store, and contacted one of the plugin developers to determine whether the missing features could be implemented.

Each solution covered part of the required functionality, but none supported the entire process.

The project required precise control over both cashback earning and cashback spending.

The system had to:

  • calculate cashback only after coupon discounts had been deducted;
  • activate cashback usage only when the cart reached a specified minimum amount;
  • limit how much of an order could be covered using cashback;
  • correctly process refunds, cancellations, and expiration dates;
  • maintain a transparent history of every balance change.

Some plugins supported one or two of these requirements, but not all of them together.

Other solutions could award points but did not provide the required cashback calculation logic. Some offered customer balances but were too limited when working with refunds, individual expiration dates, promotional rules, or the store’s existing checkout processes.

Using several separate plugins was not a reliable alternative. It could have created conflicts, duplicated data, increased the load on the website, and made future maintenance significantly more complicated.

There were also concerns about long-term flexibility.

A large e-commerce project needs a system that can evolve. Depending on a closed third-party product would have made every new requirement more difficult, particularly if the plugin architecture did not support the necessary modifications.

For this project, custom development was the most practical and reliable decision.

Our Solution

We developed a standalone cashback plugin specifically for the client’s WooCommerce store.

The plugin was designed around the project’s actual business logic rather than a generic reward points model.

Every cashback operation is stored as a separate transaction and connected to the relevant customer and order. This makes the balance transparent, manageable, and easier to audit.

The system distinguishes between different transaction types, including:

  • pending cashback;
  • available cashback;
  • used cashback;
  • expired cashback;
  • canceled cashback;
  • reversed cashback;
  • manual balance adjustments.

Customers can see how much cashback they earned, where it came from, when it became available, whether it was used, and when it will expire.

Administrators can manage the program without manually calculating balances or editing the plugin code.

Cashback Calculation After Coupon Discounts

One of the client’s key requirements concerned the amount used as the basis for cashback calculation.

Cashback could not be calculated from the original order subtotal before discounts. When a customer applied a coupon, the coupon discount had to be deducted first.

Cashback was then calculated only on the remaining eligible subtotal.

For example, when a promotional coupon reduced the price of an order, the system did not award cashback on the discounted portion. Cashback was earned only on the amount remaining after the coupon had been applied.

This prevents customers from receiving both a coupon discount and cashback on the same part of an order. It also helps the business control the total cost of promotional campaigns.

Depending on the configured business rules, the calculation can also exclude:

  • taxes;
  • shipping costs;
  • specific products;
  • selected product categories;
  • non-eligible fees;
  • other promotional adjustments.

The plugin recalculates the eligible amount whenever the cart changes or a coupon is added or removed.

This ensures that the displayed cashback amount always reflects the current order rather than an outdated cart calculation.

Pending and Available Cashback

Cashback is not immediately treated as available funds when a customer places an order.

First, it is recorded as pending cashback and connected to the relevant WooCommerce order.

It becomes available only after the order reaches the required status. This prevents cashback from being awarded for orders that remain unpaid, are canceled, or are refunded before completion.

The separation between pending and available cashback also gives customers a clearer understanding of their balance.

They can see both:

  • cashback they have already earned and can use;
  • cashback expected from recent orders but not yet activated.

Using Cashback at Checkout

Customers can apply their available cashback directly during checkout, but only when the order meets the conditions defined by the loyalty program.

The client required two important spending restrictions.

First, cashback could only be used when the eligible order amount reached a specified minimum threshold.

This prevented customers from applying cashback to very small purchases and allowed the business to maintain a minimum transaction value.

Second, cashback could cover only a predefined portion of the order.

Customers could not pay for the entire purchase using cashback, even when their account balance was high enough to do so.

For example, the store can configure the system so that cashback:

  • becomes available only for orders above a specified amount;
  • covers no more than a defined percentage of the eligible order subtotal;
  • cannot be applied to shipping or taxes;
  • cannot be used for excluded products or categories;
  • follows additional rules when promotional coupons are active.

The plugin automatically calculates the maximum cashback amount that can be applied to the current cart.

When the customer’s available balance is higher than the permitted amount, only the allowed portion can be used. The remaining cashback stays in the customer’s account for future purchases.

Before applying cashback, the system validates:

  • the customer’s current available balance;
  • the minimum eligible order amount;
  • the maximum portion of the order that cashback may cover;
  • active coupon and promotional conditions;
  • excluded products and categories;
  • other program restrictions.

These checks are repeated whenever the checkout is updated.

If the customer changes the product quantity, removes an item, or applies a coupon, the permitted cashback amount is recalculated automatically.

The selected cashback amount is recorded separately in the order, making it easier for both the customer and the store team to understand how the final total was calculated.

Cashback History in the Customer Account

A dedicated cashback section was added to the WooCommerce customer account.

Customers can view:

  • their current available balance;
  • pending cashback;
  • earned cashback;
  • used cashback;
  • expired cashback;
  • canceled or reversed transactions;
  • related order numbers;
  • transaction dates;
  • expiration dates.

Providing a clear transaction history is important for customer trust.

A customer should always be able to understand why the balance increased or decreased, which order was involved, and whether any cashback is expected to expire.

The account interface was also adapted for desktop and mobile devices, making the transaction history easy to review on different screen sizes.

Cashback Expiration

The client needed earned cashback to remain valid only for a defined period.

Each eligible cashback transaction receives its own expiration date.

This is more accurate than assigning one general expiration date to the customer’s entire balance. Cashback earned from different orders can expire at different times, depending on when it was awarded.

When cashback expires, the system creates a separate transaction in the customer’s history instead of silently reducing the balance.

This gives both the customer and the store team a transparent record of what happened.

Expiration periods can also be adjusted as the loyalty program evolves or new promotional campaigns are introduced.

Refunds and Canceled Orders

Refund processing is one of the most important parts of a cashback system.

Without proper refund logic, a customer may keep cashback earned from returned products or receive an incorrect balance after an order is canceled.

The custom plugin monitors relevant WooCommerce order status changes and adjusts cashback automatically.

Depending on the situation, the system can:

  • cancel pending cashback;
  • reverse cashback that has already become available;
  • recalculate cashback after a partial refund;
  • restore cashback previously used to pay for an order;
  • record every correction in the customer’s transaction history.

For example, when an order is canceled before its pending cashback becomes available, the pending transaction is canceled.

When an order is refunded after cashback has already been awarded, the system can reverse the appropriate amount.

Partial refunds require more detailed calculations. In these cases, the plugin recalculates cashback based on the remaining eligible order amount rather than canceling the entire reward automatically.

This significantly reduces manual work for store administrators and helps prevent balance inconsistencies.

Administrative Controls

The cashback system includes administrative tools for managing the loyalty program.

Authorized team members can:

  • review customer balances;
  • inspect transaction histories;
  • make manual balance adjustments;
  • configure cashback rates;
  • set expiration periods;
  • define minimum order thresholds;
  • configure cashback spending limits;
  • manage excluded products and categories;
  • select the order statuses that activate cashback;
  • control promotional and customer-specific conditions.

Manual balance adjustments can include a reason or description, creating a clear record of why the change was made.

This is especially useful when customer service needs to issue a correction, compensation, or individual bonus.

The administrative interface allows important rules to be managed without modifying the plugin code.

Promotional and Custom Cashback Rules

The project required the system to support more than one standard earning rate.

The plugin architecture makes it possible to add custom promotional mechanics, including:

  • increased cashback during a campaign;
  • double cashback for selected customers;
  • special rates for particular products or categories;
  • registration bonuses;
  • cashback connected to promotional codes;
  • first-order incentives;
  • individual customer conditions;
  • ambassador and referral programs.

These mechanics can be introduced without replacing the core cashback system.

This flexibility was an essential part of the project. The client needed a long-term solution capable of supporting new marketing ideas as the business grows.

Compatibility With the Existing Store

The cashback system had to be introduced without disrupting the existing WooCommerce project.

The store already had its own:

  • checkout configuration;
  • payment methods;
  • shipping logic;
  • coupon system;
  • customer accounts;
  • order management processes.

We integrated the custom plugin into the existing structure instead of requiring the website to be rebuilt around the cashback program.

Special attention was given to:

  • order total calculations;
  • coupon compatibility;
  • tax calculations;
  • checkout updates;
  • payment processing;
  • order status changes;
  • customer account data;
  • refund workflows.

This allowed the cashback program to become a natural part of the existing store rather than a disconnected additional feature.

Development in One Month

The complete cashback system was delivered in one month.

During this period, we:

  1. analyzed the client’s business requirements;
  2. researched and tested existing cashback plugins;
  3. communicated with a third-party plugin developer;
  4. designed the custom system architecture;
  5. developed the cashback calculation and balance logic;
  6. integrated cashback into the checkout;
  7. created the customer account and administrative interfaces;
  8. added expiration, refund, and order status processing;
  9. tested different purchasing, coupon, cancellation, and refund scenarios;
  10. launched the system on the live project.

The short development period was possible because the project requirements were carefully structured before implementation.

Instead of adding disconnected features one by one, we designed the core architecture to support all major scenarios from the beginning.

The Result

The client received a complete cashback system tailored to the store’s real operational needs.

The plugin now:

  • automatically calculates cashback on eligible amounts;
  • deducts coupon discounts before calculating rewards;
  • prevents cashback from being awarded on already discounted amounts;
  • separates pending and available balances;
  • activates cashback spending only when the order reaches the required minimum amount;
  • limits cashback to a specified portion of the order;
  • allows customers to apply cashback during checkout;
  • recalculates the permitted amount whenever the cart changes;
  • processes canceled, refunded, and partially refunded orders;
  • tracks individual expiration dates;
  • provides customers with a transparent transaction history;
  • gives administrators control over the program;
  • supports promotional and customer-specific rules;
  • integrates with the existing WooCommerce workflow.

The system is already operating successfully on a large live e-commerce project.

It reduces manual work, protects the profitability of the loyalty program, gives customers a clear incentive to return, and allows the business to launch new promotional mechanics without depending on the limitations of an external plugin.

Ready for Future Customization

One of the main advantages of custom development is flexibility.

The plugin was not created as a temporary solution for one fixed cashback campaign. Its architecture allows new functionality to be added as the client’s requirements evolve.

Future additions may include:

  • customer loyalty levels;
  • referral programs;
  • ambassador promotions;
  • advanced reports;
  • CRM or ERP integrations;
  • automated email notifications;
  • birthday bonuses;
  • customer segment campaigns;
  • special B2B conditions;
  • subscription-based rewards;
  • additional rules for products, brands, or categories.

Because the plugin architecture is under our control, new features can be integrated into the existing system instead of being implemented through multiple unrelated plugins.

When Custom Development Is the Right Choice

An existing plugin is often the most efficient solution when a business needs standard functionality and does not have unusual requirements.

Custom development becomes more valuable when:

  • several plugins would be required to support one business process;
  • the business rules are highly specific;
  • the project requires complex integrations;
  • third-party plugins cannot handle important scenarios;
  • the website processes a large number of orders or transactions;
  • future customization is expected;
  • the business cannot adapt its workflow to plugin limitations.

The purpose of custom development is not to recreate functionality that already exists.

It is to build a reliable solution when standard tools cannot fully support the business.

Final Thoughts

This project began with a search for a suitable WooCommerce cashback plugin.

After detailed research, testing, and communication with an existing plugin developer, it became clear that the client needed a custom solution.

Within one month, we developed and launched a complete cashback system that follows the project’s business rules, integrates with the existing online store, and remains ready for future expansion.

The result is not simply a points plugin. It is a flexible loyalty platform built specifically around the client’s processes.

At 4pixels, we develop custom WordPress and WooCommerce functionality when standard plugins are not enough.

We analyze the business process, identify the technical requirements, and create a solution that works for the project today while remaining ready for what comes next.

Join the discussion

Leave a comment

Your comment may be held for moderation before it appears.