Key points

  • Rye automatically issues refunds in cases where we fail to place an order with the merchant.
  • Refunds can also be initiated for Amazon orders via cancelOrder, provided the order has not been shipped.
    • For returning orders after they have shipped (both Amazon and Shopify), see our returns guide.
  • Webhooks are fired throughout the refund process, to keep developers informed.

Automated refunds

Rye’s checkout process occurs in an asynchronous fashion, and in the general case involves two phases. For most orders, the checkout process first charges the shopper’s provided payment method for the cost of the cart, and only after capturing those funds does Rye proceed with purchasing goods from the merchant. Our payments and ordering docs cover this in more detail.

It is possible for Rye to successfully charge the shopper, and then fail to place the order with the merchant; for example, because the product being purchased went out of stock between us charging the shopper and attempting to place the order.

In cases where this occurs, Rye automatically refunds the shopper for the products that were unable to be purchased. There is no further action required here by developers. We also fire an ORDER_FAILED webhook in this case which you can use to identify these failures. The refund property on this event contains information about the refund Rye issued to the shopper.

Below is a diagram which shows how this works in the general case when using Rye Pay. Note that the specifics here can vary; in the case of backend ordering, developers are responsible for capturing funds from the customer. In this case, a failed order is refunded to the developer’s payment method and as a result it would be the developer’s responsibility to refund customers in response to receiving the ORDER_FAILED webhook.

Checkout is also a “best effort” process. If a cart contains items from multiple stores, and some stores successfully place the order while others fail then we only refund the customer for those failed orders and keep the successful orders.

Developer-initiated refunds

Developers may also cancel Amazon orders using the cancelOrder mutation, provided the order has not been shipped yet. If you want to refund an order that has already shipped, then see our returns guide for information on that process.

This mutation creates a cancellation request in our system which we will try to process. If the cancellation processes successfully, then the shopper will receive a refund for the order and the order will be cancelled with the merchant.

We emit webhooks throughout the cancellation process so you can react and notify shoppers accordingly. The following diagram shows the case where a developer requests cancellation of an order that has not yet shipped:

In cases where the order has already shipped, we generally are able to return that failure synchronously from the returnOrder mutation. You can identify this error by looking for a ORDER_ALREADY_SHIPPED error code on the response from cancelOrder.

Developer considerations

Refunds are ultimately approved / declined by the merchant, and refund policies vary by merchant. If you expect to receive a lot of refund requests from shoppers using your platform then Rye recommends familiarizing yourself with the refund policies of the merchants you plan to sell from to better manage shopper expectations.