How to remove "You owe the customer a refund" when issuing a 0 USD refund and some items are returned?

Hi!

We are currently using the GraphQL Process Return API to restock items when no refund is required. In cases where a refund is needed, we call the refundCreate API to both refund and restock, followed by the returnClose API.
However, we are encountering an issue: even when a refund amount of 0 is processed (either via API or directly in the Shopify admin), Shopify still displays a “Refund owed” warning


This is causing confusion for our merchants, especially in exchange scenarios where:

  • A new order is created for the exchanged item, and

  • The original order is returned with a $0 refund

When merchants revisit the original order, they see the “Refund owed” warning, which makes it difficult for them to track whether the exchange has already been handled.
We have tried the following:

Tried restock Items with 0 refund using following APIs (Either at a time)

  • Process Return with a $0 refund via processReturn

  • Issue $0 refund via refundCreate

Later we call following api to close the return

  • Close the return using returnClose

However, even after following this flow, the warning still appears.

The core issue is not the API flow, but how Shopify surfaces this warning in the UI. From a merchant’s perspective, it incorrectly suggests that action is still required, even when the return/exchange has been fully processed.

It would be very helpful if there were:

  • A way to suppress or disable this warning for $0 refund scenarios, or

  • A clearer distinction in the UI between “refund pending” vs “no refund required”

At the moment, even explicitly issuing a $0 refund does not resolve the warning, which leads to unnecessary confusion for merchants managing exchanges.

Could you advise if there is any way to control or suppress this behavior?

Hey @Ellen_T, we have a guide here that addresses this as using refundCreate for returns causes undesired effects for certain cases: Migrate to return processing

The best practice is to integrate with returnProcess for this use case as well.