Skip to content

Expose revocationDate and revocationReason on StoreTransaction (including iOS 26.4 RevocationType.proratedRefund) #6515

Description

@cruisediary

Summary

SK2's Transaction exposes revocationDate and revocationReason since iOS 15,
but StoreTransaction does not surface these fields. iOS 26.4 also introduces
Transaction.RevocationType.proratedRefund for prorated refunds on subscription
downgrades.

Who needs this

This is not needed for standard RevenueCat usage — entitlement state is
already reflected in CustomerInfo via server-to-server notifications.

It is relevant for:

  • CustomEntitlementComputation mode — entitlements are computed
    client-side, so revocation data must be read directly from the transaction
  • Transaction history UI — displaying when/why a specific transaction
    was refunded
  • Custom analytics — classifying refund events by reason in external pipelines

Proposed Changes

  1. New RevocationReason type mirroring Transaction.RevocationType
    (following the existing TransactionReason pattern), with proratedRefund
    gated at @available(iOS 26.4, ...)
  2. Add revocationDate: Date? and revocationReason: RevocationReason? to
    StoreTransactionType and expose via @objc public on StoreTransaction
  3. SK1 returns nil for both fields (SK1 does not provide revocation data)
  4. Update Swift and ObjC API testers

Metadata

Metadata

Assignees

No one assigned

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions