---
title: "Comment by Paul Hartness on \"Stripe Subscriptions in Next.js 16: Complete SaaS Billing Guide (2026)\" | Hashnode"
description: "Nice clear guide. On the invoice.payment_failed TODO, one thing worth adding: check the invoice's next_payment_attempt. If it's set, Stripe will retry, so a gen"
url: "https://hashnode.com/posts/stripe-subscriptions-in-next-js-16-complete-saas-billing-guide-2026/6a3e12c5bd995b69263166fd/comment/6ae859cba4acd9000f3aee02"
---

[Discussion](https://hashnode.com/posts/stripe-subscriptions-in-next-js-16-complete-saas-billing-guide-2026/6a3e12c5bd995b69263166fd)

Comment [Stripe Subscriptions in Next.js 16: Complete SaaS Billing Guide (2026)](https://hashnode.com/posts/stripe-subscriptions-in-next-js-16-complete-saas-billing-guide-2026/6a3e12c5bd995b69263166fd)

[Paul Hartness](https://hashnode.com/@retryfix)

[Nov 2](https://hashnode.com/posts/stripe-subscriptions-in-next-js-16-complete-saas-billing-guide-2026/6a3e12c5bd995b69263166fd/comment/6ae859cba4acd9000f3aee02)

Nice clear guide. On the invoice.payment\_failed TODO, one thing worth adding: check the invoice's next\_payment\_attempt. If it's set, Stripe will retry, so a gentle "please update your card" is enough. If it's null, that was the last try and the subscription is about to move to whatever your failed-payment settings say.
