← All customers

Customer story

Airwallex

Global SMS for authentication at fintech scale. Sixty-plus countries on one auth model, with MNP lookup before every send and real-time route reselection when a carrier flakes.

Sector

Fintech

Channels

SMS
Voice

Headline

94.4% deliverability improvement

The challenge

Sixty-plus countries. One OTP that has to land.

Airwallex moves cross-border payments for businesses operating in dozens of jurisdictions. The product that pays the bills runs on global card issuing, money movement, and a treasury layer that can settle in fifty-plus currencies. The product that gates all of it is the OTP that lands on a customer's phone in Hong Kong, in São Paulo, in Warsaw, in Jakarta — whichever carrier happens to terminate the message.

Each country has its own regulatory rules, its own sender-ID conventions, its own carrier-specific failure modes. A2P 10DLC in the US, sender-ID registration in India, throttling on certain MENA routes, alphanumeric sender restrictions in parts of Europe. Each of those things, on its own, is a known operational problem. Stacked together, they're the reason most fintechs run with three or four SMS vendors at the same time — one per region — and reconcile the receipts at the end of the month.

That stack was the starting point. The brief: collapse it to one vendor without losing deliverability in any single market.

Why Bird

240 direct-to-carrier connections, one API.

Bird's SMS network is built on 240 direct-to-carrier connections across more than 150 countries. Direct, in this case, means no aggregator hop between Bird and the terminating carrier — the message takes one fewer leg, the failure mode for any given route is observable on our side, and route reselection happens inside the same request rather than across a retry.

  • MNP lookup before send.Every OTP send starts with a number-portability check. If the recipient ported off the original carrier, the route picks the carrier they ported to, not the one their prefix suggests. The look-up is part of the send path; it doesn't add a retry round-trip.
  • Real-time route reselection.If the primary carrier returns a non-delivery state inside the first attempt window, the platform picks a secondary route automatically. The application code doesn't see a retry; it sees one send and one delivery receipt.
  • One auth model across SMS, Voice, and Lookup.The same Bearer token authenticates the lookup, the OTP send, and the voice-fallback call if the SMS doesn't land. Same idempotency contract, same error envelope, same webhook shape.
  • Country-specific compliance handled in the platform.Sender-ID registration, A2P 10DLC, throttling, opt-out handling — the things that vary per country are configured on the Bird side, not in Airwallex's code path.

The integration

Lookup, then send, on the same token.

The send path is one auth model across three resources. Look up the number, confirm it's mobile, start a verification with a voice fallback in case the SMS doesn't land. No separate vendors, no separate keys, no reconciliation across three sets of webhooks.

otp-with-lookup.ts
import { BirdClient } from "@messagebird/sdk";

const bird = new BirdClient({ apiKey: process.env.BIRD_API_KEY! });

// One auth model across SMS, Voice, and Lookup.
// MNP lookup runs first to confirm the number is mobile
// and to pick the right route for the destination carrier.

const { data: number } = await bird.lookup.get({
  phone: "+15005550006",
});

if (number.line_type !== "mobile") {
  throw new Error("OTP requires a mobile number");
}

const { data, error } = await bird.verifications.start({
  to:       number.phone,
  channel:  "sms",
  fallback: "voice",
  expires:  "10m",
});

if (error) throw error;
console.log(data.id);
// → "ver_8Yq2nB91x..."

Inbound delivery receipts arrive on the same webhook endpoint Airwallex already runs for transactional email and WhatsApp. The event names are consistent across channels —sms.delivered, sms.failed, verification.checked,call.completed— so the consumer logic doesn't branch on which channel just resolved.

The numbers

94.4% deliverability improvement across the migrated footprint.

The headline number is the one Airwallex reported on bird.com today: a 94.4% deliverability improvement on the migrated OTP path. That number reflects the combined effect of direct-to-carrier routing, MNP lookup before send, and real-time route reselection — not any single optimization, but the platform behaving the way the operations team needed it to behave in aggregate.

94.4%

Deliverability improvement on the OTP traffic migrated to Bird, measured across the post-cutover quarter.

60+

Countries the SMS path serves under one auth model, on Bird's direct-to-carrier network.

1

Vendor relationship for SMS, Voice, and Lookup — down from a regional patchwork.

What's next

From SMS-first to multi-channel verification.

With the SMS and voice paths consolidated, the next surface on the roadmap is multi-channel verification — WhatsApp as the primary channel in markets where customers prefer it, with SMS as the fallback rather than the default. That swap is a one-attribute change in the Bird SDK; the operational story behind it is the same direct-relationship pattern, applied to Meta's BSP layer instead of the carriers.

Email-based transactional sends (statements, confirmations, dispute resolution) sit on the same auth model already. The remaining piece is RCS for markets where it's reaching critical mass — the SDK call is identical to SMS, with the SMS fallback declared inline.

Carry-forward reference from bird.com. Deliverability metric reported by Airwallex; named-quote attribution being confirmed with the team for launch.

Build on the same network.

One auth model across SMS, Voice, WhatsApp, Email, and Lookup. A test API key is yours immediately.

Start with one channel.
Add the others when you're ready.

A test API key is yours immediately. Production unlocks when you add a payment method and verify a sender.

Get startedRead docsor

Using Claude Code, Cursor, or Codex? Point it at our hosted MCP server: curated Bird tools, a browser sign-in, and no API key. Or install the bird-ai plugin.

Cursor