Home › Free tools › Stripe basil field checker
Stripe basil field checker for webhook payloads
Matching pack: Subscription Billing Kit (for Stripe) (US$19), an Agent Skill for Claude Code and Cursor with a webhook-driven access model for SaaS subscriptions and helpers that read both API shapes. Read its test report (12 unit tests with basil-shaped fixtures plus 3 request-schema checks against stripe-mock, not real Stripe test mode).
current_period_end is undefined, or invoice.subscription is missing? Stripe removed or moved those fields in API version 2025-03-31.basil. Paste a webhook event or an API object below. This page lists every affected field it finds, where to read it now, and reads the subscription id and billing-period end from either shape.
Nothing you type leaves this browser. All processing happens in this page's own JavaScript. Your inputs are not sent anywhere and not saved: the tool makes no network requests (the page's Content-Security-Policy blocks them), sets no cookies, uses no analytics and loads no third-party scripts or fonts. Once loaded, it works offline. The one request it can make is the anonymous Buy-click count on the pack card (see Privacy). Payloads can contain customer names and emails; you can remove those before pasting and the check still works.
What the checker looks for
These are the payload fields Stripe's changelog lists as removed in 2025-03-31.basil, by object:
- Subscription:
current_period_startandcurrent_period_endmoved to each subscription item (items.data[].current_period_end). Source: Stripe changelog: subscription item-level billing periods. - Invoice, invoice item, invoice line item:
subscription,subscription_details,quote,subscription_proration_date, and on line itemssubscription_item,invoice_item,proration,proration_detailsandtype, moved under a newparentfield. Source: Stripe changelog: invoicing resources specify how they were generated. - Invoice payments:
payment_intent,charge,paid,paid_out_of_band,application_fee_amountandtransfer_datawere removed from the invoice, andinvoicefrom PaymentIntent and Charge. Invoices now have an expandablepaymentslist. Source: Stripe changelog: multiple (partial) payments on invoices. - Prices on invoice items and line items:
priceandplanmoved topricing(pricing.price_details.price). Source: Stripe changelog: price modeling on invoice items. - Taxes:
taxandtotal_tax_amountson the invoice becametotal_taxes;tax_amountsandtax_rateson line items becametaxes. Source: Stripe changelog: tax modeling on invoices. - Checkout Session:
shipping_detailsmoved tocollected_information.shipping_details. Source: Stripe changelog: Checkout Session removes shipping details.
Checked 26 Oct 2026. A field that is present with the value null still counts as the old shape: older versions include it as null on, for example, one-off invoices.
Why your webhook still gets the old shape
Each webhook endpoint has its own API version, and Stripe uses it to structure the event payloads it sends there. An event's api_version is the version used to render its data, and it never changes afterwards. So after an SDK upgrade, API calls can return the basil shape while webhook events keep arriving in the old one until you upgrade the endpoint, and resent old events keep their original shape. The checker compares the event's api_version with the fields it finds.
Sources: Stripe: Handle webhook versioning; Stripe API reference: the Event object.
What this checker doesn't do
- It checks field names in the JSON you paste. It doesn't call Stripe or read your account's settings.
- It covers the payload changes above, not every basil change (for example request parameters, coupons or usage-based billing).
- Fields that are only returned when expanded, such as an invoice's
payments, appear only if your payload includes them.
Read both shapes in your code
Subscription Billing Kit (for Stripe) (US$19) is an Agent Skill for Claude Code and Cursor. It gives your agent a webhook-driven access model for SaaS: Checkout in subscription mode, the Customer Portal, an access policy for all 8 subscription statuses, protection against out-of-order events, trials, cancel-at-period-end, failed-payment hooks, and helpers for Stripe's 2025 "Basil" API changes. Its tests are 12 unit tests with basil-shaped fixtures plus 3 request-schema checks against stripe-mock; none run against real Stripe test mode.
See Subscription Billing Kit (for Stripe) · Read its test report · Guide: current_period_end is undefined
Moving to the next major version, 2026-09-30.endive? Stripe Endive Upgrade Check (US$15): A skill + read-only scanner that finds what breaks when you move to Stripe API 2026-09-30.endive, stripe-node 23 or stripe-python 16, and how to fix it. See Stripe Endive Upgrade Check.