<!--
{
  "availability" : [
    "iOS: 27.0.0 -",
    "iPadOS: 27.0.0 -",
    "macCatalyst: 27.0.0 -",
    "macOS: 27.0.0 -",
    "visionOS: 27.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "SwiftUI",
  "identifier" : "/documentation/SwiftUI/View/offerCodeRedemption(options:isPresented:onCompletion:)",
  "metadataVersion" : "0.1.0",
  "role" : "Instance Method",
  "symbol" : {
    "kind" : "Instance Method",
    "modules" : [
      "SwiftUI",
      "SwiftUI"
    ],
    "preciseIdentifier" : "s:7SwiftUI4ViewP010_StoreKit_aB0E19offerCodeRedemption7options11isPresented12onCompletionQrShy0dE012RedeemOptionVG_AA7BindingVySbGys6ResultOyAI012VerificationQ0OyAI11TransactionVGs5Error_pGScMYcctF"
  },
  "title" : "offerCodeRedemption(options:isPresented:onCompletion:)"
}
-->

# offerCodeRedemption(options:isPresented:onCompletion:)

Presents a sheet that enables customers to redeem offer
codes that you configure in App Store Connect.

```
nonisolated func offerCodeRedemption(options: Set<RedeemOption>, isPresented: Binding<Bool>, onCompletion: @escaping @MainActor (Result<VerificationResult<Transaction>, any Error>) -> Void) -> some View
```

## Parameters

`options`

A set of `AppStore/RedeemOption` values that configure the code redemption.

`isPresented`

A binding to a Boolean value that determines whether the system
displays the sheet. You set the Boolean value to `true` to cause the
system to display the sheet. The system sets it to `false` when it
dismisses the sheet.

`onCompletion`

A closure the system calls with the result of the redemption. On success,
the closure receives a `VerificationResult` containing the
[`Transaction`](/documentation/SwiftUI/Transaction) that the redemption produces. On failure, it receives the
error that caused the redemption to fail.

## Discussion

The [`offerCodeRedemption(options:isPresented:onCompletion:)`](/documentation/SwiftUI/View/offerCodeRedemption(options:isPresented:onCompletion:)) method displays a system sheet
where customers can enter and redeem offer codes. If you generate
offer codes in App Store Connect, call this method to enable customers to redeem the offer. To
display the sheet using UIKit, see `presentOfferCodeRedeemSheet(from:options:)`.

> Important: Set up offer codes in App Store Connect before calling this API.
> Customers can only redeem these offers in your app through the redemption
> sheet; don’t use a custom UI.
> For more information, see <doc://com.apple.documentation/documentation/StoreKit/supporting-offer-codes-in-your-app>.

The following code example shows a view that displays the offer code redemption sheet
when the customer taps a button:

```
import SwiftUI
import StoreKit

struct ContentView: View {
    @State private var redeemSheetIsPresented = false

    var body: some View {
        Button("Present offer code redemption sheet.") {
            redeemSheetIsPresented = true
        }
        .offerCodeRedemption(
            options: [],
            isPresented: $redeemSheetIsPresented
        ) { result in
            // Handle result
        }
    }
}
```

When the customer successfully redeems an offer code, the system delivers the resulting
transaction through `onCompletion`, as a `VerificationResult` that wraps the [`Transaction`](/documentation/SwiftUI/Transaction).

---

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)