Number porting

You can bring a number you already own. Porting is a carrier-side process with paperwork and multi-day timelines, so it runs as a tracked request rather than an instant API call.

What we need

  • The number, your current carrier, and the account number with them
  • The last 4 of your account PIN (if your carrier uses one)
  • The name of the person authorized to approve the transfer

Submit from Console → Numbers → Port a number (admins only).

Timeline

StatusMeaning
requestedWe received your request.
submittedFiled with the carrier.
foc_setThe carrier set a Firm Order Commitment date.
completeThe number is live on SimpleSMS.
rejectedThe carrier rejected it; the note says why (usually a detail mismatch).

The status timeline is visible in the console; keep the old service active until the port completes.

Port many at once

Console → Numbers → Port many numbers takes a CSV: either one column of numbers (the form supplies carrier, account number, PIN and authorized name for all of them) or a header row with number, carrier, account number, pin, authorized name columns for numbers spread across old carriers. Every row is checked before anything is filed:

Row statusMeaning
readyWill be filed.
not a valid numberNot a US/Canada number.
duplicateAppears earlier in the file.
already yoursAlready on your SimpleSMS account.
port already openA request for it is in flight (rejected ones can be re-filed).
missing detailsCarrier, account number or authorized name missing.

Only ready rows are filed. You can choose a pool and tags for the numbers to join when their port completes. Accounts with live access can run a portability check first: current carrier and whether the number can port, per number.

Moving from Twilio, Telnyx or Plivo

Console → Numbers → Import from Twilio / Telnyx / Plivo reads your account with the credentials you paste (Twilio Account SID + Auth Token, Telnyx API key, Plivo Auth ID + Auth Token). They are used once, for read-only requests, and never stored. You get a plan to review:

  • Numbers to port, each marked will port / already on SimpleSMS / port already open / not SMS-enabled / not US-Canada.
  • Pools to recreate from Twilio Messaging Services, Telnyx messaging profiles, or Plivo Powerpacks. Numbers join them as their ports complete.
  • Webhook URLs found (inbound and status callbacks), offered as SimpleSMS webhook endpoints. Your handler has to accept SimpleSMS's JSON events, not the old provider's callback format.

Opt-out lists aren't exposed by any of the three APIs; SimpleSMS enforces STOP/START itself, and you can import an existing suppression list with POST /v1/consent/import. Running the plan only creates SimpleSMS-side things (port requests, pools, webhooks); nothing changes at the old provider until each carrier port completes.