English
Running Turkish Verification Tests on +90 Numbers, Step by Step
You can receive Turkey (+90) verification codes with OTP Route by ordering a temporary Turkish number from the OTP Gateway and reading the SMS in the dashboard or via API polling and signed webhooks. Pricing begins at $0.20 per code, and if nothing arrives within 20 minutes the wallet is refunded in full.
Pre-flight: what should you prepare before requesting a +90 number?
A short checklist saves wasted activations when a Turkish test plan goes live:
- Look up the app's service id via
GET /api/v1/servicesand confirm the country idtrviaGET /api/v1/countries. - Call
GET /api/v1/prices?country=tr&service=<id>to see what the pair costs right now and whether it is available. - Make sure the wallet covers the run with
GET /api/v1/balance. - Register a webhook endpoint (an account can have up to five) and keep its secret out of source control.
- Set your phone validation library to region TR and decide how the UI shows the number back to the tester.
- Load the Turkish locale in your test environment, because string casing bugs tend to surface here first.
Why does the leading 0 trip up Turkish phone validation?
Inside Turkey people write mobile numbers with a trunk prefix, as in 0 5XX XXX XX XX. Internationally the zero disappears: the canonical form is +90 followed by a ten-digit national number, and mobile numbers start with 5 after the country code.
Forms that accept both styles need a normalization step. Strip spaces and punctuation, drop a single leading 0 when the region is TR, prepend +90, and save the result in E.164 (+905…). Never keep the trunk zero in the stored value, or the same tester will look like two different users across your database. Display it back in the national style if your Turkish users expect it.
What will a Turkish verification SMS look like to your parser?
Turkish is the official language, and local senders write their codes in Turkish with letters such as ç, ş, ğ, ı, ö and ü. International apps usually follow the language of the device or account instead. Either way, pull the code with a digit pattern rather than by matching surrounding words.
The Turkish locale also hides a well-known software trap: uppercasing a lowercase i gives a dotted İ, and lowercasing I gives a dotless ı. Code that compares strings with locale-sensitive casing can break login or email checks for Turkish users. A +90 test pass is a good moment to catch that, along with right-length input masks and translated error messages. The mobile app verification guide covers related checks.
Which apps can route codes to a Turkey verification number?
The current snapshot for tr includes WhatsApp, Telegram, Instagram, TikTok, X (Twitter), Google (Gmail & YouTube), Microsoft & Outlook, LinkedIn, Uber, Netflix, AliExpress, Discord, ChatGPT (OpenAI) and Amazon. In total the Turkish route reaches more than 1,800 services.
Teams order here for a Turkish product launch, to check localization before a marketing push, or to serve Turkish-speaking customers living elsewhere in Europe. Because capacity moves through the day, rely on the live price list rather than on a fixed list in your test config.
How do you request and read a Turkey OTP through the API?
The call sequence is short. Send POST /api/v1/activations with {"service": "<id>", "country": "tr"} and a Bearer key prefixed or_live_. Feed the returned +90 number into the app under test. When the SMS lands, OTP Route fires activation.sms_received to your endpoint; if the window closes first you get activation.expired, and a manual stop produces activation.cancelled.
Before trusting any event, rebuild the signature from the X-OTPRoute-Signature header: HMAC-SHA256 of the timestamp, a dot and the raw request body, keyed with the endpoint secret. Reject anything with an old timestamp and treat repeated deliveries for the same activation id as one event. Polling GET /api/v1/activations/{id} is the fallback for environments without inbound HTTP. The post on webhook-based OTP capture and the developer hub go further.
Prefer clicking to coding? Use the dashboard
Non-technical teammates follow the same logic in the browser. Sign in, add funds, select the service and Turkey, then copy the +90 number into the app. The incoming SMS appears on the activation card. Every temporary number is good for one code during a 20-minute window.
What if the Turkish code never shows up?
- Give the full 20 minutes before concluding that it failed.
- Confirm that the app accepts virtual numbers; some refuse them, and the automatic refund exists for that case.
- Try again a little later, or on another service route when your test allows it.
- Space out retries instead of ordering in a rapid loop.
An order that ends without a code costs nothing, since the full amount goes back to the wallet.
Billing, sandbox and long-term numbers
OTP Route runs on a prepaid USD wallet with no plan to choose. Card and USDT/USDC top-ups are both supported, and each one triggers a PDF invoice by email. Developers can ask to have a development account switched to sandbox, which returns simulated numbers and codes for end-to-end tests without spending funds.
No self-serve long-term Turkish number exists. Teams that need one can email [email protected]; the answer depends on local regulation. For lines you keep and renew, Dedicated Numbers are offered in the United States and Canada from $1.95/month.
Frequently asked questions
Can I verify my app's Turkish sign-up without a Turkish SIM card?
Yes. A temporary +90 number from the OTP Gateway receives the code, which you read in the dashboard or through the API.
Should I store Turkish numbers with the leading 0?
No. Store them in E.164 as +90 plus the ten-digit national number, and only add the trunk 0 when displaying a domestic format.
What is the API country id for Turkey?
It is tr. Pass it in the country field of POST /api/v1/activations and in the price query.
How much does a +90 number for testing cost?
Turkish activations start at $0.20 per code, and each app carries its own rate. The dashboard and GET /api/v1/prices show it before you order.
What happens if the code is not delivered?
If no SMS arrives within 20 minutes, or you cancel the activation, the full charge is returned to your wallet.
Can a Turkish number be kept for later logins?
Not on a self-serve basis. Email [email protected] to ask, keeping in mind that availability depends on local rules.
Are there rules on how the numbers may be used?
Yes. Turkish numbers are meant for testing and running products and accounts that belong to you; each app's own terms still apply, as does the OTP Route Acceptable Use Policy.
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.