Provides Stripe API and SDK updates since 2024 cutoff (to 2026 Dahlia), including named versions, stripe-node v21 Decimal types, stripe-python v15 dict removal, Billing Mode, and Stripe.js renames. Use before Stripe integration.
npx claudepluginhub nevaberry/nevaberry-plugins --plugin stripe-knowledge-patchThis skill uses the workspace's default tool permissions.
Designs and optimizes AI agent action spaces, tool definitions, observation formats, error recovery, and context for higher task completion rates.
Implements structured self-debugging workflow for AI agent failures: capture errors, diagnose patterns like loops or context overflow, apply contained recoveries, and generate introspection reports.
Compares coding agents like Claude Code and Aider on custom YAML-defined codebase tasks using git worktrees, measuring pass rate, cost, time, and consistency.
Claude's baseline knowledge covers the Stripe API through 2024-06-20 and stripe-node ~16.x / stripe-python ~10.x. This skill covers changes from Acacia (2024-09-30) through Dahlia (2026-03-25).
| Version | Date | Key Changes |
|---|---|---|
| Acacia | 2024-09-30 | Named version scheme begins |
| Basil | 2025-03-31 | total_count removed, deferred subscription creation, Meters API |
| Clover | 2025-09-30 | Billing Mode flexible becomes default |
| Dahlia | 2026-03-25 | Decimal types, Checkout UI mode renames, Stripe.js renames |
Format: YYYY-MM-DD.name (e.g., 2025-03-31.basil). Monthly additive releases reuse the same name.
All decimal_string fields changed from string to Stripe.Decimal:
// Reading: now Stripe.Decimal, not string
const rate = session.currency_conversion.fx_rate;
rate.toString(); // "1.23"
rate.toNumber(); // 1.23
// Writing: must use Decimal.from()
unit_amount_decimal: Stripe.Decimal.from('9.99')
// Arithmetic
a.add(b); a.sub(b); a.mul(b); a.div(b, 6, 'half-up');
Minimum Node version: 18. Webhook parsing throws if wrong method used (v1 vs v2).
# BROKEN in v15:
customer.get("name") # AttributeError
customer.items() # Returns subscription items, not dict items!
dict(customer) # Empty dict
for key in customer: ... # No longer iterates
# Use instead:
customer.name # Attribute access
customer["name"] # Bracket notation
customer.to_dict() # Get plain dict
Decimal fields: use decimal.Decimal("9.99") not "9.99". Min Python: 3.9.
total_count removed from list endpoints -- no more list.total_countstripe.invoices.createPreview()| Removed | Replacement |
|---|---|
stripe.initCheckout() | stripe.initCheckoutElements() |
stripe.initEmbeddedCheckout() | stripe.createEmbeddedCheckoutPage() |
stripe.confirmCardPayment() | stripe.confirmPayment() |
stripe.confirmCardSetup() | stripe.confirmSetup() |
stripe.handleCardAction() | stripe.handleNextAction() |
elements.update() now returns a Promise. Layout radios no longer accepts boolean -- use 'accordion' or 'tabs'.
| Old Value | New Value |
|---|---|
embedded | embedded_page |
custom (preview) | elements |
| -- | form |
| -- | hosted_page |
const session = await stripe.checkout.sessions.create({
ui_mode: 'elements',
mode: 'payment',
line_items: [{ price: 'price_xxx', quantity: 1 }],
});
Default in Clover+. Supports mixed intervals, billing thresholds, partial payments.
const subscription = await stripe.subscriptions.create({
customer: 'cus_xxx',
items: [{ price: 'price_xxx' }],
billing_mode: 'flexible', // default in Clover+, explicit in Basil
});
See billing.md for Credit Grants API.
Prepaid/promotional credits for metered prices (Meters API only, not legacy Usage Records).
const grant = await stripe.billing.creditGrants.create({
customer: 'cus_xxx',
amount: { type: 'monetary', monetary: { value: 1000, currency: 'usd' } },
applicability_config: { scope: { price_type: 'metered' } },
category: 'paid', // or 'promotional'
effective_at: Math.floor(Date.now() / 1000),
expires_at: Math.floor(Date.now() / 1000) + 86400 * 90,
});
Credits apply after discounts, before taxes.
Unified API for webhooks, Amazon EventBridge, and Azure Event Grid.
const destination = await stripe.v2.core.eventDestinations.create({
type: 'webhook_endpoint',
url: 'https://example.com/webhook',
enabled_events: ['payment_intent.succeeded'],
});
// Test connectivity
await stripe.v2.core.events.ping({ destination: destination.id });
See event-destinations.md for thin vs snapshot events.
Configuration-based capabilities replace old account types. One Account for both connected accounts and customers.
const account = await stripe.v2.core.accounts.create({
contact_email: 'jenny@example.com',
display_name: 'Jenny Rosen',
identity: { country: 'us', entity_type: 'company' },
configuration: {
merchant: { capabilities: { card_payments: { requested: true } } },
customer: { capabilities: { automatic_indirect_tax: { requested: true } } },
},
defaults: {
currency: 'usd',
responsibilities: { fees_collector: 'stripe', losses_collector: 'stripe' },
},
include: ['configuration.merchant', 'configuration.customer', 'identity', 'requirements'],
});
Configurations: merchant (accept payments), customer (be charged), recipient (receive transfers). V2 responses return null for unincluded properties -- use include param. See accounts-v2.md.
L2/L3 transaction data for interchange savings (commercial cards), better auth rates, and reconciliation.
const paymentIntent = await stripe.paymentIntents.create({
amount: 5000,
currency: 'usd',
payment_method_types: ['card'],
payment_line_items: [
{
product_code: 'SKU-123',
product_description: 'Widget',
quantity: 2,
unit_cost: 2000,
tax_amount: 500,
discount_amount: 0,
total_amount: 4500,
},
],
});
Stablecoin payments that settle as fiat in your Stripe balance.
const pi = await stripe.paymentIntents.create({
amount: 1000,
currency: 'usd',
payment_method_types: ['crypto'],
});
from decimal import Decimal
stripe.Price.create(
unit_amount_decimal=Decimal("9.99"), # not "9.99"
currency="usd",
recurring={"interval": "month"},
product="prod_xxx",
)
V2 Amount types consolidated to stripe.v2.Amount. See sdk-breaking-changes.md.
| File | Contents |
|---|---|
sdk-breaking-changes.md | Full stripe-node v21 and stripe-python v15 migration details |
billing.md | Billing Mode (Flexible), Credit Grants, metered pricing |
accounts-v2.md | Accounts v2 (Connect) configuration-based capabilities |
event-destinations.md | Unified webhook/EventBridge/Event Grid API |
payments.md | Payment Line Items (L2/L3), Crypto Payments |