An API-first guide to Swedish +46 verification codes

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

OTP Route receives Swedish (+46) SMS verification codes on one-time numbers from its OTP Gateway, delivering each code to the dashboard and to your code via signed webhooks or REST polling. You pay from $0.20 per code and only when the code arrives; an order with no SMS after 20 minutes is refunded automatically.

Which endpoints do I call to receive a Swedish SMS OTP?

Start with an API key from the Developer console. Keys carry the or_live_ prefix and go in a Bearer header against https://otproute.com/api/v1; you can hold up to 10 of them, which makes it easy to separate CI, staging and a developer's laptop. Sweden's country id is se.

  1. GET /api/v1/services and GET /api/v1/countries give you the ids. Cache them per run.
  2. GET /api/v1/prices?country=se&service=discord returns today's price and availability for that pair.
  3. POST /api/v1/activations with {"service": "discord", "country": "se"} creates the order and returns an activation id plus a +46 number.
  4. Your test enters the number in the product's verification screen.
  5. The code reaches you through a webhook or through GET /api/v1/activations/{id}.
  6. POST /api/v1/activations/{id}/cancel frees an order the test no longer needs.

A call to GET /api/v1/balance before the suite lets the job stop early when the wallet is low. The ceiling is 300 requests per minute, plenty for a polling interval of a few seconds. See the OTP API integration guide for a fuller walkthrough of this SMS verification API.

How do I verify the webhook before trusting a +46 code?

Register an endpoint in the Developer console (up to 5 per account) and subscribe to activation.sms_received, activation.expired and activation.cancelled.

Every delivery includes X-OTPRoute-Signature: t=<unix>,v1=<hex>. Your handler should:

  • rebuild the string "<t>.<raw body>" from the untouched request body;
  • compute HMAC-SHA256 with that endpoint's secret and compare against v1 in constant time;
  • reject timestamps outside a short tolerance to block replays;
  • key its work on the activation id, so a retried delivery does not process the same code twice.

Polling remains a valid fallback when a firewall blocks inbound calls. The HMAC webhook security post covers the edge cases.

What services can a +46 number verify?

The Swedish route currently lists more than 1,700 services. Current examples include WhatsApp, Telegram, Discord, Snapchat, LinkedIn, Microsoft & Outlook, Google (Gmail & YouTube), Uber, Netflix, Amazon, Signal, ChatGPT (OpenAI), Claude, eBay and X (Twitter).

Counts and stock move during the day, so let the prices endpoint decide what your test orders rather than hard-coding a list.

How should Swedish numbers be normalized and parsed?

Sweden uses the trunk prefix 0. A mobile number written locally as 07 followed by eight more digits becomes +46 7 and those eight digits in E.164, with the zero dropped. Store that international form, and make sure input handling strips spaces, hyphens and the leading zero before adding +46. A +46 number for testing is a good fixture for exactly this check, because Swedes often type the local form out of habit.

Swedish-language SMS templates may include the letters å, ä and ö. If your pipeline logs the raw message, confirm that it handles Unicode text cleanly, and extract the code by digit pattern rather than by an English phrase such as "your code is". The same parser then works whether the service writes in Swedish or English.

Teams test here for Nordic launches, for reviewing Swedish copy in onboarding, and for regional support teams that operate accounts on behalf of the business.

Can non-developers use the dashboard for Sweden?

Yes. Select Sweden and a service, check the live price, and confirm. The +46 number appears in the order list; paste it into the app, and the code shows up beside it when the service sends it. Product managers and support staff use this path to check a single flow on a Sweden verification number without touching the API. Account setup takes an email and a 6-digit code at sign-up.

Why might a +46 code fail to arrive, and what then?

Each activation is open for 20 minutes, and you only pay if the code arrives. Expired or cancelled orders refund the full amount to the wallet with no ticket needed.

If a code is missing, give the window time, then retry later or test through another service route. Some services refuse virtual numbers, and a refusal on the sign-up screen usually means that rather than a delivery fault. Back off between attempts instead of reordering in a tight loop; good OTP routing logic treats a missing code as a signal to wait or switch, not to hammer.

Dedicated lines, wallet and sandbox for Swedish testing

A self-serve long-term number in Sweden is not part of OTP Route today. Dedicated Numbers are available only in the United States and Canada, from $1.95/month; for a lasting Swedish line, email [email protected], and the team will say whether local rules allow it.

Funding works through a prepaid USD wallet with no monthly fee, topped up by card or USDT/USDC, each top-up followed by a PDF invoice. Ask to have a development account switched to sandbox if you want simulated numbers and codes for CI. Details on costs are on the pricing page.

Test only your own products, respect each service's terms, and follow OTP Route's Acceptable Use Policy.

Frequently asked questions

What is the Sweden country id in the OTP Route API?

It is se, used in the prices query string and in the activation body.

Do I store Swedish numbers with the 0 in front?

No. Drop the trunk zero and save the E.164 form beginning with +46; show the local form only if your interface needs it.

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

Yes. Order a +46 number for the service, enter it in your app and receive the code by webhook, polling or the dashboard.

Will Swedish characters break my OTP parser?

They should not if you match digits rather than words and handle the message as Unicode text.

What does a failed +46 order cost?

Nothing. Without an SMS inside 20 minutes, or after a cancel, the whole amount returns to the wallet.

Can I get a Swedish number that stays mine?

Not as a self-serve product. Long-term numbers are offered in the US and Canada; email [email protected] to ask about Sweden.

How do I run integration tests without using real funds?

Request sandbox mode for a development account, which returns simulated numbers and codes end to end.

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.