Official
alert
Payment Failed
Failed-payment notification with an update-card CTA and what happens next.
payment-failed.html
<div class="mx-auto max-w-[480px] overflow-hidden rounded-xl bg-white text-zinc-900" data-tm-id="tm_payfail_frame" data-tm-type="frame" data-tm-label="Email">
<div class="p-8" data-tm-id="tm_payfail_hero" data-tm-type="section" data-tm-label="Hero">
<img
class="mb-6 w-[145px]"
src="https://cdn.tailwindmail.dev/users/01a0abc6-35f3-70f6-9612-923d6d1aef8f/7bdc30b4-eb7a-46d3-9773-9fbb3f71d838.png"
alt="TailwindMail"
data-tm-id="tm_payfail_logo"
data-tm-type="image"
data-tm-label="Logo"
>
<p class="m-0 text-[11px] font-semibold uppercase tracking-[0.16em] text-[#0896FB]" data-tm-id="tm_payfail_eyebrow" data-tm-type="text" data-tm-label="Eyebrow">
Action needed
</p>
<h1 class="mt-2 m-0 text-[28px] font-semibold leading-tight text-zinc-900" data-tm-id="tm_payfail_title" data-tm-type="text" data-tm-label="Title">
Your payment didn't go through
</h1>
<p class="mt-3 m-0 text-sm leading-relaxed text-zinc-500" data-tm-id="tm_payfail_intro" data-tm-type="text" data-tm-label="Intro">
We couldn't charge Visa ending 4242 for your TailwindMail Pro plan ($49.00). Update the card to keep the workspace active.
</p>
<div class="mt-6 mb-2" data-tm-id="tm_payfail_cta_wrap" data-tm-type="section" data-tm-label="CTA">
<a
href="https://tailwindmail.dev"
class="inline-block rounded-md bg-[#0896FB] px-5 py-3 text-[13px] font-semibold text-white no-underline"
data-tm-id="tm_payfail_cta"
data-tm-type="link"
data-tm-label="Update payment method"
>
Update payment method
</a>
</div>
</div>
<div class="px-8 pb-8" data-tm-id="tm_payfail_notes" data-tm-type="section" data-tm-label="Notes">
<p class="m-0 mb-4 text-[11px] font-semibold uppercase tracking-[0.16em] text-zinc-400" data-tm-id="tm_payfail_notes_label" data-tm-type="text" data-tm-label="Good to know">
Good to know
</p>
<div class="mb-4 border-l-2 border-[#0896FB] pl-4" data-tm-id="tm_payfail_note_1" data-tm-type="section" data-tm-label="Note 1">
<p class="m-0 text-sm font-semibold text-zinc-900" data-tm-id="tm_payfail_note_1_title" data-tm-type="text" data-tm-label="What happened">
What happened
</p>
<p class="mt-1 m-0 text-[13px] leading-relaxed text-zinc-500" data-tm-id="tm_payfail_note_1_copy" data-tm-type="text" data-tm-label="What happened copy">
The bank declined the charge. Expired cards and insufficient funds are the usual causes.
</p>
</div>
<div class="mb-4 border-l-2 border-zinc-200 pl-4" data-tm-id="tm_payfail_note_2" data-tm-type="section" data-tm-label="Note 2">
<p class="m-0 text-sm font-semibold text-zinc-900" data-tm-id="tm_payfail_note_2_title" data-tm-type="text" data-tm-label="What to do">
What to do
</p>
<p class="mt-1 m-0 text-[13px] leading-relaxed text-zinc-500" data-tm-id="tm_payfail_note_2_copy" data-tm-type="text" data-tm-label="What to do copy">
Add a new card in billing. We'll retry automatically after you save it.
</p>
</div>
<div class="border-l-2 border-zinc-200 pl-4" data-tm-id="tm_payfail_note_3" data-tm-type="section" data-tm-label="Note 3">
<p class="m-0 text-sm font-semibold text-zinc-900" data-tm-id="tm_payfail_note_3_title" data-tm-type="text" data-tm-label="Need help?">
Need help?
</p>
<p class="mt-1 m-0 text-[13px] leading-relaxed text-zinc-500" data-tm-id="tm_payfail_note_3_copy" data-tm-type="text" data-tm-label="Need help? copy">
Reply to this email if the card should have worked — we'll look at the attempt.
</p>
</div>
</div>
<div class="border-t border-zinc-100 bg-zinc-50 px-8 py-5" data-tm-id="tm_payfail_footer" data-tm-type="section" data-tm-label="Footer">
<p class="m-0 text-xs leading-relaxed text-zinc-400" data-tm-id="tm_payfail_footer_copy" data-tm-type="text" data-tm-label="Footer">
Built with
<a href="https://tailwindmail.dev" class="text-zinc-500 no-underline">TailwindMail</a>.
Need a hand? Just reply to this email.
</p>
</div>
</div>
Format
Compiled HTML + Tailwind source
License
Free to fork and adapt
Built for
TailwindMail editor
Ready to ship email-safe HTML?
Start with Tailwind markup, compile to clean HTML, and always preview or send a test before campaigns.