Refund request form that asks for the order details first

Updated 2026-10-30

Refund emails often say "I want my money back" and nothing else. You write back for the order number, then the reason, then the photo. I would rather collect all of it in one go.

Who it is for

Online stores, makers and service sellers who handle refunds by hand and want every request in the same shape.

What each question is for

  • Order number, email and date: so you find the order without searching.
  • Items and reason: a pick-list you can count, plus a short story.
  • Returned or not, with tracking: tells you if the item is on its way before you refund.
  • Preferred outcome: refund, credit or exchange. It saves a round of questions.
  • Proof link and policy tick: evidence, and a record that they read your policy.

What a customer's AI would ask

"What is your order number?" Then "Why do you want a refund?" Then "Have you sent the item back?" It shows all answers and sends only after a yes. See agent-fillable forms.

Before you use it

The form collects no payment or card data and moves no money. You refund inside your own tool. This is a form, not legal advice. Have a professional check the wording of your refund policy. A warranty claim form suits faulty goods, and a waitlist catches people who want a restock. More ideas are in forms for Ecommerce and Shopify stores.

Questions

How do I process the refund after the form?

Read the row, check the order in your shop, and refund in your own payment tool. The form only gathers the request. It never touches money or card details.

Can I limit refunds to a time window?

Say the window in the form description and check the purchase date column for each request. The form itself does not block late requests.

What proof can customers give?

The form takes links, not files. Ask for a link to a photo or video kept in a shared album, and open it before you approve the refund.

Try the form

Live demo ยท nothing is saved

Request a refund

Sorry the order did not work out. Please fill this in and we will review it and reply.

Why are you asking for a refund? (required)
Have you sent the item back?
What would you prefer?
I have read the refund policy (required)

Or paste the JSON

Give this to your AI. It needs the AI Form API MCP server or an API key. It makes the form and sends you the link.

text
Create this form with the AI Form API create_form tool (or POST https://aiformapi.com/v1/forms with my API key). Then reply with the public_url.

{
  "title": "Request a refund",
  "description": "Sorry the order did not work out. Please fill this in and we will review it and reply.",
  "fields": [
    {
      "id": "customer_name",
      "label": "Your name",
      "type": "short_text",
      "required": true,
      "max_length": 150
    },
    {
      "id": "order_email",
      "label": "Email used for the order",
      "type": "email",
      "required": true
    },
    {
      "id": "order_number",
      "label": "Order number",
      "type": "short_text",
      "required": true,
      "max_length": 100
    },
    {
      "id": "purchase_date",
      "label": "Date of purchase",
      "type": "date"
    },
    {
      "id": "items_to_refund",
      "label": "Which items do you want refunded?",
      "type": "long_text",
      "required": true,
      "max_length": 1000
    },
    {
      "id": "refund_reason",
      "label": "Why are you asking for a refund?",
      "type": "single_choice",
      "required": true,
      "options": [
        "Item arrived damaged",
        "Wrong item sent",
        "Not as described",
        "Arrived too late",
        "I changed my mind",
        "I was charged twice",
        "Something else"
      ]
    },
    {
      "id": "what_went_wrong",
      "label": "Tell us what happened",
      "type": "long_text",
      "max_length": 1500
    },
    {
      "id": "return_status",
      "label": "Have you sent the item back?",
      "type": "single_choice",
      "options": [
        "Not yet",
        "It is on its way",
        "I cannot send it back",
        "There is nothing to return"
      ]
    },
    {
      "id": "return_tracking",
      "label": "Return tracking reference",
      "type": "short_text",
      "max_length": 100
    },
    {
      "id": "preferred_outcome",
      "label": "What would you prefer?",
      "type": "single_choice",
      "options": [
        "Refund to my original payment method",
        "Store credit",
        "Exchange for another item"
      ]
    },
    {
      "id": "proof_link",
      "label": "A link to a photo or document",
      "type": "url",
      "help": "Store the file online and paste the link."
    },
    {
      "id": "policy_read",
      "label": "I have read the refund policy",
      "type": "checkbox",
      "required": true
    }
  ]
}

Or call the API

bash
curl -X POST https://aiformapi.com/v1/forms \
  -H "Authorization: Bearer $AIFORMAPI_KEY" \
  -H "Content-Type: application/json" \
  -d '{"title":"Request a refund","description":"Sorry the order did not work out. Please fill this in and we will review it and reply.","fields":[{"id":"customer_name","label":"Your name","type":"short_text","required":true,"max_length":150},{"id":"order_email","label":"Email used for the order","type":"email","required":true},{"id":"order_number","label":"Order number","type":"short_text","required":true,"max_length":100},{"id":"purchase_date","label":"Date of purchase","type":"date"},{"id":"items_to_refund","label":"Which items do you want refunded?","type":"long_text","required":true,"max_length":1000},{"id":"refund_reason","label":"Why are you asking for a refund?","type":"single_choice","required":true,"options":["Item arrived damaged","Wrong item sent","Not as described","Arrived too late","I changed my mind","I was charged twice","Something else"]},{"id":"what_went_wrong","label":"Tell us what happened","type":"long_text","max_length":1500},{"id":"return_status","label":"Have you sent the item back?","type":"single_choice","options":["Not yet","It is on its way","I cannot send it back","There is nothing to return"]},{"id":"return_tracking","label":"Return tracking reference","type":"short_text","max_length":100},{"id":"preferred_outcome","label":"What would you prefer?","type":"single_choice","options":["Refund to my original payment method","Store credit","Exchange for another item"]},{"id":"proof_link","label":"A link to a photo or document","type":"url","help":"Store the file online and paste the link."},{"id":"policy_read","label":"I have read the refund policy","type":"checkbox","required":true}]}'

JSON definition

json
{
  "title": "Request a refund",
  "description": "Sorry the order did not work out. Please fill this in and we will review it and reply.",
  "fields": [
    {
      "id": "customer_name",
      "label": "Your name",
      "type": "short_text",
      "required": true,
      "max_length": 150
    },
    {
      "id": "order_email",
      "label": "Email used for the order",
      "type": "email",
      "required": true
    },
    {
      "id": "order_number",
      "label": "Order number",
      "type": "short_text",
      "required": true,
      "max_length": 100
    },
    {
      "id": "purchase_date",
      "label": "Date of purchase",
      "type": "date"
    },
    {
      "id": "items_to_refund",
      "label": "Which items do you want refunded?",
      "type": "long_text",
      "required": true,
      "max_length": 1000
    },
    {
      "id": "refund_reason",
      "label": "Why are you asking for a refund?",
      "type": "single_choice",
      "required": true,
      "options": [
        "Item arrived damaged",
        "Wrong item sent",
        "Not as described",
        "Arrived too late",
        "I changed my mind",
        "I was charged twice",
        "Something else"
      ]
    },
    {
      "id": "what_went_wrong",
      "label": "Tell us what happened",
      "type": "long_text",
      "max_length": 1500
    },
    {
      "id": "return_status",
      "label": "Have you sent the item back?",
      "type": "single_choice",
      "options": [
        "Not yet",
        "It is on its way",
        "I cannot send it back",
        "There is nothing to return"
      ]
    },
    {
      "id": "return_tracking",
      "label": "Return tracking reference",
      "type": "short_text",
      "max_length": 100
    },
    {
      "id": "preferred_outcome",
      "label": "What would you prefer?",
      "type": "single_choice",
      "options": [
        "Refund to my original payment method",
        "Store credit",
        "Exchange for another item"
      ]
    },
    {
      "id": "proof_link",
      "label": "A link to a photo or document",
      "type": "url",
      "help": "Store the file online and paste the link."
    },
    {
      "id": "policy_read",
      "label": "I have read the refund policy",
      "type": "checkbox",
      "required": true
    }
  ]
}