English
Receiving Grab SMS codes for testing: gateway or dedicated line?
A team can receive a Grab verification code on an OTP Route number by ordering a one-time activation for the grab service in the OTP Gateway, then reading the code in the dashboard or collecting it via REST polling or a signed webhook. Pricing starts at $0.20 per code, and if no code arrives within 20 minutes the charge is refunded.
Will your Grab test need one code or many?
Decide this before you write any automation. Grab, the Southeast Asian super-app for rides, food delivery and payments, identifies accounts by phone number and sends an SMS one-time code when someone signs up or logs in on a new device.
- One code per test case. A QA run that walks through registration, or a partner integration check that needs a fresh rider profile, fits the OTP Gateway: one number, one code, then the activation closes.
- Repeated logins to the same account. If a staging profile has to log in again next week, a one-time number is the wrong tool, because you will not hold it later. Dedicated Virtual Numbers, from $1.95/month, are sold only for the United States and Canada and keep receiving SMS while they renew. They fit only when Grab accepts a US or Canadian number for the market you test.
Temporary vs dedicated numbers covers the trade-off in more depth.
Which countries can supply a Grab phone number?
On OTP Route, Grab codes can be received on numbers from 197 countries. Grab's own operating footprint is Southeast Asia, so most teams pick numbers from those markets: Singapore, Malaysia, Indonesia, the Philippines, Thailand, Vietnam, Cambodia and Myanmar. Other options in the list include Taiwan, Hong Kong, Japan, South Korea, Australia, India, the United Kingdom and the United States.
Match the number to the market of the account under test. A Jakarta checkout flow should be verified with an Indonesian number, and a Singapore merchant dashboard with a Singaporean one, otherwise you are testing a path real users never take. Country availability changes through the day, so read it live.
How do you automate the Grab SMS verification API flow?
Grab automation talks to https://otproute.com/api/v1, authenticating each call with an or_live_ Bearer key created in the Developer console. Each account gets up to 10 keys and 5 webhook endpoints, throttled at 300 requests per minute, which leaves room for several parallel Grab runs.
- Confirm the service id
grabviaGET /api/v1/servicesand the country id viaGET /api/v1/countries. - Read the live price with
GET /api/v1/prices?country=<id>&service=grab. - Create the order:
POST /api/v1/activationswith{"service": "grab", "country": "<id>"}. - Enter the number in the Grab sign-up screen of your test device or emulator.
- Collect the code and finish the flow.
For webhooks, subscribe to activation.sms_received, activation.expired and activation.cancelled. Check X-OTPRoute-Signature (t=<unix>,v1=<hex>) by computing HMAC-SHA256 over <t>.<raw body> with the endpoint secret, reject old timestamps, and key processing on the activation id so a redelivered event cannot complete a test twice. If you prefer polling, query GET /api/v1/activations/{id} every few seconds; cancel with POST /api/v1/activations/{id}/cancel when a run is aborted. See the API docs and the webhook capture guide.
How do I receive a Grab OTP in the dashboard?
Sign in, open the OTP Gateway, choose Grab and a country, check the price and confirm. Copy the number into the app, request the code, and keep the activation page open. The SMS appears there when it arrives, with no API key involved.
Why might a Grab code not arrive?
Grab may refuse virtual numbers, limit repeated attempts from one device, or apply market-specific checks. Route availability also varies during the day. Let the activation run its 20 minutes; if nothing arrives, the full amount returns to your wallet automatically, as it does when you cancel. Then try later or with a number from another supported country that still matches your test case, and do not loop new orders without a pause.
What counts as responsible Grab testing?
Use OTP Route only to test and operate your own legitimate products and accounts. Follow Grab's terms, keep to one account per real person or business, and never use numbers to dodge identity checks for driver or merchant onboarding, to collect promotions or to recreate restricted accounts. OTP Route is not affiliated with Grab; the name is a trademark of its owner, and our Acceptable Use Policy applies to every order.
How is Grab verification billed?
Orders draw from one prepaid USD wallet with no monthly fee and no plan to choose. Top up by card or with USDT/USDC, and expect a PDF invoice by email for each payment. While building, ask for sandbox mode on a development account to get simulated numbers and codes. Current figures are on pricing.
Frequently asked questions
What is the service id for Grab in the API?
It is grab. Pass it in the prices query and in the body of POST /api/v1/activations.
Can I receive a Grab OTP for a Singapore or Malaysia account?
Yes, when Grab is available on that country route. Choose the country whose Grab market the test account is meant to live in.
Will Grab accept a virtual number for Grab sign-up tests?
Not necessarily; Grab may decline some virtual numbers. If no code arrives within 20 minutes, you are refunded automatically.
Can I log back into a Grab test account later with the same number?
Not with a one-time activation. For repeat logins, a US or Canadian Dedicated Number from $1.95/month fits, if Grab accepts that region for your test.
How much does a Grab verification code cost?
From $0.20 per code; the exact price depends on the country and is returned live by the API and dashboard.
Should I use polling or webhooks for Grab codes?
Webhooks suit parallel CI runs; polling suits simple scripts. Either way, verify the signature and keep handlers idempotent on the activation id.
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.