English
Receiving Bulgarian verification codes on +359 numbers
Yes, OTP Route lets you receive Bulgarian (+359) verification codes through its OTP Gateway, either in the web dashboard or programmatically through the REST API and signed webhooks. Prices start from $0.20 per code, and you are charged only when a code actually lands inside the 20-minute activation window.
Can a team receive Bulgarian SMS OTP codes without a local SIM?
Most teams asking this sit in one of three spots: a product is about to launch in Bulgaria and QA wants to watch the real sign-up flow, a regional operations group manages business profiles registered with a +359 contact, or an agency is checking a client's onboarding from abroad. Shipping Bulgarian SIM cards for each case is slow and leaves plastic in desk drawers.
The OTP Gateway swaps that for a single request: choose a service plus Bulgaria, receive a temporary +359 verification number, and read the code once the service sends it. One number serves one verification. Our carrier partners supply the routes, while OTP Route handles the OTP routing, the timer and the automatic refund.
Which services can I route through a +359 number?
The live snapshot for Bulgaria lists more than 1,600 services. Popular ones available right now include WhatsApp, Viber, Telegram, Google (Gmail & YouTube), Facebook, Instagram, TikTok, LinkedIn, Microsoft & Outlook, Amazon, eBay, Uber, Discord and Signal.
Viber earns a special mention because it is widely used for personal and business chat in Bulgaria, so a local QA plan often tests it next to WhatsApp. Route availability shifts during the day, which is why price and service lists come from the API at request time instead of a static table.
What does the Bulgaria OTP API sequence look like?
Create a Bearer key (prefix or_live_) in the Developer console, then call https://otproute.com/api/v1:
- Fetch
GET /api/v1/servicesandGET /api/v1/countriesonce and cache the ids; Bulgaria isbg. - Read the current rate with
GET /api/v1/prices?country=bg&service=<id>. - Open an activation via
POST /api/v1/activationswith a body like{"service": "viber", "country": "bg"}. - Wait for the
activation.sms_receivedwebhook, or pollGET /api/v1/activations/{id}when your runner cannot expose an endpoint. - If a test aborts early, send
POST /api/v1/activations/{id}/cancelso the money returns at once.
Check the X-OTPRoute-Signature header on every delivery (an HMAC-SHA256 over the timestamp and raw body) and drop stale timestamps. The developer docs list the account limits: 10 keys, 5 webhook endpoints, 300 requests per minute.
How should +359 numbers be stored and normalised?
Bulgarians write numbers domestically with a leading trunk 0, so a mobile written as 088 123 4567 becomes +359 88 123 4567 internationally; the zero disappears after the country code. Persist the E.164 form and format only for display. If a form accepts local input, strip spaces, dashes and that trunk digit before validation. A classic bug is saving +3590…, which no route will deliver to.
Script matters as well. Bulgarian is written in Cyrillic, and services that localise their texts wrap the code in Cyrillic words. Cyrillic messages travel as UCS-2, which shrinks a single segment to 70 characters, so a long localised template can arrive split. If a regex extracts your digits, test it against Cyrillic surroundings, not only English ones.
What if the code never shows up?
Let the 20-minute window run before drawing conclusions; some apps send late or only after a second tap on "resend". If nothing comes, OTP Route puts the full amount back in the wallet automatically, and the activation.expired event tells your system the slot has closed. After that:
- Retry later, or pick another route for the same service.
- Confirm the service accepts virtual numbers; some refuse them, which is exactly why the refund exists.
- Back off between attempts rather than re-ordering in a tight loop.
Our write-up on reducing failed OTP deliveries goes further.
Is there a long-term Bulgarian line, and how is billing handled?
No self-serve long-term Bulgarian number exists today. Dedicated Numbers are a US and Canada product from $1.95/month; if your team needs a lasting +359 line, email [email protected] and the team will look into it, though local rules decide whether that is possible.
Paying for +359 codes works through a single prepaid USD wallet: no monthly fee, no tier to select. Card and USDT/USDC top-ups are both accepted, and the PDF invoice for each one lands in your inbox. For integration work, ask for a development account to be switched to sandbox, which returns simulated numbers and codes so the flow can be exercised without spending wallet funds. Current rates sit on the pricing page.
Frequently asked questions
Can I test my app's Bulgarian sign-up flow without a local SIM?
Yes. Order a +359 number for testing through the OTP Gateway, trigger your app's sign-up, and read the code in the dashboard or through the API.
What is the country id for Bulgaria in the SMS verification API?
Use bg in the country field of POST /api/v1/activations and in price lookups. Service ids come from GET /api/v1/services.
How much does a Bulgarian verification number cost?
Bulgarian codes begin from $0.20 per code, with the rate set per service. The exact figure is returned by GET /api/v1/prices and displayed in the dashboard before you confirm.
Am I charged if the code never arrives?
No. When no SMS reaches the number within 20 minutes, or you cancel first, the whole amount goes back to your wallet automatically.
Will Bulgarian codes arrive in Cyrillic or Latin text?
That depends on the service and on the language settings of the account being verified. Build your parser to cope with both scripts around the digits.
Can I keep the same +359 number for later logins?
Not through the OTP Gateway, because each number covers a single verification. Long-term numbers are self-serve only in the US and Canada; for Bulgaria, write to [email protected] to ask.
Is OTP Route meant for registering lots of accounts?
No. It is for testing and operating your own legitimate products and business accounts; follow each service's terms, and OTP Route's Acceptable Use Policy applies.
How do I get started with Bulgarian numbers?
Create an account with your email and a 6-digit code or Google sign-in, top up the wallet, then order from the dashboard or generate an API key.
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.