---
title: PKPaymentRequest
framework: passkit
role: symbol
role_heading: Class
path: passkit/pkpaymentrequest
---

# PKPaymentRequest

An object that represents a request for payment, including details about payment-processing capabilities, the payment amount, and shipping information.

## Declaration

```swift
class PKPaymentRequest
```

## Overview

Overview Use a PKPaymentRequest object to represent a merchant request for payment for goods or services. Your app creates a payment request as soon as a person taps the Apple Pay button to make a purchase. Tapping the Apple Pay button in your app initiates the payment request process. If your customers need to enter a discount code, choose a shipping method, or any other task, your app needs to ask for that information before they tap the Apple Pay button. A payment request object contains information that describes the purchase, including information about the merchant, available payment networks, the payment summary, billing and shipping details, coupon codes, custom data, error messages, and more. A typical payment request is for a one-time payment. To support different types of payment requests, include one of the following options in the payment request object:  |   |   |   |   |   |   |  note: You can set only one optional payment request type on a payment request object. Request a recurring payment Use the recurringPaymentRequest property to set up a recurring payment request using the PKRecurringPaymentRequest and PKRecurringPaymentSummaryItem classes. Recurring payments, such as subscriptions, can feature different payment intervals (for example, annually or monthly) and billing cycles, such as regular or trial. Request an automatic reload payment Use the automaticReloadPaymentRequest property to set up an automatic reload payment request using the PKAutomaticReloadPaymentRequest and PKAutomaticReloadPaymentSummaryItem classes. You can set up automatic reload payments, such as store card top-ups, that feature a balance threshold and a reload amount. The card automatically reloads with the reload amount when the account drops below the balance threshold. Request a deferred payment Use the deferredPaymentRequest property to set up a deferred payment request using the PKDeferredPaymentRequest class. Deferred payments include purchases, such as hotel bookings or pre-orders, where the card renders payment at a later date upon the receipt of goods or delivery of services. Set the Apple Pay Later mode Use the applePayLaterAvailability property to indicate whether this payment request is eligible for Apple Pay Later. You can indicate that Apple Pay Later is unavailable for certain kinds of transactions, including subscriptions, items that require recurring payments or prohibited items, such as gift cards. Request multitoken or multimerchant payments Use the multiTokenContexts property to request payment data for multimerchant payments with the PKPaymentTokenContext class. You can set up multitoken transactions to process and display payment requests with multiple merchants on one payment sheet, for example, a booking site where someone pays for a hotel, flight, and car rental from different merchants. Exclude an Apple Pay from the payment sheet Use the unsupportedPrimaryAccountIdentifiers property to exclude specific Apple Pay cards that you’ve issued from appearing in the payment sheet as a pay option. For example, if a person is topping up a stored value card, you can exclude the card being topped up from the payment options.

## Topics

### Selecting the payment networks

- [availableNetworks()](passkit/pkpaymentrequest/availablenetworks().md)
- [supportedNetworks](passkit/pkpaymentrequest/supportednetworks.md)
- [PKPaymentNetwork](passkit/pkpaymentnetwork.md)

### Setting merchant information

- [PKPaymentRequest.MerchantCategoryCode](passkit/pkpaymentrequest/merchantcategorycode-swift.struct.md)
- [merchantIdentifier](passkit/pkpaymentrequest/merchantidentifier.md)
- [merchantCapabilities](passkit/pkpaymentrequest/merchantcapabilities.md)
- [PKMerchantCapability](passkit/pkmerchantcapability.md)

### Setting currency and region information

- [currencyCode](passkit/pkpaymentrequest/currencycode.md)
- [supportedCountries](passkit/pkpaymentrequest/supportedcountries.md)
- [countryCode](passkit/pkpaymentrequest/countrycode.md)

### Setting the payment summary items

- [paymentSummaryItems](passkit/pkpaymentrequest/paymentsummaryitems.md)
- [PKPaymentSummaryItem](passkit/pkpaymentsummaryitem.md)
- [PKRecurringPaymentSummaryItem](passkit/pkrecurringpaymentsummaryitem.md)
- [PKDeferredPaymentSummaryItem](passkit/pkdeferredpaymentsummaryitem.md)

### Requesting recurring, automatic, and deferred payments

- [recurringPaymentRequest](passkit/pkpaymentrequest/recurringpaymentrequest.md)
- [PKRecurringPaymentRequest](passkit/pkrecurringpaymentrequest.md)
- [automaticReloadPaymentRequest](passkit/pkpaymentrequest/automaticreloadpaymentrequest.md)
- [PKAutomaticReloadPaymentRequest](passkit/pkautomaticreloadpaymentrequest.md)
- [deferredPaymentRequest](passkit/pkpaymentrequest/deferredpaymentrequest.md)
- [PKDeferredPaymentRequest](passkit/pkdeferredpaymentrequest.md)

### Excluding cards from the payment sheet

- [unsupportedPrimaryAccountIdentifiers](passkit/pkpaymentrequest/unsupportedprimaryaccountidentifiers.md)

### Requesting multitoken or multimerchant payments

- [multiTokenContexts](passkit/pkpaymentrequest/multitokencontexts.md)
- [PKPaymentTokenContext](passkit/pkpaymenttokencontext.md)

### Requesting billing and shipping contact fields

- [requiredBillingContactFields](passkit/pkpaymentrequest/requiredbillingcontactfields.md)
- [requiredShippingContactFields](passkit/pkpaymentrequest/requiredshippingcontactfields.md)
- [PKContactField](passkit/pkcontactfield.md)

### Providing known contact information

- [billingContact](passkit/pkpaymentrequest/billingcontact.md)
- [shippingContact](passkit/pkpaymentrequest/shippingcontact.md)
- [PKContact](passkit/pkcontact.md)

### Setting the shipping methods and types

- [Displaying a Read-Only Pickup Address](passkit/displaying-a-read-only-pickup-address.md)
- [shippingMethods](passkit/pkpaymentrequest/shippingmethods.md)
- [PKShippingMethod](passkit/pkshippingmethod.md)
- [shippingType](passkit/pkpaymentrequest/shippingtype.md)
- [shippingContactEditingMode](passkit/pkpaymentrequest/shippingcontacteditingmode.md)
- [PKShippingType](passkit/pkshippingtype.md)
- [PKShippingContactEditingMode](passkit/pkshippingcontacteditingmode.md)

### Working with coupon codes

- [couponCode](passkit/pkpaymentrequest/couponcode.md)
- [supportsCouponCode](passkit/pkpaymentrequest/supportscouponcode.md)

### Adding custom data

- [applicationData](passkit/pkpaymentrequest/applicationdata.md)

### Providing error information

- [paymentBillingAddressInvalidError(withKey:localizedDescription:)](passkit/pkpaymentrequest/paymentbillingaddressinvaliderror(withkey:localizeddescription:).md)
- [paymentContactInvalidError(withContactField:localizedDescription:)](passkit/pkpaymentrequest/paymentcontactinvaliderror(withcontactfield:localizeddescription:).md)
- [paymentShippingAddressInvalidError(withKey:localizedDescription:)](passkit/pkpaymentrequest/paymentshippingaddressinvaliderror(withkey:localizeddescription:).md)
- [paymentShippingAddressUnserviceableError(withLocalizedDescription:)](passkit/pkpaymentrequest/paymentshippingaddressunserviceableerror(withlocalizeddescription:).md)
- [paymentCouponCodeInvalidError(localizedDescription:)](passkit/pkpaymentrequest/paymentcouponcodeinvaliderror(localizeddescription:).md)
- [paymentCouponCodeExpiredError(localizedDescription:)](passkit/pkpaymentrequest/paymentcouponcodeexpirederror(localizeddescription:).md)

### Deprecated

- [applePayLaterAvailability](passkit/pkpaymentrequest/applepaylateravailability-3dxrt.md)
- [enabled](passkit/pkshippingcontacteditingmode/enabled.md)
- [requiredBillingAddressFields](passkit/pkpaymentrequest/requiredbillingaddressfields.md)
- [requiredShippingAddressFields](passkit/pkpaymentrequest/requiredshippingaddressfields.md)
- [PKAddressField](passkit/pkaddressfield.md)
- [billingAddress](passkit/pkpaymentrequest/billingaddress.md)
- [shippingAddress](passkit/pkpaymentrequest/shippingaddress.md)

### Enumerations

- [PKPaymentRequest.ApplePayLaterAvailability](passkit/pkpaymentrequest/applepaylateravailability-swift.enum.md)

### Instance Properties

- [attributionIdentifier](passkit/pkpaymentrequest/attributionidentifier.md)
- [isDelegatedRequest](passkit/pkpaymentrequest/isdelegatedrequest.md)
- [merchantCategoryCode](passkit/pkpaymentrequest/merchantcategorycode-9kcn6.md)

## Relationships

### Inherits From

- [NSObject](objectivec/nsobject-swift.class.md)

### Conforms To

- [CVarArg](swift/cvararg.md)
- [CustomDebugStringConvertible](swift/customdebugstringconvertible.md)
- [CustomStringConvertible](swift/customstringconvertible.md)
- [Equatable](swift/equatable.md)
- [Hashable](swift/hashable.md)
- [NSObjectProtocol](objectivec/nsobjectprotocol.md)

## See Also

### Payment requests

- [PKRecurringPaymentRequest](passkit/pkrecurringpaymentrequest.md)
- [PKAutomaticReloadPaymentRequest](passkit/pkautomaticreloadpaymentrequest.md)
- [PKDeferredPaymentRequest](passkit/pkdeferredpaymentrequest.md)
- [PKPaymentTokenContext](passkit/pkpaymenttokencontext.md)
