A developer's route to Swiss (+41) verification codes

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

Yes, you can receive Swiss (+41) SMS verification codes with OTP Route by ordering a one-time number from the OTP Gateway and reading the code in the dashboard, through REST polling, or from a signed webhook. Pricing begins at $0.20 per code, quoted live per service, and an activation that gets no SMS within 20 minutes is refunded to your wallet in full.

Which requests return a Swiss code through the API?

The Switzerland OTP API is the same small surface used for every country, with ch as the country id. Authenticate with a Bearer key (prefix or_live_) created in the Developer console; one account may hold up to 10 keys.

  1. Resolve ids from GET /api/v1/services and GET /api/v1/countries, and cache them between runs.
  2. Check GET /api/v1/prices?country=ch&service=<id>. The response carries the current price and whether a route is open right now.
  3. Send POST /api/v1/activations with {"service": "whatsapp", "country": "ch"} or whichever service your test covers. Keep the returned activation id.
  4. Put the +41 number into the phone field of your own product.
  5. Read the result from GET /api/v1/activations/{id} or from a webhook; abort cleanly with POST /api/v1/activations/{id}/cancel.

GET /api/v1/balance belongs in your suite's setup step. The rate limit is 300 requests per minute per account, which comfortably covers several concurrent jobs polling at a relaxed interval. Endpoint reference: docs.

Polling or webhooks for +41 activations?

Polling keeps a quick script simple. Webhooks win as soon as tests run in parallel, because nothing has to spin while a Zurich-bound SMS is in flight.

OTP Route lets you register up to five endpoints; subscribe each one to activation.sms_received, activation.expired and activation.cancelled. Verify each delivery before trusting it: take the t and v1 parts of X-OTPRoute-Signature, compute HMAC-SHA256 over "<t>.<raw body>" with the endpoint secret, compare in constant time, and refuse timestamps outside a short tolerance. Key your processing on the activation id so a retried delivery is a harmless no-op.

For a deeper treatment of signature checks, see securing OTP webhooks with HMAC.

What should a Swiss number look like in your database?

Domestically, Swiss numbers start with the trunk prefix 0, for example a mobile written as 079 123 45 67. Internationally that zero disappears: the E.164 form is +41 79 123 45 67, with nine digits after the country code. Mobile ranges sit in the 07x block. Store the canonical +41… string and only format for display, otherwise deduplication and lookups break when one form says 079 and another says +4179.

Language is the other Swiss quirk. With German, French, Italian and Romansh all national languages, a verification SMS might arrive in any of the first three depending on the sender's locale handling, and plenty of apps simply fall back to English. If your product localizes by region, a real +41 code is a cheap way to confirm the right template fires.

Teams test here before launching a fintech or e-commerce product into the Swiss market, when supporting staff who manage business accounts from Geneva or Basel, or when validating cross-border flows that also touch Liechtenstein, which uses its own +423 code.

Services you can verify against a Switzerland verification number

The current snapshot for ch lists Google (Gmail & YouTube), Microsoft & Outlook, LinkedIn, WhatsApp, Telegram, Signal, Uber, Airbnb, Amazon, eBay, Netflix, Discord, ChatGPT (OpenAI) and Claude, among others. In total Switzerland carries more than 1,700 services on the OTP Gateway.

Because availability moves throughout the day, treat that list as a starting point and query live data at run time. A harness that checks prices first and marks a test as skipped when the route is closed produces far cleaner reports than one that retries blindly.

Troubleshooting a Swiss activation that stays empty

When a +41 number never receives anything, work through these before touching your code:

  • Give the full 20-minute window a chance; some platforms queue outbound messages.
  • Check whether the service refuses virtual numbers. Several do, and that is exactly the case the automatic refund exists for.
  • Retry after a pause, or use a different service route, instead of re-ordering in a tight loop.
  • Cancel abandoned activations so the money returns right away.

The post on country routing for OTP explains why the same app can behave differently from one country route to another.

Is there a long-term Swiss number?

Not as a self-serve product. For Switzerland, OTP Route offers one-time numbers through the OTP Gateway only.

Dedicated Virtual Numbers, which you keep while they renew, are limited to the United States and Canada and start at $1.95/month. If you specifically need a persistent Swiss line, write to [email protected] and describe the use case; the answer depends on local rules and cannot be promised in advance.

Wallet, invoices and sandbox for Swiss OTP routing

You pay as you go from a single prepaid USD wallet. There is no monthly fee and no plan to choose. Fund it by card or with USDT/USDC, and a PDF invoice is emailed for every top-up, which keeps accounting tidy for Swiss entities that reconcile in francs.

For integration work, request sandbox mode on a development account. It returns simulated numbers and codes so the whole SMS verification API path can be tested without spending wallet funds. Use real activations only for your own products and accounts, within each service's terms and OTP Route's Acceptable Use Policy. The QA testing solution page shows how teams fold this into release checks.

Frequently asked questions

What country id does the API use for Switzerland?

Switzerland is ch. Swiss requests carry that two-letter value wherever a country is expected, including the activation body.

Can I check a Swiss login flow without owning a Swiss SIM?

Yes. A +41 number for testing from the OTP Gateway receives the code, which you then read in the dashboard or via the API.

Should I keep the 0 when saving a Swiss mobile number?

No. The 0 is a domestic trunk prefix; store the E.164 form beginning +41 followed by nine digits.

Which language will a Swiss verification SMS be in?

It depends on the sender: German, French, Italian or English are all common. Extract the code with a digit pattern rather than fixed wording.

What does a Switzerland SMS OTP cost?

From $0.20 per code, with the exact price per service returned by GET /api/v1/prices before you order.

What happens to my money if no code arrives?

It goes back to your wallet automatically when the window closes or when you cancel the activation.

Is Liechtenstein covered by the Swiss route?

No, Liechtenstein has its own +423 country code and its own page in the countries list, so order it separately.

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.