In-App Checkout Options (Mac)

The Checkout is quite flexible and supports numerous configuration, pre-fill, and pricing options. These can be leveraged by passing a PADCheckoutOptions object to the Checkout.

Overriding Prices

To override prices in the checkout you can use the priceOverride property in the PADCheckoutOptions class. You’ll need to supply an auth hash, this is a MD5 hash of the new product price concatenated with the ‘Checkout Secret Key’ from your dashboard for that product.


PADPrice *priceUSD = [[PADPrice alloc] init:@7.99
                                   currency:@"USD"
                                       auth:@""];
PADPrice *priceGBP = [[PADPrice alloc] init:@6.99
                                   currency:@"GBP"
                                       auth:@""];

PADPriceOverride *priceOverride = [[PADPriceOverride alloc] init];
[priceOverride addPrice:priceUSD];
[priceOverride addPrice:priceGBP];

// Create a new checkout options object and add your price overrides.
PADCheckoutOptions *options = [PADCheckoutOptions options];
options.priceOverride = priceOverride;

// Pass the checkout options to the checkout.
[Paddle.sharedInstance showCheckoutForProduct:product options:options checkoutStatusCompletion:nil];

let priceUSD = PADPrice(7.99, currency: "USD", auth: "")
let priceGBP = PADPrice(6.99, currency: "GBP", auth: "")

let priceOverride = PADPriceOverride()
priceOverride.addPrice(priceUSD!)
priceOverride.addPrice(priceGBP!)

// Create a new checkout options object and add your price overrides.
let options = PADCheckoutOptions()
options.priceOverride = priceOverride

// Pass the checkout options to the checkout.
paddle.showCheckout(for: product, options: options, checkoutStatusCompletion: nil)

Pre-fill Checkout Fields

You can also pre-fill certain checkout fields such as the email and the postcode by setting their appropriate properties in the PADCheckoutOptions object.


// Create a new checkout options object and set the properties you want to pre-fill
PADCheckoutOptions *options = [PADCheckoutOptions options];

options.email = @"example@email.com";
options.country = @"GB";
options.postcode = @"SE1";
options.coupon = @"My-coupon";

// Pass the checkout options to the checkout.
[Paddle.sharedInstance showCheckoutForProduct:product options:options checkoutStatusCompletion:nil];

// Create a new checkout options object and set the properties you want to pre-fill
let options = PADCheckoutOptions()

options.email = "example@email.com"
options.country = "GB"
options.postcode = "SE1"
options.coupon = "My-coupon"

// Pass the checkout options to the checkout.
paddle.showCheckout(for: product, options: options, checkoutStatusCompletion: nil)

Custom Parameters

If you need pass additional Custom Checkout parameters you can also use the PADCheckoutOptions.additionalCheckoutParameters property.


// Create a new checkout options object and set the custom parameters you require.
PADCheckoutOptions *options = [PADCheckoutOptions options];

options.additionalCheckoutParameters = @{@"quantity": @32};

// Pass the checkout options to the checkout.
[Paddle.sharedInstance showCheckoutForProduct:product options:options checkoutStatusCompletion:nil];

// Create a new checkout options object and set the custom parameters you require.
let options = PADCheckoutOptions()

options.additionalCheckoutParameters = ["quantity": 32]

// Pass the checkout options to the checkout.
paddle.showCheckout(for: product, options: options, checkoutStatusCompletion: nil)

Questions about Paddle?

If you need any help regarding your Paddle integration, please get in touch with our Customer Success team using the form below.