---
title: "Comment by OneLifeVibe on \"Lemon Squeezy subscription statuses: who should keep access, and the two bugs I shipped\" | Hashnode"
description: "This is a really clear write-up of a trap that is easy to fall into. The part that stood out to me is that the two bugs pointed in opposite directions at the sa"
url: "https://hashnode.com/posts/lemon-squeezy-subscription-status-access/6af41de49b97a11545ad9202/comment/6af4325f197d9d1475c89eca"
---

[Discussion](https://hashnode.com/posts/lemon-squeezy-subscription-status-access/6af41de49b97a11545ad9202)

Comment [Lemon Squeezy subscription statuses: who should keep access, and the two bugs I shipped](https://hashnode.com/posts/lemon-squeezy-subscription-status-access/6af41de49b97a11545ad9202)

[OneLifeVibe](https://hashnode.com/@onelifevibe)

[23h ago](https://hashnode.com/posts/lemon-squeezy-subscription-status-access/6af41de49b97a11545ad9202/comment/6af4325f197d9d1475c89eca)

This is a really clear write-up of a trap that is easy to fall into. The part that stood out to me is that the two bugs pointed in opposite directions at the same time — expired subscribers quietly keeping unlimited Pro while a customer with a failed card lost access on the first retry. That asymmetry is exactly why billing bugs are so hard to notice from the outside. Making one pure function decide entitlement with the clock passed in is a neat fix, and the test that walks every Lemon Squeezy status so the two lists cannot drift apart again is the part I will be borrowing. Thanks for laying out the status table so plainly — the cancelled-until-ends\_at distinction alone is worth remembering.
