Stripe | Financial Infrastructure to Grow Your Revenue

Stripe | Financial Infrastructure to Grow Your Revenue

4466 articles

No-cost orders


No-cost orders

Accept orders for no-cost line items or apply 100% off discounts for one-time payments.

You can process no-cost orders for one-time payments with no-cost line items or discounts for 100% off with coupons and customer-facing promotion codes.

Note

You must be on API version 2023-08-16 or later to process no-cost orders using the Checkout Sessions API.

Create a Checkout Session with no-cost line items

Create a Price with a unit_amount of 0, and pass it into the line items array of the Checkout Session. See Products and prices for more information on creating prices.

You can also use the price_data parameter of the line_items array to pass in a free price.

If the total amount is 0, Checkout doesn’t collect a payment method from the customer.

Command Line

Select a language

cURL

Stripe CLI

Ruby

Python

PHP

Java

Node.js

Go

.NET

No results

If the customer property isn’t set, the Checkout Session automatically creates a new Customer object. This means guest customers aren’t supported.

Create a discount

Alternatively, create a coupon and a promotion code to allow customers to complete orders for free.

Create a coupon

Create a Coupon that makes your Checkout Session free. For example, you can create a 100% off coupon.

Command Line

Select a language

cURL

Stripe CLI

Ruby

Python

PHP

Java

Node.js

Go

.NET

No results

To create a session with an applied discount, pass the coupon ID in the coupon parameter of the discounts array.

Command Line

Select a language

cURL

Stripe CLI

Ruby

Python

PHP

Java

Node.js

Go

.NET

No results

You can also create a free Checkout Session by applying a coupon for an amount equal to or exceeding the Checkout Session total.

Create a promotion code

Promotion codes are customer-facing codes created on top of coupons. You can share these codes with customers who can enter them into Checkout to apply a discount. Create a promotion code from a 100% off coupon to allow customers to create orders for free.

Command Line

cURL

Enable user-redeemable promotion codes using the allow_promotion_codes parameter in a Checkout Session. This enables a field in Checkout to allow users to enter promotion codes.

Command Line

Select a language

cURL

Stripe CLI

Ruby

Python

PHP

Java

Node.js

Go

.NET

No results

Customers can also check out for free if they apply a promotion code for an amount equal to or exceeding the Checkout Session total. For more ways to apply discounts, see Add discounts.

Handle completed orders

After the Checkout Session completes, you can make a request for the finalized line items and their quantities. If your customer removes a line item, it also removes it from the line items response. See the Fulfillment guide to learn how to create an event handler to handle completed Checkout Sessions.

Common mistake

To fulfill no-cost orders, make sure to handle the checkout.session.completed event rather than PaymentIntent events. Completed Checkout Sessions that are free won’t have an associated PaymentIntent.

You can see your completed no-cost orders in the Dashboard. The no-cost orders tab only appears if you have at least one completed no-cost order.

Last verified 2026-09-24

Is this helpful?