> ## Documentation Index
> Fetch the complete documentation index at: https://docs.firmhouse.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Returns templates

> Customize return creation and return details in the Customer Portal.

`new_return_order.liquid` controls return creation. `return_order.liquid` controls the details of an existing return. Both support the standard template editor, drafts, publishing, translations and reset to the Firmhouse default.

Customer Portal v2 uses the default return templates immediately. Customize and publish each template independently. Saving or previewing a draft does not change the live page; resetting a template restores its Firmhouse default.

The template-based flow supports plan-based projects and dynamic projects with the dynamic returns feature enabled. Product eligibility, quantities, subscription authentication and return ownership are enforced on the server. The legacy return enablement switch does not control CPv2 Returns.

## `{% return_form %}`

Used in: new\_return\_order.liquid

Shows the product selection form, available quantities, return reason and validation errors. Keep this tag in the new return template so customers can submit their returns.

The optional `instructions` argument supplies the message. Omitting it, passing `nil`, or passing an empty string shows no message. CPv2 does not read the legacy return-message settings. Instructions support sanitized HTML. The default template passes an empty translated message so you can manage its copy through template translations.

```liquid theme={null}
{% capture instructions %}{{ "returns.new_instructions" | t: default: "Keep the original packaging." }}{% endcapture %}
{% return_form instructions: instructions %}
```

## Return details layout

Used in: return\_order.liquid

The product list, prices, instructions, return-label download and cancellation link are ordinary Liquid markup in `return_order.liquid`. Edit their layout directly. Instructions use the sanitized `t` translation filter, with no legacy setting fallback.

Set `show_cancel_button = false` at the top of the template to hide the cancellation link (default: `true`). This is a presentation option, not an authorization rule: hiding the link does not disable the existing cancellation endpoint. The legacy cancellation-display setting is not read by CPv2.

```liquid theme={null}
{% assign show_cancel_button = false %}
{{ "returns.summary_instructions" | t: default: "Use the supplied return label." | newline_to_br }}
```

The page context includes `return_order`, `initiated_on` (the localized creation date), `return_label_url` and `cancel_return_url`. Action URLs are absent for previews and completed returns. Each entry in `return_order.return_order_products` exposes `quantity`, localized `title`, `image_url`, formatted `total_amount` and `recurring_label`. Escape these values when rendering them. The default template includes the return number and date.

## `{% return_entry %}`

Used in: dashboard.liquid

Shows the dashboard link for creating a return when the project's return capability is available and eligible returnable quantity remains. The default product listing also shows links to in-progress returns below their products. Removing this tag hides the entry point; it does not change server authorization or availability.

Add this tag to a customized dashboard to expose the same entry point:

```liquid theme={null}
{% return_entry %}
```

Existing customized dashboards and published templates are not rewritten automatically. CPv2's Returns settings section links to the templates. Legacy controls remain available while the old Self service center is live.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.