0

I'm creating product

 const product = await stripe.products.create({
                name: 'Charge for messages',
            });

then price

 const price = await stripe.prices.create({
                unit_amount: parseInt(item.amount),
                currency: 'usd',
                product: product.id,
            });

then i have checkout session

    const session = await stripe.checkout.sessions.create({
        mode: 'payment',
        customer: item.stripe_customer_id,
        line_items: [
            {
                price: price.id,
                quantity: 1,
            },
        ],
        payment_intent_data: {
            description: 'Extra messages'
        },
        success_url: `${process.env.FRONTEND_URL}/dashboard/invoices?session_id={CHECKOUT_SESSION_ID}`,
        cancel_url: `${process.env.FRONTEND_URL}`,
    });

when user finishes payment i get payment_intend.succed event on webhook but invoice is null. how to have invoice id in invoice?

Gia Nebieridze
  • 141
  • 3
  • 14

1 Answers1

0

you can pass invoice_creation parameter while creating checkout session to create invoice

You can find the docs

   const session = await stripe.checkout.sessions.create({
        mode: 'payment',
        invoice_creation: {enabled: true},
        customer: item.stripe_customer_id,
        line_items: [
            {
                price: price.id,
                quantity: 1,
            },
        ],
        payment_intent_data: {
            description: 'Extra messages'
        },
        success_url: `${process.env.FRONTEND_URL}/dashboard/invoices?session_id={CHECKOUT_SESSION_ID}`,
        cancel_url: `${process.env.FRONTEND_URL}`,
    });

Srushti Shah
  • 810
  • 3
  • 17