Skip to main content
2026-10-12
Changes to usage-limit checksThree changes to how a check compares usage with its limit. They affect only metered and credit entitlements with a finite limit. Boolean, numeric and enum checks, and unlimited entitlements, answer as before.
  • ⚠️ Breaking: a metered check without requestedUsage now asks for one unit of the limit, so a customer who has reached the limit is denied. Previously it was granted. Credit checks already asked for 1 credit by default and are unchanged.
    • Note: passing requestedUsage: 0 returns the previous answer.
  • ⚠️ Breaking: requestedUsage on a metered feature with a unit transformation is now converted into the limit’s units before it’s compared. Previously it was compared as sent.
  • Changed: usage is compared with the limit at 5-decimal precision, for metered and credit entitlements alike, so 0.1 + 0.2 against a limit of 0.3 is granted.
2026-10-11
  • Added: brand and walletType on the customer’s paymentMethodDetails. brand is the card brand reported by the billing provider, for example visa, mastercard or amex. walletType is the digital wallet the card was added through, for example apple_pay or google_pay. Both are null when the billing provider doesn’t report them, so a null walletType doesn’t prove the card is a regular one: cards saved before this field existed have no value.
2026-10-11
  • No functional change to the JavaScript SDK. This release only bumped the package version to track releases of other packages in the monorepo.
2026-09-28
  • Fixed: a credit-backed feature whose credit entitlement has a soft limit no longer reports InsufficientCredits when the credit balance reaches zero. Access is now granted, matching the credit entitlement itself.
2026-09-23
Check a specific credit amount
  • Added: optional requestedUsage in getCreditEntitlement options. hasAccess is true only when the remaining balance covers the requested amount. When omitted, the check defaults to 1 credit, as before.
2026-09-17
  • Internal improvements to how cached entitlements and usage track when they were last updated. No API change.
2026-09-02
Consistent entitlement fallbacks across the Node and JavaScript SDKsEntitlement fallbacks, misses and offline reads now behave the same way in both SDKs. Reads served from cache are unchanged, field for field — every change below affects a degraded read only: a configured fallback, a miss, a kind mismatch, offline mode, or a failed read.Unchanged: the typed reads (getMeteredEntitlement and friends) still treat “not in the subscription” as a real answer and ignore the configured fallback, while getEntitlement / getEntitlementV2 still answer from it.

Credit isFallback: telling “no data” from “not entitled”

isFallback on a credit read used to be true on every miss, so the flag never meant what it says. It now means only what the fallback strategy page already documents: the read never reached cached state.Consequence: a customer who simply has no entitlement to a currency now comes back with isFallback: false and a zeroed balance. Code that used isFallback alone to mean “we have no real data” renders that zero as though it were real.The check to migrate to:
A spent balance is deliberately not in that list: it comes back as a real entitlement carrying RequestedUsageExceedingLimit, and its numbers are the ones worth rendering — “0 / 100” and an offer to top up, not “no data”.If you use @stigg/react-sdk’s credit widgets, this is handled for you as of react-sdk 11.0.0 — see the React SDK changelog.
2026-07-14
  • Added: AirwallexCheckoutCredentials to the checkout state’s billingCredentials union, and RECEIVED to the billing vendor identifiers.
2026-07-14
Credit cost estimation
  • Added: estimateEventCost and estimateUsageCost methods. They return the credits an event or a usage report would consume, without reporting it.
2026-07-12
  • Fixed: getCreditEntitlement now defaults to the resourceId set in the client configuration when none is passed, matching getCreditUsage, getCreditBalance and getCreditGrants. Previously it read customer-level credit entitlements and returned the fallback for resource-scoped credit subscriptions. An explicit resourceId still takes precedence.
2026-06-25
Credit wallet soft limit
  • Added: hasSoftLimit field on CreditEntitlement. When a credit entitlement is configured as a soft limit, getEntitlement() returns hasAccess: true and hasSoftLimit: true even after the credit balance reaches zero. Hard limit (the default) continues to return hasAccess: false when the balance is exhausted. Credit-backed features inherit the wallet’s soft-limit so dependent feature reads stay consistent.
2026-06-03
  • Added: pageInfo on the getCreditUsage result, for cursor pagination.
2026-06-01
  • Security: patched vulnerable transitive dependencies.
2026-04-05
  • Changed: entitlement reads now check the customer’s entitlements before the customer-level access-denied reason. Credit entitlements from standalone grants are evaluated normally even when the customer has no active subscription. Feature entitlements without a subscription still return NoActiveSubscription.
2026-04-01
Breaking changes — aligns entitlement types and evaluation behavior with @stigg/node-server-sdk:
2026-03-19
  • Added: billingCycleAnchor property when provisioning and updating subscriptions. Accepts SubscriptionBillingCycleAnchor.UNCHANGED (default) to keep the existing billing cycle anchor, or SubscriptionBillingCycleAnchor.NOW to reset it to the current timestamp.
2026-03-17
  • Deprecated: getCreditBalance() (please use getCreditEntitlement() instead). getCreditEntitlement() reads directly from the SDK’s local cache, significantly reducing latency and removing rate-limit concerns. It returns the same data: currentBalance, totalConsumed, totalGranted, and currency.
2026-03-17
  • Added: getCreditEntitlement() method for low-latency retrieval of customer credit balance.
  • Added: Support for provisioning subscriptions with variable recurring credit grant entitlements.
2026-03-10
  • Fixed: importing the SDK during Node.js server-side rendering no longer crashes on a bare window.FormData reference.
2026-03-10
  • Fixed: the ESM bundle no longer drops some exports.
2026-02-24
  • The SDK is now published from the stiggio/stigg-sdk monorepo to the public npm registry. No API change.
2026-02-26
  • Enhanced getCreditEntitlement to return currency information.
2026-02-23
  • Added: entitlementsV2 on CustomerPortal, returning both feature and credit entitlements.
  • ⚠️ Deprecated: CustomerPortal.entitlements (use entitlementsV2 instead).
2026-02-16
  • Added: credit entitlements on paywall plans and add-ons. PackageEntitlement is now a union of feature and credit entitlements, and add-ons expose packageEntitlements.
  • ⚠️ Deprecated: the legacy entitlements fields on paywall plans and add-ons.
2026-02-15
  • Added: usagePeriodEnd on CreditEntitlement.
2025-12-22
  • Added: taxIds on subscription billing information, and the full billing information is now passed through on preview and estimate calls, to support checkout with a tax ID.
2026-01-24
  • Added: Support for configuring and managing credit auto-recharge settings, including trigger balance, target top-up amount, and monthly spend limit.
2025-12-07
  • Added support for subscriptions filter by resourceId and plan (planId/displayName).
2025-11-12
  • Changed: entitlements are loaded with the entitlements-state query, which also returns the customer-level access-denied reason.
2025-11-10
  • Added: maxQuantity on Addon.
2025-10-26
  • Added: showWidgetWatermark on paywall and checkout data, read from the SDK configuration.
2025-09-25
  • Added: creditRate on paywall prices.
2025-09-21
  • Added: getCreditUsage method.
2025-09-17
  • Added: getCreditLedger method.
2025-09-15
  • Added: an ESM build of the SDK.
2025-09-09
2025-09-07
  • Fixed: credit queries are no longer served from the GraphQL client cache, so balances and grants are always current.
2025-09-04
  • Added: createPaymentSession method.
2025-09-04
  • Changed: getCreditBalance now takes the customer and resource from the client configuration, so its input is optional.
2025-08-28
Credits
  • Added: getCreditBalance and getCreditGrants methods.
2025-09-01
  • Added: AccessDeniedReason.Revoked for determining when an entitlement has been explicitly revoked.
2025-08-15
  • ⚠️ Changed: the prorationBehavior type on SubscriptionBillingInfo is now SubscriptionProrationBehavior.
2025-08-13
  • Added: prorationBehavior on SubscriptionBillingInfo.
2025-07-30
  • Added: enumValues on package entitlements.
2025-07-24
  • Removed: entitlement check reporting from the SDK. Entitlement checks no longer send tracking requests to Stigg.
2025-07-21
  • Added: getEnumEntitlement method for enum features, with optional requestedValues.
2025-06-30
  • Added: hiddenFromWidgets on add-on entitlements.
2025-06-26
  • Added: getSubscriptions endpoint that allows retrieving all of customers’ subscriptions
2025-05-15
  • Added: previewNextInvoice method, to preview a subscription’s next invoice.
2025-04-01
  • Added: optional integrationId on subscription billing information, to target a specific billing integration.
2025-02-19
  • Added: ability to determine the number of attempts that were made to collect payment for a generated invoice when Stigg is integrated with Stripe using the latestInvoice.attemptCount property of the getActiveSubscriptions() and getSubscription() endpoints
2025-01-12
2024-12-17
  • Added: GetUsageHistoryV2
  • ⚠️ Deprecated: GetUsageHistory(please use GetUsageHistoryV2 instead)
  • Changed:
    • Input Object:
      • customerRefId renamed to customerId
      • resourceRefId renamed to resourceId
      • featureRefId renamed to featureId
      • resetPeriod removed
      • yearlyResetPeriodConfiguration removed
      • monthlyResetPeriodConfiguration removed
      • weeklyResetPeriodConfiguration removed
    • Output Object
      • startDate removed
      • endDate removed
      • usageMeasurements[i].date renamed to series[0].point[i].timestamp
      • usageMeasurements[i].value renamed to series[0].point[i].value
      • usageMeasurements[i].isResetPoint renamed to series[0].point[i].isResetPoint
        • Old Value: true if and only if usage was reset due to periodic reset.
        • New Value: true if and only if usage was reset due to periodic reset or due to a plan transition.
      • groups[i].groupInfo[j].key renamed to series[i].tags[j].key
      • groups[i].groupInfo[j].value renamed to series[i].tags[j].value
      • groups[i].usageMeasurements[j].date renamed to series[i].point[j].timestamp
      • groups[i].usageMeasurements[j].value renamed to series[i].point[j].value
      • groups[i].usageMeasurements[j].isResetPoint renamed to series[i].point[j].isResetPoint
        • Old Value: true if and only if usage was reset due to periodic reset.
        • New Value: true if and only if usage was reset due to periodic reset or due to a plan transition.
2024-12-08
  • Added: ability to override prices when there’s a scheduled update in place
2024-11-21
  • Added: support for price localization in fixed fee coupons
2024-10-14
  • Added: ability to estimate the subscription cost when the payment of the subscription is delegated to a different customer using:
    • PreviewSubscription.payingCustomerId
    • EstimateSubscription.payingCustomerId
    • EstimateSubscriptionUpdate.payingCustomerId
2024-10-08
  • Added: ability to more easily determine the usage period of metered entitlements using:
    • MeteredEntitlement.usagePeriodStart
    • MeteredEntitlement.usagePeriodEnd
  • 🛑 Removed: MeteredEntitlement.nextResetDate
2024-09-19
  • Fixed: the entitlements cache TTL is now measured from the last fetch rather than from the date entitlements last changed. Entitlements that haven’t changed recently are no longer refetched on every read.
2024-09-19
  • Improved: reading an entitlement for a feature the customer isn’t entitled to no longer triggers a refetch.
2024-09-02
  • Added: payingCustomerId on subscription previews and estimates, and payingCustomer on subscriptions, for subscriptions paid by a different customer.
2024-08-25
  • Added: budget.limit on a paywall plan’s defaultTrialConfig.
2024-07-15
  • Added: budget cap support. Metered entitlement checks return hasAccess: false with AccessDeniedReason.BudgetExceeded when the customer’s budget is exhausted.
2024-06-20
  • Added: ability to get the list of active subscriptions from Edge using getActiveSubscriptionsList()
2024-06-20
  • Added: ability to get the details of a specific subscription using getSubscription()