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 view and send receipts using the email history section of a payment in the Dashboard. You can specify a different email address to resend an email receipt to, or a comma-separated list of addresses if a receipt needs to be sent to multiple recipients. Receipts can be sent a maximum of 10 times per payment, and a complete history of all receipts sent is displayed within the payment’s page.

    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

    If you make use of receipts on the platform account, Stripe automatically sends receipts for any destination charges, since these are processed by your platform.

    For platforms creating charges on Standard accounts, passing receipt_email when making a charge request sends a receipt on behalf of the connected account.

    If your platform and connected accounts use customers (e.g., a platform for subscription services), each Standard connected account is responsible for managing their own customer email settings. The platform cannot change customer email settings on Standard connected accounts.

    Was this page helpful?

    Feedback about this page?

    Thank you for helping improve Stripe's documentation. If you need help or have any questions, please consider contacting support.

    On this page