Product update
More consistent payment receipts
Completed invoice payments trigger one branded receipt email—with optional PDF—instead of duplicate messages from overlapping Stripe events.

Customers should get one clear “thank you”—not two receipts for the same charge.
Why we built it
Stripe can fire invoice.paid and invoice.payment_succeeded close together, and other code paths also celebrate a successful charge. That produced duplicate branded receipt emails for the same payment. More consistent payment receipts centralizes success handling in sendInvoiceReceiptEmail, sends a single Payment Receipt message per invoice (subject includes product context), optionally attaches the Stripe invoice PDF, and records brandedReceiptEmailSentAt on the invoice so retries and second webhooks skip a second send. Failed-payment emails stay one per attempt as well.
Who it is for
- Customers paying open invoices through hosted links or saved methods.
- Billing staff who enable payment receipt emails under billing notification settings.
- Teams using branded templates alongside Clearer invoice discounts and totals on the same invoice.
What you can do
- Deliver one receipt email when an invoice moves to paid, with amount and link to the hosted invoice page.
- Include an invoice PDF attachment when Stripe provides a PDF for that bill.
- Respect invoice contact preferences—recipients with billing communication enabled get the receipt.
- Log sends in customer email activity as
invoice_receiptfor support lookups.

How it fits your day
When a collector says they got two emails, check the invoice in Stripe metadata for brandedReceiptEmailSentAt—only the first successful send should stick. Toggle payment receipt notifications off temporarily if you are testing webhooks in staging.
Get started
Pay a small test invoice in Stripe test mode with receipts enabled, confirm exactly one branded Payment Receipt arrives, and verify the activity log on the customer record shows a single receipt entry.
Questions about this update?
Book time with our team or browse the rest of the changelog.