Let customers start returns on your store
Customers can ask for their money back or swap an item for another size or colour themselves, without emailing you. Turn it on: open Returns (platformdtc.com/returns), choose Turn on, add the address customers send returns to, and save. The address is required. What the customer sees: a returns form on your store (at/pages/returns). They find their order
with its order number and the email or ZIP code on it, pick the items, say why, and choose
money back or an exchange. They can add a note and up to 3 photos. Only items still inside
your return window can be picked.
Approve requests: choose how requests are handled.
- I review each one. Requests wait on the Returns page, tagged From customer, with what the customer asked for, their note and photos. Nothing happens until you approve.
- Approve automatically when inside my return rules. Requests inside your return window are approved at once. Anything outside your rules still waits for you.
For developers
X-Agent-Key: sq_agt_*. Scopes: read_returns, write_returns.
Status flow: requested → open (approved) → closed; or declined / canceled.
Endpoints
POST /returns— request{ "return": { "order_id":"ord_…","return_line_items":[{"order_item_id":"…","quantity":1,"return_reason":"defective","restock_type":"return"}] } }GET /returns?order_id=&status=(cursor) ·GET /returns/{id}POST /returns/{id}/approve·/decline·/close·/cancelPOST /returns/{id}/reverse_deliveries— attach return tracking{ "tracking_company":"UPS","tracking_number":"1Z…" }GET /returns/self-serve—{ settings: { enabled, approval: "review"|"auto", refund, exchange, return_address }, return_rules, page_path }PUT /returns/self-serve— any subset ofsettings. Turningenabledon needs areturn_address, and at least one ofrefund/exchange.
source (merchant | customer), resolution (refund | exchange | null),
customer_note, photos[], settlement ({ kind, message, refunded_cents, replacement_order_id, replacement_order_number, at })
and, per line, title, exchange_variant_id and exchange_variant_title.
Return reasons: unwanted, defective, wrong_item, size_too_small, size_too_large, other.
Restock types: no_restock, cancel, return. Emits returns/request|approve|decline|close.
For a customer return asking for money back,
POST /returns/{id}/close refunds the items (minus the
restocking fee in the return rules) to the original payment; send { "refund": false } to close
without refunding. For a customer exchange, approve creates the replacement order. For returns you
create yourself, closing records refund intent in the event payload; issuing the refund runs
through the payment ledger (transactions/refunds).