For AI agents and LLMs: a structured documentation index is available at /llms.txt. Every page has a Markdown sibling — append .md to any URL. To search these docs, send a GET request to https://paddle-docs-retrieval.kapa-paddle.workers.dev/?q=<question> with a URL-encoded question. No authentication needed.

Skip to content
Paddle Docs home

Prefill checkout properties

Prefill checkout fields to save customers time and increase checkout conversion

AI summary

Prefill checkout fields with customer and business information to reduce friction, increase conversion, and create a faster purchase experience.

  • •You can prefill customer email, address, business details, and discounts using either direct values or Paddle entity IDs (customer ID, address ID, business ID)
  • •Payment details cannot be prefilled, but you can present saved payment methods to returning customers; you must always pass either customer email or customer ID when prefilling address or business data
  • •Prefilling all required fields skips the first page of multi-page checkout and lands customers directly on the payment screen, while one-page checkout variant collects all information on a single screen

You can prefill properties on a checkout for a smoother checkout experience for customers. You might do this when:

  • You capture some information about a prospect on the page before they interact with your checkout.
  • You've built an integration with a CRM solution that passes email or other information as parameters on signup links.
  • You're working with a logged-in customer, presenting them with upgrade options.

How it works

Paddle Checkout is optimized for conversion, asking customers for:

Customers can also add a discount and information about their business, like a VAT or tax number.

You can pass data to a checkout to prefill properties, reducing purchase friction for customers and increasing conversion. You can prefill all customer details. You can't prefill payment details, but you can present saved payment methods for returning customers.

To prefill address or business details, you must also pass a customer email or customer ID. You can't prefill only a country or address.

Prefilling works with both overlay checkout and inline checkout. You can use HTML data attributes or JavaScript properties.

Before you begin

You'll need to include Paddle.js on your page and pass a client-side token.

To open a checkout, you'll need to create products and prices and pass them to a checkout.

To get a step-by-step overview of how to build a complete checkout, including passing checkout settings and prefilling properties, see Build an overlay checkout or build an inline checkout

Pass customer or business information

In this example, there's a signup button that includes an email address field. The page has a country selector.

You could use HTML attributes or JavaScript properties to prefill this information in checkout:

#DescriptionHTML attributeJavaScript property
1Countrydata-customer-address-country-codecustomer.address.countryCode
2Email addressdata-customer-emailcustomer.email

Pass customer email or customer ID whenever you prefill address or business information. Paddle.js returns an error if you pass a customer object that doesn't include email or id.

Pass parameters to the Paddle.Checkout.open() method to prefill those values on a checkout.

JavaScript
var itemsList = [
{
priceId: 'pri_01gm81eqze2vmmvhpjg13bfeqg',
quantity: 1
},
{
priceId: 'pri_01gm82kny0ad1tk358gxmsq87m',
quantity: 1
}
];
Paddle.Checkout.open({
items: itemsList,
customer: {
email: "jo@example.com",
address: {
countryCode: "US",
postalCode: "10021",
region: "New York",
city: "New York",
firstLine: "4050 Jefferson Plaza, 41st Floor"
},
business: {
name: "ChatApp Inc.",
taxIdentifier: "555952383"
}
}
});

For a full list of fields that you can prefill, see Paddle.Checkout.open()

You can update properties on an open checkout using the Paddle.Checkout.updateCheckout() method.

Add data attributes to your checkout launcher to prefill those values on a checkout.

HTML
<a
href='#'
class='paddle_button'
data-theme='light'
data-customer-address-country-code='US'
data-customer-email='jo@example.com'
data-items='[
{
"priceId": "pri_01gs59hve0hrz6nyybj56z04eq",
"quantity": 1
},
{
"priceId": "pri_01gs59p7rcxmzab2dm3gfqq00a",
"quantity": 1
}
]'
>
Buy Now
</a>

For a full list of fields you can prefill, see HTML data attributes

Pass customer, address, and business IDs

Instead of passing customer email, address, and business information, you can pass an existing customer ID, address ID, or business ID.

You might do this if you're working with a logged-in customer who's looking to upgrade or purchase another subscription, or if you have a CRM integration that creates entities in Paddle for prospects.

Customer ID, address ID, and business ID replace other customer, address, and business fields. For example, you should pass either customer ID or customer email — not both.

Pass parameters to the Paddle.Checkout.open() method to prefill those values on a checkout.

JavaScript
var itemsList = [
{
priceId: 'pri_01gm81eqze2vmmvhpjg13bfeqg',
quantity: 1
},
{
priceId: 'pri_01gm82kny0ad1tk358gxmsq87m',
quantity: 1
}
];
Paddle.Checkout.open({
settings: {
displayMode: "overlay",
theme: "light",
locale: "en",
allowLogout: false
},
items: itemsList,
customer: {
id: "ctm_01gm82kny0ad1tk358gxmsq87m",
address: {
id: "add_01gm82v81g69n9hdb0v9sw6j40"
},
business: {
id: "biz_01gnymqsj1etmestb4yhemdavm"
}
}
});

For a full list of fields that you can prefill, see Paddle.Checkout.open()

You can update properties on an open checkout using the Paddle.Checkout.updateCheckout() method.

Add data attributes to your checkout launcher to prefill those values on a checkout.

HTML
<a
href='#'
class='paddle_button'
data-theme='light'
data-customer-id='ctm_01gm82kny0ad1tk358gxmsq87m'
data-customer-address-id='add_01gm82v81g69n9hdb0v9sw6j40'
data-business-id='biz_01gnymqsj1etmestb4yhemdavm'
data-items='[
{
"priceId": "pri_01gm81eqze2vmmvhpjg13bfeqg",
"quantity": 1
},
{
"priceId": "pri_01gm82kny0ad1tk358gxmsq87m",
"quantity": 1
}
]'
>
Buy Now
</a>

For a full list of fields that you can prefill, see HTML data attributes

Apply a discount

You can pass the Paddle ID of a discount entity or its discount code to a checkout to automatically apply it — no need for customers to enter a code.

enabled_for_checkout must be true against the discount entity to apply it to a checkout.

Pass parameters to the Paddle.Checkout.open() method to prefill those values on a checkout.

JavaScript
Paddle.Checkout.open({
settings: {
theme: "light",
locale: "en"
},
discountId: "dsc_01gp0ynsntfpyw2spd2md1wqx1",
items: [
{
priceId: 'pri_01gm81eqze2vmmvhpjg13bfeqg',
quantity: 1
},
{
priceId: 'pri_01gm82kny0ad1tk358gxmsq87m',
quantity: 1
},
{
priceId: 'pri_01gm82v81g69n9hdb0v9sw6j40',
quantity: 1
}
]
});

To learn more, see Paddle.Checkout.open()

You can update properties on an open checkout using the Paddle.Checkout.updateCheckout() method.

Add data attributes to your checkout launcher to prefill those values on a checkout.

HTML
<a href='#'
class='paddle_button'
data-display-mode='overlay'
data-theme='light'
data-locale='en'
data-items='[
{
"priceId": "pri_01gm81eqze2vmmvhpjg13bfeqg",
"quantity": 1
},
{
"priceId": "pri_01gm82kny0ad1tk358gxmsq87m",
"quantity": 1
},
{
"priceId": "pri_01gm82v81g69n9hdb0v9sw6j40",
"quantity": 1
}
]'
data-discount-id='dsc_01gp0ynsntfpyw2spd2md1wqx1'
>
Buy now
</a>

To learn more, see HTML data attributes

Build a one-page checkout

One-page checkout experience

Pass variant with the value one-page as a checkout setting to present customers with a one-page checkout experience. Paddle Checkout collects customer information and payment details on the same page.

JavaScript
var itemsList = [
{
priceId: 'pri_01gm81eqze2vmmvhpjg13bfeqg',
quantity: 1
},
{
priceId: 'pri_01gm82kny0ad1tk358gxmsq87m',
quantity: 1
}
];
Paddle.Checkout.open({
settings: {
displayMode: "overlay",
variant: "one-page"
},
items: itemsList,
});

Multi-page checkout

If you prefer the multi-page checkout experience, Paddle skips the first page of checkout when all required fields are prefilled. This means customers land on a screen where all they need to do is enter their payment details.

Illustration of an overlay checkout. The payment method form is open, with buttons for Apple Pay and PayPal along with the card details form underneath. The items list shows one item for 'Professional plan', with tax and totals underneath. The total overall is $3600, displayed at the top-left of the checkout.'

To jump to the second page on the multi-page inline checkout, prefill the customer's email and address details, or pass Paddle IDs for an existing customer and address:

DescriptionHTML attributeJavaScript property
Countrydata-customer-address-country-codecustomer.address.countryCode
Email addressdata-customer-emailcustomer.email
ZIP/postal code (only where required)data-customer-address-postal-codecustomer.address.postalCode
Region (only for United Arab Emirates)data-customer-address-regioncustomer.address.region
DescriptionHTML attributeJavaScript property
Customer IDdata-customer-idcustomer.id
Address ID, with valid ZIP/postal code or region where requireddata-customer-address-idcustomer.address.id

Was this page helpful?