Skip to main content

How to Cancel and Refund Storefront Orders

Updated this week

When a customer needs a refund or an order needs to be stopped, you have full control — no engineering required. Zest gives you the tools to cancel gifts, process refunds, and manage the fulfillment side, all from your dashboard. Because Zest and your ecommerce platform are separate systems, there are a few steps to keep in mind, but this guide walks you through every scenario from start to finish.

Before you start:

  • You'll need brand partner access to the Zest dashboard.

  • For storefront orders, payment is always collected through Zest (via Stripe or Adyen). All refunds must be processed in Zest — not in Shopify or your ecommerce platform.

  • Your ecommerce platform (Shopify, etc.) only receives Child Orders for fulfillment. Canceling in Zest does not automatically cancel those orders in Shopify.

  • Only you (the brand) can cancel or refund orders — customers cannot cancel their own e-gifts from the Zest storefront.

Overview: How Cancellations and Refunds Work

In Zest Storefronts, each order has two layers:

  • Parent Order: Lives in Zest. This is where payment is captured and where all refunds must be processed.

  • Child Orders: Pushed to your ecommerce platform (Shopify, etc.) for fulfillment when a gift is accepted.

When you cancel or refund in Zest, the payment is returned to the customer through your payment processor (Stripe or Adyen). Zest does not automatically cancel Child Orders in your ecommerce platform or any downstream fulfillment system — though you can now request ecommerce platform cancellation during the cancellation flow (see below).

There are four main actions available from an order's Actions menu:

Action

What it does

Cancel Entire Order

Cancels all gifts and issues a full refund

Cancel Selected

Cancels individual recipients and refunds their portion

Issue a Refund

Issues a partial dollar-amount refund without canceling

Cancel Outstanding E-Gifts

Cancels all unaccepted e-gifts and optionally refunds their portion

Why You Need to Cancel Orders in Multiple Systems

Zest and your ecommerce platform don't fully sync cancellations automatically. While Zest can now request cancellations in your ecommerce platform on your behalf (see below), you should still understand why action may be needed in multiple places:

  • Zest handles payment. When you cancel or refund here, the money goes back to the customer via Stripe or Adyen.

  • Your ecommerce platform handles fulfillment. If a gift has been accepted and a Child Order already exists, canceling in Zest does not automatically stop your ecommerce platform from shipping the order — unless you check the Request order cancellation option during cancellation.

  • Downstream systems (e.g., ShipStation, your 3PL): If the order has been pushed to a fulfillment center, you need to cancel it there, too.

Important: Always process the cancellation in Zest first. During cancellation, you can check Request order cancellation to have Zest request the cancellation in your ecommerce platform automatically. If you skip this option, manually cancel the corresponding orders in your ecommerce platform — when prompted about the refund, select Refund later (not "Refund now"), since the monetary refund is already handled through Zest. In either case, cancel in any downstream fulfillment systems to prevent unwanted shipments.

How to Cancel an Entire Order (Full Cancellation and Refund)

Use this when you want to cancel all recipients and issue a full refund.

  1. Go to Orders in your Zest dashboard and open the order.

  2. Click the Actions dropdown in the top right.

  3. Select Cancel entire order. This will cancel and refund the entire order.

  4. Enter an optional reason for cancellation (80 characters or fewer if your store uses Adyen) and click Submit.

  5. After completing the cancellation in Zest, go to your ecommerce platform and manually cancel any outstanding Child Orders. When asked about the refund, select Refund later — the refund has already been processed in Zest.

  6. If the order has reached your fulfillment center or 3PL, cancel it there as well.

Note: If any Child Orders have already been pushed to your ecommerce platform for fulfillment, Zest will display a reminder after cancellation to cancel those orders manually. Act on that reminder before the order ships.

How to Cancel Individual Recipients, or Child Orders

Use this when you need to cancel one or more specific recipients without affecting the rest of the order.

  1. Go to Orders and open the order.

  2. In the recipient list, check the box(es) next to the specific recipient(s) you want to cancel.

  3. Click Cancel selected (above the recipient list, near the Download recipients button). Do not use the Cancel button in the Actions dropdown — that cancels the entire order.

  4. Choose your refund option:

    • Refund to original payment method — the customer will receive an email confirming the refund. Refunds take 5–10 business days to process.

    • Do not refund — use this when you're canceling an order to recreate it (for example, to correct an address or swap a product) and don't want to refund and re-charge the customer.

  5. Enter a reason for cancellation. This is not shown to the customer.

  6. If any selected recipient's Child Order has already been pushed to your ecommerce platform, you can check Request order cancellation to have Zest automatically request the cancellation in your ecommerce platform. This may take a few minutes to process.

  7. Click Cancel and refund [N] recipient (or Cancel [N] recipient if you chose "Do not refund").

  8. If you did not check the ecommerce platform cancellation option, manually cancel the corresponding Child Order(s) in your ecommerce platform. Select Refund later when prompted — the refund (if applicable) has already been handled through Zest.

Note: After individual recipients are canceled, the Parent Order remains open for the other recipients. If all recipients are eventually canceled, the Parent Order will close automatically.

Important: Cancelling an order in your ecommerce platform does not necessarily sync into other systems such as fulfillment tools. Even if you use the automatic cancellation option, ensure proper steps are taken to prevent order fulfillment in downstream systems (ShipStation, your 3PL, etc.).

How to Issue a Partial Refund Without Canceling

Use this when you want to return money to the customer — for example, for a damaged or late item — without canceling the order or stopping fulfillment.

  1. Go to Orders and open the order in question.

  2. Click the Actions dropdown.

  3. Select Issue a refund.

  4. Enter the specific dollar amount you want to refund.

  5. Enter an optional reason (80 characters or fewer if your store uses Adyen).

  6. Review and confirm.

A few things to know:

  • The refund amount must be less than the outstanding order total. The system will not allow you to exceed it.

  • If you try to refund the full remaining amount, Zest will prompt you to use Cancel entire order instead.

  • A partial refund does not cancel the order or stop fulfillment. You do not need to take any action in your ecommerce platform for a partial refund.

How to Cancel Unaccepted E-Gifts

If a recipient hasn't accepted their e-gift yet, you can cancel it without any action in your ecommerce platform — because no Child Order has been created yet.

You have two ways to cancel unaccepted e-gifts:

Using Cancel Selected (for specific recipients)

  1. Go to Orders and open the order.

  2. Check the box(es) next to the unaccepted recipient(s) you want to cancel.

  3. Click Cancel selected.

  4. Choose whether to refund or not (see "When to Use 'Do Not Refund'" below).

  5. Enter a reason for cancellation.

  6. Confirm the cancellation.

Using Cancel Outstanding E-Gifts (for All Unaccepted Recipients at Once)

If an order has multiple unaccepted e-gifts and you want to cancel all of them in one step:

  1. Go to Orders and open the order.

  2. Click the Actions dropdown in the top right.

  3. Select Cancel outstanding e-gifts.

  4. Choose your refund option (refund to original payment method or do not refund).

  5. Enter a reason for cancellation.

  6. Click Cancel and refund outstanding e-gifts (or Cancel outstanding e-gifts if you chose "Do not refund").

Because no ecommerce platform order exists for unaccepted e-gifts, you do not need to take any action in your ecommerce platform or fulfillment systems.

Tip: Cancel outstanding e-gifts only affects recipients who have not yet accepted. Any recipients who have already accepted their e-gift will not be affected — to cancel those, use Cancel selected or Cancel entire order instead.

Auto-refund setting: Depending on your account configuration, Zest can automatically refund unaccepted e-gifts after a set delay (between 14 and 90 days from the scheduled gift date). Contact support to check whether this is enabled for your brand.

When to Use "Do Not Refund"

When canceling recipients or outstanding e-gifts, you'll see the option to Do not refund. This is useful when you need to cancel an order in order to recreate it — not because the customer wants their money back.

Common scenarios for "Do not refund":

  • Correcting a shipping address — cancel the original recipient, then recreate the order with the correct address.

  • Swapping a product — cancel and recreate with the updated product selection.

  • Fixing a gift message or other order details that can't be edited after submission.

In each case, the customer has already paid, and you plan to send a corrected order — so issuing a refund and re-charging would create unnecessary payment churn.

Important: Only use "Do not refund" when you are certain the customer should not receive money back. If the customer has requested a cancellation or the order will not be recreated, always issue the refund.

How to Handle Returns and Exchanges for Gift Recipients

Once a recipient accepts their e-gift, a standard order is created in Shopify with a regular order number. From that point forward, returns and exchanges follow your brand's normal returns process.

  • Recipients can use their Shopify order number with your existing returns portal (such as Loop Returns or your own returns flow).

  • If needed, Shopify orders created from e-gifts can be tagged as gift orders to trigger special return flows.

  • Returns and exchanges happen in your ecommerce platform — Zest does not need to be involved unless a refund is required.

Good news! Returns tend to be less common with e-gifting because recipients choose their own size, color, and preferences before the order is placed.

If a return results in a refund back to the original payment method, process that refund in Zest (not in Shopify), since payment was collected through Zest.

Troubleshooting: Common Refund Errors

Refund fails with a character limit error (Adyen stores only)

If your brand uses Adyen as its payment processor, the cancellation reason field has a strict 80-character limit. If your reason is too long, shorten it and resubmit. We recommend creating a set of short, pre-approved cancellation reasons for your customer experience team.

Important (Adyen only): If a refund attempt fails due to a reason that's too long, subsequent retry attempts for the same amount may also fail. If you encounter repeated failures after shortening the reason, reach out to Zest support.

Refund fails due to a chargeback or dispute

If a customer has filed a chargeback with their bank, normal refund processing may not be available for that transaction. Chargebacks must be handled through your payment processor's (Stripe or Adyen) dispute process directly. Once the dispute is resolved, manually update the order in Zest to reflect the correct status. You will still need to cancel corresponding orders in your ecommerce platform separately.

"Some of this order has already been refunded" error

This error appears when you attempt to cancel and refund an order where at least one recipient has already been partially refunded. To resolve this, cancel individual recipients one at a time using Cancel selected instead of Cancel entire order.

No refund option appears for an order

This can happen when:

  • The order was created with an external invoice (payment was not collected through Zest). In this case, there is nothing to refund in Zest.

  • The order has already been fully refunded.

If neither of these applies, contact Zest support.

Invoice doesn't show refund amounts

Zest's order detail page invoice does not currently display refund transactions. To verify that a refund was processed, click View payment in Stripe (or the equivalent link for Adyen) from the order detail page to see the refund record directly in your payment processor dashboard.


Frequently Asked Questions

Does canceling in my ecommerce platform update the order status in Zest?

No. Canceling or voiding an order in your ecommerce platform does not automatically update anything in Zest. You may see status indicators in your Zest dashboard that appear to require action even after a cancellation in your ecommerce platform — this is a known limitation. Always manage order status changes in both systems independently.

A Child Order was deleted before fulfillment. What do I do?

If a Child Order is deleted before it's fulfilled, Zest cannot recover that order data. Use Issue a refund to refund the corresponding amount on the Parent Order, and ask the customer to place a new order for the missing recipient.

My ERP system is rejecting partial refunds.

Some ERP systems (such as SAP) only support 100% refunds on individual line items. Partial refunds may trigger integration errors. Before processing a partial refund on an ERP-connected account, check with your integration team to confirm which refund types your ERP supports.

Zest does not push refund data to my ecommerce platform automatically.

Refunds processed in Zest stay within Zest and your payment processor (Stripe or Adyen). Your ecommerce platform's order records will not automatically reflect the refund. For accounting and ERP reconciliation, you may want to manually mark the corresponding order as refunded in your ecommerce platform as well. When doing so, select Refund later — do not attempt to trigger a second refund through your ecommerce platform.

Did this answer your question?