A returns policy is two documents pretending to be one. There is the part the law forces you to publish — the required withdrawal information and the model withdrawal form, clearly provided before the contract is concluded and confirmed afterwards on a durable medium — and getting it wrong is a compliance problem, not a customer-service one. Then there is the part nobody requires: the 30-day window, the free label, the no-questions exchange. That second part is a commercial decision dressed as generosity. This guide is about writing both halves correctly and, just as importantly, making PrestaShop actually express them — because a policy that says "free returns within 30 days" while your back office silently enforces a 14-day RMA window is worse than no policy at all.

We'll stay narrowly on the policy itself: what must be in it, what smart stores add, and how to make PrestaShop's settings and pages match the words. The mechanics of the withdrawal right are covered separately in distance selling and the right of withdrawal; the day-to-day workflow of processing a return without it eating your afternoon is in returns and refunds: making the process painless; and the extra rules that kick in when the parcel crosses a border are in cross-border returns. This post is the policy document at the centre of all three.

The legally mandatory half: what your policy must say

For B2C sales to EU consumers, the Consumer Rights Directive (transposed into each member state's law) sets a floor you cannot drop below in your policy. The headline is the 14-day right of withdrawal — fourteen calendar days from the day the customer receives the goods, during which they may cancel for any reason or none. But the policy text has obligations beyond simply mentioning that number. These are the clauses that have to be present, and present before the order is placed:

  • The existence, conditions and deadline of the withdrawal right, in plain language, accessible before checkout — not buried in a 4,000-word terms page.
  • Who pays return shipping. You may pass the direct cost of return to the customer, but only if you told them so before they bought. Silence here defaults the cost to you. This single sentence is the most expensive one to forget.
  • The model withdrawal form. You must make a standard cancellation form available (the law provides the template). Customers don't have to use it, but you have to offer it.
  • The refund deadline and method. Refund within 14 days of being informed of the withdrawal, using the same payment means the customer used, including the standard outbound delivery cost.
  • The exceptions you rely on. Personalised/made-to-order items, opened sealed hygiene goods, perishables, and unsealed audio/video/software are exempt — but only if you flagged the exemption to the customer up front.

Two details trip up even careful merchants. First, the refund must include the original outbound shipping — but only at the cheapest standard rate you offered. If the customer paid extra for next-day delivery, you refund the standard amount, not the upgrade. Second, you are allowed to withhold the refund until you receive the goods back or the customer provides proof of dispatch, whichever is earlier — so "refund within 14 days" and "you don't have to pay before the parcel is on its way back" are both true at once. Your policy wording should reflect both, or you'll either pay too early or appear to stall.

A note on scope: all of the above is the consumer (B2C) floor. If you sell to businesses, the statutory withdrawal right generally doesn't apply, and your returns terms become a matter of contract — which is its own decision, covered in B2B e-commerce with PrestaShop. Don't copy a B2C policy onto a wholesale store; you'll be giving away rights you don't owe.

The discretionary half: what smart stores offer on top

Everything above is the minimum. The interesting decisions start where the law stops. None of these is required; each is a lever you can pull, and each has a real cost and a real return.

Policy choiceLegal minimumWhat smart stores doThe "so what?"
Return window14 days30, 60, often 100+ daysA longer window reduces pre-purchase anxiety and, counter-intuitively, often lowers the return rate — the urgency to "decide before it expires" disappears.
Return shippingCustomer pays (if disclosed)Free, or free over a thresholdRemoves the single biggest hesitation for size-sensitive categories; the cost is frequently recovered by the conversion lift.
Refund vs exchangeRefund on withdrawalOne-click exchange offered firstAn exchange keeps the revenue and the customer; a refund loses both. The wrong-size customer wanted the product, not their money back.
Reason requiredNone — "no reason" is the lawOptional reason field for dataYou can't demand a reason, but an optional dropdown turns returns into product-quality intelligence.
Refund speedWithin 14 daysOn receipt, sometimes pre-receipt for trusted customersA fast, visible refund is the moment that decides whether a returner ever buys again.

The strategic point underneath the table: a returns policy is read as a risk signal long before anyone returns anything. A generous policy says "we're confident you'll keep this." A grudging one says "we expect you'll be disappointed." Customers price that signal into the purchase decision — which is why the policy belongs on the product page, not just in the footer. The trick is to be generous in the headline and precise in the detail: "Changed your mind? Return any item within 30 days" up top, the statutory clauses one click below.

Making PrestaShop enforce the policy you published

This is where most stores fall down: the published policy and the software's behaviour drift apart. PrestaShop has a built-in returns (RMA) system, and it has its own rules that will quietly override your nice 30-day promise unless you set them to match.

The merchandise-returns engine

The feature lives under Customer Service → Merchandise Returns in the back office. Two settings there decide whether the system even appears to customers:

  • Enable returns — the master switch. Off by default on many installs. With it off, the customer sees no "return this order" option in their account at all, no matter what your CMS policy page says.
  • Number of days — the validity window, counted from the delivery date, during which an order can be returned through the system. This is the number that must equal your published window. If your policy page promises 30 days but this field is left at the default 14, customers who try to start a return on day 20 are told they can't — and you've just manufactured a complaint and, arguably, a compliance gap.

Behind the scenes this is the OrderReturn object and the AdminReturn controller, gated by config values (PS_ORDER_RETURN for the enable flag and PS_ORDER_RETURN_NB_DAYS for the day count, which defaults to 14). Worth knowing because of one behaviour that surprises merchants: PrestaShop only offers the in-account return option for eligible orders — those still inside the configured return window and that have reached the appropriate completed/delivered/shipped stage for your shop's workflow. An order sitting in "Payment accepted" or "Processing in progress" typically won't show a return button. That's a sensible default — you can't return what hasn't been dispatched — but if your fulfilment workflow never moves orders into a delivered/shipped-type status, the entire returns UI stays invisible. Note too that the validity window runs from the order's delivery date, not the purchase date. Verify your order-state configuration and the delivery date before blaming the returns module.

Return statuses — the workflow your policy implies

PrestaShop ships a small set of return states (the OrderReturnState objects), editable on the same Merchandise Returns page: Waiting for confirmation, Waiting for package, Package received, Return denied, and Return completed. These map directly onto the promises in your policy. If your policy says "we'll confirm your return within one business day," that confirmation is the move from Waiting for confirmation to Waiting for package. If it says "refund on receipt," your refund action fires at Package received. Rename or recolour these states to match the language customers actually see in their account — a status called "Return denied" reads harshly; "Return needs review" is the same state, softer. The hands-on side of driving orders through these states is the subject of returns and refunds: making the process painless.

Where the policy text actually lives

The mandatory wording belongs in a CMS pageDesign → Pages — as a dedicated "Returns & Refunds" page, kept separate from your general Terms and Conditions so it's findable. (Your T&Cs page is its own legal artefact; what must go in it is covered in terms and conditions: what must be included.) Then surface it everywhere the law and good sense demand:

  • Footer, via the Link Widget (ps_linklist) — the baseline, but not enough on its own for "before purchase" compliance.
  • Product page and cart, where the risk-signal value is highest. A one-line "30-day free returns" near the Add-to-Cart button does more conversion work than any footer link.
  • The order-confirmation email. Edit the order_conf mail template (Design → Email Theme / translations) to include the policy summary and the withdrawal form link. This is also the cleanest place to satisfy the "make the model withdrawal form available" obligation.

One compliance subtlety the platform won't solve for you: the requirement is that the withdrawal information is provided before the contract is concluded and confirmed after. A footer link arguably covers "available"; the checkout-stage T&C acceptance and the confirmation email cover "before and after." Treat all three as the set, not alternatives.

Turning returns data into fewer returns

The optional reason field from the table earlier pays off here. Once you're capturing why items come back, the returns log stops being a cost ledger and becomes a product-quality report. Filter your return data by product and by category and the pattern usually jumps out: a single SKU with a return rate three times the store average is almost never a "customers are fussy" problem — it's a sizing chart that's wrong, a photo that flatters, or a description that overpromises. Fixing the listing is cheaper than absorbing the returns. For the broader reporting setup that makes this visible across the catalogue, our Financial Revolution module pulls return and refund figures alongside the rest of your store's financials, so a product's true margin — net of its return rate — is something you can actually see rather than guess at.

The "so what?" for you: returns are not only a cost to minimise; handled well, the data they generate is the cheapest product-research you'll ever run. A high return rate is the market telling you something specific about one listing, for free.

Returns in the wider compliance picture

A returns policy doesn't sit alone. It's one clause in the body of law that governs an EU store, and it touches several neighbours: the refund mechanics intersect with how you handle invoices and credit notes (a refund usually means issuing a credit slip), and the whole framework sits inside the broader EU e-commerce law overview that's worth reading once end-to-end. Get the policy right and it stops being a defensive legal chore: a clear 30-day, free-return, easy-exchange policy — published before purchase, mirrored exactly in your PrestaShop settings, and visible on the product page — is one of the most effective trust signals you can put in front of a hesitant buyer. The law tells you the floor. The decision about how far above it to stand is yours, and it's a commercial one.

Share this post:
David Miller

David Miller

Over a decade of hands-on PrestaShop expertise. David builds high-performance e-commerce modules focused on SEO, checkout optimization, and store management. Passionate about clean code and measurable results.

Enjoyed this article?

Get our latest tips, guides and module updates delivered to your inbox.

Comments

No comments yet. Be the first!

Be the first to ask a question or share useful feedback.

Loading...
Back to top