VoIP number or real SIM: which do you need?
Most tests of your own app work with a VoIP number, because any number that receives texts will do. Choose a real SIM line when a service your product depends on only texts mobile numbers.
Phonekit team Updated
Compare the two
| VoIP number | Real SIM line | |
|---|---|---|
| What it is | A phone number that runs over the internet | A number tied to a SIM on a mobile network |
| Who issues it | A telecom or VoIP provider | A mobile network |
| Typical use | Testing your own app's sign-in and texts | Services that only text mobile numbers |
| When a service may refuse it | The service only texts mobiles, or blocks VoIP | A service can still refuse it, for its country or the service's own rules |
| Phonekit type | Standard (US local) | Mobile |
Line type is one check a sending service can run. It doesn't tell you whether a code arrives, so test the step itself.
Choose Standard when
- You are testing sign-in, signup or phone change in your own product.
- Your sender texts any number that can receive SMS.
- You need several numbers, one for each parallel test worker.
Choose Mobile when
- A service your product depends on only texts mobile numbers.
- A Standard number was refused at the send step because of its line type.
No number is accepted by every service. Some services only text mobile numbers, and that is what Mobile lines are for.
Keep or release a number
Keep a number when something will need it again: a company account, a test user that signs in every run, or an agent that picks up the same work tomorrow. A stable number makes failures easier to compare between runs.
Release a number when its job is done, such as a one-off check. Before you do, move any account or test that still uses it to another number. Messages are kept 30 days from receipt, and releasing a number doesn't reset that. Deleting a message in Phonekit doesn't cancel the code at the service that sent it.
For each number, write down what it's for, who can read it and when it can go.
Check the services your product depends on
- List each step that sends a text: signup, sign-in, phone change, recovery.
- Note which service sends it and whether it says anything about number types.
- Run each step against a Standard number and record where it stops: refused, sent but not received, or received.
- Move only the steps that refuse VoIP to a Mobile number.
- Recheck when you change sender, country or number.
Questions
Can a VoIP number receive verification codes?
Yes, when the sending service texts that number type. Many do. Some only text mobile numbers, and some block VoIP numbers. Test the exact step before you depend on it.
Does a real SIM line always work?
No number is accepted by every service. A real SIM line passes a mobile-only check, but the service can still refuse a number for other reasons, such as country or its own limits.
Which Phonekit numbers are real SIM lines?
Mobile numbers are real SIM lines on a mobile network. Standard numbers are US local VoIP numbers. Both use the same inbox, access settings and API.
Do we lose messages when we release a number?
Messages are kept 30 days from receipt, and releasing a number doesn't reset that. Move any service still using the number to a new one before you release it.
Keep reading
- Real SMS in your testsTest everything your app texts end to end, from sign-in codes and invite links to confirmations and two-way replies, with real US phone numbers, including real SIM lines, in Playwright, Cypress and CI.
- One number per parallel testMake SMS tests repeatable: mark the inbox before you send, give each parallel worker its own number, budget the whole test and report the stage that failed.
- Real SMS or mocked testsWhen to mock the code, when to use your auth provider's test numbers and when to send a real text, with a coverage matrix and a rollout plan.