The consent you collected two years ago belongs to a person. The phone number belongs to a carrier. When that person drops the number and a stranger gets it months later, your CRM still says "opted in." The stranger never agreed to anything. Under the TCPA, a text or autodialed call to that stranger can carry statutory damages of $500 to $1,500 per message.
The FCC built the Reassigned Numbers Database (RND) to close that gap. It is one of the few compliance tools that comes with a written legal safe harbor. The safe harbor is narrower than most sales ops teams assume, and the database only answers one question. This post covers what the RND is, how to query it, what the safe harbor protects, and where it fits next to the other scrubs you should already run.
What the Reassigned Numbers Database actually is
The RND is a federal lookup service run for the FCC by an outside administrator (SomosGov). It went live in late 2021. US voice providers report numbers that have been permanently disconnected, and the database stores the date of each disconnection.
The question it answers is this: has this number been permanently disconnected since a date I give you?
You supply two things:
- The phone number
- A date. This is the date you obtained consent, or the most recent date you could reasonably be confident the number still belonged to your consenting contact.
The database returns one of three answers:
| Response | What it means | What you should do |
|---|---|---|
| Yes | The number was permanently disconnected after your date, so it may now belong to someone else | Suppress it. Do not call or text it until you get fresh consent from whoever holds it now |
| No | No permanent disconnection was reported after your date | Generally OK to contact, and this is the response the safe harbor covers |
| No data | The database can't answer, for example because your date is earlier than its records | Treat it as unverified. No safe harbor applies |
Why it matters at scale: the FCC has estimated that roughly 35 million US numbers are disconnected each year. Not all of them get reassigned, but numbers are recycled after a short aging period (about 45 to 90 days). A list you haven't touched in a year is very likely to contain some numbers that now belong to other people.
How the safe harbor works, and where it stops
Before the RND, the FCC had a "one free call" rule for reassigned numbers. A federal appeals court struck it down in 2018 (ACA International v. FCC). The RND safe harbor replaced it, and its conditions are specific.
It protects you when:
- You queried the RND, using the most recent update of the data
- You got a "No" response
- The number had in fact been reassigned, and the database was wrong
In that case, the database's error is the reason you reached the wrong person, and the rule shields you from TCPA liability for that contact.
It does not protect you when:
- You never checked
- You checked months ago and the database has updated since. Providers report monthly, so a stale check is a weak check
- You got "Yes" and contacted the number anyway
- You got "No data"
- The date you entered was a guess you can't back up
The last point is the one that hurts in litigation. The burden is on you to show you checked correctly, and that includes the consent date you entered. If your records can't show when the contact actually opted in, you can't show you used the right date. Ready records a sender's opt-in attestation for each campaign you send and each API send that attests consent (who sent, to how many, when). That is not a per-contact consent record. The opt-in date, wording and page URL for each contact have to live in your own system. Our guide on documenting SMS consent so it holds up covers the fields to keep.
One more framing point. The safe harbor reduces risk; it doesn't make you immune. Compliance stays the sender's responsibility.
How to query it
The RND is a subscription service. A business registers on the RND site, gets approved, and buys a subscription. Subscriptions are tiered by query volume and length. Check the current pricing there; we don't quote it here because it isn't ours to quote.
There are three ways to query:
- Single lookup in the web interface. This is fine for checking a handful of numbers by hand.
- Bulk file upload. You submit a CSV of numbers and dates and get the results back. This is the practical option for campaign prep.
- API. This is for platforms that want the check inline before sending.
Agents and resellers can query on behalf of a caller, but the safe harbor still turns on whether the check was done properly. If a vendor runs it for you, get the results file and keep it.
When to run it
Run it close to send time, and after the monthly data update. A practical cadence:
- Before any re-engagement campaign to contacts you haven't messaged in 90 days or more
- Before reactivating an old segment, such as dormant customers or last year's event signups
- Monthly, on active lists, if your volume justifies the subscription tier
How fast a list goes stale depends on where it came from. We break that down in how fast each list source rots and when to re-scrub.
The RND is one check, not the whole hygiene stack
A clean RND result tells you the number hasn't been permanently disconnected since your date. It doesn't tell you any of the following:
- Whether the number is a landline you shouldn't be texting
- Whether the number is a known TCPA litigator or a DNC complainer
- Whether the number is on the National DNC Registry, which matters for telemarketing calls to people without an existing relationship or written consent
- Whether the contact texted STOP to you last month
Each of these is a separate list with a separate purpose. Teams often scrub against one and assume they've covered all of them. That confusion is common enough that we wrote a whole post on it: the three separate lists compliance teams confuse.
Here is the order we'd run them in for a list you're about to text or call:
- Opt-out suppression. Anyone who replied STOP is out, permanently, across every campaign.
- RND query against each contact's consent date. Suppress every "Yes" and hold every "No data."
- Number validation. Drop invalid numbers and landlines.
- Litigator and DNC scrub. Suppress known serial plaintiffs and complainers.
- Quiet hours. Hold sends outside permitted local hours for the recipient. Campaigns, drip campaigns and automations wait up to 24 hours for the window; a one-to-one or API text is held only if the window opens within 6 hours, otherwise it is refused and must be resent; a one-to-one reply to someone who texted you in the last 24 hours goes out at any hour.
Where Ready fits, and where it doesn't
To be clear about scope: Ready does not query the FCC Reassigned Numbers Database. If you want the RND safe harbor, you need your own RND subscription, or a vendor that runs the query for you. Our tools cover steps 1 and 3 through 5 above.
Opt-outs. Inbound STOP and UNSUBSCRIBE replies are honored automatically. The opt-out propagates so the contact can't be messaged again across campaigns. Opt-outs and numbers on your Ban list are refused up front and aren't charged. Platforms can read the list with GET /v1/opt-outs or check a single number with GET /v1/opt-outs/:phone.
Number validation. GET /v1/validate/:phone checks a number before you send to it. Known landlines are refused at send time on every account. Landline validation adds a send-time lookup for the rest; it costs $0.003 per segment and is off by default. Validation won't tell you a mobile number has changed hands; only the RND answers that.
Litigator and DNC scrub. The standalone scrub is $0.005 per contact. It checks each number against known TCPA-litigator lists and DNC-complainer lists and flags matches. Platforms can call GET /v1/scrub/:phone per number. You can also switch scrubbing on for an account, in which case it's billed at $0.003 per segment on sends. Like landline validation, it's off by default. The scrub API post covers the platform integration. Endpoint details are at docs.tryready.com.
Quiet hours. A campaign, drip or automation text sent during the recipient's quiet hours is held for up to 24 hours and sent later, and it's charged only when it sends. A one-to-one or API text is held only if sending opens within about 6 hours; otherwise it's refused, and you send it again once sending opens.
Worked example: prepping a dormant list
These numbers are assumptions for illustration.
- You have a 12,000-contact list of past customers who opted in to texts 14 to 20 months ago.
- You run the RND bulk check against each contact's stored opt-in date. Assume 4% come back "Yes" and 1% come back "No data." That removes 600 contacts and leaves 11,400.
- You run the standalone litigator and DNC scrub on the remaining 11,400: 11,400 contacts at $0.005 each.
- Assume the scrub flags 30 numbers. That leaves 11,370 contacts.
- You send a 140-character, single-segment message with no emoji on Standard. That's 11,370 × $0.0075 = $85.27 in rate plus 11,370 × $0.0045 in carrier fees, plus $57 for the 11,400-contact scrub.
Ready's all-in prices per segment include the carrier fee but not screening: Scrub lists and Number validation, the two switches in Settings under Compliance, each add $0.003 per segment when switched on, shown as screening on your bill, and both are off by default. Unless you turn the opt-out footer off, the first text to each contact, and one again from time to time, also gets "Reply STOP to opt out" and your business name if the message does not already have them, so a text close to the segment limit can bill one more segment.
Compare the scrub to the downside. One reassigned-number plaintiff who receives one text is looking at $500 to $1,500 in statutory damages before legal fees. Plaintiffs in these cases usually claim many messages, not one. The RND subscription and the scrub together cost a small fraction of a single claim.
The takeaway for compliance owners and sales ops
The RND answers one narrow question: has this number been disconnected since the day I got consent? If you query current data with an accurate consent date and get a "No," you get a real safe harbor for the database's mistakes.
To make it work:
- Store a real opt-in date for every contact, because the safe harbor depends on it
- Query the RND close to send time, especially before re-engaging older segments
- Treat "Yes" and "No data" as do-not-contact until you have fresh consent
- Run validation, litigator and DNC scrubs, opt-out suppression and quiet hours alongside it
If you already run the RND check and want the rest of the stack handled at send time, you can test Ready on your own data. The first 20 one-to-one texts are free, and to send any text you need a card and a number ($2 a month, the first month charged when you get it). Get started at /signup.