All your SaaS billing emails — one workflow layer, not scattered across handlers

Invoices, receipts, payment failures, refunds, plan upgrades and cancellations — each billing event triggers the right email through else.events, without custom billing email infrastructure.

Why billing emails end up scattered and hard to maintain

Billing email code is spread across payment webhook handlers

Failed payment handler sends one email. Subscription upgrade handler sends another. Refund handler sends a third. No central view.

Billing email templates are often hardcoded

The invoice email template lives in a string constant next to the webhook handler. Changing it means a code change and a deploy.

No audit trail for billing email deliveries

A customer says they never received the refund confirmation. There is no easy way to check what was sent and when.

Multi-currency and multi-locale billing email formatting is manual

EUR vs USD formatting, German vs English copy — each variation adds conditional logic to your billing email code.

One workflow layer for all billing emails — event in, email out

Every billing event has a dedicated email workflow

invoice.paid, invoice.payment_failed, subscription.cancelled, refund.issued — each routes to the right template.

All billing templates managed in one place

View, edit and version all billing email templates in the else.events UI — not scattered across your codebase.

Delivery logs per billing event

See every billing email sent, the template version used and the delivery status — searchable by user or event type.

Locale and currency from the payload

Include locale and currency in the billing event. Templates format amounts and text correctly per locale.

Billing events and the emails they trigger

invoice.paid

Invoice paid — receipt

Payment confirmation with invoice details, amount and receipt link.

invoice.payment_failed

Payment failed — dunning

Personalised dunning email with update payment CTA and attempt context.

refund.issued

Refund issued

Refund confirmation with amount, timeline and support contact.

subscription.plan_upgraded

Plan upgraded

Upgrade confirmation with new features and next billing amount.

subscription.cancelled

Subscription cancelled

Cancellation confirmation with access end date and win-back option.

Frequently asked questions

Do I need a separate billing email service?
No. else.events handles billing emails alongside all other product email types — onboarding, notifications, security alerts — from a single workflow layer.
How do I connect Stripe webhooks to else.events billing email flows?
Create a webhook handler that receives Stripe events and forwards them as typed events to the else.events API. Map Stripe fields to your event payload schema.
Can billing emails be sent in multiple currencies and locales?
Yes. Include currency and locale in the event payload. Templates format currency amounts and dates according to the locale.
Can I view all billing emails sent to a specific customer?
Yes. Search the else.events delivery logs by user email to see every billing email sent to that customer, including status, timestamp and template version.

All SaaS billing emails — one workflow layer, every event covered

Stop building billing email infrastructure. Centralise every billing email in else.events.

  • Free during public beta
  • All billing email types in one place
  • Delivery logs per billing event