States and refusals¶
A request is one customer asking to send back one or more lines of one order. It carries a state of its own, which answers a single question: have you agreed to this return. Where each item is in your warehouse stays OpenCart's own return status, which you may rename and delete freely — Returns Portal never nominates one of those.
What a request may be¶
| State | What it means |
|---|---|
submitted |
The customer has asked and nobody has decided. This is the only state the Needs a decision tab holds, and the only one a customer may cancel from. |
approved |
You have agreed to take it back. The slip loses its NOT YET APPROVED overprint and the request waits for the parcel. |
rejected |
You refused it. The quantity is released, so the customer may ask again for the same lines. |
cancelled |
It was withdrawn — by the customer, or by you on their behalf. The quantity is released. |
closed |
The parcel arrived and the request is settled. Accepted lines stay held against the order, so nothing can be returned twice. |
What may happen to it, and who may do it¶
| From | To | Who |
|---|---|---|
submitted |
approved |
you, from Sales > Return Requests, the Approve automatically setting, running the same code you would, an integrator's system, over the extension's API |
submitted |
rejected |
you, from Sales > Return Requests, an integrator's system, over the extension's API |
submitted |
cancelled |
the customer, from the storefront, you, from Sales > Return Requests, an integrator's system, over the extension's API |
approved |
rejected |
you, from Sales > Return Requests, an integrator's system, over the extension's API |
approved |
closed |
you, from Sales > Return Requests, an integrator's system, over the extension's API |
Every state not listed in the From column is final: rejected, cancelled, closed are where a request
stops. There is no un-reject and no re-open, and that is forced rather than
chosen — a rejection releases the quantity, so by the time anybody wanted to
reverse one, a second request may already have consumed it.
What a line may carry¶
You decide a request line by line, in one action. Each line ends up with one of these:
| Verdict | What it means |
|---|---|
pending |
Nobody has decided this line, which is only ever true of a submitted request. |
approved |
You will take this line back. It holds its quantity against the order. |
rejected |
You refused this line. Its quantity is released, so the customer may ask again for it. |
Refusing every line rejects the request; approving at least one approves it. A request is never half-decided.
What the customer asked for¶
| Resolution | What it means |
|---|---|
refund |
The customer wants their money back. Returns Portal moves no money for this: it is a note of what they asked for. |
credit |
The customer wants store credit. This is the one resolution the extension can act on, with one click or automatically. |
exchange |
The customer wants a replacement. Returns Portal records the request and does not create an order — every screen calls it an exchange requested. |
Why a line may not be sent back¶
| Reason | What the customer sees |
|---|---|
status_not_eligible |
The order is not in one of the statuses you allow returns from. Refuses the whole order, and is shown once above the line list. |
window_expired |
The return window closed. Refuses the whole order, and is shown once above the line list. |
excluded |
You excluded this product, or a category above it. Shown on the line, with your own exclusion notice beside it. |
fully_returned |
Every unit of this line has already been asked back — through the portal, or through any return already recorded against the order. |
eligible |
Nothing refuses this line. It carries a quantity picker from 1 to whatever is left. |
Every line of the order is shown either way. A line that may not come back is greyed with its reason printed on it, because a line that simply vanished is a customer emailing you to ask where their item went.