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 value | Description | Comment |
---|---|---|
false (default) | Omits carrier information and partner supported rate center information | Use this, or omit the query parameter entirely if:
|
true | Includes carrier information, but omits partner supported rate center information | Use this value if:
|
onnetportability | Identical to “true” value | See “true” value. |
offnetportability | Includes all rate center and losing carrier information | Use this value if:
|
Interpreting Results
The /lnpchecker
API can return the following elements in its 200 response payload. Here is what they mean:
Element | Description |
---|---|
PortType | When 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.
|
PortableNumbers | This 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. |
SupportedRateCenters | This section lists rate centers where Bandwidth has on-net coverage for one or more of the numbers in the request payload. |
UnsupportedRateCenters | If 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. |
PartnerSupportedRateCenters | This 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:
- The PortType shows as MIXED because the telephone numbers are of several different types (as described in the comments in the request payload).
- 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.
- The SupportedRateCenters list only includes rate centers that are on-net for Bandwidth.
- The UnsupportedRateCenters list includes all rate centers that are not on-net for Bandwidth.
- Again, because the customer was not interested in showing off-net telephone numbers, PartnerSupportedRateCenters are all lumped into UnsupportedRateCenters.
- 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:
- The PortType still shows as MIXED because the telephone numbers are of several different types (as described in the comments in the request payload).
- 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.
- The SupportedRateCenters list only includes rate centers that are on-net for Bandwidth.
- The UnsupportedRateCenters list includes all rate centers that are not on-net for Bandwidth.
- Again, because the customer was not interested in showing off-net telephone numbers, PartnerSupportedRateCenters are all lumped into UnsupportedRateCenters.
- The SupportedLosingCarriers list includes the breakdown of which numbers belong to each losing carrier.
- The first losing carrier shows as “Unknown” because Bandwidth does not currently have access to Canada carrier data.
- The 2nd losing carrier is Bandwidth, so this number will port as an internal port.
- The remaining losing carriers are carriers other than Bandwidth.
- 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.
- 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:
- The PortType still shows as MIXED because the telephone numbers are of several different types (as described in the comments in the request payload).
- 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.
- The SupportedRateCenters list only includes rate centers that are on-net for Bandwidth.
- The PartnerSupportedRateCenters list includes all rate centers in which Bandwidth can provide support via one of our partners.
- The UnsupportedRateCenters list includes only rate centers for which Bandwidth cannot provide service at all (Alsen, SD in this example).
- The SupportedLosingCarriers list includes the breakdown of which numbers belong to each losing carrier.
- The first losing carrier shows as “Unknown” because Bandwidth does not currently have access to Canada carrier data.
- The 2nd losing carrier is Bandwidth, so this number will port as an internal port.
- The remaining losing carriers are carriers other than Bandwidth.
- 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.
- 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.