Skip to main content
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-23
  • Removed the info log written each time a read found no entitlement for the requested feature or currency. The returned entitlement is unchanged.
2026-09-17
  • Internal improvements to how the cache tracks when entitlements and usage were last updated.
  • When an API response is missing the usage timestamp for a metered or credit entitlement, the SDK now logs an error and uses the current time.
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 behavior is unchanged in this SDK — it was already correct. If you built a credit UI on @stigg/js-client-sdk, see the upgrade note in the JavaScript SDK changelog.
2026-08-05
  • Added: eventCount field on each series and point returned by getCreditUsage, with the number of usage events behind the credit consumption.
2026-07-22
  • Added: optional eventType filter on getCreditLedger. Pass one or more CreditLedgerEventType values (for example CREDITS_GRANTED or CREDITS_CONSUMED) to return only those ledger entries.
2026-07-21
  • Security: raised the axios dependency to ^1.18.0.
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-14
  • Added: consumed field on the credit object returned by reportUsage, with the number of credits the call consumed.
2026-07-09
Idempotent usage reporting
  • Added: optional idempotencyKey parameter on reportUsage (single and bulk). Pass a unique key to safely retry a usage report without risking double-counting, matching the existing idempotency pattern on reportEvent and consumeCredits.
2026-07-08
Direct credit consumption
  • Added: consumeCredits (synchronous) and consumeCreditsAsync (asynchronous) methods to deduct credits directly from a customer’s pool, without reporting usage against a metered feature or requiring an active subscription. Use consumeCredits for strict, real-time enforcement; use consumeCreditsAsync for high-volume, eventually-consistent consumption. See direct credit consumption.
  • getCreditEntitlement and getEntitlement continue to return a valid credit balance for customers with no active subscription, so credit governance can run fully decoupled from Stigg subscription management.
2026-06-23
Synchronous credit balance updates via reportUsage
  • Added: When reportUsage is called for a credit-backed feature, the response now includes a credit object with the updated credit balance — immediately, before the asynchronous metering pipeline settles. credit contains currencyId, currentUsage, usageLimit, and timestamp. Use reportUsage for sub-second, strict credit enforcement; use reportEvent for high-volume, eventually-consistent metering.
Credit wallet soft limit
  • Added: hasSoftLimit field on credit entitlement responses. When a credit entitlement is configured as a soft limit in the plan or add-on, 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-14
Schedule subscription cancellation on a specific date
  • Added: cancellationDate field when provisioning and updating subscriptions. Pass a future date to schedule cancellation for that exact moment in a single call — no follow-up cancel request needed. On update, omitting the field leaves any existing schedule untouched, passing null clears a previously scheduled cancellation, and passing a date sets or replaces the schedule. Past dates and dates on or before the subscription start date are rejected; trial subscriptions are supported, and setting a date aligns the trial’s trialEndDate to it. See canceling subscriptions.
2026-06-01
Credit usage breakdown by event dimensions
  • Added: groupBy array parameter on getCreditUsage to break down credit consumption by any dimension key attached to reported usage events (e.g., user, model, region). Results are paginated for performance at high event volumes.
2026-06-01
  • Security: patched vulnerable transitive dependencies.
2026-05-18
  • Added: support for disabling Redis cache expiration by setting redis.ttl to a negative value (e.g. -1, matching Redis’s own no-expiry convention). Entitlement entries are then written to Redis without the EX flag and remain authoritative through extended Stigg Cloud outages. Default behavior is unchanged (TTL stays on when redis.ttl is unset). Invalidation continues to flow through the persistent-cache-service pipeline. To get end-to-end no-expiry behavior the same negative value must also be set on persistent-cache-service (KEYS_TTL_IN_SECS=-1, v3.6.1+) — see persistent caching.
2026-05-10
Credit usage date filters
  • Added: startDate and endDate parameters on getCreditUsage. Pass specific start and end timestamps to retrieve credit consumption data for an exact time window, in addition to the existing preset period enums (last week, month, year, etc.). See customer credits.
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-03-24
  • Added: invoiceDaysUntilDue on SubscriptionBillingInfo, to set the invoice due days when provisioning a subscription.
2026-03-31
Recurring credit grants in plans and add-onsVendors can now configure recurring credit grants as entitlements that can be directly attached to any plan or add-on in Stigg. Currently, monthly and yearly recurring grants without rollover are supported.
  • Added: Support for plan-level and add-on-level credit entitlements — recurring credit grants that are automatically issued and reset each billing period when a customer subscribes.
  • Added: Credit entitlements are reflected in getCreditEntitlement() alongside all other active grants (top-ups, promotional credits).
  • Added: entitlements in subscription provisioning now accepts credit entitlement configurations for custom plans.
  • Recurring grants work seamlessly with existing one-time top-ups and prepaid credit purchases.
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 from the local cache.
  • Added: Support for provisioning subscriptions with variable recurring credit grant entitlements.
2026-04-29
  • Added: includeInactiveSubscriptions parameter on getUsageHistoryV2. When set to true, usage history is returned regardless of whether the customer currently has an active subscription. If they do have an active subscription, the response also includes a markers array containing the subscription’s usage reset timestamps.
2026-03-02
  • Added: entitlements on provisionSubscription, updateSubscription, createSubscription and applySubscription, accepting both feature and credit entitlements (SubscriptionEntitlementV2).
  • ⚠️ Deprecated: subscriptionEntitlements (use entitlements instead).
2026-02-25
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-19
  • Added: packageEntitlements and inheritedPackageEntitlements on paywall plans and add-ons, returning both feature and credit entitlements.
  • ⚠️ Deprecated: entitlements and inheritedEntitlements on paywall plans and add-ons (use packageEntitlements and inheritedPackageEntitlements instead).
2026-02-16
  • Added: getEntitlementV2 method, returning a feature or credit entitlement for a customer.
  • Improved: getEntitlementsStateV2 returns both feature and credit entitlements.
2026-02-15
  • Added: usagePeriodEnd on credit entitlements, read from the cache.
2026-02-09
  • Added: optional integrationId parameter on importCustomerBulk and importSubscriptionBulk, to target a specific billing integration.
2026-02-04
  • Added compatibility with persistent-cache-service v3.0.0 and its new Redis data structure for credit entitlements.
  • Note: This version must be deployed before upgrading persistent-cache-service to v3.0.0. See the persistent-cache-service v3.0.0 changelog for migration steps.
2026-01-04
  • Added: charges on provisionSubscription, applySubscription, updateSubscription, previewSubscription, estimateSubscription and estimateSubscriptionUpdate.
2026-01-04
  • Added: AccessDeniedReason.CustomerIsArchived, returned when the customer is archived. The customer is cached so repeated checks don’t refetch.
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
  • ⚠️ Changed: getCreditLedger is now paginated and returns { data, pageInfo, totalCount } instead of an array of ledger events.
2025-12-07
  • Fixed: credit queries are no longer served from the GraphQL client cache, so balances and grants are always current.
2025-12-01
  • Added: getEntitlementsState method, returning a customer’s entitlements together with the customer-level access-denied reason.
  • ⚠️ Deprecated: getEntitlements (use getEntitlementsState instead).
2025-11-14
  • Added: awsMarketplacePlanDimension on plans and awsMarketplaceProductId on products.
2025-10-29
  • Breaking change: Entitlements retrieval logic now correctly identifies the underlying cause for missing entitlements, whether due to no active subscription, a missing customer, or no assigned entitlements.
  • Note: If using a Persistent Caching Service, it must be updated before upgrading the Sidecar to ensure data integrity.

Migration steps

  1. Upgrade the Persistent Caching Service image to version 2.40.1 or later.
  2. Upgrade the Node SDK to version 4.0.0 or later.
2025-09-29
  • Added getCreditLedger and getCreditUsage methods.
2025-09-29
  • Added void credit grant voidCreditGrant.
2025-09-29
  • Added credit balance subscription handling with automatic entitlement updates, expiration checks, and cache mapping for credit rate and validity.
2025-09-25
  • Added credit rate mapping.
2025-09-23
  • Added awsMarketplaceCustomerId to update and provision customers.
2025-09-09
2025-09-04
  • Added: grantPromotionalEntitlementsGroup or granting a promotional entitlements group - all entitlements that are not already granted to a customer, need to be included in the request.
  • Added: revokePromotionalEntitlementsGroup for revoking all of the entitlements of a group, unless they are a part of a different group.
  • Added: unlinkPromotionalEntitlementsGroup for removing the references of the group from promotional entitlements that are a part of it, while keep granting access to those entitlements.
2025-09-02
  • Added: CancelSubscription.awaitSubscriptionCancellation for controlling whether to wait for confirmation from billing solutions that are integrated with Stigg before marking subscription as canceled in Stigg
2025-08-28
Credits
  • Added: grantCredits, getCreditGrants and getCreditBalance methods.
2025-09-01
  • Added: AccessDeniedReason.Revoked for determining when an entitlement has been explicitly revoked.
2025-08-21
  • Added: getEntitlement method - a unified way to check any type of feature entitlement (boolean, numeric, or metered) that automatically returns the appropriate entitlement type based on the feature configuration
2025-08-15
  • Added: SubscriptionBillingInfo.prorationBehavior for controlling the proration behavior when provisioning and updating subscriptions. The new parameter accepts the following value
  • CREATE_PRORATIONS - bill for proration immediately. This is the default behavior.
  • INVOICE_IMMEDIATELY - include prorated charges in the upcoming invoice.
  • NONE - don’t prorate subscription changes.
2025-08-13
  • Added: prorationBehavior on SubscriptionBillingInfo.
2025-07-31
  • Improved: when Redis is a read-only replica, the SDK no longer fails while trying to take a distributed lock. Entitlements are fetched from the API instead.
2025-07-31
  • Improved: SDK initialization handles an unavailable Redis. Initialization waits for the entitlements service to be ready and, when remote config is enabled, validates the API key in parallel.
2025-07-31
  • Changed: the API request timeout for fetching entitlements is shorter, so a slow API falls back to cached or fallback entitlements sooner. Timeouts now raise OperationTimeoutError, naming the operation.
2025-07-29
  • Added: AccessDeniedReason.FeatureTypeMismatch, returned when a typed read (for example getBooleanEntitlement) targets a feature of a different type.
2025-07-23
  • 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-26
  • Added: getSubscriptions endpoint that allows retrieving all of customers’ subscriptions
2025-05-18
  • Added: Redis client errors are emitted as events.
  • Improved: errors during SDK initialization go through the standard error handling and are logged with their details.
2025-05-15
  • Added: previewNextInvoice method, to preview a subscription’s next invoice.
2025-05-14
  • Added: apiKeyInvalid and networkRequestFailed events. networkRequestFailed carries the error message, error code, trace ID, request and response.
2025-04-02
  • Added: cacheHit and cacheMiss events for monitoring the in-memory entitlements cache.
2025-04-01
  • Added: optional integrationId on SubscriptionBillingInfo, BillingInfo and updateCustomer, to target a specific billing integration.
2025-04-01
  • Security: upgraded axios to patch CVE-2025-27152.
2025-02-23
  • Added: SubscriptionInvoiceFragment.attemptCount
2025-01-30
  • Added: Ability to pass taxId on updateCustomer.billingInfo.taxIds
2025-01-26
  • Security: upgraded the nanoid dependency.
2025-01-21
  • Security: upgraded axios to patch an SSRF vulnerability.
2025-01-19
  • Added: salesforceId to provisionCustomer, updateCustomer , provisionSubscription, importCustomerBulk and importSubscriptionBulk
2024-12-29
  • Added: timeout client configuration for API requests, in milliseconds. Defaults to 60000.
2024-12-25
2024-12-17
Coupon discount changes:
  • Added: SubscriptionCouponDiscountInput.amounts_off
  • Added: SubscriptionCouponDiscountInput.description
  • Added: SubscriptionCouponDiscountInput.duration_in_months
  • Added: SubscriptionCouponDiscountInput.name
  • Added: SubscriptionCouponDiscountInput.percent_off
Usage history changes:
  • Added: getUsageHistoryV2
  • ⚠️ Deprecated: fetchUsageHistory(please use getUsageHistoryV2 instead)
  • Changed:
    • Input Object
      • New field - groupBy list of dimensions to group usage history by.
    • Output Object
      • result[i].date renamed to series[0].point[i].timestamp
      • result[i].value renamed to series[0].point[i].value
      • result[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.
      • New field markers - array of markers for usage reset reason (periodic change / plan transition)
2024-12-08
  • Added: ability to override prices when there’s a scheduled update in place
2024-12-02
  • Added: provisionSubscription.priceOverrides
  • Added: applySubscription.priceOverrides
2024-11-21
  • Added: support for price localization in fixed fee coupons
2024-11-20
  • Added: delegateSubscriptionToCustomer()
  • Added: transferSubscriptionToResource()
  • 🟡 Deprecated: transferSubscription() method (please use transferSubscriptionToResource() instead)
2024-10-16
  • Fixed: when access to entitlement was denied due to the reaching of a budget cap, getMeteredEntitlements returned AccessDeniedReason.UNSPECIFIED instead of AccessDeniedReason.BudgetExceeded.
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:
    • Entitlement.usagePeriodStart
    • Entitlement.usagePeriodEnd
  • 🟡 Deprecated: Entitlement.nextResetDate field
2024-09-02
  • Added: ability to delegate payment of a provisioned subscription to a different customer using:
    • provisionSubscription.payingCustomerId
    • applySubscription.payingCustomerId
    • SlimSubscriptionFragmentV2Fragment.payingCustomer
    • FullSubscription.payingCustomer
2024-08-27
  • Added: ability to apply a coupon to a subscription using the Stigg coupon ID using:
    • provisionSubscription.appliedCoupon
    • applySubscription.appliedCoupon
    • updateSubscription.appliedCoupon
    • previewSubscription.appliedCoupon
    • estimateSubscription.appliedCoupon
    • estimateSubscriptionUpdate.appliedCoupon
2024-08-25
  • Added: budget.limit on a plan’s defaultTrialConfig.
2024-08-13
  • Added: enableRemoteConfig client configuration. Set it to false to skip loading the SDK configuration from Stigg on initialization. Defaults to true.
2024-07-29
  • Fixed: Stigg is now available as a named export as well as the default export.
2024-07-25
  • Changed: provisionCustomer no longer generates a customer ID when none is passed. The ID returned by Stigg is used instead.
2024-07-23
  • Removed: the @sentry/node dependency. The SDK no longer reports errors to Sentry.
2024-07-15
  • Added: budget cap support. Metered entitlement checks return hasAccess: false with AccessDeniedReason.BudgetExceeded when the customer’s budget is exhausted.
2024-07-01
  • Changed: UpdateSubscription.subscriptionEntitlements does not require the full list of entitlements when only needing to add or update specific entitlements
2024-06-30
  • Fixed: Edge API requests are retried on timeout. The Edge request timeout is now 15 seconds.
2024-06-24
  • Improved: Redis reads and writes for entitlements and usage, reducing round trips.
2024-06-24
  • Bug fixes
2024-06-20
  • Bug fixes
2024-06-19
  • Added: a default Redis commandTimeout of 60 seconds.
2024-06-20
  • Added: ability to get the list of active subscriptions from Edge using getActiveSubscriptionsList()
2024-06-18
  • Added: ability to get the details of a specific subscription using getSubscription()
2024-06-09
  • Added: paymentCollectionMethod on provisionSubscription and applySubscription, and on FullSubscription.
  • The SDK is now published with public access on npm.
2024-06-03
  • Added: support for the new subscription bulk import input fields. ImportSubscription now accepts all fields of ImportSubscriptionInput.
2024-05-26
  • Fixed: a race condition when notifying other SDK instances after a distributed entitlements fetch.
2024-05-23
  • Improved: logs when no entitlement is found now include the customer, resource, feature and access-denied reason.
2024-05-23
Distributed entitlements fetching
  • Added: with a Redis cache, only one SDK instance fetches a customer’s entitlements from the API after a cache miss. Other instances wait for it to finish and read the result from Redis, reducing load on the API. Enabled by default; set redis.disableDistributedEntitlementsFetching to true to turn it off.
  • Fixed: getEntitlements with Redis now handles a missing feature usage record.
2024-05-20
  • Fixed: entitlements are no longer refetched from the API when the customer exists in the cache but has no entitlement for the requested feature.
2024-05-20
  • Improved: concurrent entitlement refetches for the same customer reuse the ongoing request.
2024-05-02
  • Added: ability to ignore customer and subscriptions that have been updated since the last import by passing ImportCustomer.updatedAt and ImportSubscriptionInput.updatedAt
2024-04-30
  • Improved: WebSocket throttle errors are logged as info rather than errors.
2024-04-03
  • Added: blockSize on Price.
2024-03-31
  • Added: compatiblePackageGroups on paywall plans, with minItems and freeItems options.
  • Added: maxQuantity and dependencies on add-ons.
2024-03-25
  • Removed: the redis.backwardCompatibleLock option added in 3.12.0.
2024-03-21
  • ⚠️ Changed: the dontProrate flag on cancelSubscription was renamed to prorate.
2024-03-20
  • Added: dontProrate flag on cancelSubscription.
2024-03-19
  • Fixed: getMeteredEntitlement refetches entitlements from the API when the feature usage is missing from Redis.
2024-03-19
  • Added: redis.backwardCompatibleLock option, for running alongside an older persistent cache service.
  • Improved: errors updating feature usage after a network fetch are logged through the SDK logger.
2024-03-17
  • Added: ability to provision backdated subscriptions usingSubscriptionBillingInfo.isBackdated
2024-03-07
  • Added: ability to determine the billing period of a specific price usingPrice.billingCadence
2024-03-01
  • Added: ability to determine customer’s AWS Marketplace ID using SlimCustomer.awsMarketplaceCustomerId
2024-03-06
  • Added: Edge API requests use a timeout, keep-alive connections and up to 3 retries.
2024-02-26
  • Added: soft limit support. hasSoftLimit is returned on entitlements, package entitlements, promotional entitlements and subscription entitlements, and a metered entitlement with a soft limit grants access after its usage limit is reached.
2024-02-08
  • Added: optional clientName and clientVersion client configuration, sent with API requests.
2024-01-30
  • Added: ability to remove a payment method from a customer using detachCustomerPaymentMehod()
2024-01-25
  • Added: ability to get plans that are not visible to customers usingGetPaywall.includeHiddenPlans