Open demo

CSS code

HTML
<div><span class="lbl">Invoice email with a bulletproof pay button</span>
<p class="demo-note"><strong>Email-safe HTML.</strong> This is the email itself: inline styles and layout tables that survive Gmail, Outlook and Apple Mail. The Bootstrap and Tailwind tabs are web previews of the same email.</p>
<div role="article" aria-roledescription="email" aria-label="Your Ferncroft Cloud invoice INV-30981" lang="en" style="background-color:#f1f5f2;padding:24px 0;">
  <div style="display:none;max-height:0;overflow:hidden;mso-hide:all;" aria-hidden="true">Invoice INV-30981 for $1,284.44 is due on 2 Nov 2026. ͏ ͏ ͏ ͏ ͏</div>
  <!--[if mso]><table role="presentation" align="center" width="600" cellpadding="0" cellspacing="0" border="0"><tr><td><![endif]-->
  <table role="presentation" align="center" width="100%" cellpadding="0" cellspacing="0" border="0" style="max-width:600px;margin:0 auto;border-collapse:collapse;">
    <tr><td class="em-px" style="padding:8px 32px 20px;font-family:Arial,Helvetica,sans-serif;font-size:14px;color:#3f4b44;">
      <table role="presentation" width="100%" cellpadding="0" cellspacing="0" border="0"><tr>
        <td style="font-family:Arial,Helvetica,sans-serif;font-size:18px;font-weight:bold;color:#14532d;">▲ Ferncroft Cloud</td>
        <td align="right" style="font-family:Arial,Helvetica,sans-serif;font-size:13px;"><a href="https://billing.ferncroft.example/invoices/INV-30981" style="color:#14532d;text-decoration:underline;">View in browser</a></td>
      </tr></table>
    </td></tr>
    <tr><td style="background-color:#ffffff;border-radius:12px;">
      <table role="presentation" width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr><td style="height:6px;background-color:#166534;border-radius:12px 12px 0 0;font-size:0;line-height:0;"> </td></tr>
        <tr><td class="em-px" style="padding:32px 40px 8px;font-family:Arial,Helvetica,sans-serif;color:#1f2a24;">
          <h1 style="margin:0 0 8px;font-size:22px;line-height:28px;font-weight:bold;color:#1f2a24;">Your invoice is ready</h1>
          <p style="margin:0;font-size:15px;line-height:24px;color:#3f4b44;">Hi Tomás, here is the invoice for your Ferncroft Cloud services in October. It will be charged to your card on file on the due date unless you pay it sooner.</p>
        </td></tr>
        <tr><td class="em-px" style="padding:20px 40px;">
          <table role="presentation" width="100%" cellpadding="0" cellspacing="0" border="0" style="background-color:#f0f7f2;border-radius:10px;">
            <tr>
              <td class="em-stack" style="padding:20px 22px;font-family:Arial,Helvetica,sans-serif;">
                <p style="margin:0;font-size:13px;line-height:18px;color:#3f4b44;">Amount due</p>
                <p class="em-amount" style="margin:2px 0 0;font-size:34px;line-height:40px;font-weight:bold;color:#14532d;">$1,284.44</p>
              </td>
              <td class="em-stack" align="right" style="padding:20px 22px;font-family:Arial,Helvetica,sans-serif;font-size:13px;line-height:20px;color:#3f4b44;">
                Invoice <strong style="color:#1f2a24;">INV-30981</strong><br>Due <strong style="color:#1f2a24;">2 Nov 2026</strong>
              </td>
            </tr>
          </table>
        </td></tr>
        <tr><td class="em-px" align="center" style="padding:4px 40px 24px;">
          <!--[if mso]><v:roundrect xmlns:v="urn:schemas-microsoft-com:vml" xmlns:w="urn:schemas-microsoft-com:office:word" href="https://billing.ferncroft.example/pay/INV-30981" style="height:48px;v-text-anchor:middle;width:240px;" arcsize="17%" stroke="f" fillcolor="#166534"><w:anchorlock/><center style="color:#ffffff;font-family:Arial,sans-serif;font-size:16px;font-weight:bold;">Pay $1,284.44</center></v:roundrect><![endif]-->
          <!--[if !mso]><!--><a href="https://billing.ferncroft.example/pay/INV-30981" style="display:inline-block;width:240px;background-color:#166534;border-radius:8px;color:#ffffff;font-family:Arial,Helvetica,sans-serif;font-size:16px;font-weight:bold;line-height:48px;text-align:center;text-decoration:none;-webkit-text-size-adjust:none;">Pay $1,284.44</a><!--<![endif]-->
        </td></tr>
        <tr><td class="em-px" style="padding:0 40px;">
          <table width="100%" cellpadding="0" cellspacing="0" border="0" style="border-collapse:collapse;font-family:Arial,Helvetica,sans-serif;font-size:14px;line-height:20px;color:#1f2a24;">
            <caption style="padding:0 0 8px;text-align:left;font-size:12px;font-weight:bold;letter-spacing:1px;text-transform:uppercase;color:#3f4b44;">Invoice summary</caption>
            <thead><tr>
              <th scope="col" align="left" style="padding:8px 0;border-bottom:2px solid #1f2a24;font-size:12px;color:#3f4b44;text-align:left;">Item</th>
              <th scope="col" align="right" style="padding:8px 0;border-bottom:2px solid #1f2a24;font-size:12px;color:#3f4b44;text-align:right;">Amount</th>
            </tr></thead>
            <tbody>
              <tr><th scope="row" align="left" style="padding:12px 12px 12px 0;border-bottom:1px solid #dde5df;font-weight:normal;text-align:left;">Business hosting plan<br><span style="font-size:13px;color:#4b5a51;">1–31 Oct 2026</span></th><td align="right" style="padding:12px 0;border-bottom:1px solid #dde5df;text-align:right;white-space:nowrap;">$890.00</td></tr>
              <tr><th scope="row" align="left" style="padding:12px 12px 12px 0;border-bottom:1px solid #dde5df;font-weight:normal;text-align:left;">Managed database, 2 nodes<br><span style="font-size:13px;color:#4b5a51;">2 × $120.00</span></th><td align="right" style="padding:12px 0;border-bottom:1px solid #dde5df;text-align:right;white-space:nowrap;">$240.00</td></tr>
              <tr><th scope="row" align="left" style="padding:12px 12px 12px 0;border-bottom:1px solid #dde5df;font-weight:normal;text-align:left;">Extra bandwidth<br><span style="font-size:13px;color:#4b5a51;">410 GB × $0.15</span></th><td align="right" style="padding:12px 0;border-bottom:1px solid #dde5df;text-align:right;white-space:nowrap;">$61.50</td></tr>
            </tbody>
            <tfoot>
              <tr><th scope="row" align="right" style="padding:12px 12px 4px 0;font-weight:normal;color:#3f4b44;text-align:right;">Subtotal</th><td align="right" style="padding:12px 0 4px;text-align:right;">$1,191.50</td></tr>
              <tr><th scope="row" align="right" style="padding:4px 12px 4px 0;font-weight:normal;color:#3f4b44;text-align:right;">Tax (7.8%)</th><td align="right" style="padding:4px 0;text-align:right;">$92.94</td></tr>
              <tr><th scope="row" align="right" style="padding:10px 12px 0 0;font-size:16px;text-align:right;">Total due</th><td align="right" style="padding:10px 0 0;font-size:16px;font-weight:bold;text-align:right;">$1,284.44</td></tr>
            </tfoot>
          </table>
        </td></tr>
        <tr><td class="em-px" style="padding:28px 40px 32px;font-family:Arial,Helvetica,sans-serif;font-size:13px;line-height:20px;color:#3f4b44;">
          <p style="margin:0 0 8px;">Billed to Pinecrest Dental Group, 401 Spruce Avenue, Duluth, MN 55802.</p>
          <p style="margin:0;">Questions about this invoice? Reply to this email or write to <a href="mailto:[email protected]" style="color:#14532d;text-decoration:underline;">[email protected]</a>.</p>
        </td></tr>
      </table>
    </td></tr>
    <tr><td class="em-px" align="center" style="padding:20px 32px 8px;font-family:Arial,Helvetica,sans-serif;font-size:12px;line-height:18px;color:#4b5a51;">
      Ferncroft Cloud Ltd · 88 Quarry Road · Madison, WI 53703<br>You receive this email because you are the billing contact for account FC-11872.
    </td></tr>
  </table>
  <!--[if mso]></td></tr></table><![endif]-->
</div>
</div>
<div><span class="lbl">Payment received email with an outline button</span>
<div role="article" aria-roledescription="email" aria-label="Payment received for invoice INV-30981" lang="en" style="background-color:#f1f5f2;padding:24px 0;">
  <div style="display:none;max-height:0;overflow:hidden;mso-hide:all;" aria-hidden="true">We received $1,284.44 for invoice INV-30981. Thank you. ͏ ͏ ͏</div>
  <!--[if mso]><table role="presentation" align="center" width="600" cellpadding="0" cellspacing="0" border="0"><tr><td><![endif]-->
  <table role="presentation" align="center" width="100%" cellpadding="0" cellspacing="0" border="0" style="max-width:600px;margin:0 auto;border-collapse:collapse;">
    <tr><td style="background-color:#ffffff;border-radius:12px;">
      <table role="presentation" width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr><td class="em-px" align="center" style="padding:36px 40px 8px;font-family:Arial,Helvetica,sans-serif;color:#1f2a24;">
          <table role="presentation" cellpadding="0" cellspacing="0" border="0"><tr><td align="center" width="56" height="56" style="width:56px;height:56px;border-radius:28px;background-color:#dcfce7;font-family:Arial,Helvetica,sans-serif;font-size:28px;line-height:56px;font-weight:bold;color:#14532d;" aria-hidden="true">✓</td></tr></table>
          <h1 style="margin:18px 0 6px;font-size:22px;line-height:28px;font-weight:bold;color:#1f2a24;">Payment received</h1>
          <p style="margin:0;font-size:15px;line-height:24px;color:#3f4b44;">Thanks, Tomás. Invoice INV-30981 is paid in full.</p>
        </td></tr>
        <tr><td class="em-px" style="padding:20px 40px;">
          <table width="100%" cellpadding="0" cellspacing="0" border="0" style="border-collapse:collapse;font-family:Arial,Helvetica,sans-serif;font-size:14px;line-height:20px;color:#1f2a24;background-color:#f0f7f2;border-radius:10px;">
            <caption style="padding:0 0 8px;text-align:left;font-size:12px;font-weight:bold;letter-spacing:1px;text-transform:uppercase;color:#3f4b44;">Payment details</caption>
            <tr><th scope="row" align="left" style="padding:14px 18px 6px;font-weight:normal;color:#3f4b44;text-align:left;">Amount paid</th><td align="right" style="padding:14px 18px 6px;font-weight:bold;text-align:right;">$1,284.44</td></tr>
            <tr><th scope="row" align="left" style="padding:6px 18px;font-weight:normal;color:#3f4b44;text-align:left;">Paid on</th><td align="right" style="padding:6px 18px;text-align:right;">28 Oct 2026</td></tr>
            <tr><th scope="row" align="left" style="padding:6px 18px;font-weight:normal;color:#3f4b44;text-align:left;">Method</th><td align="right" style="padding:6px 18px;text-align:right;">Visa ending 4242</td></tr>
            <tr><th scope="row" align="left" style="padding:6px 18px 14px;font-weight:normal;color:#3f4b44;text-align:left;">Receipt number</th><td align="right" style="padding:6px 18px 14px;text-align:right;">RC-55120</td></tr>
          </table>
        </td></tr>
        <tr><td class="em-px" align="center" style="padding:4px 40px 36px;">
          <!--[if mso]><v:roundrect xmlns:v="urn:schemas-microsoft-com:vml" xmlns:w="urn:schemas-microsoft-com:office:word" href="https://billing.ferncroft.example/receipts/RC-55120.pdf" style="height:46px;v-text-anchor:middle;width:240px;" arcsize="17%" strokecolor="#166534" strokeweight="2px" fillcolor="#ffffff"><w:anchorlock/><center style="color:#14532d;font-family:Arial,sans-serif;font-size:15px;font-weight:bold;">Download receipt (PDF)</center></v:roundrect><![endif]-->
          <!--[if !mso]><!--><a href="https://billing.ferncroft.example/receipts/RC-55120.pdf" style="display:inline-block;width:236px;border:2px solid #166534;border-radius:8px;background-color:#ffffff;color:#14532d;font-family:Arial,Helvetica,sans-serif;font-size:15px;font-weight:bold;line-height:42px;text-align:center;text-decoration:none;-webkit-text-size-adjust:none;">Download receipt (PDF)</a><!--<![endif]-->
        </td></tr>
      </table>
    </td></tr>
    <tr><td class="em-px" align="center" style="padding:20px 32px 8px;font-family:Arial,Helvetica,sans-serif;font-size:12px;line-height:18px;color:#4b5a51;">
      Ferncroft Cloud Ltd · 88 Quarry Road · Madison, WI 53703
    </td></tr>
  </table>
  <!--[if mso]></td></tr></table><![endif]-->
</div>
</div>
CSS
/* Email-safe invoice. Everything that matters is inline on the elements, because Gmail, Outlook and Apple Mail
   strip or ignore much of a <style> block. Layout is role="presentation" tables, 600px wide (a ghost table for
   Outlook on Windows, max-width:600px everywhere else), and the button is "bulletproof": VML for Outlook, a padded
   link elsewhere. These head rules only add a phone layout and a focus ring where clients support them. */
body{margin:0;padding:0;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}
table,td{mso-table-lspace:0pt;mso-table-rspace:0pt}
img{border:0;outline:none;text-decoration:none;-ms-interpolation-mode:bicubic}
a:focus-visible{outline:2px solid #14532d;outline-offset:3px}
@media only screen and (max-width:620px){
  .em-px{padding-left:20px!important;padding-right:20px!important}
  .em-stack{display:block!important;width:100%!important;box-sizing:border-box!important;text-align:left!important}
  .em-stack+.em-stack{padding-top:0!important}
  .em-amount{font-size:30px!important}
}

Bootstrap 5 code

Requires: Bootstrap 5.3.8 CSS

HTML
<div><span class="lbl">Invoice email with a bulletproof pay button</span>
<p class="alert em-note" role="note"><strong>Web preview.</strong> Email clients ignore Bootstrap and strip classes, so send the inline-CSS table version from the plain HTML tab. It renders this same design in Gmail, Outlook and Apple Mail.</p>
<div class="em" role="article" aria-roledescription="email" aria-label="Your Ferncroft Cloud invoice INV-30981">
  <div class="em-inner">
    <div class="d-flex justify-content-between align-items-center px-4 px-sm-5 pt-2 pb-3 mx-sm-n2">
      <p class="fw-bold" style="font-size:18px;color:var(--em-brand-dark)"><span aria-hidden="true">▲</span> Ferncroft Cloud</p>
      <a class="small" href="https://billing.ferncroft.example/invoices/INV-30981">View in browser</a>
    </div>
    <div class="card">
      <div class="em-bar"></div>
      <div class="card-body pt-4 pb-2"><h1 class="mb-2 mt-2">Your invoice is ready</h1><p class="em-lead">Hi Tomás, here is the invoice for your Ferncroft Cloud services in October. It will be charged to your card on file on the due date unless you pay it sooner.</p></div>
      <div class="card-body py-3">
        <div class="em-due d-flex flex-column flex-sm-row justify-content-between align-items-sm-center gap-2 px-4 py-3">
          <div><p class="small" style="color:var(--em-muted)">Amount due</p><p class="em-amount">$1,284.44</p></div>
          <p class="text-sm-end" style="font-size:13px;line-height:20px;color:var(--em-muted)">Invoice <strong class="text-body">INV-30981</strong><br>Due <strong class="text-body">2 Nov 2026</strong></p>
        </div>
      </div>
      <div class="card-body text-center pt-1 pb-4"><a class="btn btn-success" href="https://billing.ferncroft.example/pay/INV-30981">Pay $1,284.44</a></div>
      <div class="card-body py-0">
        <table class="table caption-top">
          <caption>Invoice summary</caption>
          <thead><tr><th scope="col">Item</th><th scope="col" class="text-end">Amount</th></tr></thead>
          <tbody>
            <tr><th scope="row">Business hosting plan<br><span class="text-body-secondary" style="font-size:13px">1–31 Oct 2026</span></th><td class="text-end align-middle text-nowrap">$890.00</td></tr>
            <tr><th scope="row">Managed database, 2 nodes<br><span class="text-body-secondary" style="font-size:13px">2 × $120.00</span></th><td class="text-end align-middle text-nowrap">$240.00</td></tr>
            <tr><th scope="row">Extra bandwidth<br><span class="text-body-secondary" style="font-size:13px">410 GB × $0.15</span></th><td class="text-end align-middle text-nowrap">$61.50</td></tr>
          </tbody>
          <tfoot>
            <tr><th scope="row" class="text-end">Subtotal</th><td class="text-end">$1,191.50</td></tr>
            <tr><th scope="row" class="text-end">Tax (7.8%)</th><td class="text-end">$92.94</td></tr>
            <tr><th scope="row" class="text-end">Total due</th><td class="text-end">$1,284.44</td></tr>
          </tfoot>
        </table>
      </div>
      <div class="card-body pt-4 pb-4" style="font-size:13px;line-height:20px;color:var(--em-muted)">
        <p class="mb-2">Billed to Pinecrest Dental Group, 401 Spruce Avenue, Duluth, MN 55802.</p>
        <p>Questions about this invoice? Reply to this email or write to <a href="mailto:[email protected]">[email protected]</a>.</p>
      </div>
    </div>
    <p class="em-foot text-center px-4 pt-4 pb-2">Ferncroft Cloud Ltd · 88 Quarry Road · Madison, WI 53703<br>You receive this email because you are the billing contact for account FC-11872.</p>
  </div>
</div>
</div>
<div><span class="lbl">Payment received email with an outline button</span>
<div class="em" role="article" aria-roledescription="email" aria-label="Payment received for invoice INV-30981">
  <div class="em-inner">
    <div class="card">
      <div class="card-body text-center pt-5 pb-2">
        <div class="em-check mx-auto" aria-hidden="true">✓</div>
        <h1 class="mt-3 mb-1">Payment received</h1>
        <p class="em-lead">Thanks, Tomás. Invoice INV-30981 is paid in full.</p>
      </div>
      <div class="card-body py-3">
        <table class="table caption-top em-details">
          <caption>Payment details</caption>
          <tbody>
            <tr><th scope="row">Amount paid</th><td class="text-end fw-bold">$1,284.44</td></tr>
            <tr><th scope="row">Paid on</th><td class="text-end">28 Oct 2026</td></tr>
            <tr><th scope="row">Method</th><td class="text-end">Visa ending 4242</td></tr>
            <tr><th scope="row">Receipt number</th><td class="text-end">RC-55120</td></tr>
          </tbody>
        </table>
      </div>
      <div class="card-body text-center pt-1 pb-5"><a class="btn btn-outline-success" href="https://billing.ferncroft.example/receipts/RC-55120.pdf">Download receipt (PDF)</a></div>
    </div>
    <p class="em-foot text-center px-4 pt-4 pb-2">Ferncroft Cloud Ltd · 88 Quarry Road · Madison, WI 53703</p>
  </div>
</div>
</div>
CSS
/* WEB PREVIEW of the invoice email, built with Bootstrap .card, .table, .btn and .alert. Email clients do not load
   Bootstrap or keep classes, so do not send this markup: send the inline-styled table version (plain HTML tab),
   which renders the same design in Gmail, Outlook and Apple Mail. */
.em{--em-brand:#166534;--em-brand-dark:#14532d;--em-ink:#1f2a24;--em-muted:#3f4b44;--em-line:#dde5df;--em-tint:#f0f7f2;
  --bs-body-color:var(--em-ink);--bs-secondary-color:#4b5a51;background:#f1f5f2;padding:24px 0;font-family:Arial,Helvetica,sans-serif;color:var(--em-ink);font-size:14px}
.em :is(h1,p,dl,dd){margin:0}
.em-inner{max-width:600px;margin:0 auto}
.em .card{--bs-card-border-width:0;--bs-card-border-radius:12px;--bs-card-spacer-x:40px;overflow:hidden}
.em-bar{height:6px;background:var(--em-brand)}
.em h1{font-size:22px;line-height:28px;font-weight:700}
.em-lead{font-size:15px;line-height:24px;color:var(--em-muted)}
.em-due{background:var(--em-tint);border-radius:10px}
.em-amount{font-size:34px;line-height:40px;font-weight:700;color:var(--em-brand-dark)}
.em a:not(.btn){color:var(--em-brand-dark)}
.em .btn{--bs-btn-font-weight:700;--bs-btn-border-radius:8px;--bs-btn-font-size:16px;width:240px;line-height:32px}
.em .btn-success{--bs-btn-bg:var(--em-brand);--bs-btn-border-color:var(--em-brand);--bs-btn-hover-bg:var(--em-brand-dark);--bs-btn-hover-border-color:var(--em-brand-dark);--bs-btn-active-bg:var(--em-brand-dark)}
.em .btn-outline-success{--bs-btn-color:var(--em-brand-dark);--bs-btn-border-color:var(--em-brand);--bs-btn-border-width:2px;--bs-btn-hover-bg:var(--em-tint);--bs-btn-hover-color:var(--em-brand-dark);--bs-btn-hover-border-color:var(--em-brand);--bs-btn-active-bg:var(--em-tint);--bs-btn-active-color:var(--em-brand-dark);--bs-btn-font-size:15px}
.em :is(a,.btn):focus-visible{outline:2px solid var(--em-brand-dark);outline-offset:3px;box-shadow:none}
.em .table{--bs-table-bg:transparent;--bs-table-color:var(--em-ink);--bs-table-border-color:var(--em-line);margin:0;line-height:20px}
.em .table caption{padding:0 0 8px;font-size:12px;font-weight:700;letter-spacing:1px;text-transform:uppercase;color:var(--em-muted)}
.em .table thead th{padding:8px 0;border-bottom:2px solid var(--em-ink);font-size:12px;color:var(--em-muted)}
.em .table tbody>tr>*{padding:12px 12px 12px 0;font-weight:400}
.em .table tbody>tr>td{padding-right:0}
.em .table tfoot>tr>*{border:0;padding:4px 12px 4px 0;font-weight:400}
.em .table tfoot>tr>td{padding-right:0}
.em .table tfoot th{color:var(--em-muted)}
.em .table tfoot tr:first-child>*{padding-top:12px}
.em .table tfoot tr:last-child>*{padding-top:10px;font-size:16px;font-weight:700;color:var(--em-ink)}
.em-check{width:56px;height:56px;border-radius:50%;background:#dcfce7;color:var(--em-brand-dark);font-size:28px;line-height:56px;font-weight:700}
.em-details{background:var(--em-tint);border-radius:10px}
.em-details>tbody>tr>*{padding:6px 18px!important;border:0!important}
.em-details>tbody>tr:first-child>*{padding-top:14px!important}
.em-details>tbody>tr:last-child>*{padding-bottom:14px!important}
.em-details th{color:var(--em-muted);font-weight:400}
.em-foot{font-size:12px;line-height:18px;color:#4b5a51}
.em-note{--bs-alert-bg:#fff8e6;--bs-alert-border-color:#e8c46b;--bs-alert-color:#5c4306;--bs-alert-padding-y:10px;--bs-alert-padding-x:14px;max-width:600px;margin:0 auto 18px;font-size:.86rem;line-height:1.5}
@media (max-width:620px){.em .card{--bs-card-spacer-x:20px}.em-amount{font-size:30px}}

Tailwind 4 code

Requires: Tailwind CSS 4

HTML
<div><span class="mb-4 block text-[.72rem] tracking-[.12em] text-[#4d5b52] uppercase">Invoice email with a bulletproof pay button</span>
<p class="mx-auto mb-[18px] max-w-[600px] rounded-md border border-[#e8c46b] bg-[#fff8e6] px-3.5 py-2.5 text-[.86rem] leading-normal text-[#5c4306]" role="note"><strong>Web preview.</strong> Email clients ignore Tailwind and strip classes, so send the inline-CSS table version from the plain HTML tab. It renders this same design in Gmail, Outlook and Apple Mail.</p>
<div class="bg-[#f1f5f2] py-6 font-[Arial,Helvetica,sans-serif] text-[14px] text-em-ink" role="article" aria-roledescription="email" aria-label="Your Ferncroft Cloud invoice INV-30981">
  <div class="mx-auto max-w-[600px]">
    <div class="flex items-center justify-between px-8 pt-2 pb-5 max-[620px]:px-5">
      <p class="text-[18px] font-bold text-em-brand-dark"><span aria-hidden="true">▲</span> Ferncroft Cloud</p>
      <a class="text-[13px] text-em-brand-dark underline focus-visible:outline-2 focus-visible:outline-offset-3 focus-visible:outline-em-brand-dark" href="https://billing.ferncroft.example/invoices/INV-30981">View in browser</a>
    </div>
    <div class="overflow-hidden rounded-xl bg-white">
      <div class="h-1.5 bg-em-brand"></div>
      <div class="px-10 pt-8 pb-2 max-[620px]:px-5"><h1 class="mb-2 text-[22px] leading-7 font-bold">Your invoice is ready</h1><p class="text-[15px] leading-6 text-em-muted">Hi Tomás, here is the invoice for your Ferncroft Cloud services in October. It will be charged to your card on file on the due date unless you pay it sooner.</p></div>
      <div class="px-10 py-5 max-[620px]:px-5">
        <div class="flex items-center justify-between gap-2 rounded-[10px] bg-em-tint px-[22px] py-5 max-[620px]:flex-col max-[620px]:items-start">
          <div><p class="text-[13px] leading-[18px] text-em-muted">Amount due</p><p class="mt-0.5 text-[34px] leading-10 font-bold text-em-brand-dark max-[620px]:text-[30px]">$1,284.44</p></div>
          <p class="text-right text-[13px] leading-5 text-em-muted max-[620px]:text-left">Invoice <strong class="text-em-ink">INV-30981</strong><br>Due <strong class="text-em-ink">2 Nov 2026</strong></p>
        </div>
      </div>
      <div class="px-10 pt-1 pb-6 text-center max-[620px]:px-5"><a class="inline-block w-60 rounded-lg bg-em-brand text-center text-[16px] leading-12 font-bold text-white hover:bg-em-brand-dark focus-visible:outline-2 focus-visible:outline-offset-3 focus-visible:outline-em-brand-dark" href="https://billing.ferncroft.example/pay/INV-30981">Pay $1,284.44</a></div>
      <div class="px-10 max-[620px]:px-5">
        <table class="w-full border-collapse text-[14px] leading-5">
          <caption class="pb-2 text-left text-[12px] font-bold tracking-[1px] text-em-muted uppercase">Invoice summary</caption>
          <thead><tr class="[&>th]:border-b-2 [&>th]:border-em-ink [&>th]:py-2 [&>th]:text-[12px] [&>th]:text-em-muted"><th scope="col" class="text-left">Item</th><th scope="col" class="text-right">Amount</th></tr></thead>
          <tbody class="[&_th]:border-b [&_th]:border-em-line [&_th]:py-3 [&_th]:pr-3 [&_th]:text-left [&_th]:font-normal [&_td]:border-b [&_td]:border-em-line [&_td]:py-3 [&_td]:text-right [&_td]:whitespace-nowrap">
            <tr><th scope="row">Business hosting plan<br><span class="text-[13px] text-em-soft">1–31 Oct 2026</span></th><td>$890.00</td></tr>
            <tr><th scope="row">Managed database, 2 nodes<br><span class="text-[13px] text-em-soft">2 × $120.00</span></th><td>$240.00</td></tr>
            <tr><th scope="row">Extra bandwidth<br><span class="text-[13px] text-em-soft">410 GB × $0.15</span></th><td>$61.50</td></tr>
          </tbody>
          <tfoot class="[&_td]:py-1 [&_td]:text-right [&_th]:py-1 [&_th]:pr-3 [&_th]:text-right [&_th]:font-normal [&_th]:text-em-muted [&>tr:first-child>*]:pt-3">
            <tr><th scope="row">Subtotal</th><td>$1,191.50</td></tr>
            <tr><th scope="row">Tax (7.8%)</th><td>$92.94</td></tr>
            <tr class="[&>*]:pt-2.5 [&>*]:text-[16px] [&>*]:font-bold! [&>*]:text-em-ink!"><th scope="row">Total due</th><td>$1,284.44</td></tr>
          </tfoot>
        </table>
      </div>
      <div class="px-10 pt-7 pb-8 text-[13px] leading-5 text-em-muted max-[620px]:px-5">
        <p class="mb-2">Billed to Pinecrest Dental Group, 401 Spruce Avenue, Duluth, MN 55802.</p>
        <p>Questions about this invoice? Reply to this email or write to <a class="text-em-brand-dark underline focus-visible:outline-2 focus-visible:outline-offset-3 focus-visible:outline-em-brand-dark" href="mailto:[email protected]">[email protected]</a>.</p>
      </div>
    </div>
    <p class="px-8 pt-5 pb-2 text-center text-[12px] leading-[18px] text-em-soft">Ferncroft Cloud Ltd · 88 Quarry Road · Madison, WI 53703<br>You receive this email because you are the billing contact for account FC-11872.</p>
  </div>
</div>
</div>
<div><span class="mb-4 block text-[.72rem] tracking-[.12em] text-[#4d5b52] uppercase">Payment received email with an outline button</span>
<div class="bg-[#f1f5f2] py-6 font-[Arial,Helvetica,sans-serif] text-[14px] text-em-ink" role="article" aria-roledescription="email" aria-label="Payment received for invoice INV-30981">
  <div class="mx-auto max-w-[600px]">
    <div class="overflow-hidden rounded-xl bg-white">
      <div class="px-10 pt-9 pb-2 text-center max-[620px]:px-5">
        <div class="mx-auto size-14 rounded-full bg-[#dcfce7] text-[28px] leading-14 font-bold text-em-brand-dark" aria-hidden="true">✓</div>
        <h1 class="mt-[18px] mb-1.5 text-[22px] leading-7 font-bold">Payment received</h1>
        <p class="text-[15px] leading-6 text-em-muted">Thanks, Tomás. Invoice INV-30981 is paid in full.</p>
      </div>
      <div class="px-10 py-5 max-[620px]:px-5">
        <table class="w-full border-collapse rounded-[10px] bg-em-tint text-[14px] leading-5 [&_td]:px-[18px] [&_td]:py-1.5 [&_td]:text-right [&_th]:px-[18px] [&_th]:py-1.5 [&_th]:text-left [&_th]:font-normal [&_th]:text-em-muted [&_tr:first-child>*]:pt-3.5 [&_tr:last-child>*]:pb-3.5">
          <caption class="pb-2 text-left text-[12px] font-bold tracking-[1px] text-em-muted uppercase">Payment details</caption>
          <tbody>
            <tr><th scope="row">Amount paid</th><td class="font-bold">$1,284.44</td></tr>
            <tr><th scope="row">Paid on</th><td>28 Oct 2026</td></tr>
            <tr><th scope="row">Method</th><td>Visa ending 4242</td></tr>
            <tr><th scope="row">Receipt number</th><td>RC-55120</td></tr>
          </tbody>
        </table>
      </div>
      <div class="px-10 pt-1 pb-9 text-center max-[620px]:px-5"><a class="inline-block w-60 rounded-lg border-2 border-em-brand bg-white text-center text-[15px] leading-[42px] font-bold text-em-brand-dark hover:bg-em-tint focus-visible:outline-2 focus-visible:outline-offset-3 focus-visible:outline-em-brand-dark" href="https://billing.ferncroft.example/receipts/RC-55120.pdf">Download receipt (PDF)</a></div>
    </div>
    <p class="px-8 pt-5 pb-2 text-center text-[12px] leading-[18px] text-em-soft">Ferncroft Cloud Ltd · 88 Quarry Road · Madison, WI 53703</p>
  </div>
</div>
</div>
CSS
/* WEB PREVIEW of the invoice email in Tailwind utilities. Email clients do not run Tailwind or keep classes, so send
   the inline-styled table version (plain HTML tab), which renders this same design in Gmail, Outlook and Apple Mail. */
@theme {
  --color-em-brand: #166534;
  --color-em-brand-dark: #14532d;
  --color-em-ink: #1f2a24;
  --color-em-muted: #3f4b44;
  --color-em-soft: #4b5a51;
  --color-em-line: #dde5df;
  --color-em-tint: #f0f7f2;
}

About this set

Two transactional emails for billing: Invoice email with a bulletproof pay button, and Payment received email with an outline button. The plain HTML file is the email itself and differs from the web versions in this pack on purpose. Gmail, Outlook and Apple Mail strip or ignore much of a style block, so every colour, size and spacing is inline on the element, layout is done with role=”presentation” tables, and the email is 600 pixels wide through a ghost table for Outlook on Windows and max-width everywhere else. The pay button is bulletproof: a VML roundrect inside conditional comments for Outlook and a padded link for every other client, so it never falls back to a plain blue link. A hidden preheader sets the inbox preview line, and a short head style adds a phone layout and a focus ring where clients support them. The Bootstrap and Tailwind files are web previews of the same email, for a billing portal or a design review; a note at the top says that email clients need the inline-CSS version.

What’s included

  • Inline styles and role="presentation" layout tables
  • 600px layout with an Outlook ghost table and max-width for other clients
  • Bulletproof buttons: VML for Outlook, padded links elsewhere
  • Hidden preheader text for the inbox preview
  • Invoice email and payment received email, with web previews in Bootstrap and Tailwind

Accessibility

Each email is wrapped in role="article" with an aria-label, layout tables are role="presentation" while the line items are a real data table with a caption and scoped headers, and the html element sets lang. Text contrast is at least 4.5:1, buttons are real links with descriptive text such as Pay $1,284.44, and the decorative check mark is hidden from screen readers.

Customise it

In the email, search and replace the inline colours #166534 (brand), #14532d (links) and #f0f7f2 (tint), including fillcolor and strokecolor on the VML buttons. In Bootstrap change --em-brand and --em-tint on .em; in Tailwind edit the em-* colours in @theme.