The Commercial Flow is the voluntary returns you offer as a store, available on the Pro and above plans. Unlike legal withdrawal, here you do decide whether you accept each request, and you resolve it with whatever the customer asked for: refund, exchange or store credit. Each action has its own conditions. Here they are, one by one.
Commercial Flow versus Legal Flow
The underlying difference is who is in charge:
- In a withdrawal (Legal Flow), the customer exercises a right. You neither approve nor reject: you process it and refund. This is covered by the article on handling a withdrawal request.
- In a commercial return, you offer a service. You decide whether you accept it or not, and with what resolution.
That is why the actions are named differently: here you will see "Approve" and "Reject", not "Mark as being processed".
Approve or reject the request
When a commercial request arrives, it is in the Pending state —unless you have auto-approval enabled and it meets all your criteria: then it comes in already as Approved, with actor "System" in the timeline (and, on Scale with automatic labels, with the label already under way)—. From the Actions card:
- Approve. The request moves to Approved and the customer receives an email. From there you can mark the goods as received and resolve. On Scale with Sendcloud configured you will also see "Approve + label", which generates the return label (see shipping labels).
- Reject. A reason field opens (required). The text you write is sent verbatim to the customer by email, and the request becomes Rejected and closed.
- Mark as received. When the goods come back to you, you record it (you can do this after approving or even directly). The request moves to Received.
You can only refund, issue store credit or confirm an exchange when the request is Approved or Received. The button for the resolution the customer asked for is highlighted. An exchange purchase that has already been paid ("Paid (awaiting receipt)") is closed with Mark received and Confirm exchange; neither refund nor store credit.
If the customer attached photos (Pro and above), you see them in the "Customer photos" card in the detail. The links expire: reload the page if one stops opening.
Process a commercial refund
A refund is always available (it is the universal resolution). You click Process refund and returnEasier instructs Shopify to return the money to the original payment method:
- A modal shows you the amount suggested by Shopify on the request's items (or only the selected ones, if the customer returned part of them).
- Unlike the legal refund, the commercial one does not include shipping costs: it covers the products only. This is not a setting but the fixed criterion per request type —a legal withdrawal always refunds the original delivery costs and a commercial return never does—. Two clarifications about the legal one: that obligation comes from Article 13.1 of Directive 2011/83/EU (not from Article 11a, which governs the withdrawal button), and its Article 13.2 does not require refunding the surcharge of a premium delivery the customer chose over the cheapest standard option; returnEasier refunds the shipping in full regardless, which is more generous than the legal minimum. What you do configure in the commercial settings is who pays for the return label, which is a different thing.
- If Shopify rejects the refund, you will see the error Shopify returns and the request does not change state (you can retry).
Once completed, the request becomes Refunded.
Issue store credit
Store credit appears as an action if the customer chose store credit (they could only do so if you had it enabled in Commercial settings at the time), your plan is still Pro or above and the order has a customer account; disabling store credit afterwards does not remove the button from requests already open. Technically, store credit is a Shopify refund with the "store credit" method: on the Shopify order you will see a refund for that amount, not money going out, which is why Shopify requires the new customer accounts. When you issue it, Shopify adds the amount as a balance to the customer's account:
- Your store must have NEW customer accounts enabled in Shopify (Settings → Customer accounts in your admin). It is a Shopify requirement for issuing store credit; if you do not meet it, the issuance fails and the app tells you the exact place to fix it.
- And the order must have a customer account. If it was placed as a guest, there is no account to credit the balance to: the "Issue credit" button does not appear and the alternative is to refund.
- The amount starts from the same calculation as the refund (the selected items) and adds the extra credit if you have it configured for store credit or for both resolutions (if it only applies to exchanges, it is not added); the modal breaks down the bonus for you when there is one.
- There is an anti-duplicate control with two layers: the issuance travels with a Shopify idempotency key —if you retry the same issuance, Shopify recognises the key and does not create a second credit— and, while an issuance is in progress, the rest of the actions on that request wait their turn, so a refund cannot slip in alongside.
Once completed, the request becomes Credit issued.
Confirm an exchange
An exchange appears if the customer chose exchange and your plan is Pro or above. In the portal, the shopper chooses the replacement variant for each item (returnEasier validates that the variant belongs to the product and is available). In the detail you will see those chosen variants, and in the confirmation modal, the summary.
Important: when you confirm the exchange, returnEasier marks the request as Exchanged and notifies the customer, but does not create the replacement order. You handle shipping the replacement product yourself in Shopify, with a manual order or a draft. The app records the decision; the fulfilment is yours.
The exchange purchase (Shop for an exchange)
If you enabled "Offer swap for another product" in the commercial settings, the customer can turn their return into credit and choose any product from your catalogue (not just another variant of the same one). Here the mechanics differ from the variant exchange, because the money moves on its own:
- On confirmation, returnEasier creates a draft order in Shopify with the customer's credit applied as a discount. If the basket is worth more than their credit, the customer pays the difference in the Shopify checkout (returnEasier never touches the money).
- The request sits at "Payment pending". When the customer pays, it moves to "Paid (awaiting receipt)" automatically and you get an email notice (and the customer, a "payment received" one); the draft becomes a real order on your store, which you fulfil like any other.
- If the customer does not pay within 72 hours, the draft is cancelled and the request becomes "Exchange expired", with no charges and no pending work. The cutoff is applied by a process that runs every 2 hours, so the cancellation can arrive a little after 72 h —and never before on returnEasier's initiative—; if the payment lands in that margin, it is accepted as normal. If you are the one cancelling or deleting the draft in Shopify, it does close early: the next pass marks the request as "Exchange expired".
- If the basket cost less than the base credit, when you process the exchange (after receiving the goods) a store credit for the difference is issued in the customer's favour —only on the base credit, never on the extra credit—. In the detail you will see the status ("Payment pending" → "Paid (awaiting receipt)") and the exchange events; when you confirm it, the app's notice tells you the residual credit issued ("Credit of X issued") or, if the order is a guest one, asks you to refund that difference by hand. The credit/basket breakdown is what the customer sees in the portal.
What credit the customer sees (including the optional extra credit) is configured in the commercial rules.
Everything is recorded
As in the legal flow, each commercial action generates an event in the append-only, hash-chained audit log —approve, reject, receive, refund, issue store credit, confirm exchange—, with its actor and its timestamp. The traceability is the same; what changes is that here the decision to accept or not is yours.
To activate the entrance to the Commercial Flow on your store, see the article on the "Manage return" block.