<!--
{
  "availability" : [
    "iOS: 11.0.0 -",
    "iPadOS: 11.0.0 -",
    "macCatalyst: 13.1.0 -",
    "macOS: 11.0.0 -",
    "visionOS: 1.0.0 -",
    "watchOS: 4.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "PassKit",
  "identifier" : "/documentation/PassKit/PKPaymentAuthorizationControllerDelegate/paymentAuthorizationController(_:didSelectShippingContact:handler:)",
  "metadataVersion" : "0.1.0",
  "role" : "Instance Method",
  "symbol" : {
    "kind" : "Instance Method",
    "modules" : [
      "PassKit (Apple Pay and Wallet)"
    ],
    "preciseIdentifier" : "c:objc(pl)PKPaymentAuthorizationControllerDelegate(im)paymentAuthorizationController:didSelectShippingContact:handler:"
  },
  "title" : "paymentAuthorizationController(_:didSelectShippingContact:handler:)"
}
-->

# paymentAuthorizationController(_:didSelectShippingContact:handler:)

Tells the delegate that the user selected a shipping address.

```
@MainActor optional func paymentAuthorizationController(_ controller: PKPaymentAuthorizationController, didSelectShippingContact contact: PKContact, handler completion: @escaping (PKPaymentRequestShippingContactUpdate) -> Void)
```

```
@MainActor optional func paymentAuthorizationController(_ controller: PKPaymentAuthorizationController, didSelectShippingContact contact: PKContact) async -> PKPaymentRequestShippingContactUpdate
```

## Parameters

`controller`

The payment authorization controller.

`contact`

A contact object that represents the new shipping address. To maintain privacy, the shipping information is anonymized. For example, in the United States it only includes the city, state, and zip code. This provides enough information to calculate shipping costs, without revealing sensitive information until the user actually approves the purchase.

`completion`

The completion handler to call with the updated payment summary items and shipping methods.

## Discussion

Use this method to update the available shipping methods by creating a new array of valid [`PKShippingMethod`](/documentation/PassKit/PKShippingMethod) objects for the specified address. You also create an array of [`PKPaymentSummaryItem`](/documentation/PassKit/PKPaymentSummaryItem) objects that represent the updated cost if the user selects a valid shipping method. For more information on updating these values, see the [`PKPaymentRequest`](/documentation/PassKit/PKPaymentRequest) class’s [`shippingMethods`](/documentation/PassKit/PKPaymentRequest/shippingMethods) and [`paymentSummaryItems`](/documentation/PassKit/PKPaymentRequest/paymentSummaryItems) properties.

---

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)