• Mon - Fri 9.00 - 19.00

Yearly Archives: 2026

The Verification Flow You Can Ship in an Afternoon (Node.js)

Sending a verification code should be one HTTP call, not a week of WhatsApp Business Platform integration. This guide builds a working WhatsApp OTP API Node.js flow end to end: send the code, verify what the user typed, and handle the failures that actually occur in production.

This guide uses Replio’s WhatsApp OTP endpoint because it is a single JSON POST with no SDK to install. The shape of the flow is the same whichever provider you use, so the structure transfers.

WhatsApp OTP API Node.js flow from send through verify
The four steps of a WhatsApp OTP API Node.js integration.

Before you write any Node.js code

Three things need to exist first. A WhatsApp number connected to your provider account. At least one approved Authentication template on the WhatsApp Business Account. An API key.

Keep the key server-side. It sends from your verified business number, so a leaked key means someone else messaging your customers under your brand.

WhatsApp OTP API Node.js: sending the code

One POST sends the code. You can pass a code you generated yourself, or omit it and let the provider generate, hash and store one for you.

const res = await fetch("https://engine-production-2647.up.railway.app/api/otp/send", {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${process.env.REPLIO_OTP_KEY}`,
    "Content-Type": "application/json"
  },
  body: JSON.stringify({
    phone: "447911123456",
    idempotency_key: `signup-${signupId}`
  })
});

const data = await res.json();
if (!res.ok) throw new Error(data.detail.code);
// data.verify_enabled === true

A success looks like this:

{
  "ok": true,
  "sent_to": "+447911123456",
  "template": "verify_code",
  "credits_charged": 1,
  "verify_enabled": false
}

Read verify_enabled carefully. It is true only when you omitted the code. That flag tells you whether the verify endpoint has anything to check.

Verifying what the user typed back

If you let the provider generate the code, check what the user typed with a second call.

const res = await fetch("https://engine-production-2647.up.railway.app/api/otp/verify", {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${process.env.REPLIO_OTP_KEY}`,
    "Content-Type": "application/json"
  },
  body: JSON.stringify({ phone: "447911123456", code: userInput })
});

if (res.ok) {
  const { verified } = await res.json();
  if (verified) return completeSignup();
}

const { detail } = await res.json();
switch (detail.code) {
  case "incorrect_code":    return show("That code is not right.");
  case "code_expired":      return show("That code expired. Send a new one.");
  case "too_many_attempts": return forceResend();
  default:                  throw new Error(detail.code);
}

A correct code returns { "ok": true, "verified": true }. A wrong or expired one is a normal 400, not a 200 with a false flag. Handle it as an error branch.

One detail trips people up on the first run. The phone number goes in international format as digits. A leading plus sign, spaces and dashes are accepted and stripped, but a local-format number without a country code is rejected as invalid_phone. Normalise before you send, not after the first support ticket.

Note also that only a delivered send costs a credit. Rejected requests, rate limits and test-mode calls are free, so aggressive validation on your side costs you nothing.

Where this fits in your signup flow

Treat the send and the verify as two separate states in your own model, not one blocking call. Send the code, store the signup attempt, and return control to the user. Verify runs later, when they submit the form.

That separation matters when things go wrong. If the verify call fails, you still hold the signup attempt and can offer a resend without losing the user’s progress. If you couple the two, a network blip drops them back to the start.

Rate limits sit on the recipient as well as the account. Five codes to one number per hour, and ten verify attempts per number per ten minutes. Surface a clear message when you hit those rather than a generic failure, because a user who resends four times in a minute will hit them.

Handling the errors that actually happen

Branch on the machine-readable code field, never on the human-readable message. The message wording can change at any time; the codes are the contract.

  • incorrect_code — wrong digits. Let the user retry.
  • code_expired — past its time to live. Offer a resend.
  • too_many_attempts — five wrong guesses burn the code. Force a new one.
  • recipient_rate_limited — five codes to one number in an hour. Back off.
  • upstream_error — WhatsApp was unreachable. Safe to retry.

Two habits that save you money and credits

Pass an idempotency key. Networks time out after a send has already happened, and a blind retry sends a second code and spends a second credit. With a key tied to the signup attempt, a retry returns the original result instead.

Then build against a test key. A test credential validates the whole request and applies every rule, but sends nothing and bills nothing.

Hardening the flow before launch

Set a short time to live. Five minutes is the common default and it limits the window for a stolen code. Cap wrong guesses. Never log the code itself.

If you are weighing this against your current SMS provider, we compared the two channels in WhatsApp OTP vs SMS. The full parameter list and error table live in the Replio WhatsApp OTP API reference, and Meta documents the template rules in its message template guide. For context on running WhatsApp as a support channel too, see our piece on answering WhatsApp and Instagram without working nights.

Frequently asked questions

Do I need an SDK for Node.js?

No. It is one JSON POST with a bearer token, so your language’s standard HTTP client is enough.

Should I generate the code myself?

Either works. Pass your own code and the provider only delivers it. Omit it and the provider generates one, stores a hash, and gives you a verify endpoint.

How long does a code stay valid?

Five minutes by default, configurable between 60 and 1800 seconds when the provider generates the code.

What if the user never receives it?

Check the error code on the send. If the number has no WhatsApp account the send fails, which is your cue to fall back to SMS.

Is the code stored anywhere?

Replio stores only a sha256 hash of codes it generates, never the code itself. Codes you supply are not stored at all.

Related Guides

Karwa Taxi Fares: The Rate Card Qatar Doesn’t Publish

Karwa taxi fares run on a meter, and Qatar regulates that meter. Yet anyone budgeting a Doha trip in August 2026 hits an odd wall. Mowasalat, the state-owned operator behind the turquoise Karwa fleet, does not publish a complete tariff table on its public website. Its official Karwa Taxi page sets out the service, the booking channels and the vehicle types. It does not list a starting charge or a per-kilometre rate. Hamad International Airport’s official taxi page does not list one either. That gap is why the fare guides you find online disagree with each other, sometimes sharply.

This article separates what Mowasalat and the airport confirm from what circulates unverified. Tamara News checked both official pages on 27 August 2026.

What Karwa taxi fares are built from

Karwa runs a metered service, and that distinction matters. Metered pricing tracks distance, elapsed time and the tariff period in force. It does not rise and fall with demand the way app-based dynamic pricing does. Rush hour still costs you more, but through the meter running longer, not through a surge multiplier.

Five elements make up a metered Karwa journey:

  • The starting charge, applied the moment the meter begins.
  • The distance rate, charged per kilometre travelled.
  • The tariff period, since day and night rates differ.
  • Waiting time, which accrues in traffic and during requested stops.
  • The airport tariff, a separate starting charge for journeys from Hamad International Airport.

Mowasalat describes the Karwa service, its 24-hour support line and its vehicle categories on its official Karwa Taxi and Chauffeur Services page. The page carries no rate card.

Where published Karwa taxi fares disagree

Because no official table exists in public view, third-party guides fill the vacuum. They do not agree. One widely cited set of figures puts the city starting charge at QAR 4 with a QAR 10 minimum fare. Another puts it at QAR 7, covering the first 1.8 kilometres. Both appear in guides updated during 2026.

Table of published Karwa taxi fares showing starting charge, distance rate and airport tariff figures
Published Karwa taxi fares compared with what Mowasalat and Hamad International Airport confirm, checked 27 August 2026.
Fare elementFigures in circulationConfirmed on an official page?
City starting chargeQAR 4 or QAR 7, depending on the guideNo
Minimum city fareQAR 10 in several guidesNo
Daytime distance rateAbout QAR 1.60 per kilometreNo
Night and outside-Doha rateAbout QAR 1.90 per kilometreNo
Airport starting chargeQAR 25 in several guidesNo
Waiting chargeQAR 8 per 15 minutes, in older guidesNo
Cashless payment at the airportMastercard, Visa, Apple Pay, Google Pay, NAPSYes
Booking line4458 8888, 24 hoursYes

Treat every “No” row as indicative. The figures may well be accurate. They simply are not confirmed by a source Tamara News could verify on 27 August 2026. Fares also change: Mowasalat has revised its tariff before, so a figure republished from an older guide can quietly go stale.

Airport taxi fares and the Taxi Pavilion rule

Airport transport is the one area where the official record is detailed. Hamad International Airport states that Mowasalat operates all airport taxis. Arriving passengers board at the Taxi Pavilion, at the left end of the Arrivals Hall. Signs point the way, and taxi coordinators help with luggage and vehicle choice.

Travellers can pick a sedan or a van depending on group size and baggage. Special taxis serve larger families and heavier luggage loads. For a passenger with reduced mobility, the airport asks you to call Mowasalat on +974 4458 8888 with as much notice as possible.

The airport is firm on one point. Only taxis working from the Taxi Pavilion are authorised. It advises passengers to ignore unsolicited offers elsewhere in the terminal. Its full guidance sits on the Hamad International Airport taxi page.

Ride-hailing works differently at the airport. Licensed apps such as Uber, badrgo and Ryde collect from a separate authorised area in the multi-level car park, not from the Taxi Pavilion. Our guide to the ride-hailing apps licensed in Qatar covers who is approved and how each platform prices a journey.

How you pay Karwa taxi fares

Cashless payment is well documented at the airport. Hamad International Airport lists Mastercard, Visa, Apple Pay, Google Pay and NAPS as accepted options in its taxis.

Away from the airport, coverage varies. The Karwa app supports card payment, and Google Pay works on compatible Android devices. A street-hailed taxi may not offer the same options. Carry a backup method: a small amount of cash removes the risk entirely.

Booking a Karwa taxi: the channels Mowasalat confirms

Mowasalat lists four ways to reach a Karwa taxi:

  • The Karwa Taxi mobile app, on Android and iOS.
  • Online booking through the official website.
  • The 24/7 Customer Service Centre on 4458 8888, which also handles WhatsApp enquiries.
  • The airport call centre on +974 800 8294, published by Hamad International Airport for advance bookings.

Two further services sit alongside the standard fleet. The Economy Service, launched with Fox Transport, is bookable only inside the Karwa app. Doha Limousine, Mowasalat’s chauffeur arm, runs three tiers — Select, Business and First Class — with a fleet that includes electric limousines, seven-seater SUVs and vans. Limousine pricing sits above metered taxi pricing, so confirm the quote and vehicle category before you book.

If you are new to getting around Doha, our roundup of the apps residents and visitors actually use in Qatar covers transport, payments and everyday admin in one place.

How to pin down your own fare before you travel

Given the gap in published rates, three habits beat any online table.

Use the app estimate. Enter your pickup point and destination in the Karwa app before booking. The estimate reflects your route rather than a generic per-kilometre figure. It is not a fixed price, because waiting time and route changes still move the meter.

Check the meter is running. On a metered journey the meter is the authoritative record. Glance at it when you set off.

Ask the coordinator at the airport. Taxi Pavilion staff can confirm the vehicle type and the applicable tariff before you board.

Where the fare picture goes from here

Two developments are worth watching. The first is publication itself. Mowasalat has revised its tariff before and may restore a full public rate card. That would settle the disagreement between guides in a single stroke.

The second is autonomous vehicles. Qatar is running an electric robotaxi pilot supervised by the Ministry of Transport and operated with Mowasalat, bookable through the Karwa app on approved routes with a safety officer on board. It remains a limited trial rather than a city-wide option. How those journeys get priced, once the pilot widens, is still an open question.

Until then, the app estimate and the meter remain the two figures that govern what you pay. For anyone settling here longer term, our explainer on Qatar residence permit benefits covers the paperwork side of daily life.

Karwa taxi fares: frequently asked questions

Does Mowasalat publish an official Karwa tariff table?
Not on its public website, as checked on 27 August 2026. The official Karwa page describes the service, the vehicle types and the booking channels, but carries no rate card. The app estimate and the in-vehicle meter are the most reliable figures for any single journey.

Why do online guides quote different starting charges?
Because no current public table exists to check them against. Some list a QAR 4 flag fall with a QAR 10 minimum. Others list QAR 7 covering the first 1.8 kilometres. Tamara News could not confirm either against an official source.

Is a Karwa taxi more expensive at night?
Published guides consistently describe a higher night rate, commonly listed at about QAR 1.90 per kilometre against roughly QAR 1.60 during the day. The same higher rate is generally described as applying outside the main Doha area. Neither figure is confirmed on an official page.

Where do I catch a Karwa taxi at Hamad International Airport?
At the Taxi Pavilion, at the left end of the Arrivals Hall. Follow the taxi signs or ask at an information desk. The airport advises passengers to board only from the Taxi Pavilion, since taxis there are the authorised ones.

Can I pay by card in a Karwa taxi?
At the airport, yes. Hamad International Airport lists Mastercard, Visa, Apple Pay, Google Pay and NAPS. The Karwa app also supports card payment. Options in an individual street taxi can vary, so keep a backup method.

How do I book an accessible Karwa taxi?
Call Mowasalat on +974 4458 8888 and give as much advance notice as you can. The airport publishes the same number for passengers with reduced mobility.

Eleven Countries, One Warning: Inside August’s Middle East Alert

The Middle East travel advisory issued on August 1, 2026, remains a live concern for travelers nearly a month later. The standoff between the United States and Iran kept generating fresh incidents through late August. US embassies across eleven countries issued synchronized security alerts that day. They warned Americans to prepare for flight cancellations, airspace closures and broader travel disruption.

The alerts covered Israel, Lebanon, Iraq, Oman, the United Arab Emirates, Saudi Arabia, Bahrain, Qatar, Kuwait, Egypt and Jordan. That is an unusually wide and coordinated set of warnings for a single day. State Department officials called the regional security environment “extremely complex and fluid.” They pointed to an unpredictable standoff with Iran and the risk of sudden escalation.

What the Middle East travel advisory actually says

The advisory told Americans already in the region to consider departing, or to prepare to depart if tensions escalated further. It told Americans outside the region to seriously reconsider travel to and through the area altogether. Officials flagged diplomatic facilities, businesses and locations associated with Americans as potential targets tied to Iran or supportive proxy groups. That language goes further than a routine travel caution.

Middle East city skyline covered by the Middle East travel advisory

Which eleven countries are named and why

The list runs: Israel, Lebanon, Iraq, Oman, UAE, Saudi Arabia, Bahrain, Qatar, Kuwait, Egypt and Jordan. It spans nearly the entire Gulf and Levant region. That breadth shows how widely officials judged the risk of spillover from an Iran-linked escalation. The State Department issued the alerts simultaneously across that many missions, rather than country by country. That approach signaled how seriously officials treated the regional risk at the time.

How the Iran standoff kept the warning active

Tension tied to the advisory did not fade quickly. Reports surfaced later in August of attacks on vessels linked to the Abu Dhabi National Oil Company near the Strait of Hormuz, which the UAE has attributed to Iran. Separate reporting on the broader Iran standoff continued through August 24 and 25. Those developments kept the conditions behind the original August 1 advisory largely unchanged, even as the alert itself ages.

What changed for airlines and travelers since August 1

Airlines serving the region postponed the resumption of some previously paused routes as conditions shifted through August. Some carriers canceled routes outright, according to reporting at the time the advisory was issued. Travelers with existing bookings through affected hubs have faced repeated schedule changes. Airspace closures tied to the standoff have added further unpredictability beyond the advisory’s initial warning.

What happens next if tensions ease or escalate

The State Department has not issued a public update rescinding or softening the August 1 advisory. Continued incidents tied to the Iran standoff suggest officials still view the underlying risk as live. Further escalation, such as additional tanker attacks or direct military exchanges, would likely trigger updated guidance. A de-escalation could eventually lead officials to ease the advisory for some or all of the eleven countries.

Travel insurers and corporate security firms operating in the region tell clients to treat the advisory as a baseline, not a ceiling. Conditions on the ground can deteriorate faster than official guidance updates. Security advisers generally tell business travelers with recurring trips to Gulf hubs to build extra buffer time into itineraries and to register with their embassy’s traveler notification program before departure.

Middle East travel advisory: frequently asked questions

Which countries does the advisory cover? Israel, Lebanon, Iraq, Oman, UAE, Saudi Arabia, Bahrain, Qatar, Kuwait, Egypt and Jordan.

Why was it issued? Heightened tension in the US-Iran standoff, with officials warning of a fluid and unpredictable security environment.

What should Americans already in the region do? Consider departing, or be prepared to depart if tensions escalate.

What about Americans planning to travel there? They were told to seriously reconsider travel to and through the region.

Is the advisory still relevant? Yes, continued Iran-linked incidents through late August have kept the underlying risk active.

What should travelers with upcoming trips do? Check current State Department and airline guidance close to departure, since conditions have shifted repeatedly.

For related coverage, see our reporting on the tanker attacks near the Strait of Hormuz and the US economic pressure campaign against Iran.

Sources: US Embassy Abu Dhabi security alert, Al Jazeera.

Dollar Tree’s Earnings Today Show How Squeezed Shoppers Really Are

Retail earnings consumer spending signals arrived in a cluster on August 27, 2026. Dollar Tree, Best Buy and Ulta Beauty all reported fiscal second-quarter results the same morning. Taken together, the numbers offer one of the clearer snapshots yet of how differently US households across income levels are adjusting their budgets this year.

Dollar Tree reported before markets opened. Analysts expected earnings of roughly $1.12 per share on revenue near $4.85 billion. That would mean earnings growth of about 45% and revenue growth of about 6.3% from a year earlier. Ulta Beauty’s consensus estimates pointed to revenue near $2.97 billion, up about 6.5%, and earnings near $6.19 per share, up about 7.1%. Best Buy, Dollar General, Autodesk and Workday also reported the same day, rounding out one of the busier earnings mornings of the month.

Why retail earnings consumer spending data matters this week

Retail earnings offer one of the more direct readings on household budgets. They reflect what people actually buy, not what surveys say people intend to buy. Inflation still runs above the Federal Reserve’s target, and the Jackson Hole symposium is underway the same week. Investors are especially hungry right now for real-economy signals about consumer health.

Shoppers in a mall reflecting retail earnings consumer spending patterns

What Dollar Tree’s numbers say about bargain-hunting

Dollar Tree’s shares climbed roughly 43% over the three months heading into the report. Investors tie that run to Americans shifting more spending toward low-price retailers amid higher costs elsewhere. Analysts framed Dollar Tree’s results as a window into how households navigate tighter budgets. Shoppers appear to be consolidating errands into fewer stores, hunting harder for bargains, and focusing spending on necessities over discretionary items.

Best Buy and Ulta: two very different reads on shoppers

Best Buy’s results speak more to big-ticket electronics spending. That category runs more sensitive to consumer confidence and financing costs than daily household staples. Ulta Beauty’s expected growth tells a different story. Spending on beauty and personal care has held up reasonably well even as shoppers trim other categories, a pattern that has shown up in beauty retail results all year.

How today’s results fit the inflation picture

US inflation has stayed elevated relative to the Fed’s 2% target for an extended stretch. Retailers have had to walk a line between passing costs to customers and protecting sales volumes. Dollar Tree’s stronger growth expectations line up with a broader trend of value-seeking behavior. Steadier categories like beauty suggest spending cuts are landing unevenly across the retail sector, not across the board.

What happens next for holiday-quarter forecasts

Retailers reporting this week typically face questions on earnings calls about guidance for the back-to-school and holiday shopping quarters. Those periods make up an outsized share of annual sales for several of these companies. Investors will watch whether management teams describe consumers as pulling back further or stabilizing. Those comments tend to move retail stocks as much as the quarterly numbers themselves.

Retail earnings day: what shoppers and investors should know

Which companies reported on August 27? Dollar Tree, Best Buy, Ulta Beauty, Dollar General, Autodesk and Workday, among others.

What was expected from Dollar Tree? Earnings near $1.12 per share on revenue near $4.85 billion.

What was expected from Ulta Beauty? Revenue near $2.97 billion and earnings near $6.19 per share.

What does this say about consumer spending? Shoppers appear to be consolidating purchases and prioritizing bargains and necessities over discretionary spending.

How has Dollar Tree stock performed? It was up about 43% over the three months before the report.

Why combine these results into one read? Reporting the same day, they offer a cross-section of spending across discount, electronics and beauty retail.

For related coverage, see our reporting on the Fed’s rate decision and Nvidia’s latest earnings report.

Sources: Charles Schwab market update, Yahoo Finance.

Flying From Central Africa? The US Just Extended These Entry Rules

The CDC Ebola travel restrictions remain in force heading into September 2026. The agency renewed its entry order on August 12. The rules bar travelers who have recently been in the Democratic Republic of the Congo from boarding US-bound commercial flights. Travelers from Uganda and South Sudan get routed through designated screening airports instead.

The restrictions respond to an outbreak of Ebola disease caused by the Bundibugyo virus in remote parts of the Democratic Republic of the Congo and Uganda. CDC describes the outbreak as spreading substantially faster than previous Ebola outbreaks. Health officials now rank it as the second-largest Ebola outbreak on record. That scale explains why the US has kept the restrictions running for several months rather than lifting them quickly.

What the CDC Ebola travel restrictions actually require

Travelers, including US citizens and US nationals, cannot board US-bound commercial flights if they were physically present in the Democratic Republic of the Congo within 21 days before departure. CDC advises those travelers to plan on staying outside the United States for at least 21 days after leaving DRC. That advice creates a mandatory waiting period before US-bound travel becomes possible again.

Health worker at a clinic connected to the CDC Ebola travel restrictions response

Why Uganda and South Sudan face a lighter rule than DRC

Travelers who spent time in Uganda or South Sudan, but not in DRC, within the same 21-day window can still fly to the United States. Airlines route their travel through a designated set of US airports equipped for public health entry screening instead. That distinction reflects CDC’s assessment: the outbreak’s intensity and confirmed case counts concentrate in DRC, while Uganda and South Sudan face a lower but still monitored risk of cross-border spread.

Inside the outbreak driving the order

The Bundibugyo strain of Ebola is one of several known Ebola virus species. This outbreak’s spread through remote areas of DRC and Uganda has made containment difficult. CDC has kept its travel health notice for the region at a Level 3 designation. That level means CDC advises travelers to reconsider nonessential travel to the affected provinces.

How the restrictions were renewed in August

CDC originally issued its entry-suspension order on May 18, 2026. It renewed the order on August 12, 2026, continuing the same core restrictions for DRC, Uganda and South Sudan travelers. The renewal signals that the outbreak had not come under sufficient control by mid-August to justify lifting the order. CDC has not announced a firm end date for the restrictions.

What happens next if you’ve been in the region

Anyone who has recently traveled to DRC, Uganda or South Sudan and has upcoming US travel plans should check CDC’s Travelers’ Health site before booking or attempting to fly. The specific list of affected countries and screening airports can change with each renewal. Airlines operating routes through the region must enforce the boarding restrictions at check-in.

CDC Ebola travel rules: questions travelers are asking

Who can’t fly to the US right now? Travelers who have been in DRC within 21 days before their US-bound flight.

What happens if I’ve been in Uganda or South Sudan instead? You can still fly, but you’ll be routed through a designated US airport for screening.

When was this rule renewed? CDC renewed the order on August 12, 2026, after first issuing it on May 18, 2026.

What outbreak is behind this? A Bundibugyo virus Ebola outbreak in DRC and Uganda that CDC says is spreading faster than past outbreaks.

How long do I have to wait before flying to the US after being in DRC? CDC advises staying outside the US for at least 21 days after leaving DRC.

Where can I check the latest rules? CDC’s Travelers’ Health website publishes current notices for the affected countries.

For related coverage, see our reporting on the realignment of US visa services in Africa and re-entry rules for travel on advance parole.

Sources: CDC entry order, CDC travel health notice.