Claim refunds on shipping labels you bought but never used

Every Monday, find the labels you paid for but never shipped, request the refunds automatically, and post the recovered total to your shipping ops channel.

Agentic Task
EasyPostGoogle SheetsSlack BotOperationsFinanceNotifications & AlertsAI Reports
PromptCreate

Every Monday at 8am, hunt down postage I paid for but never used and claim the money back. Start with EasyPost List Shipments to pull every label purchased in the last 30 days, paginating until you have the full set.

Before requesting anything, read the existing reclaim ledger in Google Sheets with Get Values. Any tracking code already recorded there as submitted or refunded is done, so drop it from this run. We must never double request a refund on the same label.

For each remaining label, check its tracker with EasyPost Retrieve Tracker, or use List Trackers to pull them in bulk when that is more efficient. The unused label signal is a tracker sitting at unknown or pre_transit with no scan events recorded, meaning the carrier never took possession. A tracker at in_transit or any status beyond it means the label was consumed, so it must never be refunded under any circumstances.

Use judgement about what a quiet tracker actually means. A label bought a few hours ago with no scan is almost certainly just waiting on the carrier's first scan, not an abandoned label. Respect a configurable grace period, default 5 days, measured from the label purchase date: nothing gets a refund request until it has been quiet for at least that long. If a carrier is known to be slow to post first scans, lean toward waiting rather than refunding a label that is genuinely in the network.

For each label that clears those checks, call EasyPost Refund Shipment. Read the refund_status that comes back, which can be submitted, refunded, rejected, or not_applicable. Treat these as genuinely different outcomes. Since 18 October 2025 USPS applies a 14 day hold before processing a refund on a never scanned label, so a request coming back as submitted rather than refunded is the normal case, not a failure. Record the pending state honestly and never report a submitted refund as money already recovered.

Log every outcome to the reclaim ledger in Google Sheets with Append Values, one row per label: purchase date, carrier, service level, tracking code, label cost, refund status, and the date the request was made. This ledger is what the next run reads to skip anything already handled, so write it even when the refund was rejected or not applicable.

Finish with Slack Bot Send a Message to the shipping ops channel summarizing the run: how many labels were submitted for refund, the total dollars now in flight, anything the carrier rejected along with the reason, and how much has actually settled. Keep the in flight total separate from the settled total so nobody counts the money twice.

USPS only accepts unused label refund requests within 30 days of the label being printed. Call out separately in the Slack summary any unused label that is approaching that cutoff, roughly 25 days old or more, and flag it as needing a person to chase before the window closes. That escalation list is the most time sensitive part of the message, so put it where it will not be missed.

What does this prompt do?

  • Reviews every shipping label you bought in the last 30 days and picks out the ones the carrier never collected or scanned
  • Waits out a grace period you control, five days by default, so a label with a slow first scan is never mistaken for an unused one
  • Requests the refund on each genuinely unused label, then logs it to a running spreadsheet ledger with the purchase date, carrier, service level, tracking code and cost
  • Skips anything already claimed by reading the ledger first, so the same label is never submitted twice
  • Sends your shipping ops channel a Monday summary: refunds now in flight, dollars involved, anything the carrier turned down, and any label running out of time that needs a person

What do I need to use this?

  • An EasyPost account that you use to buy shipping labels
  • A Google Sheet to hold the reclaim ledger, with a tab for the logged refund history
  • A Slack workspace and a channel for your shipping or fulfillment team
  • A rough sense of how long your carrier normally takes to record a first scan, so you can set the grace period

How can I customize it?

  • Change the grace period before a quiet label counts as unused, five days by default, or set it higher if your carrier is slow to scan
  • Change the schedule, the Slack channel it reports to, and how far back it looks for labels
  • Adjust when a label gets escalated to a person, so you get a warning further ahead of the refund deadline
  • Add your own ledger columns, such as the order number or the warehouse the label was printed at

FAQs

How do you know a label was really never used?
The workflow looks for labels the carrier has never recorded any movement on. If a label was bought days ago and the carrier still has no record of collecting or scanning the parcel, that is the signature of a label that was printed and then abandoned. Anything that has started moving is left alone.
Could it request a refund for a package that is actually on its way?
No. As soon as the carrier records a first scan, the label counts as used and is excluded permanently. The grace period exists for exactly this reason: it gives slow carriers time to report that first scan before anything is claimed.
How long does it take to get the money back?
Not instantly. USPS holds unused label refund requests for a waiting period before processing them, so a request usually sits in a pending state for a couple of weeks first. That is why the ledger tracks the current status of each claim rather than assuming the money has already landed, and why the Slack summary keeps money in flight separate from money actually recovered.
Can it request the same refund twice?
No. It reads your existing ledger before doing anything and skips any label already recorded as submitted or refunded, so a label is only ever claimed once no matter how many times the workflow runs.
Is there a deadline for claiming these refunds?
Yes. USPS only accepts unused label refund requests within 30 days of the label being printed, which is why this runs weekly rather than monthly. Any label getting close to that cutoff is called out in the Slack summary so someone can chase it before the window closes. It covers labels across the carriers you buy through, and records the carrier on every claim, but eligibility rules and deadlines vary by carrier so the built in warning follows the USPS window.

Related templates

Prospecting desk that builds account lists from the live web

Stop buying stale lists. Reps run a saved search, work the results like an inbox, and only the accounts they approve ever reach your CRM.

Hyperbrowser
HubSpot
Google Sheets
App
Share of voice dashboard for your brand and competitors

See how your brand's news coverage and sentiment stack up against four competitors, then let an assistant write the weekly report for you.

GDELT
Notion
Slack Bot
App
Approval war room for every social post awaiting sign-off

One screen showing every social post waiting on approval, sorted by deadline, so reviewers can approve or reject without leaving the page.

Hootsuite
Slack Bot
App
Turn champion job changes into new pipeline in Attio

Every Monday, find the past champions and closed-won contacts who changed jobs, update Attio, and get the moves worth chasing in Slack.

Boomerang
Attio
Slack Bot
Agentic Task
Collect social post requests and schedule them in Hootsuite

Staff submit what happened, your social manager edits the copy, picks the accounts and puts it on the calendar without a single spreadsheet.

Hootsuite
Slack Bot
General Input Database
App
Influencer campaign roster board with AI creator briefs

Drag creators through Sourced to Wrapped on a board grouped by campaign, with audience stats on every card and a one-click brief for each creator.

HypeAuditor
Google Sheets
Notion
App

Stop paying for postage you never used.

Put this on your Monday morning schedule and let it chase every abandoned label before the refund window closes.