Return forms & RMA
Return Form · Classic RMA
A clean, fillable return request form with customer and order details, return-reason checkboxes, a generous notes area, and a staff processing section.
Use templateTemplate library
Bring the return reference, items, and customer instructions into a branded PDF. Adapt a template to your support team’s process.
Return forms & RMA
A clean, fillable return request form with customer and order details, return-reason checkboxes, a generous notes area, and a staff processing section.
Use templateReturn forms & RMA
A fillable return form with five item rows, customer and order details, return-reason checkboxes, refund preferences, additional notes, and return instructions.
Use templateNo designs match your search.
Organize every return
Help the customer and the receiving team identify the return and the items included in the package.
Connect a return reference to the original order and the contact details your team needs.
Use a table for SKUs, descriptions, quantities, and serial numbers when applicable. Avoid relying on the product name alone.
Include the reason recorded by support and notes that help the receiving team review the return.
Add instructions approved by your team, the return address, and a contact for questions. Review the conditions before distributing the document.
Save an RMA design into your project and adapt its sections to your team’s process.
Bind the reference, customer details, items, and return instructions to your data fields.
Publish your copy and generate a PDF from the app or API to accompany the return.
Your data, your layout
The example connects a return to its order, customer, and item. Replace the reasons and instructions with those approved by your team.
The return_request fields are illustrative: each design may use a different schema. Match the names to “Schema & default data” in your copy and replace template_id with your published template’s ID.
Download return-form-request.json Understand data field bindings{
"template_id": "YOUR_PUBLISHED_TEMPLATE_ID",
"expiry_minutes": 60,
"data": {
"return_request": {
"number": "RMA-1042",
"order_number": "ORD-2048",
"requested_on": "2026-10-30",
"customer": {
"name": "Alex Morgan",
"email": "customer@example.com"
},
"items": [
{
"sku": "MUG-01",
"description": "Ceramic mug",
"quantity": 1,
"serial_number": "SN-00042",
"reason": "Arrived damaged"
}
],
"instructions": "Include this form inside the parcel. Use the return address supplied by support.",
"support_email": "returns@example.com"
}
}
}From template to PDF
Save the file as return-form-request.json, replace the template ID, and adapt its data. Create an API token with documents:create and documents:read and access to that template. Run these commands from your terminal or server.
export SHIPPDF_API_TOKEN='YOUR_API_TOKEN'
curl --fail-with-body https://api.shippdf.com/v1/documents \
-H "Authorization: Bearer $SHIPPDF_API_TOKEN" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: return-RMA-1042" \
--data-binary @return-form-request.jsonA successful request uses one generation credit and returns HTTP 202 with a queued document. Keep the token out of browser code. Reuse the idempotency key only when retrying the same request; use a new one for a different document.
{"id":"doc_example","status":"queued","pdf_url":null}export SHIPPDF_DOCUMENT_ID='YOUR_RETURNED_DOCUMENT_ID'
curl --fail-with-body \
"https://api.shippdf.com/v1/documents/$SHIPPDF_DOCUMENT_ID" \
-H "Authorization: Bearer $SHIPPDF_API_TOKEN"Use the actual ID from your response. If the status is queued or processing, wait before checking again. When it is completed, open the returned pdf_url. If it is failed, inspect failure before generating again.
{"id":"doc_example","status":"completed","expiry_minutes":60,"pdf_url":"https://…/document.pdf"}The example sets expiry_minutes: 60 for one-hour download links. Read the same document again to get a fresh link without generating another PDF.
No. ShipPDF generates the PDF from the data you send. Your system or team decides authorization, conditions, and return status.
Yes. Configure a dynamic table with the items, quantities, and serial numbers you need and test the document with a return containing several rows.
No. You can display amounts or instructions you supply, but generating the document does not initiate refunds or update orders.
Configure the layout’s fields and conditions for your process. Test the cases you intend to send before publishing the template.
Choose a design and adapt its references and instructions to your team.