A common sequence: you launch, charge via Stripe, customers get auto-receipts from receipt@stripe.com. Then marketing says "we want branded receipts", engineering switches off Stripe's receipts, ships a custom template frombilling@yourapp.com. Three weeks later finance forwards you ten tickets: customers saying they never got their receipt, accounting complaining about reconciliation, a few disputes escalating because the customer forgot what they paid for.
You did not regress product quality. You traded a sender with ten years of reputation, dedicated IP pools, and per-recipient engagement history for a new From-address that every spam filter treats as a brand-new voice.
Why Stripe receipts just work
- Reputation.
stripe.comsends billions of transactional emails per year with very low complaint rates. Filters learned to trust it. - Recipient familiarity. Half your customers have received Stripe mail from a previous merchant. Gmail remembers per-recipient engagement.
- Clean authentication. SPF, DKIM, DMARC are correct, aligned, and published. The reply-to routing makes sense.
- Mature template. Plain, text-dominant, single link, predictable structure. Trained to look receipt-like by ten years of provider fingerprinting.
Ask yourself: does the marginal brand lift from your own HTML template outweigh 5-15% of receipts missing? For most companies below 1M ARR, keep Stripe receipts, brand the product, and ship custom receipts only once you have authenticated infrastructure that measurably matches Stripe's placement.
What breaks when you switch
Three failure modes, in order of frequency:
- Content fingerprint. Your custom template has a big header image, one CTA button, no plain-text part. Looks like promo, files as promo.
- Missing authentication. You send through an ESP that signs with its own DKIM, but your DMARC policy requires alignment. Fail.
- New subdomain, no warm-up.
billing.yourapp.comhas zero sending history. Providers apply conservative placement until reputation accumulates.
Measuring the gap
Send the same receipt to the same seed mailbox twice: once via Stripe, once via your custom flow. Compare folder placement. This is the clearest A/B signal you will ever get.
# Test 1: Stripe receipt
stripe checkout sessions create \
--success-url="..." \
--customer-email="seed-gmail@check.live-direct-marketing.online" \
--payment-method-types="card" \
--line-items=... \
--receipt-email="seed-gmail@check.live-direct-marketing.online"
# Test 2: Your custom receipt
curl -X POST https://yourapp.com/api/test/receipt \
-H 'Content-Type: application/json' \
-d '{"email":"seed-gmail@check.live-direct-marketing.online","amount":4900}'
# Compare placement across providers
curl https://check.live-direct-marketing.online/api/check/compare \
-d '{"labels":["stripe-receipt","custom-receipt"]}'What the comparison usually shows
Typical result from early-stage SaaS flipping to custom receipts:
- Gmail: Stripe 98% inbox, Custom 72% inbox (18% Promotions, 10% Spam).
- Outlook: Stripe 96% inbox, Custom 68% inbox (32% Junk).
- Yahoo: Stripe 97% inbox, Custom 81% inbox.
- iCloud: Stripe 99% inbox, Custom 74% inbox.
That 20-30 point gap is the cost of replacing mature infrastructure with a brand-new identity. It closes over time — but you have to do the work.
Closing the reputation gap
- Dedicated subdomain for receipts only.
receipts.yourapp.com. Do not mix with marketing (mail.) or notifications (notify.). Separate reputations. - Authenticate strictly.
v=spf1 include:mailgun.org -all, DKIM selector published, DMARCp=quarantine; adkim=s. Strict alignment matters for receipts because they are sensitive and filters know it. - Template structurally identical to Stripe. Plain layout, text-heavy, one link, signature with physical address and support email. No hero image. No marketing upsell. No "Congrats on your purchase! Follow us!" section.
- Warm up gradually. Start at low volume for the first two weeks, mix with engaged recipients, scale up. If you ship 10,000 receipts on day 1 from a new identity, you will trip rate-based filters.
Finance-critical mail is not something to "ship and forget". Wire a placement check into your billing CI. If a template change drops Gmail placement below 90%, the deploy should fail.
When to keep Stripe receipts anyway
Even with perfect infrastructure, sometimes dual-sending is the right call:
- Regulated industries. Fintech, healthcare. Keep Stripe receipt for audit trail, send your own branded confirmation as a separate "thanks for your purchase" email.
- Multi-currency or tax-complex jurisdictions. Stripe's receipt format handles VAT / GST lines correctly. Your custom template probably does not.
- Chargeback defense. Stripe receipt in the customer's inbox is useful evidence in disputes.