ReturnZen Help Center
Internal draft, built 13 November 2026, checked against the app at main e37fbe70; changes landed since, up to main c597a2cd, are written from the build summaries. Screenshot boxes are placeholders.
Help Center›Managing returns›Processing a Return
Home ›

Processing a Return

Updated 11 November 2026

Overview

This article explains processing: the moment the refund is issued, the gift card or store credit is created, or the exchange or Shop Now order is placed in Shopify. It covers what triggers it, what it writes to Shopify, and what happens when something stops it.

Use the menu on the left to quickly navigate this article.

Before you start

Processing

Where processing starts

In the admin, go to Policy > Return Policies, open a policy, then Return outcomes. Each outcome card has a processing event.

Processing also starts from Process Return on the return page, Process return in the bulk bar on the returns list, and the Set return processing event workflow action.

Processing events

  • Manual: nothing happens until a person clicks Process Return.
  • Immediate: at submit, before anything ships.
  • Pre transit: when the label is created.
  • In transit: at the carrier's first scan, or when a tracking number the shopper typed shows a scan heading to your return address.

Out for delivery and Delivered: at those carrier scans.

Pre transit, In transit, Out for delivery and Delivered rely on EasyPost; under each the app notes Applies when EasyPost tracks the return: an EasyPost return label, or a tracking number the shopper entered. With EasyPost switched off or no key saved, tracking is not read, so a return on one of these events does not move until a person processes it.

A workflow can override the event for matching returns. Shop Now has no event of its own and uses the Exchange outcome's event; with Exchange switched off, Shop Now returns wait for you to process them.

Important: An event before Delivered pays the shopper before anyone has opened the parcel. That is why Process Return asks Process return before delivery? when the parcel is not confirmed delivered.

What happens

  • Refund: issued on the Shopify order to the original payment method, in the order set by Refund credit cards before gift cards under Policy > General.
  • Store credit: a gift card or native store credit is issued, plus any bonus.
  • Exchange: a completed order is created in Shopify for the replacement, with the prefix from Policy > General; a downgrade difference is refunded on the same pass.
  • Shop Now: the order for the cart is created and any leftover is paid the way the shopper chose.
  • Keep item: the credit is issued with nothing received.

A return worth nothing records No financial action ($0 order) on the timeline.

Restock. When a person processes, the items whose restock box is ticked in Return credits go back into stock at the Shopify location; automatic processing follows the Restock functionality setting under Policy > General. Missing and kept items are never restocked.

Written to Shopify. The Shopify Return record is created for the returned lines and closed, and a note is added to the order with the RMA and the date and time in your store's timezone. The return is then closed, a Return processed entry with the amount the shopper receives and the restocked items lands on the timeline, and the processing email goes to the shopper.

Screenshot

A Return processed entry expanded on the Return history card, showing Shopper receives and Restocked

Out of stock at processing. If a replacement is below your inventory threshold, Automate out-of-stock scenarios under Policy > General decides: convert the exchange to the fallback and continue, or hold the return in Needs review. See Inventory, restocking and out-of-stock exchanges.

When processing stops

Shopify declines the refund. The return goes to Needs review, no email is sent, and the bell alerts you; see Alerts.

Nothing was sent. A refusal made before anything goes to Shopify says so on the Return history: nothing was sent for that step, the return is not complete, and it can be processed again, with the refusal's own reason. For example: Refund of $40.00 failed: The store's Shopify connection could not be read, so nothing was sent to Shopify. The return is not complete and can be processed again. Fix the cause and click Process Return again.

Shopify's answer was lost. When a refund is sent and Shopify's answer does not come back, ReturnZen never sends that refund again by itself. The next Process Return reads the order's refunds first:

  • A refund that carries this return's own note is recorded, and the return proceeds.
  • Any other refund on the order that ReturnZen did not record, for example one made by hand in Shopify, holds the return in Needs review with Close Return. ReturnZen never records that refund as its own.
  • With no such refund on the order, the refund is sent once.

On a held return the Return history entry names the refund Shopify shows and its figure, says what this return owes, and says Nothing was recorded and nothing was sent. (Nothing more was recorded and nothing was sent. when this return's own refund was found as well). Pay anything the shopper is still owed in Shopify, then click Close Return. Its dialog names that refund and what this return owes, then reads Closing records nothing and pays nothing. Pay anything the customer is still owed in Shopify first. See Close Return and refunds made in Shopify.

Halted. If a run fails partway while money is moving, the return shows Halted on the returns list and the Return history entry says whether any money is in doubt and what to check in Shopify. Nothing retries a halted return on its own; a person reads the entry and processes it again.

Instant Resolution. Process Return does not run on an Instant Resolution return. Once Shopify shows the refund, the returns list, the bulk dialog and the return page read Shopify shows this Instant Resolution refund was issued, and it is recorded on this return. Process Return does not run on an Instant Resolution return.

A return held because a card charge, a duty or a Shopify refund is still outstanding shows a banner with one way out; see Held returns.

What the shopper sees

The processing email for their outcome, stating the amount actually refunded or credited, and for an exchange or Shop Now the new order's confirmation from Shopify.

Editing a return

This section covers how your team changes a return after the shopper has submitted it: drop or reject an item, switch an item to keep, take an amount off a line, change the fee or the refund method, update the customer's details or the exchange address, and buy a fresh label when the contents change. What the shopper can change on their own is a separate setting; see Return editing.

Before you start: Admin return editing switched on under Policy > General, Return management. With it off, no edit controls appear on any return. The return still open: editing switches off once a return is processed, closed, cancelled, rejected or expired.

Items

In the admin, go to Returns > Return Processing, open the return, then the Return credits card.

Remove takes an item out of the return. Reject refuses it. Change to Keep lets the shopper keep it and still be paid for it. Each has an undo (Undo Remove, Undo Reject, Undo Keep).

Reduce Refund takes an amount off that line: type the Amount to take off this line's refund and a Reason (saved to the return history), then click Apply Reduction. The line then reads Refund reduced from the original. Put Back Full Refund restores it.

A removed or rejected item on a refund or credit return leaves an Uneven return balance card until you click its Reduce Refund button; on an exchange, remove the matching item from the Purchased card instead.

Screenshot

The Return credits card with one item removed, its Undo Remove link, and the Uneven return balance card below

Note: Every edit changes what the shopper is paid. Read the Return summary again before processing.

Fee and refund method

Edit beside Fee on the Return summary opens Fee options: Waive all fees, Charge label cost at the real label rate, or Charge a new amount. The dialog reads Fee cannot exceed available credit. Click Save Fee.

Edit beside the total opens Refund method, which switches a refund or credit return between Original payment method, Store credit and Gift card; it notes No bonus credit is paid on a refund. Click Save Refund Method. It is not offered on an exchange, a Shop Now or an Instant Resolution.

Screenshot

The Fee options dialog with Charge a new amount selected

Customer and address

Edit customer info on the Customer info card opens Update customer record with First name, Last name, Customer email and Phone number (optional); click Update Record.

Edit address on the Exchange ship-to address card opens Update shipping address, the address the exchange order ships to; click Update Address. On a return that is not an exchange the card is headed Ship-to address (for exchanges).

Labels

Create Shipping Label buys a label for a return that has none, showing Total weight first.

Regenerate Label appears under The returning items changed since this label was created. It buys a new label for the current items and voids the old one, without emailing the shopper. See Regenerating a label after an edit.

Email Shipping Label sends the current label; the card counts how many times it was sent.

With EasyPost switched off or no key saved, Create Shipping Label and Regenerate Label are disabled. The card says why and links to the EasyPost settings.

Saving

Item changes and refund reductions wait in a bar that reads You have unsaved changes until you click Save Changes; Discard Changes drops them. Process Return stays disabled with the tooltip Save your pending changes before processing this return. until they are saved.

What the shopper sees

The updated items and amounts on their status page, and the regenerated label the next time they open it. Their own editing, when you allow it under Shopper > Return Editing, is limited to the exchange shipping address and cancelling the return.

Refund figures versus quotes

This section covers the two numbers a return carries: the quote worked out when the shopper submits, and the amount Shopify actually recorded when the return processed. Everywhere you read a refund figure, ReturnZen shows the actual amount once there is one.

Where the figure appears

In the admin, go to Returns > Return Processing.

The Total column on the Returns page, Refund total (or Gift card total or Credit total) on the return page's Return summary, the Refund, Total Refund and Total Gift Card columns in Reports, and the processing email all show the same figure.

How it works

Before processing. The figure is the quote: the item value, tax and shipping where reimbursed, minus fees, plus any bonus. The Returns page shows it under Total; the return page shows it as Refund total.

After processing. The figure is what Shopify recorded. When that differs from the quote, most often because part of the order was refunded in Shopify first, the Return summary adds a Refund adjustment line with the difference and the note Refunded in Shopify on the date. If Shopify recorded less than was requested for another reason, the line states what was requested and what Shopify recorded. Reports and the Returns page read the recorded amount, so the list matches the return page.

A worked example: a return quoted at 60.00. Before it processes, someone refunds 15.00 on the order in Shopify. At processing the app subtracts the 15.00 and asks Shopify for 45.00. The Return summary shows Refund total 45.00 with a Refund adjustment of 15.00 marked Refunded in Shopify on that date, the Returns page shows 45.00, and the shopper's email says 45.00.

Orders paid in another currency. The return page shows the store currency figure and the timeline shows the order's currency after processing. The two can sit a cent apart; Shopify's figure is what the shopper gets.

Screenshot

The Return summary on a processed refund showing Return credit, Refund adjustment and Refund total

What the shopper sees

The processing email states the amount that was actually refunded or credited, never the amount requested.

Note: Fees, bonuses, discounts and bundle adjustments each keep their own line on the Return summary, so the card adds up in every case. For your books, the Refunds and Store Credit reports are the ones to reconcile against Shopify; a refund made in Shopify outside the app appears there only through the adjustment, because ReturnZen never records it as a refund of its own.

Flags and Needs review

This section covers Needs review, the holding status for anything a person must look at before money moves, and the Flag Return action that puts a return there by hand. Returns land in Needs review from workflows, from a flag, from an out-of-stock exchange, from a refund Shopify declined, and when ReturnZen holds a return because money is still owed.

Where to look

In the admin, go to Returns > Return Processing and open the Needs review tab.

The Needs review card on Home opens the same tab with a count, and the Needs Review Report under Insights > Reports lists the same returns with their flagged reason; see Reports.

Screenshot

The Returns page on the Needs review tab with three returns listed

How a return gets there

  • A workflow with the Require review action, or Manual review or reject set to Move to manual review; see Workflows.
  • Flag Return on the return page, or Flag for review in the bulk bar.
  • An out-of-stock exchange when Automate out-of-stock scenarios is off, or one where the shopper would receive 0.00.
  • A refund Shopify declined.
  • A refund on the order that ReturnZen did not record, found when you process again after Shopify's answer to a refund was lost. The return is held with Close Return; see Close Return and refunds made in Shopify.
  • A card charge or a duty still owed; see Held returns.
  • A processing run that stopped while money was moving, which also shows Halted on the returns list.

Flagging a return

  1. Open the return and click Flag Return.
  2. In Flag return for manual review, tick the reasons that apply: Item needs to be cleaned, No packaging with item, Not in package, Not resellable, Return tag not in place, Security tag not in place, Shipping carrier terminal error, Suspected fraud.
  3. Add a Comment and click Flag Return.

The dialog reads The return stays flagged until someone on your team reviews it. The return moves to Needs review with a Flagged for review entry on its history listing the reasons. Unflag Return restores the status the return had before.

Screenshot

The Flag return for manual review dialog with two reasons ticked and a comment

Getting out of Needs review

Approve Return on the return page, or Mark as reviewed in the bulk bar, returns it to open so it can process. Process Return, Reject Return and Cancel Return also work from Needs review. A held return leaves only the way out its banner or its Return history entry names. Marking an item missing on a flagged return can trigger a workflow, for example an auto-reject; the Flag as missing on receipt? dialog says so.

Note: A return approved or sent to review at submission is not on the expiry clock, so it can sit in Needs review indefinitely.

What the shopper sees

Nothing is emailed when a return is flagged or sent to review. With return progress on, their status page reads Your return is being reviewed until it is approved or processed. A rejection sends the rejection email and the status page reads Your return was not approved with your reason.

Held returns

This section covers the returns ReturnZen holds on purpose because money is still owed and it cannot move it safely: a card charge that has not gone back to the shopper, a duty it could not read, a Shopify refund that was refused, a refund found on the order after Shopify's answer was lost, or an Instant Exchange item that arrived after the charge. Each names the amount and the way out, in a banner at the top of the return page or in the Return history entry. Nothing is lost; the return waits for you.

Where to look

In the admin, go to Returns > Return Processing, open the Needs review tab, and open the return.

The banner sits under the heading, above the action bar. Its bold heading says what is held and its sentence or two say what to do.

Screenshot

A return page with the Card charge needs attention banner and its Refund Charge and Close Return buttons

Card charge needs attention

The shopper's 40.00 USD card charge has not been refunded. Click Refund Charge, or refund it in Stripe manually.

This appears when a shopper paid a price difference by card on an exchange or Shop Now and then switched the return to a refund or store credit from the portal. The card charge always goes back to the card; only the returned goods follow the new outcome. Click Refund Charge and the return proceeds. If you refunded it in Stripe by hand, click Close Return, which records that and sends no money; the return then stays in Needs review until you process it. Approve Return does not move the return while the charge stands. With more than one charge the heading reads Card charges need attention.

With Stripe disconnected the banner reads The shopper's 40.00 USD card charge has not been refunded. Reconnect Stripe, or refund it in Stripe manually. The same two exits apply once Stripe is back. When the app could not confirm the charge's state it reads The shopper's 40.00 USD card charge may not have been refunded. Check Stripe, then refund it manually if needed.

When part of a charge was refunded in Stripe, the Card charges on this return card on the return page states all three figures: 80.00 USD recorded on this return; 30.00 USD of it was refunded in Stripe, and 50.00 USD is not refunded.

A worked example: Monday, an exchange with a 40.00 difference paid by card. Tuesday, the shopper picks store credit instead. The return is held with this banner. You click Refund Charge, the 40.00 goes back to the card, and the return proceeds.

Could not check for card charges

No Refund Charge button is shown while this return's card charges cannot be read. Reload the page to check again.

Duty could not be read

Duty on this order could not be read from Shopify. Check the order, then click Process.

The buttons are Open in Shopify and Process. Process reads the order again each time it is clicked: with no duty on the order, goods and tax are refunded; a duty you refunded by hand in Shopify is recorded against this return with nothing to type; duty still unrefunded is refused with one sentence naming the amount; a partial hand refund is recorded and the rest named. A hand refund is tied to the return it was for, so a later return on the same order still gets its own duty back.

Shopify could not process the refund

Shopify could not process the 40.00 refund. Check the order in Shopify first. Process Return sends this refund again without looking for a refund made by hand there. If you refunded the customer in Shopify, click Close Return.

This appears when a Shop Now leftover is set to refund to the original payment method and Shopify refuses. The app reads the order's refunds first. A return is closed as paid outside ReturnZen only when a refund already made by hand is found there, never on its own, and that refund is not counted as one ReturnZen issued.

Refund found after a lost answer

When ReturnZen sends a refund and Shopify's answer is lost, it never sends that refund again by itself. The next Process Return reads the order's refunds first, and a refund there that ReturnZen did not record holds the return in Needs review with Close Return. The Return history entry names the refund Shopify shows and its figure, says what this return owes, and says Nothing was recorded and nothing was sent.

Pay anything the shopper is still owed in Shopify, then click Close Return. The dialog reads Closing records nothing and pays nothing. Pay anything the customer is still owed in Shopify first. See Close Return and refunds made in Shopify.

Instant Exchange held for review

The banner starts The shopper's 40.00 USD Instant Exchange charge is still in place, says that the items arrived after the charge, and ends Refund the charge or close the return.

Look at the item. If it is fine, click Refund Charge; if not, click Close Return. Once the charge is refunded the banner starts The shopper's Instant Exchange charge was refunded and ends Process the return or close it. See Instant Exchange.

What the shopper sees

Nothing changes on their status page while the return is held. The refund of a card charge reaches their card through Stripe.

Note: A restock that cannot complete also offers Close Return, so no return is left without an exit. A gift card whose answer from Shopify was lost is read back and recorded when you click Close Return; no second card is issued and no email goes to the shopper on that close.

Close Return and refunds made in Shopify

This section covers what happens when someone refunds an order in Shopify instead of through ReturnZen. ReturnZen refunds through the Shopify order, so once Shopify already carries that refund the app can no longer pay the return. ReturnZen never records a refund made by hand as its own, and it never sends a refund again by itself after Shopify's answer was lost. Close Return is how such a return is finished.

A return refunded in Shopify

In the admin, go to Returns > Return Processing and open the return.

When Shopify refuses the refund because the order already carries one the app did not issue, the return page shows a banner headed Refunded in Shopify (or Refund found in Shopify when no amount could be read). The body reads, for example, Shopify shows a 40.00 refund on this order that was not issued here. Check the refund in Shopify, then close this return. When the refund lists what went back into stock, the first sentence says so. The buttons are Open in Shopify and Close Return.

Reject Return, Cancel Return and Flag Return are disabled with the tooltip This return cannot be rejected, flagged or cancelled. Use Close Return.

Screenshot

The Refunded in Shopify banner at the top of a return page with Open in Shopify and Close Return

A refund found after a lost answer

When ReturnZen sends a refund and Shopify's answer does not come back, nothing is sent again until a person clicks Process Return. That click reads the order's refunds first:

  • A refund that carries this return's own note is the refund ReturnZen sent. It is recorded and the return proceeds.
  • Any other refund on the order that ReturnZen did not record holds the return in Needs review with Close Return.
  • With no such refund on the order, the refund is sent once.

On a held return the Return history entry names the refund Shopify shows and its figure, says what this return owes, and says Nothing was recorded and nothing was sent.

Close Return

  1. Click Open in Shopify, or the order number in the page heading, and check the refund on the order. Pay the shopper there if they are still owed, and put the items back into stock there if they belong in stock.
  2. Click Close Return. On a return held after a lost answer, the dialog names the refund Shopify shows on the order with its figure and what this return owes, then reads Closing records nothing and pays nothing. Pay anything the customer is still owed in Shopify first.
  3. If the app could not tell which lines went back into stock, the dialog Which items went back into stock? lists each item with a tick, pre-ticked with what Shopify reported. Tick or untick, then click Record and Close Return.

Close Return pays nothing and records no refund on the return. It creates the Shopify Return record if none exists, closes it, and closes the return in ReturnZen. The Return history says that nothing was paid from here.

Screenshot

The Which items went back into stock? dialog with two items ticked

A partial refund made in Shopify

When only part of the order's value was refunded in Shopify, processing still runs. The app subtracts what Shopify already refunded, records what Shopify actually paid on its own refund rather than the amount requested, and the Return summary shows a Refund adjustment line with the note Refunded in Shopify on and the date. The shopper's email states the real amount. The refund made in Shopify is shown as an adjustment and is never counted as a refund ReturnZen issued. See Refund figures versus quotes.

What the shopper sees

On a closed return refunded in Shopify, no refund email from ReturnZen, because the app paid nothing; whatever Shopify sent when the refund was made there. On a partially refunded return, the processing email with the amount actually paid.

Tip: Refund only through ReturnZen once a return exists. If you must refund in Shopify, come back and click Close Return so the return, the Shopify Return record and your reports agree.

FAQ

Can I process before the parcel arrives? Yes. Click Process Return, read Process return before delivery?, and click Process Anyway. The shopper is paid before you have inspected the goods.

Why did Process Return put the return in Needs review instead of paying? The replacement was out of stock and the amount the shopper receives came to 0.00, so there was no refund or store credit to issue; or no item was left on an emptied exchange and no refund or credit had been chosen for the returned items; or Shopify's answer to an earlier refund was lost and a refund ReturnZen did not record was found on the order.

Shopify did not answer when the refund was sent. Is the shopper refunded twice? No. ReturnZen never sends a refund again by itself. When you click Process Return, it reads the order's refunds first and sends the refund once, only when the order carries no refund it has not recorded.

Can I edit a return that is already processed? No. The edit controls are gone once a return is processed, closed, cancelled, rejected or expired. Notes can still be posted on the Return history card.

I unmarked a missing item and the refund stayed reduced. Why? Admin return editing was off, so the page kept the reduced value. Turn it on, mark the item missing and unmark it again to restore the original refund.

Why was the customer emailed a different refund amount than Shopify shows? The email states what ReturnZen actually paid on this return. If Shopify shows more, the difference is a refund made on the order outside the app, and the Refund adjustment line names it with Refunded in Shopify on the date. If Shopify shows less, Shopify capped the refund below what was requested, and the line states what was requested and what Shopify recorded.

Why does Total read Unavailable? The amount could not be quoted, for example because a figure it is worked out from could not be read from Shopify. Open the return; the Return summary names the line that reads Unavailable.

Is Halted the same as a flag? No. Halted means a processing run failed partway and nothing retries it. Open the return and read the entry on its history: it says whether any money is in doubt and what to check on the Shopify order before you act. When nothing was sent to Shopify, the entry says so and that the return can be processed again.

The return has a banner about a card charge or duty and Approve does nothing. That return is held because money is still owed. The banner names the amount and the way out; see Held returns. A return held with Close Return after a lost answer from Shopify works the same way: ReturnZen sends nothing more by itself. A label that could not be bought, a refused refund or a disconnected service also shows in the bell; see Alerts.

I refunded an order in Shopify. Why did the app process the return anyway? The Shopify refund covered only part of the order, so the app could still pay the rest. Processing ran and subtracted what Shopify already refunded; the Refund adjustment line shows the difference and the shopper was emailed the real amount.

What is Close Return for, then? When the Shopify refund covers the return's value, Shopify refuses the app's refund and the return shows the Refunded in Shopify banner. Close Return finishes that return, and creates and closes the Shopify Return record, without paying anything a second time.

Does Close Return send an email? No. Nothing is paid, so nothing is sent.

Does ReturnZen count my Shopify refund as its own? No. A refund made by hand in Shopify is never recorded as a refund ReturnZen issued. A partial one shows as a Refund adjustment; one that covers the return, or one found after a lost answer, leaves the return for you to finish with Close Return.

Shopify did not answer when ReturnZen sent the refund. Does it go out twice? No. ReturnZen never sends a refund again by itself. The next Process Return reads the order's refunds first: its own refund is recorded, an unknown one holds the return, and only an order with neither gets the refund, once.

Please reach out to support@returnzen.app with any additional questions.

processapproverefundeditneeds reviewclose return
Was this article helpful?YesNo