Create a Shippo shipment with the 'is_return' field set to true in the shipment POST body; swap the 'address_from' and 'address_to' compared to the outbound shipment so the customer address is the origin.
Include 'extra' object with any return-specific options such as signature confirmation; not all options available on outbound labels are supported on return labels.
Retrieve rates from the returned 'rates' array and select an appropriate service; return labels often have specific carrier programs (e.g., USPS Return Service) that appear in the rates.
Purchase a transaction using the chosen rate's 'object_id'; the resulting label 'label_url' can be emailed to the customer or included in the package.
Store the return transaction's 'tracking_number' to monitor when the package is dropped off and in transit.
Known gotchas
Return labels are not pay-on-scan by default through Shippo; the postage is charged at purchase time regardless of whether the customer uses the label.
Not all carrier services support return label creation via the 'is_return' flag — verify supported return services for each carrier before offering this option.
USPS return labels generally do not expire, but UPS and FedEx return labels may have validity windows — communicate this to customers.
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