Fit the form to your returns policy
Edit the reason and condition lists, remove repair if you don't offer it, and add your return window to the page text. Swap in your access key and link to the form from your shipping emails with ?order=.
Form template · RMA Form Template (Return Form)
Updated · plan facts checked against /pricing
An RMA form (return merchandise authorization form) is how a customer asks permission to send a product back before shipping it. This free return form template has 17 fields: order, product and serial number, refund, exchange or repair, reason, condition and photos. Approve a return by replying with its Lead number as the RMA number.

This template is one of our free HTML form templates. See more form templates by industry. Want owners to register a new product for warranty cover? Use the warranty registration form template.
Overview
Online stores, electronics and equipment sellers, and makers who offer repairs use an RMA form so every return starts as a request they can approve, not a surprise parcel. This template is plain HTML that posts to one splitforms endpoint (https://splitforms.com/api/submit) with a hidden access_key, so it works on a returns page, a help center or a static site with no backend. Each request is emailed to you on every plan with its Lead number, and that number, quoted in your approval reply, becomes the RMA number the customer writes on the box.
No server, API route, or SDK — your RMA Form Template (Return Form) posts straight to one endpoint.
Every submission is emailed to you and saved to a searchable dashboard — spam filtered before it reaches you.
It's plain HTML you own — paste the RMA Form Template (Return Form) snippet, swap in your access key, and ship.
Copy and ship
Plain HTML that posts to the /api/submit endpoint. Replace YOUR_ACCESS_KEY with the key from your dashboard; that's the only edit.
<!-- Link here from your shipping email as e.g. /returns?order=1042 to pre-fill the order number -->
<form action="https://splitforms.com/api/submit" method="POST" enctype="multipart/form-data">
<input type="hidden" name="access_key" value="YOUR_ACCESS_KEY">
<input type="hidden" name="subject" value="New RMA request">
<input type="hidden" name="form_loaded_at" id="form_loaded_at">
<fieldset>
<legend>Your order</legend>
<label>Full name <input type="text" name="name" autocomplete="name" required></label>
<label>Email <input type="email" name="email" autocomplete="email" required></label>
<label>Phone (optional) <input type="tel" name="phone" autocomplete="tel"></label>
<label>Order number <input type="text" name="order_number" id="order_number" required></label>
<label>Purchase or delivery date <input type="date" name="purchase_date" required></label>
</fieldset>
<fieldset>
<legend>The product</legend>
<label>Product name <input type="text" name="product" required></label>
<label>SKU or model number (optional) <input type="text" name="sku_or_model"></label>
<label>Serial number (if the product has one) <input type="text" name="serial_number"></label>
<label>Quantity to return <input type="number" name="quantity" min="1" max="99" step="1" value="1" required></label>
</fieldset>
<fieldset>
<legend>What would you like?</legend>
<label><input type="radio" name="return_type" value="Refund" required> Return it for a refund</label>
<label><input type="radio" name="return_type" value="Exchange"> Exchange it (different size, color or model)</label>
<label><input type="radio" name="return_type" value="Repair or warranty"> Repair or warranty replacement</label>
<label>If exchanging, what would you like instead? <input type="text" name="exchange_for"></label>
</fieldset>
<fieldset>
<legend>Why, and what condition is it in?</legend>
<label>Reason
<select name="reason" required>
<option value="">Choose one</option>
<option>Defective or stopped working</option>
<option>Damaged in shipping</option>
<option>Wrong item sent</option>
<option>Not as described</option>
<option>Wrong size or fit</option>
<option>No longer needed</option>
<option>Other</option>
</select>
</label>
<label>Condition
<select name="condition" required>
<option value="">Choose one</option>
<option>Unopened</option>
<option>Opened, not used</option>
<option>Used</option>
<option>Damaged</option>
</select>
</label>
<p>Do you still have the original packaging?</p>
<label><input type="radio" name="original_packaging" value="Yes" required> Yes</label>
<label><input type="radio" name="original_packaging" value="No"> No</label>
<label>Describe the problem <textarea name="description" rows="4" required></textarea></label>
</fieldset>
<!-- Photos are stored on paid plans; the Free plan drops uploaded files -->
<label>Photos of the item or damage (optional, up to 5)
<input type="file" name="photos" accept="image/*" multiple>
</label>
<label><input type="checkbox" name="wait_for_rma" value="yes" required>
I will not ship the item until I receive an RMA number and return instructions.</label>
<!-- honeypot: leave empty -->
<input type="checkbox" name="botcheck" style="display:none" tabindex="-1" autocomplete="off">
<button type="submit">Request a return</button>
</form>
<script>
document.getElementById('form_loaded_at').value = Date.now();
var orderParam = new URLSearchParams(location.search).get('order');
if (orderParam) document.getElementById('order_number').value = orderParam;
</script>Field by field
order_number (pre-filled from ?order=)purchase_dateserial_number (optional)return_type (radio, required)reason + condition (selects)original_packaging (radio)photos (file, multiple)wait_for_rma (checkbox, required)How to add it
To add a RMA Form Template (Return Form) to your site you need three things: a free splitforms access key, the HTML snippet above, and your key pasted into it. No backend, database, or CAPTCHA library — the form posts to one URL and every submission lands in your inbox and dashboard.
Edit the reason and condition lists, remove repair if you don't offer it, and add your return window to the page text. Swap in your access key and link to the form from your shipping emails with ?order=.
Each request is emailed to you with a Lead number. Check the order, date and serial number, then reply to approve with the Lead number as the RMA number, the return address and packing instructions, or explain why it is declined.
Search the dashboard for the RMA number written on the package to pull up the request, then issue the refund, ship the exchange or start the repair.
What's included
An RMA step exists so nothing arrives at your door unannounced. Without it, boxes turn up with no order number, no note and no way to tell whether the customer wants a refund, a different size or a repair. With it, you see the request first and decide: approve with return instructions, offer a fix that doesn't need shipping, or decline an item that is outside your return window. This template asks for the details that decision needs (order, product, serial number, what the customer wants, why, and the item's condition) and ends with a checkbox where the customer agrees not to ship until they have an RMA number. The number itself comes free: every submission gets a sequential Lead number, which you can quote back as the RMA number and write on the box label. Approve before anything ships: the Lead number on every request doubles as the RMA number.

Where submissions go
Reply-to is wired to the visitor's email, so one tap on Reply answers them directly — while the built-in honeypot and automatic spam scoring filter out bots before they reach you. Every submission is emailed to your inbox and can forward to a webhook or Slack the moment a visitor hits send.

How SplitForms works
splitforms receives the submission, filters spam, saves it to your dashboard and emails you — then, on paid plans, sends it on to your webhooks and integrations. No backend infrastructure to build.

Point your form to your unique SplitForms endpoint. That's it.

We instantly capture and organize every submission in your inbox.

Send data to email, spreadsheets, CRMs, webhooks, and 7,000+ apps.

No credit card required. Set up in under 60 seconds.
Connect & automate
On paid plans, submissions can also go to Slack, Discord, Google Sheets, Notion, Airtable, Zapier or any signed webhook — and splitforms works on the platforms you build on, from WordPress and Shopify to Next.js. With Stripe connected, your forms can take payments too.

Questions
Yes, on paid plans. Notification routing sends each request to a different address based on a field value, so return_type = 'Repair or warranty' can go to your service team while refunds and exchanges go to customer support. On the Free plan all requests go to the form's notification address.
On paid plans, add a webhook. Slack and Discord URLs get a formatted message; any other URL gets a signed JSON payload with every field, including order_number and serial_number, so a returns or ticketing tool can pick it up without retyping.
Yes, with the auto-reply on a paid plan; its template can include {{ lead_number }}. Word it as a request number and say returns ship only after approval, so customers don't post the item before you have reviewed it.
On paid plans, export the CSV and count rows by product and reason. Because both are separate columns, you can see in a few minutes whether one model keeps coming back as 'Defective' or one size as 'Wrong size or fit'.
An RMA (return merchandise authorization) form is a request a customer submits before sending a product back. It identifies the order and product, says whether they want a refund, exchange or repair, and explains why. The seller reviews it and replies with an RMA number and instructions, or declines. 'Return form' usually means the same thing.
Use the Lead number splitforms gives every submission on every plan. It is sequential, shown in your notification email and searchable in the dashboard, so when a box arrives marked with it you can find the request in one search. Tell customers it is their RMA number only once you approve the return.
An RMA form asks permission to send a product back, for a refund, an exchange or a repair. A refund request form asks for money back and also covers cases with nothing to return, such as a duplicate charge. Many returns use both: approve the RMA, then refund once the item arrives.
Simple pricing
Free gives you 500 submissions for $0 — no card, no time limit. Pro is $5/month for 5,000 submissions a month, and Annual is $49/year for 15,000 a month with every Pro feature.
For side projects and indie devs.
Every paid feature, for agencies and growing products.
Every Pro feature with triple the volume — $0.27 per 1,000 at full use.
No credit card required on Free • Cancel anytime • Full pricing and FAQ