Overview
When a customer redeems points or credits for a discount code in Rivo, there are two possible behaviors for when those points are actually removed from their balance.
In standard mode (the default), points are deducted the moment the discount code is generated, before the customer even uses it at checkout. In deduct on order placed (DOOP) mode, points remain in the customer’s balance until the discount code is actually applied to a completed order. The deduction only happens after checkout.
DOOP is now channel-aware — your program can be configured so specific redemption channels use deferred deduction while others use immediate deduction. For example, DOOP can be enabled for checkout redemptions only, while storefront widget and API redemptions continue to deduct points immediately.
Tip: We recommend consulting your success manager before changing these settings on a live program, as the configuration may impact your customers' experience.
Settings & configuration
DOOP is shown in your Rivo app under Settings > Orders > “Deduct Earnings after Order Placed”.
To access this page, open the Rivo app from your Shopify admin and navigate to Settings > Orders.
The settings on this page show whether DOOP is enabled for your program and which redemption channels use deferred deduction. If you need to enable, disable, or change these channels, contact your Rivo success manager.
The settings include:
Master toggle (“Enable deduct on order placed”) — Turns DOOP on or off for your program. When disabled, all channels below are ignored and your program uses standard immediate deduction.
Per-channel checkboxes — Once the master toggle is enabled, these show which redemption channels use deferred deduction:
Channels that are not checked will continue to deduct points immediately when a discount code is generated (standard mode behavior).
Recommended configuration
For most programs, the optimal setup is Checkout only.
This gives you the best of both worlds: checkout redemptions are protected from abandoned cart confusion, while all other channels deduct immediately for a simpler experience.
If you want this setup, ask your success manager to enable DOOP for Checkout and leave the other redemption channels on immediate deduction.
How each mode works
Standard mode
Customer clicks “Redeem” in your loyalty widget
A discount code is generated
Points are immediately deducted from their balance
Customer copies the code and goes to checkout
If they don’t use the code, the points are already gone from their visible balance
Deduct on order placed mode
Customer clicks “Redeem” in your loyalty widget
A discount code is generated
Points remain in their balance with no deduction yet
Customer applies the code at checkout and completes the order
Once the order is placed, points are then deducted from their balance
If the code is never used, the customer’s balance stays intact
Note: These steps apply only to channels where DOOP is enabled. For channels using standard mode, points are deducted immediately at step 3.
Why use deduct on order placed mode
It reduces customer confusion
The most common support ticket loyalty programs receive is some version of “where did my points go?” In standard mode, a customer who generates a code but abandons checkout sees a lower balance with nothing to show for it. With deduct on order placed, their balance always reflects reality.
Example: Sarah has 500 points and redeems them for a $5 off code. She gets distracted and closes her browser before checking out. In standard mode, she logs back in and sees 0 points and no discount applied to any order. She contacts support. In deduct on order placed mode, she logs back in, still sees 500 points, and can redeem again when she’s ready.
It eliminates “lost points” scenarios
In standard mode, if a customer generates a discount code and then forgets to use it, closes their browser, gets distracted during checkout, or encounters a payment error, their points are already gone. They have to contact support to get them back. With deduct on order placed, this entire category of support requests disappears.
It handles multiple code generation cleanly
Customers sometimes generate multiple discount codes by accident — clicking “Redeem” more than once or generating codes across multiple sessions. In standard mode, each click deducts points. With deduct on order placed, only the code that is actually used triggers a deduction.
When this mode is enabled, the system can also consolidate earlier unused discount codes for the customer in channels using deferred deduction. This helps prevent discount code clutter in both your Shopify admin and the customer’s account.
Note: Consolidation only applies to points or credits reward codes from channels using deferred deduction. Codes from channels using immediate deduction are not included in DOOP consolidation.
Example: Mike clicks “Redeem 200 points for $2 off” three times in a row because the page was loading slowly. In standard mode, he just lost 600 points and has three discount codes. In deduct on order placed mode, the earlier unused deferred-deduction codes can be cleaned up, and his balance hasn’t changed until he actually uses one at checkout.
Refunds and cancellations
Regardless of which mode you use, Rivo can automatically adjust points when orders reach the refund or void statuses you have configured for points cancellations. This is configured separately in your Points Cancellations settings under Settings > Orders.
Full refund or voided order
When automatic adjustment applies to a fully refunded or voided order, points earned from the order can be revoked. If the customer used a points-based discount code, the redeemed points are returned to their balance.
Example: A customer places a $50 order, earns 50 points, and used a 200-point discount code for $5 off. The order is fully refunded. The 50 earned points are revoked and the 200 redeemed points are returned to their balance.
Partial refund
When partial-refund adjustment is enabled, points are revoked proportionally. If a customer earned 100 points on a $100 order and $40 is refunded, 40 points are revoked.
Voided order
If voided orders are included in your points cancellation settings, they follow the same adjustment behavior as a fully refunded order.
A nuance specific to deduct on order placed mode
If an order is refunded or voided very quickly after placement and the discount code was never fully marked as “used” in the system, Rivo recognizes that no points were ever actually deducted and skips the refund step. This prevents double-crediting, where a customer could end up with more points than they started with.
POS (point of sale) compatibility
POS redemptions always use immediate deduction, regardless of your DOOP channel settings. When a customer redeems points at a physical store through Shopify POS, points are deducted at the time of the transaction. This is because POS has its own separate code path and does not go through the standard online checkout flow.
Impact on VIP tiers
DOOP controls when reward redemptions deduct points or credits. VIP tier progress is calculated separately from your VIP tier settings, such as points earned, amount spent, order count, product purchase rules, and program period.
Because VIP recalculation depends on your tier entry method and period, DOOP should not be treated as a VIP downgrade setting. If you are changing DOOP on a program with VIP tiers, review the expected tier behavior with your Rivo success manager.
Interaction with earning delays
Deduct on order placed mode controls when customers lose points from redemptions. This is separate from your loyalty earnings trigger, which controls when customers gain points from orders.
Your earning trigger can be set to award points when an order is placed or when an order is fulfilled. You can also set an approval delay (in seconds) for earned points, where points sit in a “pending” state and are automatically approved after the delay period. This gives you a window to catch fraudulent or test orders before points are awarded.
These settings are independent. You can mix and match. For example, a common setup for brands that want maximum accuracy:
Redemptions use deduct on order placed, so customers only lose points when a code is actually used
Earnings use order fulfilled with a 14-day delay, so customers only gain points after the order ships and a waiting period passes
This combination covers both sides: customers aren’t penalized for abandoned checkouts, and you aren’t giving away points on orders that might be cancelled or fraudulent.
Best practices
Use “Checkout only” as your default setup. This is the optimal configuration for most programs. Checkout is where abandoned cart confusion happens most, so DOOP has the biggest impact there. Keeping other channels on immediate deduction simplifies the experience.
Enable automatic points cancellation for refunded and voided orders alongside this mode. The two features complement each other to keep balances accurate.
Set an earning delay if fraud is a concern. Combine deduct on order placed with a fulfillment-based earning trigger and approval delay for the tightest accuracy.
Communicate the experience clearly in your widget text and transactional emails. Let customers know their points will be deducted when they complete their purchase, so the flow feels intentional.
Only enable additional channels if you have a specific reason. Storefront, Merchant API, Auto Redeem, and In App channels should only be enabled for DOOP if you’re seeing issues with those specific channels. Checkout-only covers the vast majority of use cases.
Recommendations
Programs that benefit most from this mode
Programs using credits as their balance type should almost always have this enabled. Credits function like store credit, and customers expect their balance to reflect what they’ve actually spent.
Programs with high support volume around “missing points” or “where did my balance go” questions will see an immediate reduction in those tickets.
Programs with POS redemption get a more natural timing alignment between online and in-store experiences.
Programs where customers frequently browse rewards without purchasing benefit because customers who window-shop rewards won’t see confusing balance fluctuations.
Things to keep in mind
If your program is already live and your customers are accustomed to seeing their balance drop immediately on redemption, switching modes may initially confuse some customers. We recommend consulting your success manager to plan the transition and communicate the change to customers.
If you have aggressive points expiration policies, there is a theoretical window between code generation and order placement where expiration could affect the balance. In practice this is rare because discount codes are typically used within the same session, but it’s worth factoring in.
Automatic points adjustment on refunds and cancellations is designed for the standard “Placed an order” earning rule. Custom earning rules created through Shopify Flow may require additional configuration for refund handling.
Frequently asked questions
What happens if a customer generates a code but never uses it?
Their points stay in their balance. The unused discount code is automatically cleaned up when they generate a new one for the same reward.
Can a customer generate multiple codes and use them all?
The consolidation system can clean up earlier unused deferred-deduction points or credits codes for the customer when a new code is generated in an enabled DOOP channel. If a customer manages to apply a code before consolidation runs, standard Shopify discount rules apply.
Does this affect how points appear in the customer’s transaction history?
Yes. In standard mode, the redemption is recorded when the code is generated. In deduct on order placed mode, the balance deduction is recorded after the order is placed and the code is marked as used.
Is this compatible with Shopify’s discount combination settings?
Yes. Deduct on order placed is a Rivo-side timing mechanism for when balance deductions occur. Shopify’s discount combination rules for stacking discounts are handled separately and work the same way regardless of this setting.
How do I enable this for my program?
Navigate to Settings > Orders in the Rivo app and scroll to the “Deduct Earnings after Order Placed” section to review your current setup. To enable or change DOOP, contact your Rivo success manager. We recommend starting with Checkout only.
If you’re enabling this on a live program with existing customers, we recommend consulting your success manager to plan the transition.
What do the different channels mean?
Checkout — Points redeemed through Shopify checkout (the most common flow).
Storefront — Points redeemed directly via the on-page loyalty widget.
Merchant API — Points redeemed via API calls from your custom integrations.
Auto Redeem — Points redeemed automatically by auto-redemption rules.
In App — Points redeemed within the Rivo app interface.
What if I only enable DOOP for Checkout?
Checkout redemptions will defer point deduction until the order is placed. All other channels (storefront widget, API, auto-redeem, in-app) will continue to deduct points immediately when the code is generated. This is the recommended setup for most programs.

