# Guideline 4.0 - Design: Apple Pay Button Not Following Guidelines

**Guideline:** 4.0 · **Store:** Apple App Store · **Severity:** low · **Fix difficulty:** easy · **Typical turnaround:** 1-2 hours

Canonical URL: https://appstorereject.com/rejections/apple/4/guideline-40-design-apple-pay-button-not-following-guidelines

## Description

Apple rejected your app because the Apple Pay button does not conform to Apple’s marketing and branding guidelines. Apple requires that apps use the system-provided PKPaymentButton (or the SwiftUI PaymentButton equivalent) rather than custom-designed buttons. Apple is strict about use of its brand assets. Custom buttons that use the Apple Pay logo, the Apple logo, or similar branding in non-approved styles violate Apple’s trademark and design requirements. The button must also be appropriately sized and not be modified with custom colors, rounded corners, or overlays.

## Common variations

- Custom button with Apple Pay logo drawn manually instead of using PKPaymentButton
- Apple Pay button with non-standard colors or gradients applied
- Apple Pay button is too small (below the 30pt minimum height)
- Custom rounded corners or shadows applied to the system button’s container
- Apple Pay logo used on a custom checkout button alongside other payment text
- Apple Pay button text modified (e.g., “Pay Now with Apple” instead of system text)

## Example rejection email

```
Guideline 4.0 - Design

Your app does not follow Apple Pay marketing and branding guidelines. Specifically, your app uses a custom-designed button for Apple Pay checkout that does not use the system-provided Apple Pay button.

Apps that offer Apple Pay must use the PKPaymentButton API (or PaymentButton in SwiftUI) to display the Apple Pay button. Custom buttons that incorporate the Apple Pay mark, Apple logo, or similar imagery are not permitted.

Next Steps: Please replace your custom Apple Pay button with the system-provided PKPaymentButton and ensure it meets the size and style requirements described in the Apple Pay Marketing Guidelines.
```

## Resolution steps

## How to Fix Apple Pay Button Not Following Guidelines

1. Use the system-provided button
In SwiftUI, use PaymentButton (iOS 16+) or wrap PKPaymentButton:

   ```swift
   import PassKit

   // SwiftUI (iOS 16+)
   PayWithApplePayButton(.checkout) {
       startApplePayFlow()
   }
   .payWithApplePayButtonStyle(.black) // .black, .white, or .whiteOutline
   .frame(height: 50)
   ```

   In UIKit:

   ```swift
   let button = PKPaymentButton(paymentButtonType: .checkout, paymentButtonStyle: .black)
   button.addTarget(self, action: #selector(startApplePayFlow), for: .touchUpInside)
   ```

2. Choose the correct button type
PKPaymentButton supports several types:
   - `.buy` — “Buy with Apple Pay”
   - `.checkout` — “Check out with Apple Pay”
   - `.donate` — “Donate with Apple Pay”
   - `.plain` — Apple Pay logo only
   - `.setUp` — “Set up Apple Pay”

3. Meet minimum size requirements
The Apple Pay button must be at least 30pt tall and have a minimum width of 100pt. Apple recommends 44–50pt height for comfortable tapping:

   ```swift
   .frame(minWidth: 100, minHeight: 44)
   ```

4. Do not modify the button’s appearance
Do not apply:
   - Custom background colors or gradients
   - Non-standard corner radius (the system button has its own radius)
   - Drop shadows, borders, or overlays
   - Opacity changes or blur effects

5. Use the correct button style for your background
Choose the style that provides adequate contrast:
   - `.black` for light backgrounds
   - `.white` for dark backgrounds
   - `.whiteOutline` for white backgrounds

6. Check Apple Pay availability first
Only show the button when the device can make payments:

   ```swift
   if PKPaymentAuthorizationController.canMakePayments() {
       // Show Apple Pay button
   } else {
       // Show standard checkout or setup button
   }
   ```

7. Review the Apple Pay Marketing Guidelines
Download the official guide from developer.apple.com/apple-pay/marketing/ for detailed specifications on button placement, spacing, and usage alongside other payment methods.

## Appeal guidance

Do not appeal. This is a quick fix — simply swap your custom button for PKPaymentButton and resubmit. If you believe your button already uses the system API but was still rejected, double-check that you haven’t applied any modifiers (background, cornerRadius, overlay) to the button or its container.

## Before / after examples

**Before:** // Custom Apple Pay button — violates branding guidelines
struct CheckoutView: View {
    var body: some View {
        VStack(spacing: 16) {
            // ... cart items ...

            Button(action: { startApplePayFlow() }) {
                HStack {
                    Image("apple-pay-logo")  // custom asset
                        .resizable()
                        .frame(width: 24, height: 24)
                    Text("Pay with Apple Pay")
                        .font(.headline)
                        .foregroundColor(.white)
                }
                .frame(maxWidth: .infinity, minHeight: 44)
                .background(
                    LinearGradient(colors: [.blue, .purple], startPoint: .leading, endPoint: .trailing)
                )
                .cornerRadius(12)
            }
        }
    }
}
**After:** // System-provided Apple Pay button — follows branding guidelines
import PassKit

struct CheckoutView: View {
    var body: some View {
        VStack(spacing: 16) {
            // ... cart items ...

            if PKPaymentAuthorizationController.canMakePayments() {
                PayWithApplePayButton(.checkout) {
                    startApplePayFlow()
                }
                .payWithApplePayButtonStyle(.black)
                .frame(maxWidth: .infinity, minHeight: 44)
            } else {
                Button("Checkout") { startStandardCheckout() }
                    .frame(maxWidth: .infinity, minHeight: 44)
                    .background(Color.accentColor)
                    .foregroundColor(.white)
                    .cornerRadius(8)
            }
        }
    }
}
**Why it works:** The custom button with a hand-drawn Apple Pay logo and gradient background was replaced with the system PayWithApplePayButton. The system button uses Apple’s approved styling (.black) and automatically renders the correct logo, text, and corner radius. A canMakePayments() check ensures the button only appears on supported devices.

**Before:** // UIKit: manually constructed Apple Pay button — wrong approach
let payButton = UIButton(type: .custom)
payButton.setTitle(" Pay", for: .normal)
payButton.setImage(UIImage(named: "apple-logo-white"), for: .normal)
payButton.backgroundColor = .black
payButton.layer.cornerRadius = 16
payButton.heightAnchor.constraint(equalToConstant: 36).isActive = true
**After:** // UIKit: system PKPaymentButton — correct approach
let payButton = PKPaymentButton(paymentButtonType: .checkout, paymentButtonStyle: .black)
payButton.addTarget(self, action: #selector(startApplePayFlow), for: .touchUpInside)
payButton.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate([
    payButton.heightAnchor.constraint(equalToConstant: 44)
])
**Why it works:** Replaced the custom UIButton (with a manually set Apple logo and custom corner radius) with PKPaymentButton. The system button handles all branding requirements automatically: correct logo, approved text, and proper styling. The height was also increased from 36pt to 44pt to meet the recommended minimum.

## Common questions

**Can you appeal a 4.0 rejection?**

Do not appeal. This is a quick fix — simply swap your custom button for PKPaymentButton and resubmit. If you believe your button already uses the system API but was still rejected, double-check that you haven’t applied any modifiers (background, cornerRadius, overlay) to the button or its container.

**How long does this typically take to fix?**

Typical turnaround is 1-2 hours (difficulty: easy). After resubmission, most re-reviews complete within 24-48 hours.

---
*Machine-readable source: https://api.appstorereject.com/api/rejections/detail?slug=guideline-40-design-apple-pay-button-not-following-guidelines*