Use
Checkout.ApplePayButton to accept one-time payments for physical goods or real-world services using Apple Pay. Payments are processed by Whop at 2.7% + $0.30 instead of Apple’s 15–30% in-app purchase fees.
What you’ll build
- A product detail screen with a native Apple Pay button
- A purchase flow that handles success, failure, and cancellation
- Plan configuration in the Whop dashboard for your physical goods
Prerequisites
- Install the WhopCheckout SDK
- An API key scoped to
iap:read— see Create an API key - A Whop product with a one-time plan (see Step 5)
Step 1: Configure the SDK
Initialize the SDK at app launch. For one-time physical goods you don’t needplanMappings — that’s only used for StoreKit fallback on subscriptions.
Step 2: Add the Apple Pay button
DropCheckout.ApplePayButton into your product view. The component renders Apple’s official, HIG-compliant Apple Pay button — you can’t substitute a custom-styled button.
onCompletion is not called when the user cancels — the sheet just dismisses. No cleanup needed.Step 3: Choose a button label
Thelabel parameter controls the text on the button. Pick the one that fits the action:
The full list comes from Apple’s
PayWithApplePayButtonLabel — see Apple’s documentation for every option.
Step 4: Handle the purchase result
onCompletion receives a Result<CheckoutPurchaseResult, Error>. On success you get back:
Use this to show a confirmation screen, kick off shipping, or store the receipt for your own records.
Step 5: Set up your plan
Each purchasable item needs a plan in your Whop dashboard:1
Create a plan
Go to your Dashboard > Products > select your product > Plans > Create plan.
2
Set it to one-time
Choose One-time payment and set the price.
3
(Optional) Set inventory limits
For limited drops, set a stock cap. The checkout enforces it automatically — when stock runs out, purchases stop.
4
Copy the plan ID
The ID starts with
plan_. Pass it to Checkout.ApplePayButton(planId:).Handle fulfillment with webhooks
For physical goods, you’ll need a server-side webhook to trigger shipping after a successful purchase. Listen for thepayment.succeeded event:
The client-side
onCompletion callback confirms the payment to the user, but your server should handle fulfillment via webhooks — don’t rely on the client alone. See the full webhooks guide for setup.Complete example
A minimal merch detail view with size selection and Apple Pay:Next steps
Webhooks
Handle payment events and trigger fulfillment
Apple Pay eligibility
Confirm your app qualifies under App Store Review Guidelines
Build a paywall
Sell subscriptions instead of one-time purchases
API reference
Full SDK documentation

