For Shopify brands billing through Stripe

One inbox for Shopify brands billing through Stripe

Tyra is the customer conversations platform for European Shopify brands that run subscriptions or B2B invoicing through Stripe. WhatsApp, Instagram DM, Facebook Messenger and SMS land in one inbox alongside the Shopify order and the Stripe invoice, so the person handling the conversation is looking at the same context the customer is talking about.

Tyra inbox showing a WhatsApp failed-payment recovery thread with Stripe context

Twenty to forty percent of churn is involuntary

Somewhere between twenty and forty percent of SaaS and subscription churn is not customers leaving on purpose. It is cards that expired, banks that declined a renewal, and customers who changed banks without remembering to update the payment method on file. ProfitWell has been publishing the twenty-to-forty number for years and Recurly's data lands in the same band.

Stripe's Smart Retries claws back some of it, but the customer often has no idea anything went wrong until access is already gone.

Dunning lives in email

The reason recovery rates are so bad is that dunning lives in email. The first dunning email goes out, sits in the promotions tab, gets opened eighteen hours later if at all, and by then Stripe has already burned through two of its retry attempts.

By the third email the subscription is canceled and the customer has moved on. The retry logic is fine. The channel is the problem.

B2B invoicing is worse

The B2B side of Stripe is worse. A Shopify brand selling wholesale finalises an invoice in Stripe, the PDF gets emailed to an accounts payable address, and it sits there for thirty days while DSO climbs and the founder spends Friday afternoons writing polite chase emails.

The procurement contact is a person who reads WhatsApp on their phone all day and email on their laptop twice a week, and the invoice is going to the wrong channel.

A communication problem hiding in plain sight

The common thread is that founders are losing real money every month to a communication problem they have stopped noticing because it has always been this way.

The fix is not better email copy. It is a channel customers actually read, wired into the events Stripe is already firing.

Pillar 1

EU-built

Tyra is built and hosted in the European Union. Message data, attachments and customer records live in AWS Ireland (eu-west-1) and the core message pipeline does not transfer to US sub-processors. The DPA is available before signup and gets countersigned during onboarding, not six weeks after a procurement back-and-forth. Right-to-be-forgotten requests run automated and complete inside twenty-four hours.

For a Shopify brand selling across Germany, France, the Nordics and the Benelux, this matters in two ways. The first is the obvious GDPR one: if a customer asks where their conversation history is stored, the answer is Ireland, not a region in Virginia.

The second is language. Tyra ships in more than a dozen European languages out of the box and detects the customer's language from Stripe's preferred_locales field, the Shopify customer locale, or the language of the last few messages in the thread, so a German customer who failed a renewal gets a German message and a French customer gets a French one.

EU-built, showing Ireland hosting and DPA flow

WhatsApp first-class, BSP status and template flow

Pillar 2

WhatsApp first-class

Tyra is a Meta Business Solution Provider directly, not a reseller sitting on top of someone else's WhatsApp connection. That means template approval, number migration, sender quality and the embedded signup flow all run through us, and when something goes wrong with Meta we are the ones on the phone to them rather than a layer in the middle pointing fingers.

The practical version is this. When invoice.payment_failed fires from Stripe, Tyra sends a WhatsApp message within about thirty seconds with a one-tap link to Stripe's hosted retry page. The message is a pre-approved UTILITY-category template, which Meta typically approves in an hour or two rather than the days that MARKETING templates can take.

Open rates on WhatsApp sit around ninety-eight percent and most recoveries happen inside four hours rather than four days.

Stripe Events

Every Stripe event maps to a WhatsApp template

Each event maps to a template and a delay in a drag-and-drop screen, and Tyra ships sensible defaults so the system works on day one.

invoice.payment_failedCards that decline at renewal
invoice.payment_action_requiredSCA challenges customers miss
invoice.upcomingRenewal warnings
invoice.finalizedB2B invoice delivery
customer.subscription.trial_will_endTrial nudges
customer.subscription.updatedPlan changes
customer.subscription.deletedCancellation saves
charge.dispute.createdChargeback intercepts
Pillar 3

Shopify-native and Stripe-native

Tyra is a native Shopify app that renders order history, fulfilment status and customer lifetime value next to the conversation, and it is also a native Stripe App that installs from the Stripe App Marketplace and lives inside the Stripe dashboard on the customer, invoice and subscription pages.

For a Shopify brand using Stripe for subscriptions or B2B invoicing this matters because the agent answering a WhatsApp message about a failed renewal can see the Shopify order that started the subscription, the Stripe invoice that just failed, the WhatsApp thread itself, and the customer's opt-in status, all in one place rather than three browser tabs.

The Stripe App side adds a Send-via-WhatsApp button on the invoice page, conversation history on the customer page, and the dunning sequence visible on the subscription page. Tyra never stores card details and never sits inside PCI scope.

Shopify-native and Stripe-native, dual dashboard embed

AI agent grounded in Shopify and Stripe context

Pillar 4

AI that actually works

The AI agent is grounded in the live Shopify catalog and the live Stripe customer record, which means it answers questions about whether a product is in stock, when an order is shipping, what the customer's current plan is, and what the failed invoice was actually for, rather than hallucinating a generic answer that sounds plausible.

When a customer replies to a failed payment message asking why they were charged a different amount than last month, the agent can see the Stripe subscription, the proration line, and the plan change, and can answer the question without a human ever touching it.

The agent is built to hand off cleanly rather than to pretend to be a person. It handles the high-volume repetitive questions that show up around dunning and invoicing, and it routes anything that involves a refund decision, a discount, or an unhappy customer to a human with the full context attached.

Frequently asked questions

Does Tyra replace Stripe Smart Retries?
No, and it is not trying to. Smart Retries decides when to re-attempt a declined card using Stripe's own machine learning, and that part is good. Tyra handles the customer-facing communication around those retries so that the customer actually knows their card failed and can fix it on their phone in the time it takes Smart Retries to schedule the next attempt. The two run in parallel and recovery rates are highest when both are on.
What happens if a customer has not opted in to WhatsApp?
Tyra falls back to email for that customer and flags the missing opt-in in the dashboard so you can decide whether to prompt for it at checkout, in the Shopify customer account, in the Stripe customer portal, or in a one-time email campaign. The opt-in itself is a one-click extension on the Stripe customer portal and a small block in the Shopify checkout, so building up coverage over a few weeks is straightforward rather than a project.
How does SCA fit into this?
When Stripe fires invoice.payment_action_required because a European card needs a 3DS challenge, Tyra sends a WhatsApp message with a link to the SCA challenge page. This is one of the highest-impact use cases for EU merchants because most SCA failures are customers not noticing the bank app challenge rather than actively rejecting the charge, and a WhatsApp nudge with the challenge link converts a meaningful share of those failures into completed payments.
Will customers find WhatsApp messages about failed payments annoying?
In the data the opposite is true. Customers prefer being told their card failed over silently losing access to a subscription or a wholesale account they actually want to keep, and the unsubscribe rate on dunning WhatsApp templates sits below one percent. The messages are framed as helpful rather than promotional and they fall under Meta's UTILITY category, which is the category Meta itself designs for transactional notifications of exactly this kind.
Does this work for B2B invoicing or only for subscriptions?
Both, and the B2B invoicing use case is genuinely underserved in Europe right now. When invoice.finalized fires from Stripe Invoicing, Tyra sends the invoice to the accounts payable contact on WhatsApp with a tap-to-pay link, the amount, the due date, and the PDF as an attachment, and overdue reminders fire on a schedule you configure. This works for SMB and mid-market B2B where the AP contact actually uses WhatsApp personally, and it does not work for enterprise procurement that routes everything through SAP, Coupa or Ariba, in which case keep emailing PDFs into those systems.
How long does setup actually take?
About thirty minutes of active work plus a couple of hours waiting for Meta to approve the message templates. Installing the Stripe App, connecting the Shopify store, running the Meta embedded signup for the WhatsApp number, approving the pre-filled UTILITY templates, mapping events to messages, and adding the opt-in to the customer portal are all sequential steps that any operator can do without an integrator. The first failed payment or finalised invoice after that triggers the first message automatically.
What about chargebacks and disputes?
When charge.dispute.created fires, Tyra sends a WhatsApp message prompting the customer to reach out before the dispute escalates. A meaningful share of disputes get resolved informally in that thread rather than going through the full chargeback process. The honest version is that the data on this is still thin and we do not promise a specific recovery rate.
Is Tyra a good fit for a brand outside the EU?
Tyra works globally but the positioning and the infrastructure are EU-first. If most of your customers are in the US or APAC, a tool hosted closer to them is probably a better fit, and we will say so on the demo call rather than try to sell into a poor fit.

Ready to stop losing subscribers and invoices to a channel problem?

European Shopify brands using Stripe recover failed payments and chase invoices on WhatsApp with Tyra.