A mocked SMS gateway proves your code calls the right function. It does not prove that your sender ID survives a Turkish carrier, that your template fits in one segment after Cyrillic transliteration, or that the code still arrives when the number is a +55 mobile rather than a +1 landline. Those failures show up in production, usually as a support ticket from someone who could not create an account.
This is for engineers testing a flow they own or are authorised to test. If that is you, this was built for you, and the pricing is designed around how often a test suite runs.
What a real number catches that a mock does not
Delivery differs by route. The same message sent through the same provider reaches one carrier in four seconds and another in ninety, and some carriers silently drop traffic whose sender ID is not registered locally. A staging environment pointed at a fake gateway reports none of that.
Formatting breaks at the edges. A message that is one segment in English becomes three after translation, and the cost and the delivery odds change with it. Alphanumeric sender IDs are prohibited in some countries and mandatory in others.
Numbering plans are not uniform. A validator that accepts every +44 number will happily accept a UK landline that can never receive an SMS, and you will not discover it until a user tries.
Fitting it into a test run
The API is built for this. Request a number for the service and country under test, poll for the code, assert on it, and release. An activation that receives nothing cancels itself and refunds, so a flaky third-party does not quietly bill you for a failed run.
Because billing is per delivered code with no subscription, a nightly job that exercises five countries costs a few cents a night and nothing on the nights it fails.
Where it stops
This is for testing systems you own or are authorised to test. Rented numbers are not a way to bulk-create accounts on someone else's platform, and our acceptable use policy says so plainly.