Set your default payment link
Your default payment link is a quick way to open Paddle Checkout for a transaction. Set it in your Dashboard.
Transactions created by Paddle have a checkout payment link that you can use to open a checkout to collect for payment. Set a default payment link to tell Paddle which page in your app or website that checkout payment links should point to.
You must set your default payment link to start selling with Paddle. You can't create transactions without it — including manually-collected transactions (invoices).
How it works
Every Paddle account has a default payment link. Paddle uses it to create unique payment links against transactions that automatically open a Paddle Checkout to collect for payment.
All automatically-collected transactions include a checkout payment link.
Manually-collected transactions don't include a checkout payment link by default, but you can set billing_details.enable_checkout
to true
when creating or updating to include one. When enabled, this link is automatically included on invoice documents sent by Paddle.
Checkout payment links are returned in transaction responses as checkout.url
. They're made up of your default payment link with a _ptxn
query parameter appended. The value of the query parameter is the transaction ID. For example:
11https://magnificent-entremet-7ae0c6.netlify.app/pay?_ptxn=txn_01h2b0qpjc0xt8k5aw6nsdec4p
In this example:
Default payment link | https://magnificent-entremet-7ae0c6.netlify.app/pay |
Query parameter key | ?_ptxn= |
Query parameter value (transaction ID) | txn_01h2b0qpjc0xt8k5aw6nsdec4p |
Your default payment link should be a page that includes Paddle.js. You don't need to do anything to get Paddle.js to open a checkout, it automatically opens a checkout for the transaction when the query parameter is present.
Before you begin
If you're working with the live environment, you must get your default payment link domain approved.
Build your default payment link page
Your default payment link should be a page that includes Paddle.js. It might be your checkout page, or you might create a separate page specifically for it.
If your page calls
Paddle.Checkout.open()
on load with a list ofitems
or atransactionId
, this takes priority over the query parameter.
By default, Paddle.js opens an overlay checkout for the passed transaction. You can set default checkout settings by passing them to Paddle.Setup()
. Paddle.js uses default settings when opening a checkout payment link.
This example sets default checkout settings for all checkouts opened on a page. When using a checkout payment link, Paddle.js opens an inline checkout with these settings.
12345678910111213141Paddle.Setup({
2 seller: 99999, // replace with your Paddle seller ID
3 pwAuth: '00000000000000000000000000000000', // replace with your Retain API key
4 checkout: {
5 settings: {
6 displayMode: "inline",
7 theme: "light",
8 locale: "en",
9 frameTarget: "checkout-container",
10 frameInitialHeight: "450",
11 frameStyle: "width: 100%; min-width: 312px; background-color: transparent; border: none;"
12 }
13 }
14});
This example sets default checkout settings for all checkouts opened on a page. When using a checkout payment link, Paddle.js opens an overlay checkout with these settings.
Paddle.js opens an overlay checkout by default, but this is a good way to pass additional settings like locale
and theme
.
12345678910111Paddle.Setup({
2 seller: 99999,
3 pwAuth: '00000000000000000000000000000000',
4 checkout: {
5 settings: {
6 displayMode: "overlay",
7 theme: "light",
8 locale: "en"
9 }
10 }
11});
This is a more complete example. It's a page with minimal styling that includes Paddle.js and passes default settings to Paddle.Setup()
to open checkouts as inline. It displays an items table and totals on the left and Paddle Checkout on the right.
It doesn't call Paddle.Checkout.open()
on load. If it called Paddle.Checkout.open()
with items or another transaction ID, this would take priority over the checkout payment link query parameter.

You can copy this example into an editor, then replace the sample seller ID with your own seller ID. You can append a _ptxn
query parameter with the value of a transaction ID to the URL to check that Paddle correctly opens a checkout for the transaction.
12345678910111213141516171819201<html color-mode="user">
2<head>
3 <title>Inline default payment link</title>
4 <meta charset="utf-8"/>
5 <style type="text/css">
6 .container {
7 display: flex;
8 flex-direction: row;
9 margin-left: auto;
10 margin-right: auto;
11 width: 80%;
12 min-height: 100vh;
13 }
14 .column {
15 width: 50%;
16 }
17 </style>
18 <!-- MVP.css: https://andybrewer.github.io/mvp/ -->
19 <link rel="stylesheet" href="https://unpkg.com/mvp.css@1.12.0/mvp.css" media="print" onload="this.media='all'">
20 <!-- Paddle include -->
Set your default payment link
You can set your default payment link in your Paddle Dashboard.
Your sandbox and live systems are separate. You should set a default payment link for both systems. They don't have to be the same.
Go to Paddle > Checkout > Checkout Settings.
Expand Default payment link.
Add your default payment link. This should be a complete link, like
https://paddletest.com/payment
.Click Save changes when you're done.

If you're working with the live environment, you must get your default payment link domain approved.