<!--
{
  "availability" : [
    "iOS: 15.0.0 -",
    "iPadOS: 15.0.0 -",
    "macOS: 12.0.0 -",
    "tvOS: 15.0.0 -",
    "visionOS: 1.0.0 -",
    "watchOS: 8.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "StoreKit",
  "identifier" : "/documentation/StoreKit/VerificationResult",
  "metadataVersion" : "0.1.0",
  "role" : "Enumeration",
  "symbol" : {
    "kind" : "Enumeration",
    "modules" : [
      "StoreKit"
    ],
    "preciseIdentifier" : "s:8StoreKit18VerificationResultO"
  },
  "title" : "VerificationResult"
}
-->

# VerificationResult

A type that describes the result of a StoreKit verification.

```
@frozen enum VerificationResult<SignedType>
```

## Overview

StoreKit automatically verifies the [`Transaction`](/documentation/StoreKit/Transaction), [`Product.SubscriptionInfo.RenewalInfo`](/documentation/StoreKit/Product/SubscriptionInfo/RenewalInfo), and [`AppTransaction`](/documentation/StoreKit/AppTransaction) values. To access the wrapped values, check whether the values are verified or unverified.

In addition to getting a verification result from StoreKit, you might want to verify the signed information yourself, either on the device, or on your server for the most control and security. Perform the verification on the [`jwsRepresentation`](/documentation/StoreKit/VerificationResult/jwsRepresentation-178oj) property for subscription renewal information, the [`jwsRepresentation`](/documentation/StoreKit/VerificationResult/jwsRepresentation-21vgo) property for transactions, and the [`jwsRepresentation`](/documentation/StoreKit/VerificationResult/jwsRepresentation-6ma59) property for an app transaction.

To verify the [`jwsRepresentation`](/documentation/StoreKit/VerificationResult/jwsRepresentation-21vgo) on your server, consider using the verification functions in the App Store Server Library. The library provides the functions `verifyAndDecodeTransaction`, `verifyAndDecodeAppTransaction`, and `verifyAndDecodeRenewalInfo` in each language the library supports. For more information, see <doc://com.apple.documentation/documentation/AppStoreServerAPI/simplifying-your-implementation-by-using-the-app-store-server-library>.

The [`jwsRepresentation`](/documentation/StoreKit/VerificationResult/jwsRepresentation-21vgo) string is in JWS Compact Serialization format and is the same as its counterpart in the App Store server APIs, as follows:

|StoreKit string                                                                                                                    |Equivalent in the App Store Server API                                        |Equivalent in App Store Server Notifications                                            |
|-----------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------|----------------------------------------------------------------------------------------|
|``doc://com.apple.storekit/documentation/StoreKit/VerificationResult/jwsRepresentation-178oj`` for subscription renewal information|<doc://com.apple.documentation/documentation/AppStoreServerAPI/JWSRenewalInfo>|<doc://com.apple.documentation/documentation/AppStoreServerNotifications/JWSRenewalInfo>|
|``doc://com.apple.storekit/documentation/StoreKit/VerificationResult/jwsRepresentation-21vgo`` for transactions                    |<doc://com.apple.documentation/documentation/AppStoreServerAPI/JWSTransaction>|<doc://com.apple.documentation/documentation/AppStoreServerNotifications/JWSTransaction>|

The decoded payload of the [`jwsRepresentation`](/documentation/StoreKit/VerificationResult/jwsRepresentation-21vgo) contains  two additional fields: `deviceVerification` and `deviceVerificationNonce`. Use these fields on the device to verify that JWS information belongs to the device. For more information, see [`deviceVerificationID`](/documentation/StoreKit/AppStore/deviceVerificationID).

> Important:
> The decoded payloads of ``doc://com.apple.storekit/documentation/StoreKit/VerificationResult/jwsRepresentation-21vgo`` and <doc://com.apple.documentation/documentation/AppStoreServerAPI/JWSTransaction> strings contain <doc://com.apple.documentation/documentation/AppStoreServerAPI/price> or <doc://com.apple.documentation/documentation/AppStoreServerAPI/renewalPrice> fields specified in *milliunits* of the currency.  StoreKit represents the `price` and ``doc://com.apple.storekit/documentation/StoreKit/Product/SubscriptionInfo/RenewalInfo/renewalPrice`` values in is *units* of the currency. Take care not to confuse these two representations when working with both APIs.

## Topics

### Getting the verification results

[`case verified(SignedType)`](/documentation/StoreKit/VerificationResult/verified(_:))

The associated value passed StoreKit automatic verification checks.

[`case unverified(SignedType, VerificationResult<SignedType>.VerificationError)`](/documentation/StoreKit/VerificationResult/unverified(_:_:))

The associated value failed StoreKit automatic verification checks.

[`var payloadValue: SignedType`](/documentation/StoreKit/VerificationResult/payloadValue)

The verified value of the signed type that StoreKit confirms as verified.

[`var unsafePayloadValue: SignedType`](/documentation/StoreKit/VerificationResult/unsafePayloadValue)

The associated value of the verification result that StoreKit doesn’t confirm as verified.

[`enum VerificationError`](/documentation/StoreKit/VerificationResult/VerificationError)

Error cases for StoreKit JWS verification.

### Getting properties for transactions

[`var jwsRepresentation: String`](/documentation/StoreKit/VerificationResult/jwsRepresentation-21vgo)

The transaction signed by the App Store, in JWS Compact Serialization format.

[`var deviceVerification: Data`](/documentation/StoreKit/VerificationResult/deviceVerification-69lvx)

The device verification value to use to verify whether the transaction belongs to the device.

[`var deviceVerificationNonce: UUID`](/documentation/StoreKit/VerificationResult/deviceVerificationNonce-9dfrn)

The UUID for computing the device verification value.

[`var signedDate: Date`](/documentation/StoreKit/VerificationResult/signedDate-8x9bg)

The date that the App Store signed the JWS transaction.

[`var headerData: Data`](/documentation/StoreKit/VerificationResult/headerData-9egfp)

The header component of the JWS transaction.

[`var payloadData: Data`](/documentation/StoreKit/VerificationResult/payloadData-uyle)

The payload component of the JWS transaction.

[`var signedData: Data`](/documentation/StoreKit/VerificationResult/signedData-56usp)

The transaction data that the signature applies to.

[`var signatureData: Data`](/documentation/StoreKit/VerificationResult/signatureData-4pyv8)

The signature component of the JWS transaction.

[`var signature: P256.Signing.ECDSASignature`](/documentation/StoreKit/VerificationResult/signature-7t1ne)

The signature component of the JSON web signature.

### Getting properties for subscription renewal information

[`var jwsRepresentation: String`](/documentation/StoreKit/VerificationResult/jwsRepresentation-178oj)

The subscription renewal information signed by the App Store, in JWS Compact Serialization format.

[`var deviceVerification: Data`](/documentation/StoreKit/VerificationResult/deviceVerification-5hvi9)

The device verification value to use to verify whether the subscription renewal information belongs to the device.

[`var deviceVerificationNonce: UUID`](/documentation/StoreKit/VerificationResult/deviceVerificationNonce-6mzfc)

The UUID for computing the device verification value.

[`var signedDate: Date`](/documentation/StoreKit/VerificationResult/signedDate-3tvo5)

The date that the App Store signed the JWS subscription renewal information.

[`var headerData: Data`](/documentation/StoreKit/VerificationResult/headerData-3be0o)

The header component of the JWS subscription renewal information.

[`var payloadData: Data`](/documentation/StoreKit/VerificationResult/payloadData-abfv)

The payload component of the JWS subscription renewal information.

[`var signedData: Data`](/documentation/StoreKit/VerificationResult/signedData-1t80n)

The subscription renewal information data that the signature applies to.

[`var signatureData: Data`](/documentation/StoreKit/VerificationResult/signatureData-9uw8c)

The signature component of the JWS subscription renewal information.

[`var signature: P256.Signing.ECDSASignature`](/documentation/StoreKit/VerificationResult/signature-95r7x)

The signature component of the JSON web signature.

### Getting properties for app transactions

[`var jwsRepresentation: String`](/documentation/StoreKit/VerificationResult/jwsRepresentation-6ma59)

The app transaction signed by the App Store, in JWS Compact Serialization format.

[`var deviceVerification: Data`](/documentation/StoreKit/VerificationResult/deviceVerification-6c8xu)

The device verification value to use to verify whether the app transaction belongs to the device.

[`var deviceVerificationNonce: UUID`](/documentation/StoreKit/VerificationResult/deviceVerificationNonce-6082b)

The UUID for computing the device verification value.

[`var signedDate: Date`](/documentation/StoreKit/VerificationResult/signedDate-24zch)

The date that the App Store signed the JWS app transaction.

[`var headerData: Data`](/documentation/StoreKit/VerificationResult/headerData-3drrl)

The header component of the JWS app transaction.

[`var payloadData: Data`](/documentation/StoreKit/VerificationResult/payloadData-97acz)

The payload component of the JWS app transaction.

[`var signedData: Data`](/documentation/StoreKit/VerificationResult/signedData-99fyo)

The app transaction data that the signature applies to.

[`var signatureData: Data`](/documentation/StoreKit/VerificationResult/signatureData-4pvv0)

The signature component of the JWS app transaction.

[`var signature: P256.Signing.ECDSASignature`](/documentation/StoreKit/VerificationResult/signature-6d5ue)

The signature component of the JSON web signature.

## Relationships

### Conforms To

[`Copyable`](/documentation/Swift/Copyable)

[`Escapable`](/documentation/Swift/Escapable)

[`SendableMetatype`](/documentation/Swift/SendableMetatype)

[`Equatable`](/documentation/Swift/Equatable)

[`CustomDebugStringConvertible`](/documentation/Swift/CustomDebugStringConvertible)

[`Hashable`](/documentation/Swift/Hashable)

[`Sendable`](/documentation/Swift/Sendable)

---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)