<!--
{
  "availability" : [
    "iOS: 12.0.0 -",
    "iPadOS: 12.0.0 -",
    "macCatalyst: 13.1.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "CoreTelephony",
  "identifier" : "/documentation/CoreTelephony/CTCellularPlanProvisioning/addPlan(with:completionHandler:)",
  "metadataVersion" : "0.1.0",
  "role" : "Instance Method",
  "symbol" : {
    "kind" : "Instance Method",
    "modules" : [
      "Core Telephony"
    ],
    "preciseIdentifier" : "c:objc(cs)CTCellularPlanProvisioning(im)addPlanWith:completionHandler:"
  },
  "title" : "addPlan(with:completionHandler:)"
}
-->

# addPlan(with:completionHandler:)

Starts the provisioning process for a specified eSIM.

```
func addPlan(with request: CTCellularPlanProvisioningRequest, completionHandler: @escaping @Sendable (CTCellularPlanProvisioningAddPlanResult) -> Void)
```

## Parameters

`request`

A [`CTCellularPlanProvisioningRequest`](/documentation/CoreTelephony/CTCellularPlanProvisioningRequest) that identifies the eSIM to download.

`completionHandler`

A completion handler that executes after processing the request. The parameter passed to the completion handler indicates whether the request succeeded, failed, or ended in an unknown state.

## Discussion

Once your app calls this method, an iOS wizard guides the user through the process of installing and configuration an eSIM.

### Installing an eSIM in the Background

The user may send your app to the background prior to completing eSIM installation. To ensure your app has an opportunity to execute the completion handler and get the result of the installation, use <doc://com.apple.documentation/documentation/UIKit/UIApplication/beginBackgroundTask(expirationHandler:)> to perform the eSIM installation as a background task.

---

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)