Picking a +55 route for Brazilian SMS verification

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

Yes, you can receive Brazil (+55) verification codes with OTP Route by ordering a one-time number from the OTP Gateway and reading the code in the dashboard or pulling it through the REST API and signed webhooks. Prices start at $0.20 per code, and a code that never lands inside the 20-minute window costs nothing because the amount returns to your wallet.

Should a Brazil test use the OTP Gateway or a long-term line?

Start with the shape of the job, because it decides the product. A Brazilian verification test usually needs one code, once: a sign-up screen in Portuguese, a login challenge, a phone-change step. That is exactly what the OTP Gateway is built for. You pick a service and Brazil, receive a +55 number for a single code, and the activation closes after 20 minutes or when the SMS arrives.

A long-term line is a different story. Dedicated Numbers are a United States and Canada product, sold instantly from the dashboard from $1.95/month, with inbound SMS, outbound SMS and browser calling. There is no self-serve long-term +55 number. If your team truly needs a Brazilian line it can keep, write to [email protected] and describe the use case; whether anything is possible depends on local rules, and nothing is promised.

A quick rule of thumb:

  • One code per test case, fresh state each run: OTP Gateway with br.
  • A staging account that must log in again next month: a US or Canadian Dedicated Number, if the service accepts it.
  • Unsure: read temporary vs dedicated numbers before buying anything.

Which apps can send codes to a Brazilian number right now?

The Brazil route currently covers more than 2,900 services, and the popular ones in the live snapshot include WhatsApp, Telegram, Google (Gmail & YouTube), Instagram, Facebook, TikTok, Uber, Discord, Microsoft & Outlook, LinkedIn, Netflix, Airbnb, Shopee and AliExpress.

Treat that list as a snapshot rather than a contract. Availability moves during the day as our carrier partners add and rotate routes, so a pipeline should ask the API instead of trusting a hard-coded list. The countries directory shows the same live data for people who prefer a browser.

What does the Brazil OTP API sequence look like in practice?

Every call goes to https://otproute.com/api/v1 with a Bearer key prefixed or_live_, generated in the Developer console. Brazil's country id is br.

  1. Resolve service ids once with GET /api/v1/services and keep them in config.
  2. Before ordering, call GET /api/v1/prices?country=br&service=whatsapp (or your service id). The response carries the live price and availability for that pair.
  3. Create the activation with POST /api/v1/activations and the body {"service": "whatsapp", "country": "br"}. Store the activation id next to your test run.
  4. Type the +55 number into the flow you are testing.
  5. Listen for the activation.sms_received event on a webhook; as a fallback, check GET /api/v1/activations/{id} every few seconds.
  6. If the test aborts, release the number with POST /api/v1/activations/{id}/cancel so the funds return immediately.

Webhook deliveries are signed in X-OTPRoute-Signature as t=<unix>,v1=<hex>: an HMAC-SHA256 of <t>.<raw body> using the endpoint secret. Verify it, drop stale timestamps, and make the handler idempotent on the activation id. The full reference sits in the API docs.

Can someone on the growth team do this without code?

Yes. The dashboard runs the same OTP routing without any scripting:

  1. Create an account with your email and a 6-digit email code, or Google sign-in.
  2. Add funds to the USD wallet.
  3. Choose Brazil and the service, check the price shown, and order.
  4. Paste the +55 number into the app and watch the code appear on the activation card.

Marketing, support and localisation reviewers often use this path to confirm a Portuguese onboarding screen behaves before a release, while engineers keep the API for automated runs.

How should +55 numbers be stored and normalised?

Brazilian numbers carry a two-digit area code (DDD) followed by the subscriber number, and mobile numbers have nine digits that begin with 9. Inside Brazil, people dial a leading 0 plus a carrier selection code for long-distance calls, which is why user input often contains extra digits that do not belong in storage.

Store everything in E.164: +55, the area code, then the subscriber number, with no spaces, no leading 0 and no carrier code. Normalise on input, compare on the normalised value, and only format for display. Codes from Brazilian senders usually arrive in Portuguese, sometimes in English, so parse the digits rather than matching a fixed sentence.

Teams test this market for a Brazilian launch, Portuguese localisation QA, and onboarding flows that sit alongside obligations under Brazil's data protection law, the LGPD. Our fintech onboarding page covers the verification side of that work.

What if a Brazilian code never shows up?

First, let the 20-minute window run; some senders are slower than others, and delivery depends on the service and the route. If it expires, the charge is reversed automatically and you can try again a little later or on another route the API lists.

  • Confirm the service accepts virtual numbers at all. Some do not, which is precisely why the refund rule exists.
  • Do not re-order in a tight loop. Back off between attempts and log each activation id.
  • Check that your app sent the number in full international form, not a local format with the trunk digits.

The guide to reducing failed OTP deliveries lists more diagnostics.

How do the wallet, invoices and sandbox fit together?

OTP Route bills from one prepaid USD wallet: pay as you go, no monthly fee and no plan to choose. Top up by card or with USDT or USDC, and every top-up arrives with a PDF invoice by email. Full rates live on the pricing page and in the API.

For integration work, ask support to switch a development account to sandbox. It returns simulated numbers and codes, so you can exercise the activation and webhook path end to end without touching wallet funds. Use it only for your own products, follow each service's terms, and remember the Acceptable Use Policy applies to every account.

Frequently asked questions

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

Yes. Order a +55 number from the OTP Gateway for your own app or a supported service, enter it in the flow, and read the code in the dashboard or through the API.

What is Brazil's country id in the OTP Route API?

It is br. Pass it as the country field when creating an activation or as the country query parameter on the prices endpoint.

Am I charged if WhatsApp never sends the code to my +55 number?

No. If no SMS reaches the number within 20 minutes, or you cancel first, the full amount goes back to your wallet automatically.

Can I buy a Brazilian number and keep it for months?

Not as a self-serve product. Long-term Dedicated Numbers are only sold for the United States and Canada; for Brazil you can email [email protected] to ask, with no promise of availability.

Should I store the leading zero from a Brazilian number?

No. Strip the trunk 0 and any carrier selection code, then save the number in E.164 form starting with +55 and the two-digit area code.

Which language do Brazilian verification messages use?

Most arrive in Portuguese, and a few global services send English text. Extract the numeric code instead of relying on the wording.

Can I trial the API before funding the wallet?

Ask for sandbox mode on a development account. It simulates numbers and codes so the full integration can be tested without spending wallet funds.

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.