Programmatic +351 verification codes for Portuguese launches

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

Yes, you can receive Portugal (+351) verification codes with OTP Route: the OTP Gateway issues a one-time Portuguese number, and the code reaches you in the dashboard, via a signed webhook or by polling the REST API. Codes start at $0.20 per code, with the live price per service returned by the API and an automatic refund when no SMS arrives within 20 minutes.

Which endpoints does a +351 verification run touch?

The base URL is https://otproute.com/api/v1, and every request carries a Bearer key beginning or_live_. Portugal's country id is pt.

  1. GET /api/v1/countries and GET /api/v1/services give you ids; cache them per test run.
  2. GET /api/v1/prices?country=pt&service=<id> returns the current price and whether the route is open.
  3. POST /api/v1/activations with {"service": "telegram", "country": "pt"} reserves the number and returns an activation id.
  4. GET /api/v1/activations/{id} reports status and the code, if you prefer polling.
  5. POST /api/v1/activations/{id}/cancel releases a number your test no longer needs.
  6. GET /api/v1/balance lets a pipeline stop early when the wallet is low.

The account limits are 10 API keys, 5 webhook endpoints and 300 requests per minute. Full schemas sit in the API reference.

How do signed webhooks deliver Portuguese codes to our service?

Register an HTTPS endpoint in the Developer console and subscribe to activation.sms_received, activation.expired and activation.cancelled. Each POST includes X-OTPRoute-Signature: t=<unix>,v1=<hex>.

To verify it, rebuild the string <t>.<raw body>, compute HMAC-SHA256 with the endpoint's secret, and compare against v1 using a constant-time check. Refuse requests whose timestamp is too old, so a captured request cannot be replayed. Store the activation id from each event and ignore any repeat, which makes the handler safe when deliveries are retried. The pattern is explained step by step in webhook-based OTP capture.

What services are open on Portuguese routes?

Portugal shows more than 2,000 services in the current snapshot. Frequently used ones include WhatsApp, Telegram, Airbnb, Uber, Google (Gmail & YouTube), Facebook, Instagram, TikTok, LinkedIn, Microsoft & Outlook, Amazon, Netflix, Discord and Signal.

The set moves through the day as our carrier partners shift capacity. That is why the prices endpoint, not a static config file, should decide whether a test runs.

Why do product teams test against Portuguese numbers?

Portugal often appears early on an EU rollout plan. Lisbon and Porto host many product and engineering teams, and plenty of companies use Portugal as a European base. There is also a localisation reason: European Portuguese (pt-PT) differs from Brazilian Portuguese in spelling, vocabulary and forms of address, so a flow translated for Brazil can read oddly to someone in Portugal. Running a real +351 verification lets reviewers see the pt-PT copy, the SMS that arrives, and the screens around it together.

Under GDPR, keeping staff phone numbers off test and shared accounts is also good data minimisation. A one-time number per check means fewer personal identifiers in your QA systems. The CI pipeline guide shows how to make this part of every build.

How are +351 numbers formatted and stored?

Portugal has no trunk prefix: numbers have nine digits and are dialled the same way at home and in international form after +351. Mobile numbers begin with 9, while geographic landlines start with 2. Store them in E.164, reject anything that is not nine digits after the country code, and remove spaces that users add when typing groups of three.

Incoming codes typically arrive in Portuguese or English, depending on the sender and on the language set for the account. Your code extractor should look for the digits, not for a fixed phrase.

Can a teammate do this without code, and what if no SMS lands?

In the dashboard, open the OTP Gateway, choose Portugal and a service, check the live price, and order. Paste the number into your app and wait on the activation page for the code.

The window lasts 20 minutes, and you only pay if the code arrives; otherwise the full amount returns to the wallet automatically. When a code is missing:

  • Let the window finish rather than cancelling after a few seconds.
  • Confirm the service accepts virtual numbers in that flow.
  • Retry later, or test the same screen with a different service route.
  • Back off between attempts instead of re-ordering in a tight loop.

Is there a dedicated Portuguese line, and how does billing work?

OTP Route does not sell self-serve dedicated numbers in Portugal. Dedicated Virtual Numbers exist only for the United States and Canada, from $1.95/month; for a long-term +351 line, email [email protected], knowing that availability depends on local rules and is not assured. See how temporary and dedicated numbers differ.

Payment is pay as you go from a prepaid USD wallet, without monthly fees or plans, topped up by card or with USDT/USDC, and every top-up comes with a PDF invoice. Development accounts can be moved to sandbox on request to test with simulated numbers and codes. Follow each service's terms; OTP Route's Acceptable Use Policy applies.

Frequently asked questions

What is the Portugal country id for the OTP Route API?

It is pt, used in both the prices query and the activation request body.

Do Portuguese phone numbers use a trunk prefix like a leading 0?

No. Portuguese numbers are nine digits with no trunk prefix, so the E.164 form is +351 followed by those nine digits.

Can I test a pt-PT onboarding flow without a Portuguese SIM card?

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

How much does a Portugal verification number cost?

From $0.20 per code; the precise price depends on the service and is shown before ordering.

Will I pay for a +351 activation that receives nothing?

No. Expired or cancelled activations are refunded in full to your wallet.

Can I rent a Portuguese number for ongoing logins?

Not self-serve. Long-term lines are a US and Canada product; email support if you need a +351 line.

Should I poll or use webhooks for Portuguese codes?

Webhooks scale better for parallel jobs, while polling GET /api/v1/activations/{id} suits runners that cannot accept inbound traffic.

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.