Amazon strictly validates the reason on every refund. If the reason isn't valid, the refund is rejected. There are three ways this commonly goes wrong.
Shopify lets you issue a refund without typing a reason. Amazon does not — it requires a reason on every refund. If you leave the reason field empty in Shopify, the app has nothing to send to Amazon, and the refund is rejected.
Amazon only accepts a fixed set of refund reasons (for example CustomerCancel, DifferentItem, ProductOutofStock, Other). Any free-text reason you typed in Shopify won't be accepted by Amazon directly — it has to be converted to one of Amazon's reasons.
The app converts your Shopify reason to a valid Amazon reason using the return-reason mapping you configure under Settings → Order Settings → Cancelation and Refund. If the Shopify reason has no entry in that mapping, the app falls back to a default — but if no default is set, or the default itself isn't valid, the refund is rejected.
On the Orders page, find the row with the Failed Refund status and click on Failed Refund. In the Failed Refund dialog:
Click Confirm to retry the refund.
To prevent this from happening again, set up your return-reason mapping so future refunds are converted automatically.