# StoreTransaction

A public wrapper around store transaction data in Flutter SDK events.

Purpose [#purpose]

Represents store transaction metadata attached to Superwall events and restore events.

Signature [#signature]

```dart
class StoreTransaction {
  final String configRequestId;
  final String appSessionId;
  final DateTime? transactionDate;
  final String originalTransactionIdentifier;
  final String? storeTransactionId;
  final DateTime? originalTransactionDate;
  final String? webOrderLineItemID;
  final String? appBundleId;
  final String? subscriptionGroupId;
  final bool? isUpgraded;
  final DateTime? expirationDate;
  final String? offerId;
  final DateTime? revocationDate;
}
```

Properties [#properties]

<TypeTable
  type="{
  configRequestId: {
    type: &#x22;String&#x22;,
    description: &#x22;Identifier for the config request associated with the transaction.&#x22;,
    required: true,
  },
  appSessionId: {
    type: &#x22;String&#x22;,
    description: &#x22;Identifier for the app session associated with the transaction.&#x22;,
    required: true,
  },
  transactionDate: {
    type: &#x22;DateTime?&#x22;,
    description: &#x22;When the transaction occurred.&#x22;,
  },
  originalTransactionIdentifier: {
    type: &#x22;String&#x22;,
    description: &#x22;Original transaction identifier from the store.&#x22;,
    required: true,
  },
  storeTransactionId: {
    type: &#x22;String?&#x22;,
    description: &#x22;Store transaction identifier, when available.&#x22;,
  },
  originalTransactionDate: {
    type: &#x22;DateTime?&#x22;,
    description: &#x22;When the original transaction occurred.&#x22;,
  },
  webOrderLineItemID: {
    type: &#x22;String?&#x22;,
    description: &#x22;Web order line item identifier, when available.&#x22;,
  },
  appBundleId: {
    type: &#x22;String?&#x22;,
    description: &#x22;App bundle identifier associated with the transaction.&#x22;,
  },
  subscriptionGroupId: {
    type: &#x22;String?&#x22;,
    description: &#x22;Subscription group identifier, when available.&#x22;,
  },
  isUpgraded: {
    type: &#x22;bool?&#x22;,
    description: &#x22;Whether the transaction represents an upgrade.&#x22;,
  },
  expirationDate: {
    type: &#x22;DateTime?&#x22;,
    description: &#x22;Expiration date for the transaction, when applicable.&#x22;,
  },
  offerId: {
    type: &#x22;String?&#x22;,
    description: &#x22;Offer identifier associated with the transaction.&#x22;,
  },
  revocationDate: {
    type: &#x22;DateTime?&#x22;,
    description: &#x22;Revocation date, when the transaction has been revoked.&#x22;,
  },
}"
/>

Usage [#usage]

```dart
void handleSuperwallEvent(SuperwallEventInfo eventInfo) {
  final transaction = eventInfo.event.transaction;
  if (transaction == null) {
    return;
  }

  print('Transaction: ${transaction.storeTransactionId}');
  print('Original ID: ${transaction.originalTransactionIdentifier}');
}
```

Related [#related]

* [`SuperwallDelegate`](/docs/flutter/sdk-reference/SuperwallDelegate)