OneShot

All packsSaaS Billing + Tax CoreSolve

stripe current_period_end subscription item api change

current_period_end moved off the subscription object

Since Stripe API 2025-03-31.basil, current_period_end lives on the subscription item, not the subscription -- the pack pins where to read it (D7).

This is one of the things SaaS Billing + Tax Core already handles. Charge per-seat subscriptions: upgrades, downgrades, failed cards, invoices and sales tax.

Buy for $1493 of 3 clean-room builds passed · full refund if it fails on your machine

Is this you?

Since Stripe's 2025-03-31.basil API version, current_period_start and current_period_end moved off the subscription object and onto its line items. Code that still reads subscription.current_period_end gets undefined on any account created against a current API version -- billing-cycle countdowns, renewal-date displays, and access windows silently break.

Why this one is easy to get wrong

Cached training knowledge and a lot of still-indexed tutorial code predate the move, and the subscription object doesn't error when you read a field that no longer exists there -- it just returns undefined, so the bug surfaces as a wrong or missing date on a screen, not a stack trace an agent has to explain.

What you get instead

ARCHITECTURE.md D7 states the fix as a one-line rule and names the failure mode directly: read sub.items.data[0].current_period_end. It calls this out as "the #1 agent error on modern Stripe APIs" -- every date the pack's webhook handlers and /billing page render already comes from the item, not the subscription.

Source: ARCHITECTURE.md D7 — checkable in the pack you receive

How you actually use this

You don’t install a library or wire up an SDK. Your own coding agent builds the code in your project, and you keep it — no runtime dependency on us.

  1. Step 1

    Download and unzip

    You get a folder: the docs that tell an agent what to build, a starting skeleton, and the test suite that decides when it's done.

  2. Step 2

    Open it in Claude Code or Cursor

    Point your coding agent at the folder. Nothing to install, no account with us, no API key.

  3. Step 3

    Paste one prompt

    The pack contains the exact prompt. Paste it as your first message and leave it alone — it works through the build itself, choosing a cheaper or stronger model per task.

  4. Step 4

    Run ./verify.sh

    One command. It prints a pass or fail for every check. Green means the build is done — the same script we ran to produce the receipt on this page.

Typical build: about 18 minutes of your agent working, mostly unattended. Then you integrate the working module into your app the way you would any code you’d written yourself.

Why you can believe this

3 of 3 runs passed

We ran this pack from an empty folder 3 times and published exactly what happened — every check, the model, the token cost, the wall time. Not a testimonial, and not our opinion: the same verify.sh you run yourself. Read the full receipt →

Buy for $14914-day refund if verify.sh fails →

Related problems