Skip to main content

Checking Portability for Regular Numbers

Bandwidth provides the /accounts/{accountId}/lnpchecker API to allow customers to access portability information about regular (non-toll free) telephone numbers.

This information is necessary to identify which telephone numbers can be ported together when the customer plans to use the /accounts/{accountId}/portins API to create stand-alone port-ins. If the customer prefers to use /account/{accountId}/bulkPortins, the bulk port-in software will take care of creating the stand-alone child port-ins for any telephone numbers that can be ported together.

Query Parameters

When using the /lnpchecker API there is an important query parameter called “fullcheck” that affects what information is returned.

fullcheck valueDescriptionComment
false (default)Omits carrier information and partner supported rate center informationUse this, or omit the query parameter entirely if:
  • You only want to port on-net (tier 0) numbers
  • You only want to know if the numbers are portable, not if they can be ported together
trueIncludes carrier information, but omits partner supported rate center informationUse this value if:
  • You only want to port on-net (tier 0) numbers
  • You want to see the losing carrier information
onnetportabilityIdentical to “true” valueSee “true” value.
offnetportabilityIncludes all rate center and losing carrier informationUse this value if:
  • You want to port both on-net and off-net numbers
  • You want to see the losing carrier information
  • You want to see partner supported rate center information

Interpreting Results

The /lnpchecker API can return the following elements in its 200 response payload. Here is what they mean:

ElementDescription
PortTypeWhen a port-in is created, it is assigned a port type by Bandwidth that indicates how the port-in will be processed. Possible port types are: MIXED, Automated (on-net and off-net), Internal, Manual off-net, and Manual on-net.
  • MIXED: You have a mix of portable and non-portable numbers, or yourportable numbers fall into more than one port type.
  • AUTOMATED: Bandwidth has an automated interface to our on-net oroff-net porting vendor to process this port-in.
  • INTERNAL: The numbers are already on Bandwidth’s network, so the portwill move the number from a losing account to the account thatsubmitted the port.
  • MANUALOFFNET: The numbers are in a rate center where Bandwidthprovides support through a partner for which we do not have anautomated porting interface.
  • MANUALONNET: (Rare) There are too many on-net numbers to be ported inan automated port. This port will be handled as a project port.
PortableNumbersThis is a list of all of the numbers that are portable. It does not indicate that the numbers can be ported together in a single port-in request. Any numbers that were provided in the request payload that are not included in the PortableNumbers list are not portable to Bandwidth.
SupportedRateCentersThis section lists rate centers where Bandwidth has on-net coverage for one or more of the numbers in the request payload.
UnsupportedRateCentersIf the fullcheck query parameter was omitted, set to false, true, or onnetportability, UnsupportedRateCenters indicates rate centers where Bandwidth does not have on-net coverage.

If the fullcheck query parameter was set to offnetportability, UnsupportedRateCenters indicates rate centers where Bandwidth has neither on-net nor off-net coverage.

Telephone numbers in unsupported rate centers are not portable.
PartnerSupportedRateCentersThis element is only present only if the fullcheck query parameter is set to offnetportability. Bandwidth supports these rate centers by using an off-net partner.
SupportedLosingCarrier.This element is only present only if the fullcheck query parameter is present and not set to false. This section maps numbers to the carrier that hosts the numbers prior to being ported to Bandwidth. Numbers from different losing carriers must be ported in separate ports.
UnsupportedLosingCarriers(Rare) This element is only present only if the fullcheck query parameter is present and not set to false. This section maps numbers to carriers from which Bandwidth cannot support porting numbers.
Telephone numbers hosted by unsupported losing carriers are not portable.

Port-in Request Rules

If you submit a port-in using /accounts/{accountId}/portins, all of the telephone numbers in the port-in request must:

  • Belong to the same losing carrier
  • Have the same port type
  • Belong to either a supported rate center or a partner supported rate center
  • For Automated off-net ports, belong to the same partner supported rate center
  • Be associated with the same service address
  • Be associated with the same billing telephone number
  • Be authorized to port by the same person

The first four bullets above may be determined using /lnpchecker results.

Sample Responses

In this section, we’ll compare and contrast the results for the same /lnpchecker request payload with the different combinations of query parameters.

Our sample request payload looks like the following:

<NumberPortabilityRequest>
<TnList>
<!--Automated on-net-->
<Tn>9199172854</Tn>
<!--Automated off-net-->
<Tn>2174477093</Tn>
<!--Internal-->
<Tn>2086433254</Tn>
<!--Manual off-net Canada-->
<Tn>6137230461</Tn>
<!--Unsupported RC No Coverage-->
<Tn>6052539874</Tn>
</TnList>
</NumberPortabilityRequest>

I’ve commented above each TN with the port type that it will fall into, as an aid to understanding the various response payloads.

For no query parameter, or fullcheck=false, we get the following response:

<NumberPortabilityResponse>
<PortType>MIXED</PortType>
<PortableNumbers>
<Tn>9199172854</Tn>
<Tn>2086433254</Tn>
</PortableNumbers>
<SupportedRateCenters>
<RateCenterGroup>
<RateCenter>BLACKFOOT</RateCenter>
<City>BLACKFOOT</City>
<State>ID</State>
<LATA>652</LATA>
<Tiers>
<Tier>0</Tier>
</Tiers>
<TnList>
<Tn>2086433254</Tn>
</TnList>
</RateCenterGroup>
<RateCenterGroup>
<RateCenter>RALEIGH</RateCenter>
<City>RALEIGH</City>
<State>NC</State>
<LATA>426</LATA>
<Tiers>
<Tier>0</Tier>
</Tiers>
<TnList>
<Tn>9199172854</Tn>
</TnList>
</RateCenterGroup>
</SupportedRateCenters>
<UnsupportedRateCenters>
<RateCenterGroup>
<RateCenter>ALSEN</RateCenter>
<City>ALSEN</City>
<State>SD</State>
<LATA>640</LATA>
<TnList>
<Tn>6052539874</Tn>
</TnList>
</RateCenterGroup>
<RateCenterGroup>
<RateCenter>BEASON</RateCenter>
<City>BEASON</City>
<State>IL</State>
<LATA>366</LATA>
<TnList>
<Tn>2174477093</Tn>
</TnList>
</RateCenterGroup>
<RateCenterGroup>
<RateCenter>OTTAWAHULL</RateCenter>
<City>OTTAWA-HULL</City>
<State>ON</State>
<LATA>888</LATA>
<TnList>
<Tn>6137230461</Tn>
</TnList>
</RateCenterGroup>
</UnsupportedRateCenters>
</NumberPortabilityResponse>

Notes:

  1. The PortType shows as MIXED because the telephone numbers are of several different types (as described in the comments in the request payload).
  2. The customer was not interested in showing if off-net telephone numbers are portable. Off-net telephone numbers have a higher cost, and some customers do not want to use them. So the PortableNumbers list only includes the internal TN and the automated on-net TN.
  3. The SupportedRateCenters list only includes rate centers that are on-net for Bandwidth.
  4. The UnsupportedRateCenters list includes all rate centers that are not on-net for Bandwidth.
  5. Again, because the customer was not interested in showing off-net telephone numbers, PartnerSupportedRateCenters are all lumped into UnsupportedRateCenters.
  6. For a TN to be portable in this query, it must belong to a supported rate center, and a supported losing carrier. But supported losing carriers are not shown, due to the query parameter setting or lack of a query parameter, so this query is not recommended.

For query parameter fullcheck=true, or fullcheck=onnetportability, we get the following response:

<NumberPortabilityResponse>
<PortType>MIXED</PortType>
<PortableNumbers>
<Tn>9199172854</Tn>
<Tn>2086433254</Tn>
</PortableNumbers>
<SupportedRateCenters>
<RateCenterGroup>
<RateCenter>BLACKFOOT</RateCenter>
<City>BLACKFOOT</City>
<State>ID</State>
<LATA>652</LATA>
<Tiers>
<Tier>0</Tier>
</Tiers>
<TnList>
<Tn>2086433254</Tn>
</TnList>
</RateCenterGroup>
<RateCenterGroup>
<RateCenter>RALEIGH</RateCenter>
<City>RALEIGH</City>
<State>NC</State>
<LATA>426</LATA>
<Tiers>
<Tier>0</Tier>
</Tiers>
<TnList>
<Tn>9199172854</Tn>
</TnList>
</RateCenterGroup>
</SupportedRateCenters>
<UnsupportedRateCenters>
<RateCenterGroup>
<RateCenter>ALSEN</RateCenter>
<City>ALSEN</City>
<State>SD</State>
<LATA>640</LATA>
<TnList>
<Tn>6052539874</Tn>
</TnList>
</RateCenterGroup>
<RateCenterGroup>
<RateCenter>BEASON</RateCenter>
<City>BEASON</City>
<State>IL</State>
<LATA>366</LATA>
<TnList>
<Tn>2174477093</Tn>
</TnList>
</RateCenterGroup>
<RateCenterGroup>
<RateCenter>OTTAWAHULL</RateCenter>
<City>OTTAWA-HULL</City>
<State>ON</State>
<LATA>888</LATA>
<TnList>
<Tn>6137230461</Tn>
</TnList>
</RateCenterGroup>
</UnsupportedRateCenters>
<SupportedLosingCarriers>
<LosingCarrierTnList>
<LosingCarrierSPID></LosingCarrierSPID>
<LosingCarrierName>Unknown</LosingCarrierName>
<LosingCarrierIsWireless>false</LosingCarrierIsWireless>
<LosingCarrierAccountNumberRequired>false</LosingCarrierAccountNumberRequired>
<LosingCarrierMinimumPortingInterval>6</LosingCarrierMinimumPortingInterval>
<TnList>
<Tn>6137230461</Tn>
</TnList>
</LosingCarrierTnList>
<LosingCarrierTnList>
<LosingCarrierSPID>979E</LosingCarrierSPID>
<LosingCarrierName>BANDWIDTH.COM:979E -NSR/1</LosingCarrierName>
<LosingCarrierIsWireless>false</LosingCarrierIsWireless>
<LosingCarrierAccountNumberRequired>false</LosingCarrierAccountNumberRequired>
<LosingCarrierMinimumPortingInterval>3</LosingCarrierMinimumPortingInterval>
<TnList>
<Tn>2086433254</Tn>
</TnList>
</LosingCarrierTnList>
<LosingCarrierTnList>
<LosingCarrierSPID>7024</LosingCarrierSPID>
<LosingCarrierName>Clarity Tel DBA Vast BBD:7024-NSR/1</LosingCarrierName>
<LosingCarrierIsWireless>false</LosingCarrierIsWireless>
<LosingCarrierAccountNumberRequired>false</LosingCarrierAccountNumberRequired>
<LosingCarrierMinimumPortingInterval>3</LosingCarrierMinimumPortingInterval>
<TnList>
<Tn>6052539874</Tn>
</TnList>
</LosingCarrierTnList>
<LosingCarrierTnList>
<LosingCarrierSPID>0121</LosingCarrierSPID>
<LosingCarrierName>Frontier Rochester:0121 -SVR/1</LosingCarrierName>
<LosingCarrierIsWireless>false</LosingCarrierIsWireless>
<LosingCarrierAccountNumberRequired>false</LosingCarrierAccountNumberRequired>
<LosingCarrierMinimumPortingInterval>3</LosingCarrierMinimumPortingInterval>
<TnList>
<Tn>2174477093</Tn>
</TnList>
</LosingCarrierTnList>
<LosingCarrierTnList>
<LosingCarrierSPID>6529</LosingCarrierSPID>
<LosingCarrierName>T-Mobile US:6529 - SVR/2</LosingCarrierName>
<LosingCarrierIsWireless>true</LosingCarrierIsWireless>
<LosingCarrierAccountNumberRequired>false</LosingCarrierAccountNumberRequired>
<LosingCarrierMinimumPortingInterval>1</LosingCarrierMinimumPortingInterval>
<TnList>
<Tn>9199172854</Tn>
</TnList>
</LosingCarrierTnList>
</SupportedLosingCarriers>
</NumberPortabilityResponse>

Notes:

  1. The PortType still shows as MIXED because the telephone numbers are of several different types (as described in the comments in the request payload).
  2. The customer was not interested in showing if off-net telephone numbers are portable. Off-net telephone numbers have a higher cost, and some customers do not want to use them. So the PortableNumbers list only includes the internal TN and the automated on-net TN.
  3. The SupportedRateCenters list only includes rate centers that are on-net for Bandwidth.
  4. The UnsupportedRateCenters list includes all rate centers that are not on-net for Bandwidth.
  5. Again, because the customer was not interested in showing off-net telephone numbers, PartnerSupportedRateCenters are all lumped into UnsupportedRateCenters.
  6. The SupportedLosingCarriers list includes the breakdown of which numbers belong to each losing carrier.
    1. The first losing carrier shows as “Unknown” because Bandwidth does not currently have access to Canada carrier data.
    2. The 2nd losing carrier is Bandwidth, so this number will port as an internal port.
    3. The remaining losing carriers are carriers other than Bandwidth.
  7. Note that each losing carrier has a sub-element called LosingCarrierMinimumPortingInterval. This is Bandwidth’s best estimate in calendar days of how long it typically takes for this particular carrier to port a number. This value can be used as input for making decisions about Requested FOC Date.
  8. For a TN to be portable in this query, it must belong to both a supported rate center and a supported losing carrier. The two portable numbers would have to be submitted in separate port-ins because one is Internal and one is Automated on-net.

For query parameter fullcheck=offnetportability, we get the following response:

<NumberPortabilityResponse>
<PortType>MIXED</PortType>
<PortableNumbers>
<Tn>9199172854</Tn>
<Tn>2174477093</Tn>
<Tn>2086433254</Tn>
<Tn>6137230461</Tn>
</PortableNumbers>
<SupportedRateCenters>
<RateCenterGroup>
<RateCenter>BLACKFOOT</RateCenter>
<City>BLACKFOOT</City>
<State>ID</State>
<LATA>652</LATA>
<Tiers>
<Tier>0</Tier>
</Tiers>
<TnList>
<Tn>2086433254</Tn>
</TnList>
</RateCenterGroup>
<RateCenterGroup>
<RateCenter>RALEIGH</RateCenter>
<City>RALEIGH</City>
<State>NC</State>
<LATA>426</LATA>
<Tiers>
<Tier>0</Tier>
</Tiers>
<TnList>
<Tn>9199172854</Tn>
</TnList>
</RateCenterGroup>
</SupportedRateCenters>
<PartnerSupportedRateCenters>
<RateCenterGroup>
<Vendor>Level 3</Vendor>
<AutomatedPort>true</AutomatedPort>
<RateCenter>BEASON</RateCenter>
<City>BEASON</City>
<State>IL</State>
<LATA>366</LATA>
<Tiers>
<Tier>3</Tier>
</Tiers>
<TnList>
<Tn>2174477093</Tn>
</TnList>
</RateCenterGroup>
<RateCenterGroup>
<Vendor>ThinkTel</Vendor>
<RateCenter>OTTAWAHULL</RateCenter>
<City>OTTAWA-HULL</City>
<State>ON</State>
<LATA>888</LATA>
<Tiers>
<Tier>5</Tier>
</Tiers>
<TnList>
<Tn>6137230461</Tn>
</TnList>
</RateCenterGroup>
</PartnerSupportedRateCenters>
<UnsupportedRateCenters>
<RateCenterGroup>
<RateCenter>ALSEN</RateCenter>
<City>ALSEN</City>
<State>SD</State>
<LATA>640</LATA>
<TnList>
<Tn>6052539874</Tn>
</TnList>
</RateCenterGroup>
</UnsupportedRateCenters>
<SupportedLosingCarriers>
<LosingCarrierTnList>
<LosingCarrierSPID></LosingCarrierSPID>
<LosingCarrierName>Unknown</LosingCarrierName>
<LosingCarrierIsWireless>false</LosingCarrierIsWireless>
<LosingCarrierAccountNumberRequired>false</LosingCarrierAccountNumberRequired>
<LosingCarrierMinimumPortingInterval>6</LosingCarrierMinimumPortingInterval>
<TnList>
<Tn>6137230461</Tn>
</TnList>
</LosingCarrierTnList>
<LosingCarrierTnList>
<LosingCarrierSPID>979E</LosingCarrierSPID>
<LosingCarrierName>BANDWIDTH.COM:979E -NSR/1</LosingCarrierName>
<LosingCarrierIsWireless>false</LosingCarrierIsWireless>
<LosingCarrierAccountNumberRequired>false</LosingCarrierAccountNumberRequired>
<LosingCarrierMinimumPortingInterval>3</LosingCarrierMinimumPortingInterval>
<TnList>
<Tn>2086433254</Tn>
</TnList>
</LosingCarrierTnList>
<LosingCarrierTnList>
<LosingCarrierSPID>7024</LosingCarrierSPID>
<LosingCarrierName>Clarity Tel DBA Vast BBD:7024-NSR/1</LosingCarrierName>
<LosingCarrierIsWireless>false</LosingCarrierIsWireless>
<LosingCarrierAccountNumberRequired>false</LosingCarrierAccountNumberRequired>
<LosingCarrierMinimumPortingInterval>3</LosingCarrierMinimumPortingInterval>
<TnList>
<Tn>6052539874</Tn>
</TnList>
</LosingCarrierTnList>
<LosingCarrierTnList>
<LosingCarrierSPID>0121</LosingCarrierSPID>
<LosingCarrierName>Frontier Rochester:0121 -SVR/1</LosingCarrierName>
<LosingCarrierIsWireless>false</LosingCarrierIsWireless>
<LosingCarrierAccountNumberRequired>false</LosingCarrierAccountNumberRequired>
<LosingCarrierMinimumPortingInterval>7</LosingCarrierMinimumPortingInterval>
<TnList>
<Tn>2174477093</Tn>
</TnList>
</LosingCarrierTnList>
<LosingCarrierTnList>
<LosingCarrierSPID>6529</LosingCarrierSPID>
<LosingCarrierName>T-Mobile US:6529 - SVR/2</LosingCarrierName>
<LosingCarrierIsWireless>true</LosingCarrierIsWireless>
<LosingCarrierAccountNumberRequired>false</LosingCarrierAccountNumberRequired>
<LosingCarrierMinimumPortingInterval>1</LosingCarrierMinimumPortingInterval>
<TnList>
<Tn>9199172854</Tn>
</TnList>
</LosingCarrierTnList>
</SupportedLosingCarriers>
</NumberPortabilityResponse>

Notes:

  1. The PortType still shows as MIXED because the telephone numbers are of several different types (as described in the comments in the request payload).
  2. This time the customer was interested in showing if off-net telephone numbers are portable. So the PortableNumbers list includes the internal TN, the automated on-net TN, the automated off-net TN, and the manual off-net TN.
  3. The SupportedRateCenters list only includes rate centers that are on-net for Bandwidth.
  4. The PartnerSupportedRateCenters list includes all rate centers in which Bandwidth can provide support via one of our partners.
  5. The UnsupportedRateCenters list includes only rate centers for which Bandwidth cannot provide service at all (Alsen, SD in this example).
  6. The SupportedLosingCarriers list includes the breakdown of which numbers belong to each losing carrier.
    1. The first losing carrier shows as “Unknown” because Bandwidth does not currently have access to Canada carrier data.
    2. The 2nd losing carrier is Bandwidth, so this number will port as an internal port.
    3. The remaining losing carriers are carriers other than Bandwidth.
  7. For a TN to be portable in this query, it must belong to a supported rate center or a partner supported rate center, and a supported losing carrier. The four portable TNs in this query would have to be ported in four different port-in orders because of the four different port types.
  8. Automated on-net and automated off-net both show as PortType “AUTOMATED”. They can be distinguished by looking at the rate center. For automated on-net, the rate center will be in the supported rate centers list. For automated off-net, the rate center will be in the partner supported rate centers list.