Button guidelines

HIG-compliant Apple Pay button styles, call-to-action types, localization, and sizing.

View as MarkdownInstall skills

Apple enforces strict guidelines for the Apple Pay button. Using an unofficial button style or label is grounds for App Store rejection or Apple Pay program termination. VINR's built-in button components (Express Checkout Element, iOS SDK) are compliant by default. If you build a custom button or override styles, follow this guide.

Button stylesAsk

Three official styles are available. Choose based on your checkout background color.

StyleClass / constantUse when
Blackapple-pay-button-black / .blackLight backgrounds
Whiteapple-pay-button-white / .whiteDark backgrounds
White with outlineapple-pay-button-white-with-line / .whiteOutlineWhite or near-white backgrounds where contrast would otherwise be lost

Use the -apple-pay-button CSS custom property and the official apple-pay-button web component. Do not recreate the button with custom HTML — Apple requires the official element.

<apple-pay-button
  buttonstyle="black"
  type="buy"
  locale="en-US"
></apple-pay-button>

<style>
  apple-pay-button {
    --apple-pay-button-width: 200px;
    --apple-pay-button-height: 44px;
    --apple-pay-button-border-radius: 8px;
    --apple-pay-button-padding: 0px 0px;
    --apple-pay-button-box-sizing: border-box;
  }
</style>

Load the Apple Pay JS API before using the element:

<script src="https://applepay.cdn-apple.com/jsapi/1.latest/apple-pay-sdk.js"></script>
import PassKit

let button = PKPaymentButton(paymentButtonType: .buy, paymentButtonStyle: .black)
button.cornerRadius = 8
button.addTarget(self, action: #selector(paymentButtonTapped), for: .touchUpInside)

Call-to-action typesAsk

Use the CTA that best matches the context of the purchase. Using the wrong verb (for example, "Buy" on a donation page) violates Apple HIG and reduces conversion.

TypeConstant / attribute valueWhen to use
BuybuyOne-time purchase of physical or digital goods
Check Outcheck-outGeneral checkout flow
PaypayBill payment, invoices, balance top-up
SubscribesubscribeRecurring subscriptions (Revex billing)
BookbookTravel, hospitality, event reservations
DonatedonateNon-profits, fundraising
ReloadreloadReloading a gift card or transit card
Top Uptop-upStored value, wallet funding
OrderorderFood delivery, marketplace order placement
RentrentCar rentals, short-term property rentals
Set Upset-upStoring a card on file without an immediate charge
Add Moneyadd-moneyAdding funds to a balance (different from top-up: implies first-time)
ContributecontributeCrowdfunding, shared expenses
TiptipGratuities, creator support
SupportsupportCharitable support, pledges
ContinuecontinueMulti-step flows where Apple Pay is one step
PlainplainWhen no verb label is appropriate (shows only the Apple Pay logo)

LocalizationAsk

The locale attribute on the web button, or the locale parameter on the iOS button, controls the displayed language. Setting the correct locale matters for EU and Balkans markets.

If you omit locale, the button uses the browser or device language. Always set it explicitly in multi-language storefronts to avoid mismatched UX.

Selected locales relevant to VINR's markets:

RegionLocale code
English (US)en-US
English (UK)en-GB
Germande-DE
Frenchfr-FR
Spanishes-ES
Italianit-IT
Dutchnl-NL
Polishpl-PL
Romanianro-RO
Bulgarianbg-BG
Croatianhr-HR
Serbian (Latin)sr-Latn
Greekel-GR
Czechcs-CZ
Hungarianhu-HU
Slovaksk-SK
Sloveniansl-SI

For the full list of 40+ supported locales, see Apple's localisation reference.

Sizing and layoutAsk

CSS propertyMinimumRecommendedNotes
--apple-pay-button-width100px200px+Scales to fill available width
--apple-pay-button-height30px44px44px matches iOS tap target guidelines
--apple-pay-button-border-radius0px8pxMatch your checkout button radius
--apple-pay-button-padding0px 0pxInternal padding is controlled by the element
--apple-pay-button-box-sizingborder-boxPrevents width overflow

The button must be at least 100×30 px and may not exceed the width of your page or container. Do not add external borders, drop shadows, or decorative containers around the button.

What you must not doAsk

  • Do not recreate the button using a custom image, HTML <button>, or non-Apple assets.
  • Do not modify the Apple logo, wordmark, or lockup proportions.
  • Do not show the button in a disabled or grayed-out state — hide it instead if the action is unavailable.
  • Do not display the button if canMakePayment() returns null or the device is not eligible.
  • Do not use the Apple Pay mark (the logo alone) as a button — use the full button element.

See alsoAsk

Was this page helpful?
Edit on GitHub

Last updated on

On this page