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.

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.

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.

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.

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.

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.

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.

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.

For a complete guide to Stripe integration, see our tutorial.

Template Example

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 [email protected].

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.

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.

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.


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.