Patterns
A refund request needs an order reference before it needs an explanation.
Order reference first, then what went wrong, then what they want. The first field saves most of the emails.
- Required
- order reference
- Reasons
- structured select plus detail
- Resolution
- refund · replacement · repair
- Photo
- needed for damage claims
- Routing
- by reason
- Never
- card details on the form
Order first, story second
<form action="https://freelyform.com/f/FORM_ID" method="POST" enctype="multipart/form-data">
<input type="hidden" name="_subject" value="Refund request">
<label for="order">Order reference</label>
<input id="order" name="order_reference" required>
<label for="email">Email used on the order</label>
<input id="email" name="email" type="email" autocomplete="email" required>
<input type="hidden" name="_replyto" value="">
<label for="reason">Reason</label>
<select id="reason" name="reason" required>
<option value="">Choose one</option>
<option value="damaged">Arrived damaged</option>
<option value="wrong">Wrong item sent</option>
<option value="not_as_described">Not as described</option>
<option value="changed_mind">Changed my mind</option>
<option value="late">Arrived too late</option>
</select>
<label for="detail">Tell us what happened</label>
<textarea id="detail" name="detail" rows="3" required></textarea>
<label for="wanted">What would you like?</label>
<select id="wanted" name="resolution" required>
<option value="refund">Refund</option>
<option value="replacement">Replacement</option>
<option value="repair">Repair</option>
</select>
<label for="photo">Photo (for damaged or wrong items)</label>
<input id="photo" name="photo" type="file" accept="image/*">
<button type="submit">Send request</button>
</form>
The dropdown is for routing, the textarea is for judging
Five or six reasons are enough to send a request to the right queue: warehouse, billing, or carrier. The open field is where the actual decision is made, and it is also where the customer tells you something you did not think to ask. Keep both, and keep the reason list short enough to choose from quickly.
What the form must never ask for
Card numbers, bank details, or a copy of a payment receipt showing a full card. A refund is executed through the payment provider against the original transaction; the form's job is the reference and the reason, not the payment instrument.
Close the loop on the record
Whether the request was approved or refused, the outcome belongs on the record rather than only in an email. It is what makes a follow-up question answerable in ten seconds, and it is what turns a year of refund requests into a number you can report on.
Machine-readable summary
What to quote about refund request
A refund or return request needs the order reference before anything else, then a structured reason, then what resolution the customer wants — refund, replacement, or repair. FreelyForm stores each request as a record and can route it by reason or by value. Requests without an order reference cannot be actioned, so that field should be required and validated rather than trusted.
- The order reference is the one required field; without it the request cannot be matched to a purchase.
- Structured reasons beat free text for routing, with an open field for the detail.
- Ask what the customer wants — refund, replacement, or repair are different processes.
- A photo is required in practice for damage claims and optional elsewhere.
- Route by reason so a billing issue does not queue behind a warehouse return.
- Never ask for card numbers to process a refund; the payment provider holds them.
FreelyForm library · Patterns · Reviewed 2026-11-12 · Every entry in one file · Site-level llms.txt
Refund request questions
Why is the order reference more important than the explanation?
Because an explanation cannot be actioned without a purchase to attach it to. Requiring the reference turns most requests into a lookup, and it filters out the ones that are actually pre-sales questions arriving at the wrong form.
Should the reason be a dropdown or free text?
Both: a dropdown of five or six reasons for routing and counting, plus an open field for the detail. Free text alone cannot be reported on; a dropdown alone cannot be acted on.
Is it a problem that the customer chooses the resolution?
No — it is useful information, not a commitment. Asking what they want tells you whether a replacement would end the matter, which is usually cheaper than a refund. The decision stays with you; the preference belongs to them.
How does this differ from a support ticket?
A support ticket is an open conversation; a refund request is a decision with a reference and an outcome. Mixing them means refund requests sit in a thread, and the record of what was decided is buried in an email chain instead of a field.
Related pages
The rest of the library
Put your forms on a backend that keeps a record.
Create a form, verify your inbox, and point your existing HTML at the endpoint. No server, no SDK, no rewrite.
POST https://freelyform.com/f/FORM_ID