Troubleshooting: US toll-free sender blocked with TFV_REQUIRED
US carriers (Verizon, AT&T, T-Mobile) treat A2P SMS and MMS from unverified toll-free numbers as guaranteed-throttle traffic — they filter it, cap it to a trickle, or drop it entirely. To keep that send from burning credits on a guaranteed-no-deliver request, Orbit’s send preflight rejects the request synchronously with422 TFV_REQUIRED until your sender’s tfv_status reads approved.
The message is never queued and never handed to a carrier.
The gate refuses the send before it is queued, so a retry loop only
re-trips the 422. The move is a one-time verification filing, not a
retry schedule.
Match the status to its meaning
The error body names the status so you do not have to guess which lane
you are in:
message text changes per status: pending says the review is in
flight (expect 1–3 business days), and rejected asks you to amend the
use-case and sample messages and re-submit.
Reproduce the block
Send an SMS or MMS wherefrom is a toll-free number on your account
and to is a US recipient:
Confirm the number’s status
Two read-backs tell you where the number stands.-
The account-level trust hub. Call
GET /api/v1/brand-identity/statusand find themessaging_toll_freeentry — a gated number shows that channel ataction_requiredwith adetaillike “1 of 3 numbers verified”, and it raises thenextActionspriority list accordingly: -
The number itself. Open Settings → Numbers in the dashboard
and read the number’s Toll-Free Verification status, or query the
number list over the API — every toll-free row carries a
tfv_statusfield (not_submittedwhen no filing exists).
detail on the brand-identity hub that counts verified toll-free
numbers is the fastest sweep: it tells you whether the gate will fire
for every toll-free sender on the account, not just the one that
tripped.
Submit Toll-Free Verification
Verification is a carrier-side filing Orbit submits on your behalf — the information comes from you, the queue belongs to the carrier.- Open Settings → Compliance in the dashboard and start the Toll-Free Verification form for the gated number.
- Fill in the business details (name, website, contact email and
phone) plus the fields carriers screen the filing on:
- a use case label (the category list mirrors the carriers’
fixed enum —
2FA,Marketing,Customer Care, and so on); - a use-case summary describing the traffic you actually send;
- one to five sample messages copied from your live templates.
- a use case label (the category list mirrors the carriers’
fixed enum —
- Submit. The number’s
tfv_statusmoves topendingimmediately, and the carrier review typically clears in 1–3 business days. - Send again once the status flips to
approved— the gate drops that entry from its block list without any change on your integration.
Carriers review the filing against what you declare, so an accurate
use case and real sample messages clear faster than a generic one.
Lead times are expectations, not guarantees.
Wait for the review
Whiletfv_status is pending, the carrier decides — not Orbit. Do
not retry the blocked sends in a loop: they return the same 422 and
burn rate-limit budget without changing the outcome. Poll the status
with the read-backs above and queue or hold the traffic until the
filing clears.
If a pending status sits well past a week, that is escalation
territory — see Escalation.
Recover from rejected
Arejected status is terminal like pending is not: only a new
filing moves the number back into review.
- Read the rejection note on the number’s compliance card —
Settings → Numbers → the number → Toll-Free Verification — or in
the
messaging_toll_freechannel’sreasonon the brand-identity hub. - Amend what the carrier named. In practice the decline lands on the use case (does not match the traffic) or the sample messages (do not demonstrate the declared use). Resubmitting an unchanged form earns a faster second rejection.
- Re-submit the amended form through the same Settings →
Compliance path. The status re-enters review at
pendingwith a fresh 1–3 business-day expectation.
Scope of the gate
The preflight is deliberately narrow. It fires only when all of these hold at once:- the sender is a toll-free number owned on your account (platform pool senders and shared defaults bypass it);
- the channel is SMS or MMS — voice, email, WhatsApp, RCS, and the other channels never consult TFV;
- the recipient resolves to US (by the account’s country hint, or
the
+1NANP prefix when no hint is sent).
Escalation
Escalate to support when the fix above cannot land — apending filing
that has sat for over a week, or a rejected verdict whose reason you
cannot resolve with the documents you hold. Include:
- The toll-free number (E.164) and the destination country.
- The current tfv_status — copied from Settings → Numbers or
the
messaging_toll_freeentry onGET /api/v1/brand-identity/status. - The message ID or request ID from a rejected send (
error.codeplusmeta.request_id), and the timestamp with timezone.
Related references
- Sender-ID Registration — the
broader registration lifecycle for alphanumeric senders and the
pending → approved / rejectedstatuses. - Brand Identity API — the consolidated trust-posture read used above, with the toll-free channel key and the next-actions list.
- Error Codes — the full table where
TFV_REQUIREDis catalogued alongside the other 422 gates. - FAQ — the shorter one-paragraph summary of this same gate.