Receiving Czech Republic SMS OTP codes through endpoints, webhooks or the dashboard

Calling code +420OTP Gateway from $0.20 per codeDedicated numbers: US & Canada onlyAPI id: cz
Quick answer

Yes, OTP Route can receive Czech Republic (+420) SMS verification codes on a one-time number from its OTP Gateway, delivered to the dashboard or to your own code through REST polling and signed webhooks. Prices start from $0.20 per code, and you are charged only when a code reaches the number inside its 20-minute window.

Which endpoints does the Czech Republic OTP API rely on?

Everything runs against https://otproute.com/api/v1 with a Bearer key prefixed or_live_. You create keys in the Developer console, and an account can hold up to 10 of them, which makes it easy to give staging, CI and a local laptop separate credentials that can be revoked independently. The rate limit is 300 requests per minute per account.

A typical +420 run looks like this:

  1. Fetch GET /api/v1/countries and GET /api/v1/services once per deploy and cache them. The Czech country id is cz.
  2. Ask GET /api/v1/prices?country=cz&service=<id> for the live price of the route you plan to use; it changes with the service and with inventory.
  3. Create the activation with POST /api/v1/activations and the JSON body {"service": "<id>", "country": "cz"}. The response hands you an activation id and the number to type into the sign-up form you are testing.
  4. Wait for the code, either by webhook or by reading GET /api/v1/activations/{id} at a modest interval.
  5. If the test is aborted, release the number with POST /api/v1/activations/{id}/cancel so the hold returns to the wallet immediately.

A call to GET /api/v1/balance before a large suite starts is a cheap way to fail fast when the wallet is low. The full reference lives in the docs.

How do I verify webhooks for +420 activations?

Webhooks remove the need to poll and suit parallel test runners. Point one of your endpoints (the Developer console allows 5 per account) at the Czech flow and subscribe it to activation.sms_received, activation.expired and activation.cancelled.

Each request carries an X-OTPRoute-Signature header in the form t=<unix>,v1=<hex>. Rebuild the string <t>.<raw body> from the untouched request bytes, compute HMAC-SHA256 with that endpoint's secret, compare the result to v1 in constant time, and drop anything whose timestamp is too old to be a fresh delivery. Our guide to securing OTP webhooks with HMAC walks through a handler line by line.

Treat events as keyed on the activation id and make the handler idempotent: a retried delivery should find the activation already marked complete and simply return success. Polling GET /api/v1/activations/{id} remains a valid fallback for scripts that run where no public endpoint exists.

Which services can send codes to Czech numbers?

The Czech route currently covers more than 1,700 services. Popular names in the latest snapshot include WhatsApp, Telegram, Google (Gmail & YouTube), Facebook, Instagram, TikTok, Microsoft & Outlook, LinkedIn, Discord, Uber, Airbnb, Signal, Viber and ChatGPT (OpenAI).

This list is not frozen. Inventory moves through the day, so code should read availability from the API at run time rather than from a hard-coded table. If a service you need is missing at one moment, it may reappear later, or a neighboring Central European route may suit the test case.

How should a Czech verification number be stored and parsed?

Czech numbering is closed: national numbers have nine digits and there is no trunk prefix, so the domestic form and the international form differ only by the +420 in front. That makes normalization simpler than in many markets, but forms still receive spaces, a 00420 international prefix or the bare nine digits. Strip separators, convert 00 to +, add +420 when it is missing, and store the result in E.164.

Codes from Czech-facing apps usually arrive in Czech or English. Czech text uses diacritics such as háček and čárka, and some senders strip them to keep the message in a plain character set, so a parser should look for the digit group rather than match a full sentence.

Teams use a +420 number for testing when they launch a product for Czech customers, check Czech-language onboarding copy, or confirm that a regional sign-up flow accepts numbers without a leading zero. The QA testing page outlines how teams structure these runs.

What should happen when a Czech code never arrives?

Some services decline virtual numbers, and some routes are slower at certain hours. A missed code costs nothing: if no SMS arrives within the 20-minute window, or you cancel first, the full amount returns to the wallet automatically.

  • Let the window run before deciding the attempt failed.
  • Check whether the service you are testing accepts virtual numbers at all.
  • Retry later, or try another country route the service supports.
  • Back off between attempts; re-ordering in a tight loop burns rate limit and rarely helps.
  • Log the activation id with every failure so patterns show up across runs.

Can non-developers use the +420 route from the dashboard?

Yes. After you sign up with email and a 6-digit email code (or Google sign-in), open the OTP Gateway, choose the service and Czech Republic, check the price shown, and order. The Czech Republic verification number appears at once; paste it into the app, and the code shows up on the same screen when it lands. Cancelling from the dashboard returns the amount to the wallet in the same way as the API call.

Is there a long-term Czech number, and how is billing handled?

There is no self-serve long-term Czech number today. Dedicated Numbers are a US and Canada product from $1.95/month, covering inbound and outbound SMS plus browser calling; see virtual numbers for details. If your team needs a lasting +420 line, email [email protected] and ask, knowing that availability depends on local rules and is not promised.

Billing is one prepaid USD wallet with no monthly fee and no plan to pick. Funds go in by card or as USDT/USDC, and each top-up triggers an emailed PDF invoice. For integration work, a development account can be switched to sandbox on request so simulated numbers and codes exercise the whole flow without spending wallet funds. Two-factor sign-in with TOTP is available for the account itself.

Frequently asked questions

Can I test my app's Czech sign-up flow without a Czech SIM?

Yes. Order a +420 number from the OTP Gateway for the service you are testing, enter it in your app, and read the code from the dashboard, the API or a webhook.

What is the country id for the Czech Republic in the OTP Route API?

Use cz in the country field of POST /api/v1/activations and in price lookups.

How much does a Czech verification code cost?

Codes start from $0.20 per code, and the exact price for each service is returned by GET /api/v1/prices and shown before you order. You pay only if a code arrives.

Do Czech numbers need a leading zero?

No. Czech numbers have no trunk prefix, so store them as +420 followed by the nine national digits.

How long does a +420 activation stay open?

Twenty minutes. If nothing arrives in that time the activation expires and the wallet is refunded in full.

Is OTP routing to the Czech Republic suitable for bulk account creation?

No. OTP Route is for testing your own product and operating your own legitimate accounts. Keep every +420 activation tied to your own product or account, within each service's terms and the OTP Route Acceptable Use Policy.

Can I keep the same Czech number for later logins?

Not as a self-serve product. Long-term Dedicated Numbers exist only in the United States and Canada, and you can email support to ask about other markets.

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.

Route your first OTP in minutes

Create a free account, top up your USD wallet and order a number from the dashboard or the API. No monthly fee.