---
title: PKPaymentError
framework: passkit
role: symbol
role_heading: Structure
path: passkit/pkpaymenterror
---

# PKPaymentError

An error type that you create to indicate problems with address or contact information on an Apple Pay sheet.

## Declaration

```swift
struct PKPaymentError
```

## Overview

Overview The user must resolve any errors that you report on the Apple Pay sheet before they’re able to authorize the transaction.  You return any errors in PKPaymentAuthorizationResult or PKPaymentRequestShippingContactUpdate. You can build your own payment error (NSError), or use one of the following convenience methods from PKPaymentRequest to build it for you. For an error with contact information, use paymentContactInvalidError(withContactField:localizedDescription:). For a shipping address that is unserviceable, use paymentShippingAddressUnserviceableError(withLocalizedDescription:). For an error with the billing address, use paymentBillingAddressInvalidError(withKey:localizedDescription:). For an error with the shipping address, use paymentShippingAddressInvalidError(withKey:localizedDescription:). The following code example shows: How to create an error directly. How to create an error using a convenience method. Creating payment errors: // A general billing address error created with NSError let billingAddressError = NSError.init(domain: PKPaymentErrorDomain,                           code: PKPaymentError.billingContactInvalidError.rawValue,                           userInfo: [NSLocalizedDescriptionKey:"Address has an error",                           PKPaymentErrorKey.contactFieldUserInfoKey: PKContactField.postalAddress])

// A specific billing address error created with a convenience method let billingAddressInvalidStreet = PKPaymentRequest.paymentBillingAddressInvalidError(withKey:CNPostalAddressStreetKey,                                                    localizedDescription: "Invalid street")

## Topics

### Describing the error

- [errorCode](foundation/customnserror/errorcode-2opgi.md)
- [errorUserInfo](foundation/customnserror/erroruserinfo-1aas5.md)

### Identifying the error

- [billingContactInvalidError](passkit/pkpaymenterror/billingcontactinvaliderror.md)
- [shippingContactInvalidError](passkit/pkpaymenterror/shippingcontactinvaliderror.md)
- [shippingAddressUnserviceableError](passkit/pkpaymenterror/shippingaddressunserviceableerror.md)
- [couponCodeExpiredError](passkit/pkpaymenterror/couponcodeexpirederror.md)
- [couponCodeInvalidError](passkit/pkpaymenterror/couponcodeinvaliderror.md)
- [unknownError](passkit/pkpaymenterror/unknownerror.md)
- [PKPaymentError.Code](passkit/pkpaymenterror/code.md)

### Querying the error domain

- [errorDomain](passkit/pkpaymenterror/errordomain.md)
- [PKPaymentErrorDomain](passkit/pkpaymenterrordomain.md)

## Relationships

### Conforms To

- [CustomNSError](foundation/customnserror.md)
- [Equatable](swift/equatable.md)
- [Error](swift/error.md)
- [Hashable](swift/hashable.md)
- [Sendable](swift/sendable.md)
- [SendableMetatype](swift/sendablemetatype.md)

## See Also

### Errors

- [PKDisbursementError](passkit/pkdisbursementerror.md)
- [PKDisbursementErrorKey](passkit/pkdisbursementerrorkey.md)
- [PKPaymentError.Code](passkit/pkpaymenterror/code.md)
- [PKPaymentErrorKey](passkit/pkpaymenterrorkey.md)
- [PKDisbursementError.Code](passkit/pkdisbursementerror/code.md)
- [PKPaymentErrorDomain](passkit/pkpaymenterrordomain.md)
- [PKDisbursementErrorDomain](passkit/pkdisbursementerrordomain.md)
