Number Porting Explained: LOA, Timelines, and What Goes Wrong
Porting a number sounds simple, “move my number to a new provider”, but it’s a regulated, multi-party handshake that fails in predictable ways: a mismatched address, a pending order, a wrong account number. Here’s how porting actually works, why the losing carrier rejects requests, and how to avoid the rejections that drag a port out for weeks.
2026-05-26 · 9 min read
By Daria Kesselman · DIDHub editorial
1. What porting actually is
Number porting is the process of moving a phone number from the provider that currently serves it, the losing carrier (also called the donor or current carrier), to a new provider, the gaining carrier (also called the winning or recipient carrier), while keeping the number itself unchanged. Your customers keep dialing the same digits; only the carrier underneath changes.
This is a legal right in most countries, codified as Local Number Portability (LNP). In the US it’s mandated by the FCC; the EU mandates it under the European Electronic Communications Code; and most developed telecom markets have an equivalent regime. The principle is the same everywhere: the number belongs to the subscriber’s right to use, not to the carrier, so a carrier cannot hold a number hostage to keep you as a customer.
The important mental model: porting is not a file transfer. Nothing about the number’s digits moves. What changes is the routing record in the industry databases that tell every other carrier where to send calls and texts for that number. In North America that’s the NPAC (Number Portability Administration Center); other countries run their own central reference databases. When a port completes, that record is updated to point at the gaining carrier, and traffic follows.
Because that record is shared infrastructure that every carrier trusts, you can’t simply rewrite it. The gaining carrier has to ask the losing carrier to release the number, and the losing carrier has to validate the request before it agrees. That request-and-validate exchange is the heart of porting, and the place everything goes wrong.
2. The LOA & the port-request handshake
Two artifacts drive every port: the LOA (Letter of Authority) and the port request itself.
The LOA is a signed document in which you, the number’s owner, authorize the gaining carrier to act on your behalf and request the port from your current provider. It proves to the gaining carrier that the person asking to move the number is entitled to. Critically, the details on the LOA, the account holder name, service address, and the numbers being ported, must match what the losing carrier has on file. The LOA is validated against the losing carrier’s own records, not against what you believe is true.
The single best way to get the LOA right is to copy your details from the losing carrier’s CSR (Customer Service Record), the authoritative account record the losing carrier maintains. If the LOA matches the CSR, the port sails through. If it doesn’t, it gets rejected. Here’s the full handshake:
Gather authority and account data
You sign the LOA and hand the gaining carrier the number(s), the account number with the losing carrier, the account-holder name, the service address, and any port-out PIN or passcode the losing carrier requires.
Gaining carrier submits the port request
The gaining carrier files a request (an LSR, Local Service Request, in North America) to the losing carrier listing the numbers, the account details, and the requested cutover date.
Losing carrier validates
The losing carrier checks the submitted details against its CSR. It confirms the account is active, the numbers are on it, the holder matches, and there’s no block or pending change in the way.
Accept with a FOC, or reject with a reason
If everything matches, the losing carrier accepts and returns a FOC date, its firm commitment to release the numbers. If anything is off, it returns a rejection with a coded reason, and the clock resets until you resubmit.
Cutover at FOC
On the FOC date and time, the routing record is updated to the gaining carrier. Calls and texts begin landing on the new provider. The number never stopped existing, it just changed hands.
The validation step is gated deliberately. Carriers validate hard to prevent slamming, an unauthorized port that moves a number without the owner’s consent, and the fraud that rides on it (porting a victim’s number to intercept their calls and one-time passcodes). The friction you feel filling out account numbers and PINs is the same friction that stops someone else from stealing your number. It is a feature, not a bug.
3. FOC dates & realistic timelines
The FOC (Firm Order Commitment) is the date, and often the specific time window, on which the losing carrier commits to releasing the number. Nothing visible happens before FOC; the cutover happens at FOC. So the question “how long does a port take” really means two things: how long until you get a FOC, and how far out that FOC is set. Both vary by number type and market.
| Number type / scenario | Typical timeline |
|---|---|
| US wireline (simple) | Roughly 1–4 business days once the request validates clean. |
| US wireless / mobile | Fastest by regulation, often a few hours up to one business day, given correct account number and port-out PIN. |
| US toll-free | Typically 2–4 business days; governed by RespOrg change rather than a geographic LSR, and sensitive to the current routing status. |
| Business / PRI / complex | Longer, often 1–3 weeks. Multi-line accounts, hunt groups, and bundled services need coordination and sometimes a scheduled cutover. |
| Large blocks (project ports) | Scheduled by agreement between carriers, the FOC is negotiated, not standard, and the cutover happens on a planned date. |
| International | Varies widely, from a few days to several weeks depending on the country’s regulator, the losing carrier, and any local documentation or KYC requirements. |
Two things stretch these numbers in practice. The first is rejections: every rejection resets the clock, because you have to correct the request and resubmit, and the losing carrier’s validation window starts over. A port that should take two days can take two weeks if it bounces three times on a mismatched address. The second is the FOC itself being set further out than you’d like, losing carriers are not obligated to release a number tomorrow just because the request was clean today. Plan around the FOC, don’t assume it.
4. Why ports get rejected
This is where ports live or die. A rejection is almost never “you can’t have this number”, it’s “the details you submitted don’t match what we have on file,” or “something on the line is blocking it.” Almost every rejection is a data-hygiene problem you can fix and resubmit. Here are the ones that account for the overwhelming majority of delays:
| Rejection reason | What it means | How to fix |
|---|---|---|
| Account-number mismatch | The account number on the request doesn’t match the losing carrier’s record, often a transposed digit, or the billing account vs. the line account. | Pull the exact account number from a recent bill or the CSR. Submit it verbatim, including any leading zeros or prefixes. |
| CSR / address mismatch | The service address on the LOA doesn’t match the address the losing carrier has on file, a suite number, “St” vs. “Street,” or an old address that was never updated. | Request the CSR from the losing carrier and copy the address exactly as written, formatting and all. Match the CSR, not the mailing address. |
| Wrong PIN / passcode | Mobile and many consumer accounts require a port-out PIN or passcode that wasn’t supplied or was incorrect. Common cause of one-day mobile ports stalling. | Generate or retrieve the port-out PIN from the losing carrier’s app or account portal before submitting. Some carriers issue a one-time number-transfer PIN. |
| Name mismatch | The authorized name on the LOA doesn’t match the account holder, e.g. a personal name when the account is in the company’s legal name, or a since-changed business entity. | Use the exact account-holder name from the CSR. For business accounts, match the registered legal entity, not a trade name or an employee’s name. |
| Pending order on the line | There’s an open order on the account, a feature change, an address move, or another port already in flight, and the carrier won’t process a second change concurrently. | Let the pending order complete (or cancel it) with the losing carrier, then resubmit the port once the account is in a clean state. |
| Number inactive / disconnected | The number isn’t active, it was suspended, disconnected, or the account was already cancelled. A disconnected number is released and can no longer be ported. | Keep the account active and the number in service until the port completes. If it was disconnected, ask about any recovery window, but assume it’s gone. |
| Hunt group / bundled service | The number is part of a hunt group, a trunk group, or a bundle, and can’t be released in isolation without breaking the rest of the service. | Coordinate with the losing carrier to remove the number from the group or unbundle it first, or schedule the affected numbers together as a project port. |
A word on contracts and early-termination fees: these do not block a port, and they are not a valid rejection reason. You can port out while still under contract, the losing carrier may still bill you any early-termination fee per your agreement, but it cannot refuse the port over money owed. Don’t let a retention conversation convince you otherwise. Equally, submitting the wrong number type, filing a toll-free number as a geographic wireline, say, will bounce; make sure the request matches what the number actually is.
5. The pre-port checklist
Nearly every delay in sections above is preventable at the kitchen table, before the request is ever filed. Run this list first:
- Keep the losing account active. Do not cancel or disconnect service to “free up” the number, cancelling releases the number and the port fails. Port first, cancel after the number has landed on the new provider.
- Match the CSR exactly. Request the Customer Service Record from the losing carrier and copy the account-holder name and service address verbatim onto the LOA, same spelling, same suite, same abbreviations.
- Gather the account number. Take it from a recent bill, not from memory. Note whether the losing carrier uses a separate billing account number vs. a line/circuit identifier.
- Retrieve the port-out PIN or passcode. Especially for mobile numbers, generate it in the carrier’s app ahead of time so it doesn’t stall the request.
- Clear pending orders. Make sure there’s no open feature change, address move, or in-flight port on the account before you submit.
- Check for bundles and hunt groups. If the number is part of a group or bundle, plan how it’ll be removed or ported alongside its siblings.
- Plan to reconfigure features. You keep the number, but features tied to the old carrier, voicemail, specific routing, e911 registration, do not travel with it. Be ready to set those up on the new provider after cutover.
6. How DIDHub handles port-in
When you port a number into DIDHub, we run the gaining-carrier side of the handshake for you. You provide the LOA and the account details, the account number, holder name, service address, and any PIN, and DIDHub submits the port request to your losing carrier, validates the details against what they need, and tracks the request through to a FOC date. If the losing carrier rejects, we tell you exactly which field bounced and what to correct, rather than leaving you to decode a carrier reason code.
Once the FOC lands and the cutover completes, the number arrives on your DIDHub account ready to route, point it at your SIP trunk, PBX, softphone, or AI voice agent the same way as any DIDHub-provisioned number. There’s no second migration step; the ported number behaves like a native one.
For US numbers, ports completed into DIDHub also benefit from STIR/SHAKEN A-attestation, because once the number is ported in under us we have the verified relationship to the Caller ID that full attestation requires, the same posture covered in STIR/SHAKEN explained. That matters directly for answer rates on outbound calls.
To start a port or check whether a specific number range is portable to us, see the port-in page, or email [email protected] with the numbers and current carrier and we’ll tell you what to expect.
Bottom line
Porting is a handshake, not a transfer, the gaining carrier asks, the losing carrier validates, and the number changes hands at a committed FOC date. It fails on mismatched details far more often than on anything structural. So match the CSR exactly, keep the losing account active until the number lands, gather the account number and PIN up front, and expect a FOC rather than an instant switch. Do that and most ports go clean on the first submission. Get the details wrong and a two-day port becomes a two-week one. The details are the whole game.
More from the blog
A2P 10DLC Registration: Getting Your US SMS Actually Delivered
US carriers require A2P traffic on 10-digit long codes to be registered through The Campaign Registry. We explain brand + campaign registrat
AI Voice Agents Need Real Phone Numbers
Vapi, Retell AI, ElevenLabs, Bland, Synthflow, LiveKit Agents, Pipecat, AI voice platforms need real DIDs with STIR/SHAKEN A-attestation, re
Branded Calling Explained: Logo & Verified Name on Caller ID
Complete guide to branded calling: the four major programs (Hiya, First Orion, TNS, Google Verified Calls), how Rich Call Data fits, what sh
CNAM & Caller ID: Why Your Business Name Doesn’t Show
In North America the receiving carrier looks up your caller ID name via a CNAM dip, you don't send it. We explain why your business name doe
Ready to get a number?
Pick a DID in 130+ countries from $1.99/month. Activates instantly on most numbers.