> ## Documentation Index
> Fetch the complete documentation index at: https://docs.stigg.io/llms.txt
> Use this file to discover all available pages before exploring further.

# .NET SDK

<Update label="6.13.0" description="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, `GetEntitlement` returns `IsGranted: true` and `HasSoftLimit: true` even after the credit balance reaches zero. Credit-backed features inherit the wallet's soft-limit so dependent feature reads stay consistent.
</Update>

<Update label="6.11.0" description="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.
</Update>

<Update label="6.10.0" description="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. See [customer credits](/documentation/modeling-your-pricing-in-stigg/credits/customer-credits).
</Update>

<Update label="6.6.1" description="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.
</Update>

<Update label="6.2.3" description="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.
</Update>

<Update label="6.40.0" description="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.
</Update>

<Update label="5.74.0" description="2026-01-24">
  * Added: Support for configuring and managing credit auto-recharge settings, including trigger balance, target top-up amount, and monthly spend limit.
</Update>

<Update label="5.0.0" description="2025-11">
  This major version reflects a monorepo-wide version increment driven by a breaking change in the **Python SDK** (pydantic v1 → v2 dependency update). There are **no breaking changes** for the .NET SDK in this version.
</Update>

<Update label="4.5.0" description="2025-11-02">
  This major version reflects a monorepo-wide version increment driven by breaking changes in the **Node.js and Sidecar SDKs** (entitlements retrieval logic). There are **no breaking changes** for the .NET SDK in this version.
</Update>

<Update label="3.75.0" description="2025-09-29">
  * Added `getCreditLedger` and `getCreditUsage` methods.
</Update>

<Update label="3.74.0" description="2025-09-29">
  * Added void credit grant `voidCreditGrant`.
</Update>

<Update label="3.73.0" description="2025-09-29">
  * Added credit balance subscription handling with automatic entitlement updates, expiration checks, and cache mapping for credit rate and validity.
</Update>

<Update label="3.72.0" description="2025-09-25">
  * Added credit rate mapping.
</Update>

<Update label="3.71.0" description="2025-09-23">
  * Added `awsMarketplaceCustomerId` to update and provision customers.
</Update>

<Update label="3.68.0" description="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.
</Update>

<Update label="3.64.0" description="2025-09-03">
  * Added support for subscriptions filter by resourceId and plan (planId/displayName).
</Update>

<Update label="3.59.2" description="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
</Update>

<Update label="3.40.0" description="2025-09-01">
  * Added: `AccessDeniedReason.Revoked` for determining when an entitlement has been explicitly revoked.
</Update>

<Update label="3.22.2" description="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.
</Update>

<Update label="2.448.1" description="2025-06-26">
  * Added: `getSubscriptions` endpoint that allows retrieving all of customers' subscriptions
</Update>

<Update label="2.419.2" description="2025-06-10">
  * Fixed: Temporarily disabled Edge routing for `GetPaywall` endpoint to resolve GraphQL mapping issue
</Update>

<Update label="2.307.0" description="2025-02-23">
  * Added: `SubscriptionFragmentLatestInvoice.attemptCount`
</Update>

<Update label="2.293.0" description="2025-01-21">
  * Added: `ImportSubscriptionInput.subscriptionId`
</Update>

<Update label="2.289.0" description="2025-01-19">
  * Added: `importSubscriptionInput.salesforceId`, `importCustomerInput.salesforceId`
</Update>

<Update label="2.235.0" description="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.
</Update>

<Update label="2.233.0" description="2024-12-15">
  * Added: `getActiveSubscriptionsList_trialConfiguration` and `getActiveSubscriptionsList_trialConfiguration_trialEndDate`
</Update>

<Update label="2.217.0" description="2024-12-08">
  * Added: ability to override prices when there's a scheduled update in place
</Update>

<Update label="2.212.4" description="2024-12-3">
  * Added: `TrialConfiguration` to `getActiveSubscriptions()`
</Update>

<Update label="2.212.1" description="2024-12-02">
  * Added: validation that coupon name does not exceed 40 characters
</Update>

<Update label="2024-12-02" description="2.209.0">
  * Added: `SubscriptionCoupon.amountsOff`
  * Added: `SubscriptionCoupon.description`
  * Added: `SubscriptionCoupon.durationInMonths`
  * Added: `SubscriptionCoupon.name`
  * Added: `SubscriptionCoupon.percentOff`
</Update>

<Update label="2.207.0" description="2024-12-01">
  * Added: `EstimateSubscriptionInput.TrialOverrideConfigurationInput.trialEndBehavior`
  * Added: `PreviewSubscriptionInput.TrialOverrideConfigurationInput.trialEndBehavior`
</Update>

<Update label="2.204.0" description="2024-11-24">
  * Added: `EstimateSubscriptionInput.TrialOverrideConfigurationInput.trialEndDate`
  * Added: `PreviewSubscriptionInput.TrialOverrideConfigurationInput.trialEndDate`
</Update>

<Update label="2.199.0" description="2024-11-21">
  * Added: support for price localization in fixed fee coupons
</Update>

<Update label="2.196.1" description="2024-11-18">
  * Added: Ability to remove customer's email address by passing an empty string on `updateCustomer.email`
</Update>

<Update label="2.196.0" description="2024-11-18">
  * Added: `DelegateSubscriptionToCustomer()`
  * Added: `TransferSubscriptionToResource()`
  * ⚠️ Deprecated: `TransferSubscriptin()` method (please use `TransferSubscriptionToResource()` instead)
</Update>

<Update label="2.188.0" description="2024-11-05">
  * Added: `UsageHistoryFragment.Markers`to reflect information about the reset usage dates
</Update>

<Update label="2.178.1" description="2024-11-04">
  * Fixed: issue where `customer.discount.deleted` event from Stripe isn't handled properly
</Update>

<Update label="2.175.4" description="2024-10-31">
  * Added: ability to set any date in the `SubscriptionFragment.trialEndDate`
</Update>

<Update label="2.162.0" description="2024-10-13">
  * Added: ability to estimate the subscription cost when the payment of the subscription is delegated to a different customer using:
    * `ProvisionSubscriptionInput.payingCustomerId`
    * `UpdateSubscriptionInput.payingCustomerId`
    * `ApplySubscriptionInput.payingCustomerId`
    * `PreviewSubscriptionInput.payingCustomerId`
    * `EstimateSubscriptionInput.payingCustomerId`
    * `EstimateSubscriptionUpdateInput.payingCustomerId`
</Update>

<Update label="2.160.0" description="2024-10-13">
  * Added: throw error when sync to Stripe fails due to unrecognized customer billing address
</Update>

<Update label="2.151.0" description="2024-10-06">
  * Added: ability to more easily determine the usage period of metered entitlements using:
    * `Entitlement.usagePeriodStart`
    * `Entitlement.usagePeriodEnd`
  * ⚠️ Deprecated: `Entitlement.nextResetDate` field
</Update>

<Update label="2.131.1" description="2024-09-19">
  * Added: throw error when attempting to import a customer with an existing `billingId`
</Update>

<Update label="2.129.0" description="2024-09-17">
  * Added: `CustomerPortalSubscriptionFragment.planId`
</Update>

<Update label="2.123.1" description="2024-09-11">
  * Added: `SubscriptionCouponInput.billingCouponId`
  * ⚠️ Deprecated: `ProvisionSubscriptionInput.promotionCode`
  * ⚠️ Deprecated: `UpdateSubscriptionInput.promotionCode`
  * ⚠️ Deprecated: `ApplySubscriptionInput.promotionCode`
  * ⚠️ Deprecated: `PreviewSubscriptionInput.promotionCode`
  * ⚠️ Deprecated: `EstimateSubscriptionInput.promotionCode`
  * ⚠️ Deprecated: `EstimateSubscriptionUpdateInput.promotionCode`
</Update>

<Update label="2.100.2" description="2024-09-01">
  * Added: ability to delegate payment of a provisioned subscription to a different customer using:
    * `ProvisionSubscriptionInput.payingCustomerId`
    * `ApplySubscriptionInput.payingCustomerId`
    * `SlimSubscriptionFragmentV2.payingCustomer`
    * `FullSubscription.payingCustomer`
</Update>

<Update label="2.86.0" description="2024-08-22">
  * Added: ability to apply a coupon to a subscription using the Stigg coupon ID using:
    * `ProvisionSubscriptionInput.appliedCoupon`
    * `UpdateSubscriptionInput.appliedCoupon`
    * `ApplySubscriptionInput.appliedCoupon`
    * `PreviewSubscriptionInput.appliedCoupon`
    * `EstimateSubscriptionInput.appliedCoupon`
    * `EstimateSubscriptionUpdateInput.appliedCoupon`
</Update>

<Update label="2.80.2" description="2024-08-20">
  * Changed: `ImportCustomerBulk` changed to `ImportCustomerBulkInput`
</Update>

<Update label="2.62.4" description="2024-08-07">
  * Added: ability to undo subscription scheduled cancelation using `CancelSubscriptionUpdates()`
</Update>

<Update label="2.62.0" description="2024-08-07">
  * Added: ability to preview a subscription's upcoming invoice using `PreviewNextInvoice()`
</Update>

<Update label="2.20.0" description="2024-07-07">
  * Changed: `GetUsageHistory()` now returns the precise timestamp when the usage was reset
</Update>

<Update label="2.13.5" description="2024-07-01">
  * Changed: `UpdateSubscriptionInput.subscriptionEntitlements` does not require the full list of entitlements when needing to add or update specific entitlements
</Update>

<Update label="2.8.2" description="2024-06-27">
  * Added: `TrialOverrideConfigurationInput.trialEndDate` to allow scheduled trial cancelation when provisioning and updating subscriptions
</Update>

<Update label="1.236.0" description="2024-06-20">
  * Added: ability to get the list of active subscriptions from Edge using`GetActiveSubscriptionsList()`
</Update>

<Update label="1.232.0" description="2024-06-16">
  * Added: ability to get the list of active subscriptions using`GetActiveSubscriptions()`
</Update>

<Update label="1.0.0" description="2024-01-22">
  🛑 Breaking change

  Changed: For Volume/tiered pricing, `unitPrice` was moved to `flatPrice`.
</Update>
