Skip to content
On this page

Checkout · Home > Payments > Payske Checkout

Customize Checkout

Learn about the different ways you can customize your Payske Checkout integration.

Apply branding

You can customize the look and feel of Checkout in the Payske Dashboard. Go to Branding Settings where you can:

  • Upload a logo or icon

Change your brand name

You can change a Checkout page’s name by modifying the Public business name field in Business Profile settings.

Policies and contact information

You can display your return, refund, legal policies, and support contact information to your customers on Checkout. Go to Business Profile Settings to configure the information you want to display, including:

  • Details about your return and refund policies
  • Your support phone number, email, and website
  • Links to your terms of service and privacy policy

Presenting this information can increase buyer confidence and minimize cart abandonment.

From Business Profile Settings, add support contact information to your sessions by enabling Contact information. Similarly, add links to your Terms of service and Privacy policy to your sessions by enabling Legal policies. If you require customers to implicitly consent to your legal policies when they complete their checkout, select the Display agreement to legal terms checkbox.

You must add your support contact information and legal policy links in your Public Detail Settings.

The following previews show how Checkout displays a dialog with the support contact information, links to the store legal policies, and information about the payment terms.

Preview of contact information on Checkout.Preview of legal policies on Checkout.

Configure return and refund policies

Display your return, refund, or exchange policies, by enabling Return and Refund policies. Although businesses that sell physical goods use return policies, businesses that sell digital goods or customized physical goods typically use refund policies. Because they’re not mutually exclusive, you can select both options if your business sells both categories of goods. You can edit your return and refund details, including:

  • Whether you accept returns, refunds, or exchanges
  • Whether returns, refunds, or exchanges are free or if they’re subject to a fee
  • How many days after a purchase you’ll accept returns, refunds, or exchanges
  • How customers can return items shipped to them
  • Whether you accept in-store returns
  • A link to the full return and refund policy
  • A custom message

If you accept free returns, refunds, or exchanges, the policy is highlighted for customers. The following previews show how Checkout displays a return policy. In this example, it’s for purchases that can be returned by shipping them or in-store for a full refund (or exchange) for up to 60 days. You can display similar information for refunds.

Preview of return policies on Checkout.Preview of a policy highlight on Checkout.
Preview of return policies on CheckoutPreview of a policy highlight on Checkout

Collect a terms of service agreement

Businesses often require their customers to agree to their terms of service before they can pay. This might depend on the type of product or subscription. Checkout helps you collect the necessary agreement by requiring a customer to accept your terms before paying.

Collect terms of service agreement

Collect terms of service agreement

You can collect a terms of service agreement with Payske Checkout when you create a Session

console
curl https://api.payske.com/v1/checkout/sessions \
  -u sk_test_4eC39HqLyjWDarjtT1zdp7dc: \
  -d "line_items[0][price]"='{{PRICE_ID}}' \
  -d "line_items[0][quantity]"=2 \
  -d mode=payment \
  -d success_url="https://example.com/success" \
  -d cancel_url="https://example.com/cancel" \
  -d "consent_collection[terms_of_service]"="required"    
ruby
# Set your secret key. Remember to switch to your live secret key in production.
# See your keys here: https://account.payske.com/api/key
Payske.api_key = 'sk_test_4eC39HqLyjWDarjtT1zdp7dc'

session = Payske::Checkout::Session.create({
  line_items: [{
    price: '{{PRICE_ID}}',
    quantity: 1,
  }],
  mode: 'payment',
  success_url: 'https://example.com/success',
  cancel_url: 'https://example.com/cancel',
  consent_collection: {    
    terms_of_service: 'required',    
  },    
})
python
# Set your secret key. Remember to switch to your live secret key in production.
# See your keys here: https://account.payske.com/api/key
payske.api_key = 'sk_test_4eC39HqLyjWDarjtT1zdp7dc'

session = payske.checkout.Session.create(
  line_items=[{
    'price': '{{PRICE_ID}}',
    'quantity': 1,
  }],
  mode='payment',
  success_url='https://example.com/success',
  cancel_url='https://example.com/cancel',
  consent_collection={    
    'terms_of_service': 'required',    
  },    
)
php
// Set your secret key. Remember to switch to your live secret key in production.
// See your keys here: https://account.payske.com/api/key
\Payske\Payske::setApiKey('sk_test_4eC39HqLyjWDarjtT1zdp7dc');

$session = \Payske\Checkout\Session::create([
  'line_items' => [[
    'price' => '{{PRICE_ID}}',
    'quantity' => 1,
  ]],
  'mode' => 'payment',
  'success_url' => 'https://example.com/success',
  'cancel_url' => 'https://example.com/cancel',
  'consent_collection' => [    
    'terms_of_service' => 'required',    
  ],    
]);
typescript
// Set your secret key. Remember to switch to your live secret key in production.
// See your keys here: https://account.payske.com/api/key
const payske = require('payske')('sk_test_4eC39HqLyjWDarjtT1zdp7dc');

const session = await payske.checkout.sessions.create({
  line_items: [
    {
      price: '{{PRICE_ID}}',
      quantity: 1,
    },
  ],
  mode: 'payment',
  success_url: 'https://example.com/success',
  cancel_url: 'https://example.com/cancel',
  consent_collection: {    
    terms_of_service: 'required',    
  },    
});
go
// Set your secret key. Remember to switch to your live secret key in production.
// See your keys here: https://account.payske.com/api/key
payske.Key = "sk_test_4eC39HqLyjWDarjtT1zdp7dc"

params := &payske.CheckoutSessionParams{
  Mode: payske.String(string(payske.CheckoutSessionModePayment)),
  LineItems: []*payske.CheckoutSessionLineItemParams{
    &payske.CheckoutSessionLineItemParams{
      Price: payske.String('{{PRICE_ID}}'),
      Quantity: payske.Int64(1),
    },
  },
  SuccessURL: payske.String("https://example.com/success"),
  CancelURL:  payske.String("https://example.com/cancel"),
  ConsentCollection: &payske.CheckoutSessionConsentCollectionParams{    
    TermsOfService: payske.String("required"),    
  },    
}

session, _ := session.New(params)
csharp
// Set your secret key. Remember to switch to your live secret key in production.
// See your keys here: https://account.payske.com/api/key
PayskeConfiguration.ApiKey = "sk_test_4eC39HqLyjWDarjtT1zdp7dc";

var options = new SessionCreateOptions
{
  LineItems = new List<SessionLineItemOptions>
  {
    new SessionLineItemOptions
    {
      Price = '{{PRICE_ID}}',
      Quantity = 1,
    },
  },
  Mode = "payment",
  SuccessUrl = "https://example.com/success",
  CancelUrl = "https://example.com/cancel",
  ConsentCollection = new SessionConsentCollectionOptions { TermsOfService = "required" }    
};
java
// Set your secret key. Remember to switch to your live secret key in production.
// See your keys here: https://account.payske.com/api/key
Payske.apiKey = "sk_test_4eC39HqLyjWDarjtT1zdp7dc";

SessionCreateParams params =
  SessionCreateParams
    .builder()
    .setSuccessUrl("https://example.com/success")
    .setCancelUrl("https://example.com/cancel")
    .addLineItem(
      SessionCreateParams.LineItem
        .builder()
        .setPrice('{{PRICE_ID}}')
        .setQuantity(1L)
        .build()
    )
    .setConsentCollection(    
      SessionCreateParams.ConsentCollection    
        .builder()    
        .setTermsOfService(SessionCreateParams.ConsentCollection.TermsOfService.REQUIRED)    
        .build()    
    )    
    .setMode(SessionCreateParams.Mode.PAYMENT)
    .build();

Session session = Session.create(params);

When consent_collection.terms_of_service='required', Checkout dynamically displays a checkbox for collecting the customer’s terms of service agreement. If consent_collection.terms_of_service='none', Checkout won’t display the checkbox and won’t require customers to accept the terms of service. Before requiring agreement to your terms, set your terms of service URL in your business’ Public details. Setting a privacy policy URL is optional—Checkout also links to your privacy policy when a URL to your Privacy policy is set in your Public details.

After a customer completes checkout, you can verify that the customer accepted your terms of service by looking at the Session object in the checkout.session.completed webhook, or by retrieving the Session using the API. When the terms are accepted, the Session’s consent.terms_of_service field is set to "accepted".

Customize the Submit button

You can configure the copy displayed on the Checkout submit button for one-time purchases to better align Checkout with your business model.

Define a submit_type on your session:

console
curl https://api.payske.com/v1/checkout/sessions \
  -u sk_test_4eC39HqLyjWDarjtT1zdp7dc: \
  -d submit_type=donate \
  -d "payment_method_types[]"=card \
  -d "line_items[][price]"="{{PRICE_ID}}" \
  -d "line_items[][quantity]"=1 \
  -d mode=payment \
  -d success_url="https://example.com/success" \
  -d cancel_url="https://example.com/cancel"
ruby
# Set your secret key. Remember to switch to your live secret key in production.
# See your keys here: https://account.payske.com/api/key
Payske.api_key = 'sk_test_4eC39HqLyjWDarjtT1zdp7dc'

session = Payske::Checkout::Session.create({
  submit_type: 'donate',
  payment_method_types: ['card'],
  line_items: [{
    price: '{{PRICE_ID}}',
    quantity: 1,
  }],
  mode: 'payment',
  success_url: 'https://example.com/success',
  cancel_url: 'https://example.com/cancel',
})
python
# Set your secret key. Remember to switch to your live secret key in production.
# See your keys here: https://account.payske.com/api/key
payske.api_key = 'sk_test_4eC39HqLyjWDarjtT1zdp7dc'

session = payske.checkout.Session.create(
  submit_type='donate',
  payment_method_types=['card'],
  line_items=[{
    'price': '{{PRICE_ID}}',
    'quantity': 1,
  }],
  mode='payment',
  success_url='https://example.com/success',
  cancel_url='https://example.com/cancel',
)
php
// Set your secret key. Remember to switch to your live secret key in production.
// See your keys here: https://account.payske.com/api/key
\Payske\Payske::setApiKey('sk_test_4eC39HqLyjWDarjtT1zdp7dc');

$session = \Payske\Checkout\Session::create([
  'submit_type' => 'donate',
  'payment_method_types' => ['card'],
  'line_items' => [[
    'price' => '{{PRICE_ID}}',
    'quantity' => 1,
  ]],
  'mode' => 'payment',
  'success_url' => 'https://example.com/success',
  'cancel_url' => 'https://example.com/cancel',
]);
java
// Set your secret key. Remember to switch to your live secret key in production.
// See your keys here: https://account.payske.com/api/key
Payske.apiKey = "sk_test_4eC39HqLyjWDarjtT1zdp7dc";

SessionCreateParams params =
  SessionCreateParams.builder()
    .addPaymentMethodType(SessionCreateParams.PaymentMethodType.CARD)
    .setBillingAddressCollection(SessionCreateParams.BillingAddressCollection.AUTO)
    .setSubmitType(SessionCreateParams.SubmitType.DONATE)
    .setMode(SessionCreateParams.Mode.PAYMENT)
    .setSuccessUrl("https://example.com/success")
    .setCancelUrl("https://example.com/cancel")
    .addLineItem(
      SessionCreateParams.LineItem.builder()
        .setPrice("{{PRICE_ID}}")
        .setQuantity(1L)
        .build())
    .build();

Session session = Session.create(params);
typescript
// Set your secret key. Remember to switch to your live secret key in production.
// See your keys here: https://account.payske.com/api/key
const payske = require('payske')('sk_test_4eC39HqLyjWDarjtT1zdp7dc');

const session = await payske.checkout.sessions.create({
  submit_type: 'donate',
  payment_method_types: ['card'],
  line_items: [{
    price: '{{PRICE_ID}}',
    quantity: 1,
  }],
  mode: 'payment',
  success_url: 'https://example.com/success',
  cancel_url: 'https://example.com/cancel',
});
go
// Set your secret key. Remember to switch to your live secret key in production.
// See your keys here: https://account.payske.com/api/key
payske.Key = "sk_test_4eC39HqLyjWDarjtT1zdp7dc"

params := &payske.CheckoutSessionParams{
  SubmitType: payske.String("donate"),
  PaymentMethodTypes: payske.StringSlice([]string{
    "card",
  }),
  LineItems: []*payske.CheckoutSessionLineItemParams{
    &payske.CheckoutSessionLineItemParams{
      Price: payske.String("{{PRICE_ID}}"),
      Quantity: payske.Int64(1),
    },
  },
  Mode: payske.String("payment"),
  SuccessURL: payske.String("https://example.com/success"),
  CancelURL: payske.String("https://example.com/cancel"),
}

s, _ := session.New(params)
csharp
// Set your secret key. Remember to switch to your live secret key in production.
// See your keys here: https://account.payske.com/api/key
PayskeConfiguration.ApiKey = "sk_test_4eC39HqLyjWDarjtT1zdp7dc";

var options = new SessionCreateOptions
{
  SubmitType = "donate",
  PaymentMethodTypes = new List<string>
  {
    "card",
  },
  LineItems = new List<SessionLineItemOptions>
  {
    new SessionLineItemOptions
    {
      Price = "{{PRICE_ID}}",
      Quantity = 1,
    },
  },
  Mode = "payment",
  SuccessUrl = "https://example.com/success",
  CancelUrl = "https://example.com/cancel",
};

var service = new SessionService();
Session session = service.Create(options);

In this example (for a 5 USD donation), your customized Checkout submit button would read Donate $5.00. See the API reference for a complete list of submit_type options.

Add custom text

You can present additional text to customers when they purchase with Payske Checkout, such as shipping and processing times.

You are prohibited from using this feature to create custom text that will violate or create ambiguity with the Payske generated text on Checkout, obligations under your Payske agreement, Payske’s policies, and applicable laws.

console
curl https://api.payske.com/v1/checkout/sessions \
  -u sk_test_4eC39HqLyjWDarjtT1zdp7dc: \
  -d "line_items[0][price]"="{{PRICE_ID}}" \
  -d "line_items[0][quantity]"=1 \
  -d mode=payment \
  -d "shipping_address_collection[allowed_countries][0]"=US \
  -d "custom_text[shipping_address][message]"="Please note that we can't guarantee 2-day delivery for PO boxes at this time." \
  -d "custom_text[submit][message]"="We'll email you instructions on how to get started." \
  -d success_url="https://example.com" \
  -d cancel_url="https://example.com"
console
payske checkout sessions create  \
  -d "line_items[0][price]"="{{PRICE_ID}}" \
  -d "line_items[0][quantity]"=1 \
  --mode=payment \
  -d "shipping_address_collection[allowed_countries][0]"=US \
  -d "custom_text[shipping_address][message]"="Please note that we can't guarantee 2-day delivery for PO boxes at this time." \
  -d "custom_text[submit][message]"="We'll email you instructions on how to get started." \
  --success-url="https://example.com" \
  --cancel-url="https://example.com"
ruby
# Set your secret key. Remember to switch to your live secret key in production.
# See your keys here: https://account.payske.com/api/key
Payske.api_key = 'sk_test_4eC39HqLyjWDarjtT1zdp7dc'

Payske::Checkout::Session.create(
  {
    line_items: [{price: '{{PRICE_ID}}', quantity: 1}],
    mode: 'payment',
    shipping_address_collection: {allowed_countries: ['US']},
    custom_text: {
      shipping_address: {
        message: 'Please note that we can\'t guarantee 2-day delivery for PO boxes at this time.',
      },
      submit: {message: 'We\'ll email you instructions on how to get started.'},
    },
    success_url: 'https://example.com',
    cancel_url: 'https://example.com',
  },
)
python
# Set your secret key. Remember to switch to your live secret key in production.
# See your keys here: https://account.payske.com/api/key
import payske
payske.api_key = "sk_test_4eC39HqLyjWDarjtT1zdp7dc"

payske.checkout.Session.create(
  line_items=[{"price": "{{PRICE_ID}}", "quantity": 1}],
  mode="payment",
  shipping_address_collection={"allowed_countries": ["US"]},
  custom_text={
    "shipping_address": {
      "message":
      "Please note that we can't guarantee 2-day delivery for PO boxes at this time.",
    },
    "submit": {"message": "We'll email you instructions on how to get started."},
  },
  success_url="https://example.com",
  cancel_url="https://example.com",
)
php
// Set your secret key. Remember to switch to your live secret key in production.
// See your keys here: https://account.payske.com/api/key
$payske = new \Payske\PayskeClient('sk_test_4eC39HqLyjWDarjtT1zdp7dc');

$payske->checkout->sessions->create(
  [
    'line_items' => [['price' => '{{PRICE_ID}}', 'quantity' => 1]],
    'mode' => 'payment',
    'shipping_address_collection' => ['allowed_countries' => ['US']],
    'custom_text' => [
      'shipping_address' => [
        'message' => 'Please note that we can\'t guarantee 2-day delivery for PO boxes at this time.',
      ],
      'submit' => ['message' => 'We\'ll email you instructions on how to get started.'],
    ],
    'success_url' => 'https://example.com',
    'cancel_url' => 'https://example.com',
  ]
);
java
// Set your secret key. Remember to switch to your live secret key in production.
// See your keys here: https://account.payske.com/api/key
Payske.apiKey = "sk_test_4eC39HqLyjWDarjtT1zdp7dc";

SessionCreateParams params =
  SessionCreateParams
    .builder()
    .addLineItem(
      SessionCreateParams.LineItem
        .builder()
        .setPrice("{{PRICE_ID}}")
        .setQuantity(1L)
        .build()
    )
    .setMode(SessionCreateParams.Mode.PAYMENT)
    .setShippingAddressCollection(
      SessionCreateParams.ShippingAddressCollection
        .builder()
        .addAllowedCountry(
          SessionCreateParams.ShippingAddressCollection.AllowedCountry.US
        )
        .build()
    )
    .setCustomText(
      SessionCreateParams.CustomText
        .builder()
        .setShippingAddress(
          SessionCreateParams.CustomText.ShippingAddress
            .builder()
            .setMessage(
              "Please note that we can't guarantee 2-day delivery for PO boxes at this time."
            )
            .build()
        )
        .setSubmit(
          SessionCreateParams.CustomText.Submit
            .builder()
            .setMessage("We'll email you instructions on how to get started.")
            .build()
        )
        .build()
    )
    .setSuccessUrl("https://example.com")
    .setCancelUrl("https://example.com")
    .build();

Session session = Session.create(params);
typescript
// Set your secret key. Remember to switch to your live secret key in production.
// See your keys here: https://account.payske.com/api/key
const payske = require('payske')('sk_test_4eC39HqLyjWDarjtT1zdp7dc');

const session = await payske.checkout.sessions.create({
  line_items: [{price: '{{PRICE_ID}}', quantity: 1}],
  mode: 'payment',
  shipping_address_collection: {allowed_countries: ['US']},
  custom_text: {
    shipping_address: {
      message: 'Please note that we can\'t guarantee 2-day delivery for PO boxes at this time.',
    },
    submit: {message: 'We\'ll email you instructions on how to get started.'},
  },
  success_url: 'https://example.com',
  cancel_url: 'https://example.com',
});
go
// Set your secret key. Remember to switch to your live secret key in production.
// See your keys here: https://account.payske.com/api/key
payske.Key = "sk_test_4eC39HqLyjWDarjtT1zdp7dc"

params := &payske.CheckoutSessionParams{
  LineItems: []*payske.CheckoutSessionLineItemParams{
    &payske.CheckoutSessionLineItemParams{
      Price: payske.String("{{PRICE_ID}}"),
      Quantity: payske.Int64(1),
    },
  },
  Mode: payske.String(string(payske.CheckoutSessionModePayment)),
  ShippingAddressCollection: &payske.CheckoutSessionShippingAddressCollectionParams{
    AllowedCountries: []*string{payske.String("US")},
  },
  CustomText: &payske.CheckoutSessionCustomTextParams{
    ShippingAddress: &payske.CheckoutSessionCustomTextShippingAddressParams{
      Message: payske.String("Please note that we can't guarantee 2-day delivery for PO boxes at this time."),
    },
    Submit: &payske.CheckoutSessionCustomTextSubmitParams{
      Message: payske.String("We'll email you instructions on how to get started."),
    },
  },
  SuccessURL: payske.String("https://example.com"),
  CancelURL: payske.String("https://example.com"),
};
result, _ := session.New(params);
csharp
// Set your secret key. Remember to switch to your live secret key in production.
// See your keys here: https://account.payske.com/api/key
PayskeConfiguration.ApiKey = "sk_test_4eC39HqLyjWDarjtT1zdp7dc";

var options = new SessionCreateOptions
{
    LineItems = new List<SessionLineItemOptions>
    {
        new SessionLineItemOptions { Price = "{{PRICE_ID}}", Quantity = 1 },
    },
    Mode = "payment",
    ShippingAddressCollection = new SessionShippingAddressCollectionOptions
    {
        AllowedCountries = new List<string> { "US" },
    },
    CustomText = new SessionCustomTextOptions
    {
        ShippingAddress = new SessionCustomTextShippingAddressOptions
        {
            Message = "Please note that we can't guarantee 2-day delivery for PO boxes at this time.",
        },
        Submit = new SessionCustomTextSubmitOptions
        {
            Message = "We'll email you instructions on how to get started.",
        },
    },
    SuccessUrl = "https://example.com",
    CancelUrl = "https://example.com",
};
var service = new SessionService();
service.Create(options);
Custom text near shipping address collectionCustom text near the pay button
Custom text near the shipping address collection fieldsCustom text near the pay button

Custom text near the pay button

Your custom text can be up to 500 characters in length. However, Payske Checkout is optimized for conversion, and adding extra information might affect your conversion rate.

Localization and supported languages

By default, Checkout detects the locale of the customer’s browser and displays a translated version of the page in their language, if it is supported. You can also provide a specific locale for Checkout to use instead by providing the locale argument when creating a Checkout Session using the client-only or client and server integration.

Checkout also uses the locale to format numbers and currencies. For example, when selling a product whose price is set in EUR with the locale set to auto, a browser configured to use English (en) would see €25.00 while one configured for German (de) would see 25,00 €.

See also