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

# addPlan(request:properties:completionHandler:)

Starts the provisioning process with optional properties for the specified eSIM.

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

```
func addPlan(request: CTCellularPlanProvisioningRequest, properties: CTCellularPlanProperties?) async -> CTCellularPlanProvisioningAddPlanResult
```

## Parameters

`request`

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

`properties`

An optional parameter for [`CTCellularPlanProperties`](/documentation/CoreTelephony/CTCellularPlanProperties). Use to specify the voice capability and region your eSIM supports.

`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.

## Overview

Provide the system the information needed for the existing API to perform an install with a [`CTCellularPlanProvisioningRequest`](/documentation/CoreTelephony/CTCellularPlanProvisioningRequest). By providing the request and properties object together, the system can pair the information together.

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

The person 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.

> Important: When providing ``doc://com.apple.coretelephony/documentation/CoreTelephony/CTCellularPlanProperties``, the <doc://com.apple.documentation/documentation/CoreTelephony/CTCellularPlanProperties/associatedIccid> property is optional. If you don’t have a matching ICCID, leave the `associatedICCID` as `nil`. Providing an incorrect or empty ICCID can cause the provisioning process to fail.

---

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)