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

# SDK changelog

> Changelog for Waffo Node.js, Java, Go, and Python SDK releases.

<Note>
  This page tracks releases of the **Waffo SDK packages** (Node.js / Java / Go / Python). For the **Waffo API** version history, see [API version history](/en/developer-docs/tools-and-references/references/changelog).
</Note>

## Node.js SDK (@waffo/waffo-node)

<Steps>
  <Step title="v2.5.1 (2026-07-06) — Latest">
    * Fixed compatibility so `subscription().create()` remains backward compatible when `subscriptionManagementUrl` is omitted
    * Keeps `subscriptionManagementUrl` supported, but no longer rejects existing payloads before sending the API call
  </Step>

  <Step title="v2.5.0 (2026-05-13)">
    * Added `subscription().update()` to update subscription amounts, trial amounts, and scheduled amounts
    * Added `scheduledAmounts` to `ProductInfo` for subscription create, change, update, and inquiry flows
    * Added typed fields for subscription extension info, token card data, card BIN data, and product details
    * Automatically injects the current time when `Order().Capture()` omits `captureRequestedAt`
  </Step>

  <Step title="v2.4.0 (2026-03-14)">
    * Type alignment: all SDK type fields are consistent with the openapi.json definitions
    * Fixed endpoint paths for `merchantConfig` and `payMethodConfig`
    * Added the `captureRequestedAt` field to `CaptureOrderParams`
    * Added the `captureMode` field to `PaymentInfo`
    * Added Capture E2E tests and Schema field validation tests
  </Step>

  <Step title="v2.3.4 (2026-03-10)">
    * Made `RefundOrderParams.requestedAt` optional; the SDK will automatically inject the current UTC time
  </Step>

  <Step title="v2.3.3 (2026-03-03)">
    * Fixed `RefundOrderParams` field names and types to align with openapi.json
    * Renamed `notifyUrl` to `refundNotifyUrl`
    * Added refund Webhook E2E tests
  </Step>

  <Step title="v2.3.2 (2026-03-02)">
    * Added handling for the `SUBSCRIPTION_CHANGE_NOTIFICATION` Webhook event
  </Step>

  <Step title="v2.3.1 (2026-03-01)">
    * **Important fix**: `buildSuccessResponse()` returns `{"message":"success"}` instead of `{"status":"success"}`
  </Step>

  <Step title="v2.3.0 (2026-02-24)">
    * Automatically inject timestamps: when not provided, `orderRequestedAt` and `requestedAt` will be set automatically
  </Step>
</Steps>

***

## Java SDK (waffo-java)

<Steps>
  <Step title="v1.4.1 (2026-07-06) — Latest">
    * Compatibility release that keeps `subscriptionManagementUrl` optional
    * Aligns SDK schema and E2E gates for `payMethodDetails`
  </Step>

  <Step title="v1.4.0 (2026-06-02)">
    * Parses `orderFailedReason`, `refundFailedReason`, and subscription `failedReason` when callbacks send objects or JSON strings
    * Preserves existing failure reason access and keeps plain-string failure descriptions
  </Step>

  <Step title="v1.3.0 (2026-05-13)">
    * Added `subscription().update()` to update subscription amounts, trial amounts, and scheduled amounts
    * Added `SubscriptionScheduledAmount`, `SubscriptionUpdateProductInfo`, `UpdateSubscriptionParams`, and `UpdateSubscriptionData`
    * Added typed fields for subscription extension info, token card data, card BIN data, and product details
  </Step>

  <Step title="v1.2.0 (2026-03-14)">
    * Type alignment: all SDK type fields are consistent with the openapi.json definitions
    * Fixed Java 8 compatibility issues
    * Added Capture E2E tests and Schema field validation tests
  </Step>

  <Step title="v1.1.2 (2026-03-10)">
    * Automatically inject `RefundOrderParams.requestedAt`
    * Added `SUBSCRIPTION_CHANGE_NOTIFICATION` Webhook handling
    * Fixed `RefundOrderParams` field alignment issues
  </Step>

  <Step title="v1.1.1 (2026-03-01)">
    * **Important fix**: `buildSuccessResponse()` returns `{"message":"success"}` instead of `{"status":"SUCCESS"}`
  </Step>

  <Step title="v1.1.0 (2026-02-24)">
    * Automatically inject timestamps
    * Changed `CancelOrderParams.orderRequestedAt` type from String to Instant
  </Step>
</Steps>

***

## Go SDK (waffo-go)

<Steps>
  <Step title="v1.4.1 (2026-07-06) — Latest">
    * Compatibility release that keeps `SubscriptionManagementURL` optional
    * Aligns SDK schema and E2E gates for `payMethodDetails`
  </Step>

  <Step title="v1.4.0 (2026-05-13)">
    * Added `Subscription().Update()` to update subscription amounts, trial amounts, and scheduled amounts
    * Added `ScheduledAmount` support for subscription create, change, update, and inquiry flows
    * Added typed fields for subscription extension info, token card data, card BIN data, and product details
    * Automatically injects the current time when `Order().Capture()` omits `CaptureRequestedAt`
    * Expanded schema field validation for required fields and nested subscription/order structures
  </Step>

  <Step title="v1.3.2 (2026-05-12)">
    * Parses JSON-string `orderFailedReason`, `refundFailedReason`, and subscription `failedReason` callback payloads
    * Added failed callback tests for payment, refund, and subscription Webhook handling
    * Refund E2E flows now use DANA, and sandbox prerequisites now fail or skip explicitly
  </Step>

  <Step title="v1.3.1 (2026-03-16)">
    * Fixed Go module proxy cache issues
  </Step>

  <Step title="v1.3.0 (2026-03-14)">
    * Type alignment: all SDK type fields are consistent with the openapi.json definitions
    * Fixed endpoint paths for `merchantConfig` and `payMethodConfig`
    * Added `RefundStatus`, `OrderStatus`, and `SubscriptionStatus` constants
    * Added Capture E2E tests and Schema field validation tests
  </Step>

  <Step title="v1.2.2 (2026-03-03)">
    * Fixed `RefundOrderParams` fields to align with openapi.json
    * Added refund Webhook E2E tests
  </Step>

  <Step title="v1.2.1 (2026-03-01)">
    * **Important fix**: `BuildSuccessResponse()` returns `{"message":"success"}` instead of `{"status":"success"}`
  </Step>

  <Step title="v1.2.0 (2026-02-24)">
    * Automatically inject timestamps
  </Step>
</Steps>

***

## Python SDK (waffo)

<Steps>
  <Step title="v0.2.0b1 (2026-07-06) — Latest">
    * Compatibility release that keeps `subscriptionManagementUrl` optional
    * Aligns SDK schema and E2E gates for `payMethodDetails`
  </Step>

  <Step title="v0.2.0b0 (2026-05-13)">
    * Added `subscription.update()` to update subscription amounts, trial amounts, and scheduled amounts
    * Added scheduled amount models across subscription create, change, update, and inquiry fields
    * Expanded order capture timestamp auto-injection and schema field validation coverage
  </Step>

  <Step title="v0.1.0b0 (2026-05-09)">
    * Published the first Python beta release
    * Added support for payments, refunds, subscriptions, merchant configuration, payment method configuration, and Webhook signature verification
  </Step>
</Steps>
