Early access
Express checkout for Apple Pay
Present customers with a seamless, one-click payment experience on mobile when using Apple Pay. Express checkout is optimized for mobile purchases, prioritizing Apple Pay and capturing customer information from Apple Wallet.
What's new?
We've introduced express checkout, a new checkout variant designed for mobile that prioritizes digital wallets for a frictionless, one-click payment experience.
It's available in early access for Apple Pay, using Apple Wallet to capture customer email address, plus geolocation information for address details.

Access to express checkout for Apple Pay is limited to users who are part of our early access program. If you're interested in being part of the program, fill out the form to join the waitlist. We'll reach out when space is available if you meet the program requirements.
How it works
Express checkout is a new checkout variant that's designed for mobile. It prioritizes Apple Pay, presenting it first to customers, and uses details from Apple Wallet to capture customer email address.
Behind the scenes, Paddle Checkout uses the customer's IP address to estimate the correct tax and pricing before the checkout loads, eliminating the need for customers to enter their address details before opening Apple Pay.
If Apple Pay is unavailable on the customer's device, the checkout automatically falls back to alternative payment methods.
You must verify your domain for Apple Pay in order to offer the one-click experience in express checkout.
Early access program guidelines
Why are we doing this?
Mobile users overwhelmingly prefer digital wallets over card payments. In particular, Apple Pay is deeply integrated into the Apple ecosystem, making it the fastest and most convenient payment method for customers on iPhone.
Express checkout improves conversion rates and customer satisfaction by:
- Surfacing Apple Pay as the first payment method on a compatible device, making it the easiest option for customers to select.
- Using Apple Wallet and geolocation information to capture customer information, eliminating the need for customers to manually enter their email, country, and postal code.
What's included?
For this stage of the early access program, express checkout includes:
- A new
expresscheckout variant in Paddle.js. - One-click payment flow for Apple Pay, with Apple Pay prominently displayed at the top.
- Automatic location detection using IP address geolocation for tax calculations and address detail capture.
- Use of Apple Wallet information to capture customer email address.
- Fallback to standard payment methods and option to pay another way.
- A new
showNonExpressPaymentMethodsparameter to determine whether the option to pay another way is shown. - Full transaction webhook support, like standard checkouts.
- Support for one-time purchases and subscriptions.
Are there any limitations?
There are some limitations with express checkout:
Customers can't input business or tax information.
There's no option to input tax or VAT information on the inline checkout form. You can pass this information to Paddle.js when opening the checkout using the
customer.businessparameter. If you passsettings.showAddTaxId: true, it's ignored and checkout is loaded.Customers can't add a discount code.
There's no option to add a discount code on the inline checkout form. You can pass this information to Paddle.js when opening the checkout using the
discountIdordiscountCodeparameter. If you passsettings.showAddDiscounts: true, it's ignored and checkout is loaded.It's not yet available if you're using a partner for funnels or paywalls.
If you're using a partner for funnels or paywalls, express checkout for Apple Pay isn't available just yet. We're working with our partners to bring express checkout to their funnels and flows. This doesn't impact users who are only using a partner for fulfillment or entitlements.
What's planned for the future?
In the future, we're planning to add support for:
An event to detect when the inline checkout frame size changes.
We'll add a new Paddle.js event when the inline checkout frame size changes, which you can use to dynamically resize an outer container like a sheet or modal.
Express checkout for other digital wallets.
Right now, express checkout supports Apple Pay. In later versions of express checkout, we may add support for other digital wallets like Google Pay and PayPal.
Compliance text handled automatically by Paddle.
In later versions of express checkout, Paddle may handle displaying billing period, trial information, and discount disclosure for subscriptions when paying with Apple Pay.
What do we need from you?
We're keen to understand how you find express checkout and any feedback from customers about the experience. Your feedback will help shape the feature for general availability.
To share feedback:
- Use the feedback button at the top-right of this page.
- Email us at sellers@paddle.com.
We may reach out during the early access program to discuss your experience and gather specific insights.
What's the timeline for release?
We're releasing express checkout in multiple stages:
| Stage 1 | Feb 2026 | Private early access program. |
| Stage 2 | Feb to Mar 2026 | Invite-only early access program. |
| Stage 3 | End of Mar 2026 | General availability. |
These dates are estimates and may change depending on testing and feedback.
How do you implement express checkout?
To implement:
Apply to join the early access program by filling out the form.
Make sure your domain is verified for Apple Pay.
Update your Paddle.js configuration to pass
variant: expressas a checkout setting. See the examples for more details.Update your checkout page to call
Paddle.PricePreview()to get the pricing information you need to display to customers before the checkout opens. See the examples for more details.
Compliance requirements
It's important that customers know who they're buying from, what they're buying, and how much they're paying. During early access, you must display pricing details to customers before they open Apple Pay.
Use Paddle.PricePreview() to get the values you need to display. Here's a summary of what you need to display and where to find it in the response:
| When | Details |
|---|---|
| Always | Total to pay today. If a price includes a trial period, you can say "Free" as the price to pay today, but you should include the total as the amount to pay after the trial ends. |
details.lineItems[].formattedTotals.total | |
| Price with a discount | Include the discount amount on your page, so customers know they're getting a discounted price. |
details.lineItems[].formattedTotals.discount | |
| Recurring price (subscription) | Include the billing period, so customers know how often they're being billed. (e.g. $300/year). Use interval and frequency in billingCycle to show the billing period in a user-friendly format. |
details.lineItems[].price.billingCycle | |
| Price with a trial period | Include the trial period, so customers understand that they're on a trial and know when it ends. Use interval and frequency in trialPeriod to show the trial period in a user-friendly format. |
details.lineItems[].price.trialPeriod |
Examples
This example shows the minimal configuration needed to launch an express checkout:
12345678910111213141516171819201import { initializePaddle, Paddle } from '@paddle/paddle-js';
2
3// Initialize Paddle (async)
4const paddleInstance: Paddle | undefined = await initializePaddle({
5 token: 'live_7d279f61a3499fed520f7cd8c08', // replace with a client-side token
6});
7
8if (paddleInstance) {
9 // Open checkout with Express variant
10 paddleInstance.Checkout.open({
11 items: [
12 {
13 priceId: 'pri_01gm81eqze2vmmvhpjg13bfeqg',
14 quantity: 1
15 },
16 {
17 priceId: 'pri_01gm82kny0ad1tk358gxmsq87m',
18 quantity: 1
19 }
20 ],
This example shows how to open an express checkout with pre-filled customer information and address details, overriding details captured from Apple Wallet and IP address geolocation:
12345678910111213141516171819201import { initializePaddle, Paddle } from '@paddle/paddle-js';
2
3// Initialize Paddle (async)
4const paddleInstance: Paddle | undefined = await initializePaddle({
5 token: 'live_7d279f61a3499fed520f7cd8c08', // replace with a client-side token
6});
7
8if (paddleInstance) {
9 paddleInstance.Checkout.open({
10 items: [
11 {
12 priceId: 'pri_01gm81eqze2vmmvhpjg13bfeqg',
13 quantity: 1
14 },
15 {
16 priceId: 'pri_01gm82kny0ad1tk358gxmsq87m',
17 quantity: 1
18 }
19 ],
20 customer: {
Before opening an express checkout, you must display pricing information to customers for compliance. Use Paddle.PricePreview() to get this information and display it as part of your checkout page.
This is a simple example that demonstrates how to fetch the required information:
12345678910111213141516171819201import { initializePaddle, Paddle } from '@paddle/paddle-js';
2
3async function displayComplianceInfo(
4 paddleInstance: Paddle,
5 priceId: string,
6 quantity: number
7) {
8 try {
9 const result = await paddleInstance.PricePreview({
10 items: [{ priceId, quantity }],
11 });
12
13 const container = document.getElementById('compliance-info');
14 if (!container) return;
15 container.innerHTML = '';
16
17 for (const item of result.data.details.lineItems) {
18 const { price, formattedTotals, discounts } = item;
19 const lines: string[] = [];
20
This produces output like the following examples. You can present this information in a way that fits your checkout flow.
121Total today: $300.00
2Regular price: $300.00/year1231Total today: $270.00
2Regular price: $300.00/year
3Discount: -$30.001231Total today: Free
2Regular price: $29.00/month
3Trial period: 30 daysSummary of changes
Paddle.js parameters
This is a summary of changes to parameters in the Paddle.Checkout.open() and Paddle.Initialize() methods:
| Setting | Type | Description |
|---|---|---|
settings.variant | string | Set to express to enable express checkout for Apple Pay. Must be used with displayMode: inline. |
settings.showNonExpressPaymentMethods | boolean | Set to false to hide the option to pay another way. Defaults to true. |
Field restrictions
When passing variant: express, the following parameters are not compatible:
| Setting | Used for | Result |
|---|---|---|
customerAuthToken | Presenting saved payment methods. | checkout.error |
| Checkout fails to load if any value is passed. | ||
savedPaymentMethodId | Presenting a specific saved payment method. | checkout.error |
| Checkout fails to load if any value is passed. | ||
upsell | Opening a checkout for an upsell. | checkout.error |
| Checkout fails to load if any value is passed. | ||
settings.displayMode | Determining what mode to use for the checkout. | checkout.error |
Checkout fails to load if anything other than inline is passed. | ||
settings.allowedPaymentMethods | Restricting the payment methods presented to customers. | checkout.error |
| Checkout fails to load if any value is passed. | ||
settings.allowLogout | Preventing customers from changing the email address on the checkout. | checkout.error |
| Checkout fails to load if any value is passed. | ||
settings.showAddTaxId | Showing or hiding the option to add a tax number. | checkout.warning |
Checkout loads but ignores true value. | ||
settings.showAddDiscounts | Showing or hiding the option to add a discount. | checkout.warning |
Checkout loads but ignores true value. | ||
settings.allowDiscountRemoval | Preventing customers from removing an applied discount. | checkout.warning |
Checkout loads but ignores true value. |
Next steps
Access to express checkout for Apple Pay is currently limited to users who are part of the early access program. If you're interested in participating, fill out the form to join the waitlist. We'll reach out when space is available if you meet the program requirements.
When you've joined the early access program, you can start implementing express checkout for Apple Pay. See: How do you implement express checkout?
If you're using a partner for funnels or paywalls, express checkout for Apple Pay isn't available just yet. We're working with our partners to bring express checkout to their funnels and flows. This doesn't impact users who are only using a partner for fulfillment or entitlements.
Related pages
- Express checkout for Apple Pay
- What's new?
- How it works
- Early access program guidelines
- Why are we doing this?
- What's included?
- Are there any limitations?
- What's planned for the future?
- What do we need from you?
- What's the timeline for release?
- How do you implement express checkout?
- Examples
- Summary of changes
- Paddle.js parameters
- Next steps
- Related pages





