Email receipts

Send payment or refund receipts automatically.

Stripe can automatically send email receipts after a successful payment, or when you refund one. This is done by providing an email address when making the API request, using the email address of a Customer object, or updating a PaymentIntent with a customer’s email address after checkout. Each payment in the Dashboard also has a Receipt history where you can view and send receipts.

Each receipt contains a link to view it in a browser, and a unique receipt number that can be useful when looking up payment information.

The link to view the receipt in the browser is also available through the API on the Charge object. Note that when you visit the link, the receipt will always show the latest status of that Charge—if it has been refunded, the receipt will accurately reflect this.

Automatically send receipts when payments are successful

When using Checkout, you can automatically email your customers upon successful payments. Enable this feature with the email customers for successful payments option in your email receipt settings.

When creating a PaymentIntent, include your customer’s email address as a value for the receipt_email parameter. Receipts are only sent when a successful payment has been made—no receipt is sent if the payment fails or is declined.

curl https://api.stripe.com/v1/payment_intents \ -u sk_test_4eC39HqLyjWDarjtT1zdp7dc: \ -d amount=1099 \ -d currency=usd \ -d "payment_method_types[]"=card \ -d receipt_email="jenny.rosen@example.com"
# Set your secret key. Remember to switch to your live secret key in production! # See your keys here: https://dashboard.stripe.com/account/apikeys Stripe.api_key = 'sk_test_4eC39HqLyjWDarjtT1zdp7dc' intent = Stripe::PaymentIntent.create({ amount: 1099, currency: 'usd', payment_method_types: ['card'], receipt_email: 'jenny.rosen@example.com', })
# Set your secret key. Remember to switch to your live secret key in production! # See your keys here: https://dashboard.stripe.com/account/apikeys stripe.api_key = 'sk_test_4eC39HqLyjWDarjtT1zdp7dc' stripe.PaymentIntent.create( amount=1099, currency='usd', payment_method_types=['card'], receipt_email='jenny.rosen@example.com', )
// Set your secret key. Remember to switch to your live secret key in production! // See your keys here: https://dashboard.stripe.com/account/apikeys \Stripe\Stripe::setApiKey('sk_test_4eC39HqLyjWDarjtT1zdp7dc'); \Stripe\PaymentIntent::create([ 'amount' => 1099, 'currency' => 'usd', 'payment_method_types' => ['card'], 'receipt_email' => 'jenny.rosen@example.com', ]);
// Set your secret key. Remember to switch to your live secret key in production! // See your keys here: https://dashboard.stripe.com/account/apikeys Stripe.apiKey = "sk_test_4eC39HqLyjWDarjtT1zdp7dc"; PaymentIntentCreateParams params = PaymentIntentCreateParams.builder() .setAmount(1099L) .setCurrency("usd") .addPaymentMethodType("card") .setReceiptEmail("jenny.rosen@example.com") .build(); PaymentIntent.create(params);
// Set your secret key. Remember to switch to your live secret key in production! // See your keys here: https://dashboard.stripe.com/account/apikeys const stripe = require('stripe')('sk_test_4eC39HqLyjWDarjtT1zdp7dc'); const paymentIntent = await stripe.paymentIntents.create({ amount: 1099, currency: 'usd', payment_method_types: ['card'], receipt_email: 'jenny.rosen@example.com', });
// Set your secret key. Remember to switch to your live secret key in production! // See your keys here: https://dashboard.stripe.com/account/apikeys stripe.Key = "sk_test_4eC39HqLyjWDarjtT1zdp7dc" params := &stripe.PaymentIntentParams{ Amount: stripe.Int64(1099), Currency: stripe.String(string(stripe.CurrencyUSD)), PaymentMethodTypes: stripe.StringSlice([]string{ "card", }), ReceiptEmail: stripe.String("jenny.rosen@example.com"), } paymentintent.New(params)
// Set your secret key. Remember to switch to your live secret key in production! // See your keys here: https://dashboard.stripe.com/account/apikeys StripeConfiguration.ApiKey = "sk_test_4eC39HqLyjWDarjtT1zdp7dc"; var paymentIntents = new PaymentIntentService(); var createOptions = new PaymentIntentCreateOptions { Amount = 1099, Currency = "usd", PaymentMethodTypes = new List<string> { "card" }, ReceiptEmail = "jenny.rosen@example.com", }; paymentIntents.Create(createOptions);

The value of the description parameter provided in the request is displayed in the receipt, along with the amount, and your public business information. Receipts for one-time payments include only this information—additional line items cannot be added.

To trigger an automatic receipt after the payment is complete, update the PaymentIntent’s receipt_email.

Receipts with Billing

Stripe creates receipts when a customer pays an invoice, or makes any subscription payment. Receipts for subscription and invoice payments are itemized to include line items, discounts, and taxes for the in the payment.

To automatically send receipts, ensure that the customer’s email is set and the option email customers for successful payments is enabled in your email receipt settings.

After payment, the Hosted Invoice Page includes a link to a receipt that a customer can download for their own records.

Stripe can also email your customers when subscription charges fail. Ensure that the option Send emails when payments fail is enabled in your Automatic collection settings.

Manually send receipts from the Dashboard

You can send receipts in the Dashboard using the receipt history section of a payment’s page, or the payments section of a customer’s page. You can specify a different email address to resend an email receipt to, or a comma-separated list of addresses if you need to send it to multiple recipients. You can send receipts a maximum of 10 times per payment, and the payment’s page displays a complete history of all receipts.

Refund receipts

When a payment is refunded, a receipt is automatically sent to the same email address that was provided in the original charge. You can also use the Dashboard to manually send a copy of the refund receipt.

Similar to how email receipts work for Customer objects, receipts for refunds of customer-owned payments are only sent if the option Email customers for refunds is enabled in your email receipt settings.

Failed payment alerts

When a subscriptions charge fails, an email can be sent to your customers prompting them to update their payment information. These are sent to the email address associated with the Customer object. To enable, use the option Send emails when payments fail in your Automatic collection settings.

Make sure to fill in the link for customers to update their payment information to give customers an effective call to action. You can also preview these emails in the same section.

Customizing receipts

You can select which language to use for receipts in your email receipt settings and upload a custom logo in the branding settings. Receipts also include any public information that you have specified in your email receipt settings, such as your phone number or website address.

Stripe uses your logo’s colors to automatically set the optimal header color for your receipts, though you can override this by providing a hexadecimal (hex) number. The largest file size permitted for a custom logo image is 512KB. For best results, we recommend that your logo is a square image larger than 128 x 128 pixels. JPG, PNG, and GIF file types are supported.

You can preview your changes in real-time within the Dashboard. To see how a receipt looks when it is sent, click Send test email… to send yourself a test receipt.

Stripe receipts will help you comply by filling in all the fields that we know. However, you must send a few fields in the description parameter:

  • Auth Code
  • Whether this is the recurring charge or if it qualifies as buying additional credits that are separate or above and beyond the recurring subscription
  • Cancellation policies
  • Description of service

Receipts for Stripe Connect

Stripe sends a receipt to the email address that’s specified for receipt_email in the PaymentIntent object depending on your account email settings.

  • For destination charges, receipts are sent to the email address in receipt_email based on the email settings for the platform account.

  • For all other charge types, the platform account settings determine whether or not receipts are sent. Platform accounts that create charges on Standard accounts can send a receipt for the connected account by passing receipt_email when making a charge request.

You can configure email settings for both your platform and Standard accounts in the Dashboard. For Express and Custom accounts, the platform configures the settings for the connected account by using the account’s settings[branding].

If your platform and connected accounts use customers (e.g., a platform for subscription services), you can’t change customer email settings on Standard accounts. This means that you manage the email settings in each connected account individually.

Was this page helpful?
Questions? Contact us.
Developer tutorials on YouTube.
You can unsubscribe at any time. Read our privacy policy.