How teams receive DiDi SMS codes for testing and operations

OTP Gateway from $0.20 per code198 countriesAPI id: didiDedicated US/CA numbers from $1.95/month
Quick answer

A team receives a DiDi verification code on an OTP Route number by ordering a one-time number from the OTP Gateway with the service id didi and a country, then reading the code in the dashboard or collecting it through API polling or a signed webhook. Pricing starts at $0.20 per code, the live figure depends on the country, and the charge is returned to the wallet if nothing arrives inside the 20-minute window.

The situation: a mobility account that hinges on one phone number

DiDi is a ride-hailing and mobility platform, and like most apps in that category it treats the mobile number as the core of an account. An SMS code is typically requested at sign-up, when someone logs in on a new device, and during account recovery; driver and courier onboarding leans on the same check.

That creates friction for legitimate business work. A company running a corporate rider account does not want it tied to one employee's personal phone. An agency managing travel for clients needs a verification step that someone other than the original signer can complete. A QA team building a product that links to a DiDi account wants to rehearse the flow without passing a personal handset around the office. A virtual number for DiDi, used once per verification, keeps those steps out of anyone's private SIM.

Which countries can supply a DiDi phone number?

The didi route currently spans 198 countries. Teams most often start with markets where ride-hailing demand is high, such as Mexico, Brazil, Chile, Colombia, Peru, Argentina, Costa Rica, Panama, the Dominican Republic, Ecuador, Australia, New Zealand, Japan and Hong Kong.

Pick the country deliberately. A rider account that will be used in Santiago should be verified with a Chilean number, and a regression test for the Mexican sign-up screen needs a Mexican one. Mismatching the number's country and the account's market is a common reason a test passes on paper but fails against the real app. The full list sits under countries.

How does the DiDi verification code API flow run?

The DiDi flow uses the same base URL as every other route, https://otproute.com/api/v1, with an or_live_ key in the Authorization header.

  1. Query GET /api/v1/prices?country=<id>&service=didi to see whether the route is open and what it costs right now.
  2. Place the order with POST /api/v1/activations and a body like {"service": "didi", "country": "mx"}.
  3. Enter the returned number on the DiDi screen you are testing and request the SMS.
  4. Read the code from the webhook, or poll GET /api/v1/activations/{id} until it appears.
  5. If the ride-booking test is abandoned midway, release the number via POST /api/v1/activations/{id}/cancel.

An account can hold up to 10 keys and 5 webhook endpoints, within 300 requests per minute.

How should a DiDi webhook handler be written?

Subscribe to activation.sms_received, and also to activation.expired and activation.cancelled so your test knows when to stop waiting. Every delivery carries X-OTPRoute-Signature: t=<unix>,v1=<hex>; recompute HMAC-SHA256 over "<t>.<raw body>" with the endpoint secret, compare in constant time, and drop anything with a stale timestamp.

Events are keyed on the activation id, so store that id when you order and treat a second delivery for the same id as a no-op. That idempotency matters because a retried webhook should never submit a DiDi code twice. If inbound webhooks are awkward in your environment, polling the activation endpoint works too. The article on webhook-based OTP capture compares both approaches.

Receiving a DiDi OTP from the dashboard

Operations staff can skip the API entirely. Sign in, top up the wallet, open the OTP Gateway, search for DiDi, choose the country that matches the account, and check the displayed price before confirming. The number appears on an activation card, and the code shows up there once DiDi sends it. The activation stays open for 20 minutes.

Why might a DiDi code fail to arrive?

Several ordinary causes explain an empty activation:

  • DiDi, like many platforms, may decline virtual numbers on some routes or at some times.
  • The chosen country's route can be busy; availability moves throughout the day.
  • The app may throttle repeated requests from the same device or session during testing.

The remedy is patient rather than aggressive. Let the window finish, try later or with another country that still fits the test, and avoid re-ordering in a tight loop. You never pay for a miss: when the window closes or you cancel, the full amount returns to the wallet automatically.

When should a DiDi account sit on a Dedicated Number, and what rules apply?

A one-time activation suits a single verification. If the same DiDi account must log in again next month, for example a staging rider account or a shared corporate login, a Dedicated Number keeps the line under your control. These are offered in the United States and Canada only, from $1.95/month, with inbound SMS in the dashboard and on your webhook. See virtual numbers for details.

Use OTP Route only for testing and operating your own legitimate products and accounts. Follow DiDi's terms, keep to one account per real person or business, and note that OTP Route's Acceptable Use Policy applies. OTP Route has no affiliation with DiDi, whose name is a trademark of its owner.

Frequently asked questions

What is the service id for DiDi SMS verification for testing?

Use didi in the service field, together with the country id of the market you are testing.

Can I receive a DiDi OTP for a Mexican account without a Mexican SIM?

Yes, if the Mexico route is open: order a number with country mx and service didi, then read the code by API or in the dashboard.

Do I pay if DiDi never sends the code?

No. An activation with no SMS inside 20 minutes, or one you cancel, is refunded to the wallet in full.

Does DiDi accept every virtual number?

Not necessarily. Some routes may be refused, so retry later or use another suitable country.

Can I test the DiDi integration without spending wallet funds?

Yes. A development account can be switched to sandbox on request, returning simulated numbers and codes for end-to-end tests.

How do I pay for DiDi activations?

Top up a prepaid USD wallet by card or USDT/USDC; there is no monthly fee, and every top-up comes with a PDF invoice. Current rates are on the pricing page.

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.