Rebuy's Post-Purchase offers allow customers to add products to their order immediately after checkout — before they reach the Thank You page. Because these offers run within Shopify's checkout extension framework, there are several platform-level considerations and limitations that affect when offers display, how fulfillment is handled, and how payments are processed.
This article covers the key limitations and considerations for setting up Post-Purchase offers with Rebuy. For a full list of Shopify's Post-Purchase limitations, visit Shopify's developer documentation.
Unsupported Data Source Rules for Post-Purchase
Post-Purchase offers in Rebuy do not support all Data Source rule types. Because Post-Purchase offers run within Shopify's checkout extension environment, the following rule types are not compatible with Post-Purchase Data Sources:
URL-based rules
Order tag rules
Recently Viewed endpoint
Buy It Again endpoint
Products Search endpoint
Geolocation rules
If you configure a Post-Purchase Data Source using any of these rule types, the offer may not display or may return no results. Use cart-based and product-based rules for the most reliable Post-Purchase targeting.
When a Post-Purchase Offer Will and Will Not Display
In some situations, a Post-Purchase offer will not be shown to the customer. If an offer does not display, the customer's original order is maintained and processed as normal. Shopify maintains a full list of limitations in their documentation.
Payment Method Limitations
The Post-Purchase offer page will not be shown in the following payment scenarios:
The customer checks out using an installment service or wallet service, such as Klarna, Affirm, Afterpay, Apple Pay, Amazon Pay, or Google Pay.
The initial purchase was made with a gift card or any payment method other than a credit card.
Note: Post-Purchase offers will display for customers who check out using Shop Pay, as long as no other limitations apply.
Other Display Limitations
The following conditions will also prevent a Post-Purchase offer from appearing:
Multiple currencies: If the customer checks out in a currency different from your store's default currency, Shopify will not surface the Post-Purchase offer.
Orders with duties: Post-Purchase upsell offers will not display on orders that include duties.
Orders for local delivery: Post-Purchase offers are not shown on orders placed for local delivery.
Minimum order price: The customer's order must total at least $0.50 to qualify for a Post-Purchase offer.
Order creation delays: During high-traffic events such as flash sales, Shopify may briefly delay order creation to maintain a smooth checkout experience. In these cases, Post-Purchase offers may not display even if the offer request was properly made.
Fulfillment Holds and Order Status
When a customer reaches the Post-Purchase page, Shopify places their order in an "On hold" status (which may appear as "Pending upsell offer" in some interfaces). This hold prevents the order from being fulfilled while the customer is still interacting with the Post-Purchase offer.
The hold is released when one of the following occurs:
The customer completes the Post-Purchase flow and reaches the Thank You page, or
The order hold timer expires.
Once the hold is released, the fulfillable_quantity is updated to reflect the full order quantity, the fulfillment_status is set to open, and the order can be fulfilled. Orders with an "On hold" status cannot be fulfilled because their fulfillable_quantity is 0 at that time.
Configuring the Order Hold Timer
By default, Shopify holds a Post-Purchase order for up to 60 minutes. Rebuy gives you the option to configure a shorter hold time — between 1 and 60 minutes — through your Post-Purchase Flow settings. This is useful if you want orders to move to fulfillment faster when customers abandon the Post-Purchase page without completing the flow.
To configure the order hold timer:
Navigate to Post-Purchase Flows in your Rebuy dashboard.
Select the flow you want to edit.
In the flow settings, open the Maximum Order Hold Time dropdown.
Toggle the timer on if it is not already enabled.
Set your desired hold time between 1 and 60 minutes.
Save your changes.
What happens when the timer expires: When the hold timer reaches 0, the order moves from "On Hold" to "Unfulfilled" status in Shopify. At that point, the customer can no longer add to the order or accept new Post-Purchase offers — even if the widget's own offer timer is still counting down. If the customer clicks "Pay Now" or "Decline Offer" after the hold expires, they will see an "Offer Period Over" banner and be redirected to the Thank You page.
Note: If you do not enable the order hold timer in Rebuy, the system defaults to Shopify's 60-minute hold. During times of high order volume, there may be minor delays in the timer's exact transition. If an error occurs when Rebuy sends the release request to Shopify, the order will fall back to Shopify's default 60-minute hold automatically.
The difference between the order hold timer and the widget timer: The order hold timer controls how long the order stays in "On hold" status in Shopify before moving to "Unfulfilled." The widget timer is a visual countdown shown to the customer within the Post-Purchase offer page to encourage them to accept the offer. These two timers operate independently.
For full instructions on configuring your Post-Purchase flow, see Creating Post-Purchase Flows.
3rd Party Fulfillment Compatibility
With the Fulfillment Holds update applied by Shopify on May 3rd, 2021, Rebuy works smoothly with 3rd party fulfillment (3PL) apps and services when those apps use the fulfillable_quantity field as documented by Shopify. More details can be found in Shopify's documentation here.
3PL apps using the Shopify Order Fulfillment API should not be affected by the fulfillment hold and will process orders correctly once the hold is released.
3PL apps using other APIs (such as the Order API) will not be able to fulfill an order while it has "On hold" status and may encounter issues with orders where a Post-Purchase offer was shown or accepted. Using the Shopify Order Fulfillment API is strongly recommended. If your fulfillment provider cannot use the Order Fulfillment API, the recommended workaround is to retry fulfillment after the hold has been released (within 60 minutes or sooner if the order hold timer is configured).
For more details on Shopify's fulfillment hold behavior, see Shopify's post-purchase fulfillment holds changelog.
Payment Capture and Partially Paid Orders
When a customer accepts a Post-Purchase offer, there are two possible payment outcomes depending on whether the transaction is approved.
If the transaction is successful: An additional transaction is recorded on the order, and the order is marked as Paid.
If the transaction fails: The upsell product is still added to the order, but no additional transaction is recorded. The order is marked as Partially paid.
Payment declines can occur for two main reasons:
Decline from the bank — the customer's bank rejected the transaction.
Decline from the payment processor — the payment processor rejected the transaction on its end.
When a Post-Purchase transaction is declined, Shopify automatically sends the customer an email explaining that an item was added to their order but payment was not completed. The email includes a link for the customer to complete payment.
As the merchant, a partially paid order can be handled in the following ways:
Collect payment manually — contact the customer directly and use the payment link from the order.
Remove the unpaid item — use Order Editing in Shopify to remove the item from the order.
Let Rebuy remove the item automatically — if the Enable Updating Partial Order setting is enabled in your Post-Purchase widget, Rebuy will automatically remove the unpaid item from the order after 60 minutes if payment is not received. Learn more about the partially paid order feature.
Important: If the unpaid Post-Purchase item included additional shipping charges, removing the item will not remove the unpaid shipping amount. The order will remain in "Partially paid" status until the shipping charge is resolved. When an unpaid item is removed via Order Editing, it is tracked in the Returns column in your Shopify analytics.
Additional considerations:
If the customer checks out using only a phone number (no email address), Shopify will not send the payment link email. Copy the Checkout link for payment collection from the order and send it to the customer via SMS instead.
Make sure the customer has completed payment before fulfilling the order.
Another reason Partially paid can show for an order that includes Post-Purchase upsells is if your store uses the Manual payment capture method. In this case, payment must be manually captured for the original order and any Post-Purchase upsells before the order status updates to Paid.
Supported Payment Processors
Post-Purchase offers require that payment information is vaulted by Shopify during checkout, which means the customer's payment must be completed directly on the Shopify Checkout without being redirected to an external payment provider.
Shopify Payments is fully supported. For a complete list of supported third-party credit card processors for your store and region, go to Settings > Payments > Third-party providers in your Shopify admin and click Choose third-party provider. Any "direct" payment provider listed there will work with Post-Purchase offers.
Unsupported payment types:
External/offsite payment providers (such as Mollie) are not supported. These redirect customers away from Shopify Checkout to complete payment, so their card information cannot be vaulted by Shopify for one-click Post-Purchase use.
Payment gateways that require a CVV for every transaction (such as Bambora/Beanstream) are not supported by default. Customers will see an error when trying to accept the offer. It is recommended to disable the per-transaction CVV requirement within your gateway settings if possible.
Braintree, PayPal Payments Pro, Authorize.net, and PayPal Payflow Pro are supported with the following conditions:
Braintree: Must be configured to not require a CVV when entering credit card information. If CVV is required in your Braintree account settings, customers will see an error. See Braintree's CVV rules for details.
PayPal Payments Pro / Payflow: Works only when the customer pays with a credit card for their initial order. Configure your PayPal settings to not require a CVV for each credit card transaction. The express/wallet option is not supported.
Selling Subscriptions Post-Purchase
Post-Purchase offers support subscription products under specific conditions. Whether you can offer a subscription post-purchase depends on the contents of the customer's original order.
If the original order does not contain any subscription products: You can offer a subscription product post-purchase. This is a useful way to drive recurring revenue from one-time buyers.
If the original order already contains subscription products: Only one-time purchase items can be offered post-purchase. You cannot add or modify subscriptions on an order that already contains a subscription.
Subscription Limitations
The following subscription-related actions are not supported via Post-Purchase offers:
Modifying an existing subscription on an order that already contains a subscription
Adding a new subscription to an order that already contains a subscription
Converting a one-time purchase into a subscription order
Partially Paid Subscriptions
If Enable Updating Partial Order is turned on in your Post-Purchase widget settings, be aware that this automatic removal does not apply to subscription items. If a customer accepts a subscription offer post-purchase but their payment fails, Rebuy will not automatically remove the subscription from the order. You will need to remove it manually from the Shopify order. Learn more about updating partially paid orders.
More on post-purchase subscription limitations can be found in Shopify's documentation.



