“Why didn’t the code arrive” is the most frequent question in SMS-verification work. Behind it is usually not a single cause but several factors stacked together. Let’s make the causes clear first, then talk about fixes.
Common causes of failure
- Upstream out of stock: no number is available for that app right now.
- Upstream rate-limiting / jitter: the API times out or returns an error.
- Number flagged by risk control: the target app refuses to send codes to that number range.
- Polling times out too early: the client gives up before waiting long enough.
SimSmsBox’s engineering fixes
1. Channel isolation
Each upstream runs in its own thread channel, so one slow provider doesn’t block the others. This is the key to staying available under high concurrency.
Channel(A) ──worker──► Upstream A
Channel(B) ──worker──► Upstream B ← when A is stuck, B keeps working
Channel(C) ──worker──► Upstream C
2. Timeout and circuit breaking
Set an independent timeout threshold for each upstream; when consecutive failures hit the threshold, briefly circuit-break it, hand traffic to healthy upstreams, and recover automatically after a cooldown.
3. Auto-retry and multi-source fallback
When an order fails or a source is out of stock, the router automatically switches and retries among candidate upstreams instead of throwing the failure straight at you.
4. A sensible polling strategy
Recommended on the client side:
| Parameter | Suggested value |
|---|---|
| Polling interval | 2–3 seconds |
| Max wait | App-dependent, commonly 60–180 seconds |
| Failure handling | Release the number and re-order as needed |
Codes arrive asynchronously, so allowing enough waiting time is more effective than frequent retries.
Results
With “channel isolation + circuit breaking + multi-source fallback”, a single upstream’s problems are contained locally, and overall delivery rate and stability improve substantially. This mechanism is on by default in SimSmsBox — no extra configuration needed.
To learn how to poll correctly, see the tutorial: Automated ordering and polling.