Skip to content

fix: require Charge.period to be the first day of the month - #66

Merged
NouhJama merged 1 commit into
mainfrom
fix/charge-period-first-of-month
Aug 29, 2026
Merged

NouhJama merged 1 commit into
mainfrom
fix/charge-period-first-of-month

Conversation

@NouhJama

Copy link
Copy Markdown
Owner

period identifies WHICH MONTH a bill covers, not a specific day within it. A charge dated 2026-08-29 and one dated 2026-08-01 would look like two different billing periods to every range query and grouping, silently fragmenting the data.

Rejects rather than silently normalizing to day 1 -- an API that quietly changes what a client submitted hides mistakes instead of surfacing them, the same reasoning behind returning 409 on re-cancelling rather than succeeding silently.

Duplicated on ChargeUpdate rather than inherited, since ChargeUpdate is standalone -- without the second copy, a PATCH could reintroduce exactly the mid-month period that creation rejects, through the only endpoint allowed to change period.

period identifies WHICH MONTH a bill covers, not a specific day
within it. A charge dated 2026-08-29 and one dated 2026-08-01
would look like two different billing periods to every range
query and grouping, silently fragmenting the data.

Rejects rather than silently normalizing to day 1 -- an API that
quietly changes what a client submitted hides mistakes instead of
surfacing them, the same reasoning behind returning 409 on
re-cancelling rather than succeeding silently.

Duplicated on ChargeUpdate rather than inherited, since
ChargeUpdate is standalone -- without the second copy, a PATCH
could reintroduce exactly the mid-month period that creation
rejects, through the only endpoint allowed to change period.
@NouhJama
NouhJama merged commit 75af778 into main Aug 29, 2026
1 check passed
@NouhJama
NouhJama deleted the fix/charge-period-first-of-month branch August 29, 2026 11:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant