Campaigns

Post-Purchase eligibility & payment-method limits

Why a Post-Purchase offer is sometimes skipped or can't be accepted, and exactly which payment methods and order shapes are supported.

Post-Purchase offers play by stricter rules than any other campaign type. Sometimes the offer page never appears, and sometimes it appears but the customer sees an error the moment they click Pay now. This page explains why those rules exist, which payment methods and order shapes are supported, every error a customer can see, and how to test that your offer works.

If you only want a checklist for "my Post-Purchase offer didn't show," start with Campaign not showing on the storefront. For the engine that ranks and validates offers, see Post-Purchase advanced - priority, downsell & timer. This page focuses specifically on payment and eligibility constraints.

Why Post-Purchase has special rules

A Post-Purchase offer is not a new checkout. The customer has already paid, the order already exists, and the order confirmation is one click away. When the customer accepts your offer, Llama Upsells does not ask for payment again. Instead, it edits the order that was just placed and charges the additional amount against the same payment method the customer already used at checkout.

That single-click magic is exactly what makes Post-Purchase powerful, but it is also the source of every limitation on this page. Shopify will only let an app add a charge to a completed order when the original payment can be safely re-used. If the payment method can't accept an extra charge after checkout, or the order isn't in a state that allows editing, Shopify refuses — and the offer either never shows or can't be accepted.

Rule of thumb: if the order was paid with X, the Post-Purchase page may be skipped, or the offer can't be accepted. The deciding factor is almost always how the order was paid, not what's in it.

Mechanically, acceptance works through Shopify's changeset flow. The app builds a list of changes (add the offer variant, apply the discount, tag the order), gets that changeset signed, and then applies it to the order. Shopify validates the changeset at apply time. Any payment, inventory, or state problem comes back as a specific error code, which the app translates into a short message for the customer.

Supported vs unsupported payment methods

One-click Post-Purchase only works when the captured payment method supports adding a charge after checkout. Cards processed through a gateway that can charge again (the typical online card / Shop Pay / accelerated-checkout path) are the supported case. Methods that can't be charged again after the order completes are not eligible — and they cause one of two outcomes:

  • The Post-Purchase page is suppressed entirely (the customer goes straight to the thank-you page), or
  • The page shows, but accepting the offer fails with "Payment method is not supported."
Payment / order typePost-Purchase resultWhy
Online card payment that supports a post-checkout chargeSupportedThe same captured method can be charged for the added amount in one click.
Cash on Delivery (COD)Not supportedA manual/offline method; nothing was captured online to charge again.
Bank deposit / bank transferNot supportedManual/offline method; no online capture to re-charge.
Other manual / offline payment methodsNot supportedThe merchant collects payment outside Shopify, so no automatic charge is possible.
Certain wallet, deferred, or local payment methodsMay be unsupportedSome of these don't allow an additional charge after checkout.
Gift-card-only ordersNot supportedThere's no chargeable payment method behind the order to bill the extra amount.
Partially paid / payment-not-complete ordersNot supportedThe order isn't fully settled, so it can't accept a new charge yet.

Manual payment methods are the most common reason an offer "doesn't work." Cash on Delivery, bank deposit, and any other manual payment method you've set up in Shopify cannot be charged automatically after checkout. Orders paid this way will usually skip the Post-Purchase page, and if the page does render, accepting fails with "Payment method is not supported." This is a Shopify platform limitation, not an app setting — there is no toggle that makes manual methods eligible.

What to tell yourself when troubleshooting

If a customer reports they never saw the offer, or saw it and got an error, your first question should be: how did they pay? Open the order in Shopify and check the payment method. If it's COD, a bank deposit, another manual method, a gift-card-only order, or the order is only partially paid, you've found your answer — and there's nothing to "fix" in the campaign. The offer was correctly withheld because it could never have been charged.

Other eligibility requirements

Payment method is necessary but not sufficient. Even on a perfectly chargeable order, the Post-Purchase page only shows when all of the following are also true. These are evaluated server-side before the page is allowed to render.

RequirementWhat it means
At least one valid offer variant existsAfter excluding anything already in the order, at least one offer variant must remain.
The offer variant is available for saleVariants that aren't available for sale are filtered out and can't be offered.
The variant isn't already in the orderOffer variants the customer just bought are removed, so you never re-offer what they already have.
A matching active campaign existsThe Post-Purchase campaign linked to the offer must be active. Inactive campaigns are skipped.
The order matches the campaign's conditionsThe order's products, collections, tags, vendor, price thresholds, and any other targeting rules must match.
Only one Post-Purchase page per orderShopify shows the Post-Purchase page once per order. If more than one of your campaigns could match, only the highest-priority one wins, and there's no second page.

If every offer variant is filtered out — for example because the only offer product was already in the cart, or it's out of stock and not available for sale — there's nothing left to show, and the page is skipped. The same is true if no active campaign matches the order's contents.

There is only ever one Post-Purchase page. If you run several Post-Purchase campaigns, they don't stack — the customer sees a single page driven by the first matching campaign in priority order. A campaign being correct and active is not enough; a higher-priority campaign may have claimed the slot. See Post-Purchase advanced - priority, downsell & timer for how the winner is chosen.

The exact errors customers can see at accept time

When a customer clicks to accept the offer, the change is validated by Shopify at apply time. If validation fails, the app shows a short message mapped from Shopify's error code. The table below maps every code to its plain-English meaning and the action you should take.

Error codeMessage the customer seesWhat it meansWhat you should do
insufficient_inventoryInsufficient inventoryThe offer variant ran out of stock between the page loading and the customer accepting.Check the variant's inventory in Shopify. Keep enough stock for the variants you promote, or promote in-stock products only.
unsupported_payment_methodPayment method is not supportedThe order's payment method can't be charged after checkout (e.g. COD, bank deposit, gift-card-only).Expected for manual/offline and gift-card-only orders. No fix — see the payment-method table above.
payment_requiredPayment is not completeThe original order isn't fully paid yet, so a new charge can't be added.Wait until the order is fully paid, or expect this on partially paid orders. Not a campaign problem.
changeset_already_appliedPurchase has already been appliedThe offer was already accepted and added to this order.No action needed — the product is already on the order. This guards against double-charging.
invalid_requestInvalid purchaseThe change Shopify received wasn't valid (e.g. a stale variant or malformed request).Re-check the offer's variants are still valid and available for sale. If it persists, contact support.
unknownSomething went wrongAn unexpected error that doesn't match any known code.Ask the customer to retry. If it keeps happening, capture the order details and contact support.

changeset_already_applied and payment_required are protective, not bugs. The first prevents a customer from accepting the same offer twice; the second prevents charging an order that hasn't fully settled. Seeing either of these usually means the system is doing its job.

How to test

The only reliable way to confirm a Post-Purchase offer works end to end is to place a real test order using a supported card payment. A supported card is the path that allows a one-click charge after checkout, so it's the only way to see both the page render and the accept flow succeed.

Activate the campaign and confirm conditions

Make sure the Post-Purchase campaign is active and that its conditions match the test order you're about to place. If the conditions don't match the cart, the page won't show — for reasons unrelated to payment.

Pick an offer product that's in stock and not in the cart

Choose an offer variant that is available for sale, has inventory, and is not one of the products you'll be buying in the test order. If the only offer variant is already in the cart, it gets filtered out and there's nothing to show.

Place a test order with a supported card payment

Complete a checkout paying with a card method that supports a post-checkout charge. After payment, the Post-Purchase page should appear before the thank-you page.

Accept the offer and confirm the order edit

Click to accept the offer. If everything is eligible, the changeset applies, the product is added to the order, and you land on the thank-you page. Open the order in Shopify and confirm the added line item.

Test orders paid with a manual method won't show the page. If you "test" by placing an order with Cash on Delivery, bank deposit, or any other manual payment method, the Post-Purchase page is expected to be skipped — and that is not a sign your campaign is broken. Always test with a supported card payment, or you'll be testing the one scenario that's guaranteed not to render.

Edge cases

A few order shapes behave in ways that surprise merchants. Call these out when you design a Post-Purchase offer.

Quick recipe: a Post-Purchase offer that "just works"

To minimize the chance of a skipped page or an accept-time error, combine the supported-path choices above:

  • Promote a variant that is in stock and available for sale.
  • Make sure that variant is not something the customer is likely to already have in the cart.
  • Keep the campaign active with conditions that genuinely match your typical orders.
  • Accept that orders paid with manual methods, gift cards only, or partial payment will not be offered — and don't count those toward your conversion math.
  • Test with a supported card payment in every currency you sell in.

On this page