Skip to main content

How to Cancel and Refund Storefront Orders

Updated over a week ago

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 Shopify (or your ecommerce platform) 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 Shopify or any downstream fulfillment system — you'll need to do that manually.

There are three 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

Why You Need to Cancel Orders in Multiple Systems

Zest and Shopify don't automatically sync cancellations. Here's why you need to take action in both places:

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

  • Shopify handles fulfillment. If a gift has been accepted and a Child Order already exists in Shopify, canceling in Zest does not stop Shopify from shipping the order.

  • 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 refund in Zest first, then cancel the corresponding orders in Shopify and any fulfillment systems to prevent unwanted shipments. When canceling in Shopify, select Refund later (not "Refund now") — the actual monetary refund is already handled through Zest.

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 Shopify (or 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 Shopify 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. Review the preview showing the refund amount for the selected recipient(s). Click Submit.

  5. If any selected recipient's Child Order has already been pushed to Shopify, you'll see a warning. Note the Shopify order number before proceeding.

  6. Confirm the cancellation.

  7. Manually cancel the corresponding Child Order(s) in Shopify. Select Refund later when prompted about the refund.

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.

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 Shopify for a partial refund.

How to Cancel Unaccepted E-Gifts

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

  1. Go to Orders and open the order.

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

  3. Click Cancel selected.

  4. Confirm the cancellation and refund.

Because no Shopify order exists for unaccepted e-gifts, you do not need to take any action in Shopify.

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.

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 Shopify orders 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 Shopify update the order status in Zest?

No. Canceling or voiding an order in Shopify does not automatically update anything in Zest. You may see status indicators in your Zest dashboard that appear to require action even after a Shopify cancellation — 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 Shopify automatically.

Refunds processed in Zest stay within Zest and your payment processor (Stripe or Adyen). Shopify'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 Shopify as well. When doing so, select Refund later — do not attempt to trigger a second refund through Shopify.

Did this answer your question?