Create a return shipment via POST /shipments with is_return set to true; swap the to_address and from_address compared to the original outbound shipment so the label routes back to your warehouse
Purchase the return label using the desired carrier and service; retrieve the label_url for PNG or PDF format and the tracking_number
Send the label URL or a QR code representation to the customer via email; for boxless returns, use the EasyPost QR code label feature if the carrier supports it
Associate the return tracking number with the original order in your OMS using EasyPost's Tracker API; create a Tracker object if one is not automatically created at label purchase
Subscribe to tracker.updated webhook events filtered to the return tracking number to receive real-time status updates (in transit, out for delivery back to warehouse, delivered)
Trigger receiving workflows in your WMS when the tracker status transitions to delivered so the returned item can be inspected and dispositioned
Known gotchas
Pre-paid return labels that are never used still incur a label void cost with some carriers if not voided within the allowed window; implement an automated void job for labels unused after your return window closes
EasyPost return shipments with is_return=true affect rating: some carrier accounts have separate rate schedules for return labels versus outbound labels
Customer-generated return labels may be for a different weight than the original outbound shipment; dimensional weight recalculation at carrier induction can result in additional charges billed to your account
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp