English
Serbian (+381) OTP codes: which product fits your test?
Yes, you can receive Serbia (+381) verification codes with OTP Route: the OTP Gateway issues a one-time +381 number per code and hands the result to your dashboard, your poller or a signed webhook. Pricing starts at $0.20 per code, and if no SMS arrives within 20 minutes the full amount is returned to your wallet.
One-time number or kept line: what does a Serbian project need?
Most Serbian verification work is short-lived. A QA engineer checks that a registration screen accepts +381, a localisation reviewer confirms the Cyrillic and Latin copy both render, a release manager signs off a login challenge. Each of those needs a single code, so the OTP Gateway is the right tool: order, receive, done.
Long-lived numbers work differently at OTP Route. Dedicated Numbers exist only in the United States and Canada, bought instantly from $1.95/month, and they keep receiving SMS while the term renews. Serbia has no self-serve dedicated line. If a project genuinely depends on a Serbian number you keep, send the details to [email protected]; local regulations decide what is possible, so no outcome is promised.
Choose the OTP Gateway when every run should start clean. Choose a US/Canadian Dedicated Number when a shared staging login must survive for months and the service tolerates a foreign number.
Which services are live on the +381 route?
More than 1,600 services currently accept Serbian activations. Frequently used ones in the latest snapshot are Viber, WhatsApp, Telegram, Google (Gmail & YouTube), Facebook, Instagram, TikTok, ChatGPT (OpenAI), Microsoft & Outlook, LinkedIn, Discord, Uber and Netflix.
Coverage shifts as our carrier partners rotate routes, so read the live list from the API or the countries page before you plan a test matrix around it.
How do I order a Serbian number programmatically?
Serbian requests use the country id rs and go to https://otproute.com/api/v1, signed with an or_live_ Bearer key from the Developer console.
Begin by confirming that the pairing is live and what it costs right now, using GET /api/v1/prices?country=rs&service=viber. Then create the activation with POST /api/v1/activations and {"service": "viber", "country": "rs"}; keep the returned activation id with your test record. Enter the +381 number in your own flow and wait. The cleanest way to wait is a webhook subscribed to activation.sms_received; the fallback is polling GET /api/v1/activations/{id}. When a test is abandoned, POST /api/v1/activations/{id}/cancel releases the number and refunds the wallet at once.
Verify every webhook's X-OTPRoute-Signature header (HMAC-SHA256 of <t>.<raw body> with the endpoint secret), refuse stale timestamps and treat repeated deliveries for the same activation id as no-ops. Securing OTP webhooks with HMAC shows the check in detail.
Is there a browser-only way to get a +381 code?
Yes, and it suits reviewers who never open a terminal. Sign up with email or Google, fund the wallet, pick Serbia plus the service, check the quoted price and confirm. The number appears straight away, and the code shows up on the same card when it lands. Two-factor TOTP can protect the account if several colleagues share access.
What makes Serbian numbers and messages different?
Serbia uses country code +381 and a trunk prefix 0 for domestic dialing; mobile numbers start with 06 locally, which becomes +381 6 in international form. Subscriber lengths vary between ranges, so validate with a phone library instead of a fixed digit count, and store the E.164 form without the 0.
Serbian is written in both Cyrillic and Latin script, and people switch between them freely. Verification texts may arrive in either script, or in English, so your parser should pull digits out of UTF-8 text rather than match exact wording. The same dual-script reality is a good reason to test your own UI copy in both alphabets.
Teams operate here for Western Balkan launches, for regional customer support, and because many software teams are based in Serbia and need to verify their own staging builds locally. The QA testing page explains how that fits a broader test plan.
Why might a +381 code fail to arrive?
Give the window its full 20 minutes; delivery time depends on the service and the route. If nothing comes, the activation expires and the charge reverses automatically.
- The service may reject virtual numbers. That is not unusual, and it is why unused activations are refunded.
- Your form may have kept the local 0. Send
+381and the national number without it. - Wait and retry, or try another available route, rather than hammering the order endpoint. Repeated instant re-orders rarely help.
How does billing work for Serbian activations?
OTP Route runs on a single prepaid USD wallet: pay as you go, nothing monthly, no plan selection. Fund it by card or with USDT/USDC, and expect a PDF invoice by email for each top-up. Current rates are on the pricing page and in the prices endpoint. A sandbox, available on request for development accounts, returns simulated numbers and codes so CI can exercise the integration without spending money. Keep usage to your own legitimate products, follow each service's terms, and note that the Acceptable Use Policy covers every account.
Frequently asked questions
Can I check a Serbian onboarding flow without a local SIM card?
Yes. Order a one-time +381 number from the OTP Gateway, use it in your app, and read the code in the dashboard or via the API.
Which country id does Serbia use in the API?
Serbia is rs in both the prices query and the activation request body.
Do I pay for a Serbian activation that expires empty?
No. If no code arrives inside 20 minutes, or you cancel, the whole amount returns to your wallet.
Will Serbian codes come in Cyrillic or Latin letters?
Either, and sometimes English. Extract the numeric code from UTF-8 text and you will not depend on the script.
Can OTP Route give me a permanent Serbian phone number?
Not through self-service. Dedicated Numbers are a US and Canada product; for Serbia, email [email protected] to ask, knowing availability is not assured.
Should I keep the leading 0 when saving +381 numbers?
No. Drop the domestic 0 and store the E.164 version that begins with +381.
How many services can I verify on a Serbian number?
More than 1,600 at the moment, with the exact list returned live by the API because routes change during the day.
Service names are trademarks of their respective owners. OTP Route is not affiliated with them. Use numbers lawfully, follow each service's terms and our Acceptable Use Policy.