Back to Blog

How to Set Up Automatic Invoice and Receipt Emails

8 min read

Every invoice email you send is a touchpoint with your customer. Miss it, and you create confusion and support tickets. Get it wrong, and you damage trust. Get it right, and billing becomes invisible—which is exactly what you want.

Automatic invoice and receipt emails seem straightforward. Money comes in, email goes out. But the details matter: legal requirements, timing, format, multi-currency handling, and what happens when payments fail. This guide covers how to set up invoice and receipt emails that work.

Why Invoice Emails Matter More Than You Think

Most SaaS companies treat invoice emails as an afterthought—necessary plumbing that just needs to work. But invoice emails are one of the highest-opened email types you'll ever send. Customers open billing emails because money is involved. They pay attention because charges affect their budget. This makes invoice emails an opportunity, not just an obligation.

A well-designed invoice email does several things simultaneously:

Prevents support tickets. Every ambiguous charge generates questions. "What's this charge for?" "Did I get charged twice?" "Where's my receipt?" Clear, timely invoice emails answer these questions before they're asked. Companies that optimize their billing emails typically see a 30-50% reduction in billing-related support volume.

Builds trust. Professional, consistent billing communication signals that your company is organized and reliable. Inconsistent or confusing invoices signal the opposite. In B2B SaaS, where your customers' finance teams interact with your invoices, professionalism matters.

Reduces involuntary churn. When payment failures happen and customers don't receive clear communication about what went wrong and how to fix it, they churn without even making a decision. Good billing email infrastructure includes failed payment recovery that catches these customers before they're lost.

Creates an opportunity for relationship touchpoints. While you shouldn't turn invoice emails into marketing campaigns, they're a natural place to include a brief note about product value—a subtle reminder that the charge is worth paying.

Legal Requirements You Can't Ignore

Different countries have different requirements for invoices. What you must include depends on where your business is registered and where your customers are located.

For US-based businesses, requirements are relatively light. An invoice should include your business name and address, customer information, invoice number, date, description of what was purchased, amount charged, and payment status. There's no mandated format, but these elements create a valid record.

EU VAT invoices are more strict. You must include your VAT number, the customer's VAT number for B2B transactions, the VAT rate applied, and net and gross amounts. The format matters because your customers may need these invoices for their own tax filings. Getting this wrong creates problems down the chain.

UK-specific requirements post-Brexit mean UK businesses need to issue invoices that comply with UK VAT rules, which differ slightly from EU rules. If you serve both UK and EU customers, your invoicing system needs to handle both.

Australian GST invoices require an ABN (Australian Business Number), the GST amount, and whether the price includes or excludes GST. Similar requirements exist in other countries with goods and services taxes.

If you're using Stripe, their invoices handle most of these requirements automatically. Stripe generates PDF invoices that include the necessary tax information based on your settings. You can customize the branding but the compliance elements are handled.

The practical advice: use your payment processor's invoice generation where possible. They've already solved the compliance problems. Your job is to deliver those invoices to customers reliably.

Invoice vs Receipt: The Difference Matters

An invoice is a request for payment. It goes out before or at the time of charge, detailing what's being billed and when payment is due.

A receipt is confirmation of payment. It goes out after successful payment, confirming the transaction completed.

For SaaS subscriptions with automatic billing, the timing gets blurry. The customer's card is charged automatically, so there's no "pay this invoice" step. Most SaaS companies send a single email that functions as both: it goes out after successful payment and includes the invoice details plus confirmation that payment was processed.

The exception is failed payments. If a charge fails, you don't send a receipt because there's nothing to confirm. But you might send the invoice to show what was attempted. More commonly, this triggers a dunning sequence rather than a standard invoice email.

For enterprise customers on invoiced billing (net-30 terms), you do send separate invoices before payment is due, then receipts when payment clears. This is less common for typical SaaS but important if you serve larger customers.

Subscription changes and prorations:

Invoicing gets more complex when customers change plans mid-cycle. If a customer upgrades from $49/month to $99/month halfway through a billing period, you need to communicate:

  • The prorated charge for the remainder of the current period
  • What the next full billing cycle will cost
  • When the next charge will occur

Stripe handles the proration math automatically, but your email needs to explain it clearly. A confusing proration email is one of the fastest paths to a support ticket. Include a simple breakdown: "Upgrade charge: $25 (prorated for remaining 15 days). Your next monthly charge of $99 will be on [date]."

Timing: When to Send

For automatic subscription billing, send the receipt email immediately after successful payment. Customers expect confirmation quickly. A delay of hours or days creates anxiety, even if the payment went through.

"Immediately" means within seconds or minutes, not hours. If you're processing Stripe webhooks, you should be sending the email as part of your webhook handler, not in a batch job that runs overnight.

For the first payment on a new subscription, the receipt email often overlaps with your welcome email. You have two options: combine them into one email that confirms payment and welcomes the customer, or send separate emails. Separate emails are cleaner because they serve different purposes. The receipt is a record. The welcome is onboarding.

For recurring payments, particularly monthly billing, consider whether you need to email every time. Monthly receipt emails can become noise that customers tune out. Some options:

  • Send only for the first few months, then stop
  • Send receipts but optimize them for quick scanning (customers just want to confirm the charge happened)
  • Make receipts available in-app but don't email them
  • Send a quarterly or annual summary instead of monthly emails

Annual billing receipts should always be sent. The amount is larger, the charge is less frequent, and customers want the record.

Pre-charge notifications:

Some SaaS companies send a notification 3-7 days before a recurring charge. "Your subscription will renew on [date] for [$amount]." This is good practice for annual billing, where the charge is significant and customers may want to review their subscription before it renews. For monthly billing, pre-charge notifications can feel excessive—but they're appreciated by customers on larger plans.

Pre-charge notifications also reduce chargebacks. When a customer sees a charge they forgot about, they might dispute it with their bank rather than contact you. A heads-up email prevents this by putting the charge in context before it appears on their statement.

What to Include in the Email Body vs PDF Attachment

You have two ways to deliver invoice information: in the email body itself, or as a PDF attachment. Most SaaS companies do both.

The email body should include the key information at a glance: amount charged, date, subscription period covered, and payment method used (last 4 digits of card). This lets customers scan the email and understand the charge without opening attachments.

The PDF attachment is the formal invoice document. This is what customers save for their records, submit for expense reports, and use for tax purposes. It should include all the legal elements: complete business information, invoice number, itemized charges, tax information if applicable.

If you're using Stripe, you can include a link to the Stripe-hosted invoice instead of attaching a PDF. This keeps email size down and lets customers access the invoice in Stripe's clean interface. The tradeoff is that it requires clicking a link and having an internet connection.

For enterprise customers and B2B sales, PDF attachments are typically expected. For consumer-style SaaS, a link to the invoice may be sufficient. Know your audience.

Handling Failed Payments

When a payment fails, you need a different approach than a standard receipt.

Do not send an invoice email that looks like a receipt but says "payment failed." This is confusing. Customers expect invoice emails to confirm successful payments.

Instead, failed payments should trigger your failed payment recovery sequence. This is a separate email flow specifically designed to alert the customer, explain what happened, and guide them to resolution.

If you're using Stripe, you can configure automatic emails for failed payments, or handle it yourself via webhooks. The invoice.payment_failed event tells you when to trigger your recovery sequence.

One important note: make sure your receipt emails only fire on successful payment. A common bug is triggering the invoice email on invoice.created instead of invoice.payment_succeeded. The first fires even when payment hasn't gone through yet. The second only fires after successful charge.

The anatomy of a good failed payment email:

A failed payment email should include:

  • Clear subject line: "Action needed: Payment failed for [Product]"
  • What happened: "Your payment of $49 for [Product] was declined"
  • Why it might have happened: "This usually means the card on file has expired or the bank declined the transaction"
  • What to do: "Update your payment method here: [link to billing page]"
  • What happens next: "We'll retry the charge in 3 days" or "Your account will remain active until [date]"
  • Support option: "If you need help, reply to this email"

Don't be alarming. Don't threaten account cancellation in the first email. Do be clear and helpful. For the full playbook on payment recovery, Stripe email automation covers how to build this systematically.

Multi-Currency and International Considerations

If you accept payments in multiple currencies, your invoice emails need to show the correct currency. Sending an invoice that says "$99" when the customer was charged "€89" creates confusion.

Stripe handles currency in the invoice data. When you pull invoice details from the webhook, use the currency field to format amounts correctly. Show "€89.00" not "89.00 EUR" and definitely not "$89.00" when Euros were charged.

Timezone handling matters for invoice dates. The invoice date should be the date the charge occurred in the customer's timezone (or at least a consistent timezone). A customer in Sydney who's charged at 2am their time might see a date that's "yesterday" from their perspective. This rarely causes problems but can create confusion for accounting purposes.

Tax handling varies by country. If you're charging VAT, show the tax breakdown. If you're using Stripe Tax or a similar service, the tax details are included in the invoice data. Make sure your email template can display them.

Currency formatting details that matter:

  • USD: $99.00 (dollar sign before, period for decimals)
  • EUR: €99.00 or 99,00 € (varies by country—France uses comma, Germany uses comma, Ireland uses period)
  • GBP: £99.00
  • JPY: ¥9,900 (no decimal places for Japanese Yen)
  • BRL: R$99,00

Get these wrong, and your international customers will notice. When in doubt, use the locale-appropriate format for the customer's country, not your own.

Design Best Practices

Invoice emails should be clear and scannable. This isn't a marketing email—it's a record.

Use a clean, simple layout. Two columns work well: labels on the left, values on the right. Amount charged, date, payment method, subscription period.

Make the amount prominent. This is the primary information customers look for. It should be immediately visible without scrolling.

Include your company name and logo so customers recognize the sender. Billing emails from unknown senders get flagged as spam or phishing.

Keep marketing minimal. A receipt email is not the place for heavy promotion. You can include a small footer with account links or upgrade prompts, but the primary purpose is confirmation, not conversion.

Ensure the email works in plain text. Many business email clients render plain text by default. If your invoice is only readable in HTML view, some customers won't be able to read it.

Mobile-first design for invoice emails:

Over 50% of emails are opened on mobile devices, and invoice emails are no exception. Ensure your invoice email:

  • Uses a single-column layout that doesn't require horizontal scrolling
  • Has a font size of at least 14px for body text
  • Makes the CTA buttons (View Invoice, Download PDF) tap-friendly (minimum 44px height)
  • Keeps the key information (amount, date, status) visible without scrolling
  • Doesn't rely on images for critical information (images may not load by default)

Setting Up Stripe Webhooks

If you're using Stripe (and most SaaS companies are), invoices and receipts are triggered by webhooks.

The key event is invoice.payment_succeeded. This fires when a payment successfully processes. When you receive this webhook, pull the invoice details and send your receipt email.

Here's the data you need from the webhook:

  • invoice.customer_email — where to send the email
  • invoice.amount_paid — the amount charged (in cents)
  • invoice.currency — to format the amount correctly
  • invoice.hosted_invoice_url — link to Stripe-hosted invoice
  • invoice.invoice_pdf — direct link to PDF download
  • invoice.period_start and invoice.period_end — the billing period
  • invoice.lines.data — itemized charges

Use invoice.payment_succeeded not invoice.created. The created event fires when an invoice is generated, which happens before payment is attempted. If payment fails, you don't want to send a receipt.

Handle the webhook idempotently. Stripe can send the same webhook multiple times. Check if you've already sent a receipt for this invoice ID before sending another. Duplicate receipts annoy customers and look unprofessional.

Additional Stripe events to handle:

Beyond invoice.payment_succeeded, consider handling:

  • invoice.payment_failed — Trigger your dunning sequence
  • customer.subscription.updated — Send plan change confirmation
  • customer.subscription.deleted — Send cancellation confirmation
  • charge.refunded — Send refund confirmation
  • charge.dispute.created — Alert your team (don't email the customer)
  • invoice.upcoming — Send pre-charge notification (Stripe sends this ~3 days before charge)

Each of these events represents a billing touchpoint where clear communication prevents confusion and support tickets.

For a complete guide to Stripe email automation, see our tutorial on building a comprehensive billing email system.

Template Examples

Here's a straightforward receipt email template:

Subject: Your [Product] receipt for [Month Year]


Hi [Name],

Thanks for your payment. Here's your receipt for [Product].

Amount: $49.00 Date: January 11, 2026 Period: January 11 – February 11, 2026 Payment method: Visa ending in 4242

[View Invoice] [Download PDF]

If you have any questions about this charge, reply to this email or contact us at support@yourproduct.com.

Thanks, The [Product] Team


Keep it short. The invoice PDF has the full details. The email just confirms the payment and provides access to the record.

For your subject line, include your product name and the period. "[Product] receipt for January 2026" is clear. "Receipt" alone might get lost or confused with other billing emails.

Template variation: First payment (welcome + receipt)

Subject: You're all set — receipt for [Product]


Hi [Name],

Welcome to [Product]! Your payment has been processed. Here are the details:

Plan: Pro Plan Amount: $49.00/month First charge: January 11, 2026 Next charge: February 11, 2026 Payment method: Visa ending in 4242

[View Invoice] [Download PDF]

Your account is fully active. If you haven't already, here's where to get started: [link to getting started guide]

Questions about billing? Reply here. Questions about the product? Check out our [help center link].

[Your Name] [Product] Team


This variation works for the first payment because it combines the receipt with a gentle onboarding nudge without overwhelming the email.

Template variation: Annual billing receipt

Subject: Your annual [Product] receipt — $588.00


Hi [Name],

Thanks for your continued subscription. Here's your annual receipt:

Plan: Pro Plan (Annual) Amount: $588.00 ($49.00/month, billed annually) Period: January 11, 2026 – January 11, 2027 Savings: $108 compared to monthly billing Payment method: Visa ending in 4242

[View Invoice] [Download PDF]

Your subscription will automatically renew on January 11, 2027. We'll send a reminder before your next charge.

Thanks for being a [Product] customer.

The [Product] Team


For annual receipts, include the savings compared to monthly billing (if applicable) as a subtle reinforcement of their decision. And always mention when the next charge will occur—annual customers sometimes forget they signed up for annual billing.

Connecting with Your Email Platform

Your receipt emails are transactional emails, not marketing emails. They should be triggered by payment events, not by campaigns or sequences.

If your email platform supports transactional sending, you can trigger receipt emails directly from your webhook handler. Pass the customer email and invoice data to your email platform's API, and it sends immediately.

If you're using separate transactional and marketing email systems, receipts should go through the transactional system. This ensures they're prioritized correctly and don't get delayed by marketing queue backlogs.

Make sure receipt emails don't include unsubscribe links or at least handle them carefully. A customer who "unsubscribes" from receipts might miss important billing information. Most SaaS companies either omit unsubscribe from receipts entirely or make it very clear that unsubscribing only affects marketing emails, not transactional ones.

Choosing the right sending approach:

There are three common patterns for sending receipt emails:

  1. Stripe's built-in emails: Stripe can send receipt emails automatically. Pros: zero setup, legally compliant. Cons: limited branding, can't include product-specific information, customers see Stripe branding instead of yours.

  2. Your email platform's transactional API: Send via your marketing email platform's transactional endpoint. Pros: consistent branding, unified analytics, same deliverability infrastructure. Cons: adds a dependency between billing and email.

  3. Dedicated transactional email service: Use a separate service like Postmark or AWS SES for billing emails. Pros: high deliverability for transactional email, independent from marketing. Cons: another service to manage, separate analytics.

For most SaaS companies, option 2 is the best balance of branding and simplicity. If you're already using a platform that handles both transactional and marketing email, keeping everything in one system reduces complexity.

Billing Emails as Part of Your Email Program

Invoice and receipt emails don't exist in isolation. They're part of a broader email ecosystem that includes onboarding, marketing, and payment-related templates. Here's how they fit together:

Coordinate with marketing emails. Don't send a marketing email and a billing email on the same day if you can avoid it. If a customer receives their monthly receipt and your product newsletter in the same hour, the newsletter gets ignored. Consider suppressing marketing emails for 24 hours after a billing email.

Align the brand experience. Your invoice emails should look like they come from the same company as your marketing emails. Use the same logo, colors, and general design language. Inconsistent design across email types looks unprofessional and can trigger spam suspicion.

Use billing events as triggers. Successful payment is a signal of commitment. A customer who just renewed is in a positive state—they chose to keep paying. This is a good time (24-48 hours later, not in the receipt itself) to ask for a review, suggest a feature they haven't tried, or share a case study relevant to their usage.

Measuring What Matters

For receipt emails, the primary metrics are delivery rate and any resulting support tickets.

Track delivery rate to ensure receipts are actually reaching customers. A receipt that bounces or goes to spam creates problems when the customer looks for their invoice and can't find it.

Monitor support tickets related to billing. If you're getting questions like "was I charged?" or "where's my invoice?", your receipt emails aren't doing their job. Either they're not being delivered, not being opened, or not providing the information customers need.

Open rates matter less for receipts than for marketing emails. Many customers don't open routine receipt emails—they just file them. That's fine. The email is a record, not engagement content.

If you do track opens, watch for trends. A sudden drop in receipt email opens might indicate deliverability issues. Since billing emails are important enough that most recipients check them, a sustained open rate drop is a stronger deliverability signal than the same drop in marketing emails.

The metrics dashboard for billing emails:

Track these on a monthly basis:

  • Delivery rate: Should be 99%+. Anything lower indicates deliverability problems.
  • Bounce rate: Should be under 0.5%. Higher rates suggest stale customer email addresses.
  • Support tickets mentioning billing/invoice/receipt: Track trend over time. Should decrease as you optimize.
  • Time to send: How long between the Stripe event and email delivery? Should be under 60 seconds.
  • Duplicate sends: Should be zero. Monitor for webhook idempotency failures.

Automatic invoice and receipt emails are infrastructure. When they work, nobody notices. When they break, everyone notices. Set them up correctly from the start, test them thoroughly, and monitor them ongoing. Your billing communication reflects the professionalism of your entire operation.

Frequently Asked Questions

Should I use Stripe's built-in receipt emails or send my own?

For most SaaS companies, sending your own is better because you control the branding, content, and timing. Stripe's built-in emails are functional but generic. However, if you're just getting started and want something working today, Stripe's emails are a perfectly fine temporary solution while you build your own.

How do I handle receipts for customers who pay via bank transfer or wire?

For offline payments, you can't rely on automatic webhook triggers. Set up a process where confirming a bank transfer in your system (or in Stripe) triggers the receipt email. Some companies handle this semi-manually until volume justifies automation.

Should I send receipts for $0 invoices (like free plan renewals)?

Generally no. A $0 receipt email confuses customers and provides no useful information. The exception is if the free plan has an impending price change—in that case, a $0 receipt with a note about upcoming pricing can serve as advance notice.

What should I do when a customer's email bounces on a receipt?

Flag it for your support team. A bouncing receipt email means the customer won't receive billing communication, which creates problems. Reach out through alternative channels (in-app notification, secondary email) to get an updated email address.

How do I handle receipts when a customer downgrades and receives a credit?

Send a confirmation email that clearly shows: the plan change, any credit applied to their account, what their next charge will be and when. "You've switched to the Basic plan. A credit of $25 has been applied to your account and will be used toward your next charge of $19 on [date]."

Is it okay to include a product tip or upsell in a receipt email?

A very small, non-intrusive mention is acceptable—like a one-line footer linking to a new feature. But never make the receipt feel like a marketing email. The primary purpose is billing confirmation. Users who feel marketed to during a financial transaction lose trust.

How often should I audit my billing email system?

At minimum, quarterly. Test the full flow: sign up for a test subscription, verify the receipt arrives correctly, trigger a failed payment, check the recovery email, process a refund, verify the confirmation. Any changes to your Stripe configuration or email platform should trigger an immediate audit.