English
Testing Cypriot sign-up flows on +357 verification numbers
Yes: the OTP Route OTP Gateway issues a Cyprus (+357) verification number for a single code, from $0.20 per code, and you can read that code in the dashboard or receive it in your backend through the API and signed webhooks. You are charged only when the SMS lands inside the 20-minute activation window; if it doesn't, the wallet is refunded automatically.
Our team ships to Cyprus but has no local SIMs. What are the options?
The usual pattern looks like this: a product goes live for customers in Nicosia, Limassol or Larnaca, the phone step of onboarding needs regression coverage, and the only +357 SIMs belong to two colleagues who are tired of forwarding codes from their personal phones. Physical SIMs in a drawer lapse, get lost, and end up tied to test accounts that nobody remembers.
OTP routing replaces that drawer. Your test harness asks for a fresh Cypriot number per run, waits for the code, and moves on, with no handset involved. The same approach works for an operations team that has to verify a business account registered in Cyprus without handing over someone's private mobile. Our QA testing guide shows how teams slot this into an existing suite.
Cyprus is an EU member state with a busy software, fintech and shipping scene, so it is a common first or second European market for companies that already operate in Greece or the eastern Mediterranean.
Which apps can send a code to a Cypriot number?
The live snapshot for Cyprus currently lists more than 1,500 services. Among the ones teams ask for most:
- WhatsApp, Viber, Telegram and Signal for messaging
- Google (Gmail & YouTube), Microsoft & Outlook and LinkedIn for work accounts
- Facebook, Instagram and TikTok for social logins
- Uber, Airbnb, Amazon, Netflix and eBay for travel and commerce
Availability on any single route shifts through the day, which is why prices and coverage are served live rather than printed on a page. Treat the list above as a starting point and confirm the exact service in the dashboard or via the API before you script a test around it.
How do I request a +357 number through the Cyprus OTP API?
Create a key in the Developer console; keys start with or_live_ and go in a Bearer header against https://otproute.com/api/v1. A typical run takes four calls:
GET /api/v1/prices?country=cy&service=viberreturns the current price, so your job can refuse to proceed above a budget you set.POST /api/v1/activationswith{"service": "viber", "country": "cy"}reserves the number and returns an activation id.- Your test enters that number in the app under test, then either polls
GET /api/v1/activations/{id}or waits for theactivation.sms_receivedwebhook. - If the scenario fails early,
POST /api/v1/activations/{id}/cancelreleases it and returns the funds.
Webhooks carry an X-OTPRoute-Signature header (t=<unix>,v1=<hex>). Your receiver should rebuild the HMAC-SHA256 of <t>.<raw body> using the secret for that endpoint, check it against v1 without early exit, and ignore any request whose timestamp is too old. For capacity planning, one account can hold up to 10 keys and 5 webhook endpoints, with a ceiling of 300 requests per minute. The API docs list every field.
Can a non-developer order a Cyprus verification number?
Yes. Support staff and account managers often just need one code, and the dashboard covers that without touching the API:
- Sign in and open the OTP Gateway.
- Pick Cyprus, then the service you are verifying.
- Check the price shown, which is the same figure the API would return.
- Order, copy the +357 number into the app, and keep the tab open.
- The code appears in the activation card as soon as it is received.
The activation stays open for 20 minutes. Cancel it from the same card if you no longer need the code.
The code never arrived. What now?
Nothing is lost: when the 20-minute window closes without an SMS, or when you cancel, the full amount returns to your wallet automatically. To improve the next attempt:
- Let the first window run before ordering again; overlapping requests for the same service rarely help.
- Some services decline virtual numbers outright, so a missing code can be a policy decision on their side rather than a routing issue.
- Retry a little later, or test the same flow on a different service route to confirm your own code path works.
- Never re-order in a tight loop from CI. Back off between attempts and cap retries per run.
Our article on reducing failed OTP deliveries covers retry budgets in more depth.
How should +357 numbers be stored, and what language do the codes use?
Cyprus has no trunk prefix, so there is no leading zero to strip. National numbers are eight digits, and mobile numbers start with 9. In E.164 that becomes +357 followed by those eight digits, with no spaces or punctuation. Users often type the local form with a space after the first two digits, so normalise input by removing whitespace and adding the country code before you compare or store it.
Greek and Turkish are the official languages, and English is widely used in business. In practice the wording of a verification SMS follows the app's language setting, so expect English or Greek text. Have your parser extract the digit sequence instead of matching a fixed sentence, and the same test will survive a locale switch.
Is there a long-term Cypriot line, and how does billing work?
There is no self-serve long-term number for Cyprus. Dedicated Numbers that you keep month to month are a United States and Canada product, from $1.95/month, described on the virtual numbers page. If your team needs a lasting +357 line, email [email protected]; availability depends on local rules and is not promised.
Billing runs through one prepaid USD wallet with no monthly fee and no plan to pick. Funds go in by card or USDT/USDC, and an emailed PDF invoice follows every top-up. For integration work, ask for a sandbox on a development account: it returns simulated numbers and codes so the pipeline can run end to end without spending wallet funds. See pricing for the current model, and remember that each service's own terms and OTP Route's Acceptable Use Policy apply to every activation.
Frequently asked questions
Can I test my app's Cyprus sign-up flow without a Cypriot SIM card?
Yes. Request a +357 number from the OTP Gateway, enter it in your app, and read the code in the dashboard or through the API. No handset or local SIM is needed.
What country id does the API expect for Cyprus?
Use cy as the country value in price and activation requests, for example {"service": "whatsapp", "country": "cy"}.
Am I charged if a Cypriot code doesn't come through?
No. A Cypriot activation that ends without an SMS, whether it times out after 20 minutes or you cancel it, is credited back to the wallet in full.
Should I drop a leading zero from Cypriot numbers?
There is none to drop, because Cyprus does not use a trunk prefix. Store the number as +357 plus the eight national digits.
Can I reuse the same +357 number to log in next month?
No. Each OTP Gateway number serves one verification code. For accounts that must keep logging in, a US or Canadian Dedicated Number is the better fit.
What does a Cyprus verification number cost?
Pricing for a +357 number starts from $0.20 per code, with the final amount set by the service you pick. Your script can read the current Cyprus figure from GET /api/v1/prices, and the dashboard displays it next to the order button.
Is OTP Route meant for opening lots of accounts?
No. It is built for testing your own product and operating legitimate business accounts. Follow each service's terms and keep to one account per real person or business.
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.