Back to all terms
Payment
Paymentsbasic

Receipt Handling

Generating and delivering transaction receipts to customers after successful payments, either through Stripe's built-in receipt emails or custom-built receipt systems.

Also known as: payment receipts, email receipts, transaction confirmation, payment confirmation

Description

Receipt handling ensures customers receive confirmation of their payments with transaction details, amounts, descriptions, and your business information. Stripe provides built-in receipt emails that can be enabled globally in Dashboard settings or per-charge via the receipt_email parameter on PaymentIntents and Charges. These receipts include the amount, date, last four digits of the card, a description, and a link to the Stripe-hosted receipt page. For many applications, Stripe's built-in receipts are sufficient for launch, but as you scale, custom receipts offer better branding and richer content.

Custom receipt systems give you full control over the receipt's design, content, and delivery mechanism. Trigger receipt generation on the payment_intent.succeeded or invoice.paid webhook event, pulling transaction details from the event payload and your own order/subscription records. Render the receipt using your email template system (MJML, React Email, etc.) with your branding, itemized line items, tax breakdown, and support contact information. Store a record of each sent receipt for audit purposes and provide a way for customers to re-request or download receipts from their account dashboard.

Receipts must meet certain legal requirements depending on the jurisdiction. Many regions require receipts to include the seller's legal name and address, tax registration number (VAT ID), itemized list of goods/services, tax amounts broken out separately, and the total amount with currency. For digital goods in the EU, receipts must show the VAT rate applied and the customer's country. Consider generating PDF receipts in addition to emails for customers who need them for expense reporting or accounting purposes.

Prompt Snippet

Disable Stripe's default receipt emails in Dashboard settings and implement custom receipts triggered by the payment_intent.succeeded webhook. Pull the charge details from the event payload (amount, currency, payment_method.card.last4, receipt_url), merge with your order data (line items, customer name, billing address), and render via your transactional email provider (SendGrid dynamic templates or Postmark). Include the Stripe-hosted receipt_url as a backup link in your email. Store receipt records in a receipts table (id, payment_intent_id, customer_id, sent_at, email_address) for audit compliance. Generate PDF receipts on demand using a PDF library (e.g., @react-pdf/renderer) with legally required fields: business name, tax ID, itemized charges, tax breakdown, and total.

Tags

receiptsemailpaymentscompliancecustomer-experience