NAV

Introduction

This Sezzle technical documentation is designed for merchants integrating with Sezzle as a payment option. The documentation is divided into two parts:

You are viewing the latest version of the Sezzle API. Check previous documentation for Version 1

Sezzle supports individually-authorized transactions for a single purchase of goods or services, and latest version also supports tokenization of a customer for future transactions.

In addition to a direct API integration, Sezzle also offers a lightweight Javascript SDK as well as integrations with some of the most popular eCommerce platforms.

If you have any questions regarding our API, please reach out to our team here: Submit Merchant Help Request

You need an approved Sezzle account to start the integration process. Please visit our signup page if you don't have a Sezzle account already.

Overview

order-flow

Merchant direct integration quickstart

  1. Use API keys to obtain an authentication token
  2. Create a session with an order object
  3. Redirect user to Sezzle checkout URL
  4. User completes Sezzle checkout
  5. Sezzle redirects user back to merchant complete URL
  6. Manage the order with the Orders API

API Reference

Open API

The OpenAPI Specification (OAS) defines a standard, language-agnostic interface to RESTful APIs which allows both humans and computers to discover and understand the capabilities of the service without access to source code, documentation, or through network traffic inspection.

View the Sezzle v2 OpenAPI Specification.

The OpenAPI Specification can be imported into the Swagger Editor to easily generate a Sezzle client in a variety of programming languages. If your language is not supported by Swagger, an alternate tool is OpenAPI Generator.

Sandbox Environment

https://sandbox.gateway.sezzle.com

Before going live, you can test your integration with Sezzle using the Sezzle sandbox test environment, rather than the live production environment.

  1. Access the sandbox: https://sandbox.dashboard.sezzle.com/merchant
  2. Log in using your Sezzle Merchant dashboard credentials.
  3. From the menu at the left select Settings > API Keys
  4. Click the button labeled *create API key
  5. Follow the prompts to create public and private API keys

NOTE: Though you can use same login for both sandbox and production dashboards, the API keys for these are not interchangeable. That is, you cannot use the sandbox API keys for the production dashboard, and vice versa.

  1. Create an order on your store website using the example data below.
  2. Select Sezzle as the payment method.
  3. Verify that the order goes through.

User Test Data

Phone and Personal Information

  1. Use any valid US or CA phone number, real or fake.
  2. The expected OTP is 123123.
  3. Personal information does not need to be real.

Test Credit Cards

Brand Number CVC Expiration
Visa 4242424242424242 Any 3 digits Any future date
Mastercard 5555555555554444 Any 3 digits Any future date
Amex 371449635398431 Any 4 digits Any future date
Amex 378282246310005 Any 4 digits Any future date
Discover 6011111111111117 Any 3 digits Any future date

Postman Setup

The Sezzle team has prepared a public Postman collection so merchants can quickly create customers (Sezzle users), sessions, and orders for sandbox testing.

Download and Install Postman

First, download and install the Postman application. To do this:

  1. Go to www.postman.com/downloads/
  2. Click Download the App.
  3. When the installation file has finished downloading, click the file to install the application.
  4. Follow installation prompts on the screen.

Add Sezzle Gateway Collection

When installation is complete, follow these steps to add the Sezzle Gateway collection to Postman.

  1. Click Run in Postman below to run the collection.

Run in Postman

  1. In the Web page that opens, select your operating system.
  2. Click Open Postman if prompted.
  3. In Postman, the Sezzle Gateway collection is now displayed in the Collections tab.

Edit collection variables

Next, copy your credentials from the Sandbox Dashboard into the Sezzle Gateway collection variables in Postman. These are identifying variables that will apply across the collection.

To add your credentials to Postman:

  1. In Postman, select Sezzle Gateway to open the collection tab.
  2. In the collection tab, click Variables. This tab will store your credentials that apply across the collection.
  3. To access your credentials, log in to the Sandbox Dashboard
  4. Go to Settings > API Keys - your sandbox credentials are here.
  5. In Postman, paste your credentials into both INITIAL VALUE and CURRENT VALUE columns for:

Errors

Example error response:

[
  {
    "code": "invalid",
    "location": "order.amount.amount_in_cents",
    "message": "Order amount must be greater than $35",
    "debug_uuid": "919f40d0-874b-4d98-810d-ed2246a8ad77"
  }
]

Endpoints will return an array of standardized error objects on failures.

We attempt to keep these errors as consistent as possible, and will announce any changes in advance if they are required.

Authentication

To authorize, use this request format:

{
  "public_key": "example-public-key",
  "private_key": "example-private-key"
}

Example response:

{
  "token": "example-token",
  "expiration_date": "2017-01-01T01:30:25.388940303Z",
  "merchant_uuid": "merchant1234567890"
}

POST https://gateway.sezzle.com/v2/authentication

Sezzle uses scoped API keys to allow access to the API. You can find/generate these keys on your merchant dashboard once you have been approved by Sezzle.

Once you have a valid token, it must be used as a Header for subsequent requests to our API, using the format below.

Authorization: Bearer example-token

Sessions

A session can be used to create an order, tokenize a customer, or both. Use the session endpoints to post a new session or get the details of an existing session.

Create a session

Example order request:

{
  "cancel_url": {
    "href": "https://example.com/cart",
    "method": "GET"
  },
  "complete_url": {
    "href": "https://example.com/ord_12345/complete",
    "method": "GET"
  },
  "customer": {
    "email": "john.doe@sezzle.com",
    "first_name": "John",
    "last_name": "Doe",
    "phone": "5555045294",
    "dob": "1990-02-25",
    "billing_address": {
      "name": "John Doe",
      "street": "123 W Lake St",
      "street2": "Unit 104",
      "city": "Minneapolis",
      "state": "MN",
      "postal_code": "55408",
      "country_code": "US",
      "phone_number": "5555045294"
    },
    "shipping_address": {
      "name": "John Doe",
      "street": "123 W Lake St",
      "street2": "Unit 104",
      "city": "Minneapolis",
      "state": "MN",
      "postal_code": "55408",
      "country_code": "US",
      "phone_number": "5555045294"
    }
  },
  "order": {
    "intent": "CAPTURE",
    "reference_id": "ord_12345",
    "description": "sezzle-store - #12749253509255",
    "items": [
      {
        "name": "widget",
        "sku": "sku123456",
        "quantity": 1,
        "price": {
          "amount_in_cents": 1000,
          "currency": "USD"
        }
      }
    ],
    "discounts": [
      {
        "name": "20% off",
        "amount": {
          "amount_in_cents": 1000,
          "currency": "USD"
        }
      }
    ],
    "metadata": {
      "location_id": "123",
      "store_name": "Downtown Minneapolis",
      "store_manager": "Jane Doe"
    },
    "shipping_amount": {
      "amount_in_cents": 1000,
      "currency": "USD"
    },
    "tax_amount": {
      "amount_in_cents": 1000,
      "currency": "USD"
    },
    "order_amount": {
      "amount_in_cents": 10000,
      "currency": "USD"
    }
  }
}

Example order response:

{
  "uuid": "fadbc642-05a4-4e38-9e74-80e325623af9",
  "links": [
    {
      "href": "https://gateway.sezzle.com/v2/session/fadbc642-05a4-4e38-9e74-80e325623af9",
      "method": "GET",
      "rel": "self"
    }
  ],
  "order": {
    "uuid": "12a34bc5-6de7-890f-g123-4hi1238jk902",
    "checkout_url": "https://checkout.sezzle.com/?id=12a34bc5-6de7-890f-g123-4hi1238jk902",
    "intent": "CAPTURE",
    "links": [
      {
        "href": "https://gateway.sezzle.com/v2/order/12a34bc5-6de7-890f-g123-4hi1238jk902",
        "method": "GET",
        "rel": "self"
      },
      {
        "href": "https://gateway.sezzle.com/v2/order/12a34bc5-6de7-890f-g123-4hi1238jk902",
        "method": "PATCH",
        "rel": "self"
      },
      {
        "href": "https://gateway.sezzle.com/v2/order/12a34bc5-6de7-890f-g123-4hi1238jk902/release",
        "method": "POST",
        "rel": "release"
      },
      {
        "href": "https://gateway.sezzle.com/v2/order/12a34bc5-6de7-890f-g123-4hi1238jk902/capture",
        "method": "POST",
        "rel": "capture"
      },
      {
        "href": "https://gateway.sezzle.com/v2/order/12a34bc5-6de7-890f-g123-4hi1238jk902/refund",
        "method": "POST",
        "rel": "refund"
      }
    ]
  }
}

Example tokenize request:

{
  "cancel_url": {
    "href": "https://example.com/user/payments",
    "method": "GET"
  },
  "complete_url": {
    "href": "https://example.com/user/payments/add-sezzle",
    "method": "GET"
  },
  "customer": {
    "tokenize": true
  }
}

Example tokenize response:

{
  "uuid": "fadbc642-05a4-4e38-9e74-80e325623af9",
  "links": [
    {
      "href": "https://gateway.sezzle.com/v2/session/fadbc642-05a4-4e38-9e74-80e325623af9",
      "method": "GET",
      "rel": "self"
    }
  ],
  "tokenize": {
    "token": "7ec98824-67cc-469c-86ab-f9e047f9cf1a",
    "expiration": "2020-04-27T14:46:59Z",
    "approval_url": "https://dashboard.sezzle.com/customer/checkout-approval?merchant-request-id=3f3244fd-78ce-4994-af0c-b8c760d47794",
    "links": [
      {
        "href": "https://gateway.sezzle.com/v2/token/7ec98824-67cc-469c-86ab-f9e047f9cf1a/session",
        "method": "GET",
        "rel": "token"
      }
    ]
  }
}

POST https://gateway.sezzle.com/v2/session

This endpoint creates a session in our system, and it returns the URL that you should redirect the user to. You can use a session to create an order, tokenize a customer, or both.

We suggest you provide as much optional information about the user as you have available, since this will speed up our checkout process and increase conversion.

If you submit an order with a session, then Sezzle is able to handle the entire checkout process after an order has been provided. However, if your flow requires that the user confirm their checkout on your site after being approved by Sezzle, you may set the intent parameter to AUTH with the session request. In this flow, Sezzle will not complete the transaction unless you make a capture request. Capture requests can be made to capture all or part of the original order amount. You must send the capture request before the authorization expires. By default, authorizations expire within in 30 minutes, but the expiration period for new authorizations may be extended up to 7 days in your merchant dashboard.

If you choose to tokenize a customer, then the customer will have the option to agree to allow you to process future transactions on their behalf. This gives you the ability to preapprove and create orders on behalf of the customer.

📘 Multi-Purpose Session

It is possible to create an order and tokenize a customer in a single session by providing an order object and setting customer tokenize to true. In this instance, the response will include both order and tokenize objects and the user will be prompted to accept tokenization during checkout.

Session Object

A valid session object contains at a minimum an Order object or a Customer object with tokenize set to true.

Parameter Type Description
cancel_url* object The HTTP request information used to redirect the customer in the case of a cancellation
complete_url* object The HTTP request infromation used to redirect the customer upon completion of the session
customer object The customer for this session
order object The order for this session

URL Object

This is used for both the cancel and complete URL objects

Parameter Type Description
href* string The URL used when redirecting a customer
method string The HTTP request method used when redirecting a customer. Currently only the GET method is supported. If omitted, will default to GET.

Customer object

Parameter Type Description
tokenize boolean Determines whether to tokenize customer. If omitted, will default to false.
email string The customer's email address
first_name string The customer's first name
last_name string The customer's last name
phone string The customer's phone number
dob string The customer's date of birth in YYYY-MM-DD format (parameter is input only)
billing_address object The customer's billing address
shipping_address object The customer's shipping address

Address Object

This format is used for both billing_address and shipping_address in the Customer object.

Parameter Type Description
name string The name on the address
street string The street and number of the address
street2 string The apt or unit
city string The city
state string The 2 character state code
postal_code string The postal delivery code
country_code string The 2 character country code
phone_number string The phone number at the delivery location

Order Object

Parameter Type Description
intent* string Accepted values are "AUTH" or "CAPTURE". If your checkout flow requires the user to confirm their checkout on your site after being approved by Sezzle, use "AUTH" as your intent. If you prefer the checkout be captured immediately, use "CAPTURE".
reference_id* string Your reference ID for this order
description* string Your description for this order
order_amount* object A Price object containing the amount of the order, which must be at least 100. All fields of the Price object are required.
requires_shipping_info boolean Flag to indicate if you would like us to collect shipping information for this checkout from the customer. If omitted, defaults to false.
checkout_financing_options array The financing options of the checkout. Only one option can be included.
items object The items being purchased
discounts object The discounts applied to this order. Must be included in total
metadata object Object for any custom data you want to submit with the checkout. You are not limited to the key-value pairs shown in the example, and you may use any key-value pairs you like
shipping_amount object The shipping fees applied to this order. Must be included in the total
tax_amount object The taxes applied to this order. Must be included in the total
checkout_expiration string The expiration for the order checkout in ISO 8601 date/time format
checkout_mode string The mode for the order checkout. Defaults to redirect if not provided. If iframe or popup is provided, then the cancel and complete URLs must include the origin of the parent window.
send_checkout_url object A Notification object for sending checkout URL to the customer
locale string Localizes the checkout. Accepted values are en-US (English, United States), en-CA (English, Canada) and fr-CA (French, Canada). Defaults to en-US if not provided.

Item Object

Parameter Type Description
name string The name of the item
sku string The sku identifier
quantity int The quantity purchased
price object The price object

Discount Object

Parameter Type Description
name string The description of the discount
amount object A price object

Metadata Object

Use the metadata object for any additional information you would like to attach to the checkout. All values must be strings.

Parameter Type Description
some_field_name string Custom metadata field
some_other_field_name string Custom metadata field

Shipping Amount Object

A price object

Tax Amount Object

A price object

Price Object

The price object is used for items, discounts, shipping amount, tax amount, and order amount.

Parameter Type Description
amount_in_cents int The amount of the item in cents
currency string The 3 character currency code as defined by ISO 4217

Notification Object

A valid notification object contains at a minimum a phone or an email.

Parameter Type Description
to_sms_phone string The SMS phone number of the notification
to_email string The email address of the notification
language string The 2-character ISO 639 langauge code of the notification. Acceptable values are "en" and "fr-CA". Will default to English if not provided.

Tokenize Object

This is included in the response when starting a customer tokenization session.

Parameter Type Description
token string This token represents the merchant request to tokenize a customer. This token can only be used one time. Once a user accepts/denies tokenization, this token and its approval URL will be obsolete.
expiration string The expiration of the request token in ISO 8601 date/time format.
approval_url string The URL for the user to accept tokenization. This URL does not create an order, it is only used for tokenizing a customer.

Get a session

Example response:

{
  "uuid": "fadbc642-05a4-4e38-9e74-80e325623af9",
  "links": [
    {
      "href": "https://gateway.sezzle.com/v2/session/fadbc642-05a4-4e38-9e74-80e325623af9",
      "method": "GET",
      "rel": "self"
    }
  ],
  "order": {
    "uuid": "12a34bc5-6de7-890f-g123-4hi1238jk902",
    "intent": "CAPTURE",
    "checkout_url": "https://checkout.sezzle.com/?id=12a34bc5-6de7-890f-g123-4hi1238jk902",
    "links": [
      {
        "href": "https://gateway.sezzle.com/v2/order/12a34bc5-6de7-890f-g123-4hi1238jk902",
        "method": "GET",
        "rel": "self"
      },
      {
        "href": "https://gateway.sezzle.com/v2/order/12a34bc5-6de7-890f-g123-4hi1238jk902",
        "method": "PATCH",
        "rel": "self"
      },
      {
        "href": "https://gateway.sezzle.com/v2/order/12a34bc5-6de7-890f-g123-4hi1238jk902/release",
        "method": "POST",
        "rel": "release"
      },
      {
        "href": "https://gateway.sezzle.com/v2/order/12a34bc5-6de7-890f-g123-4hi1238jk902/capture",
        "method": "POST",
        "rel": "capture"
      },
      {
        "href": "https://gateway.sezzle.com/v2/order/12a34bc5-6de7-890f-g123-4hi1238jk902/refund",
        "method": "POST",
        "rel": "refund"
      }
    ]
  },
  "tokenize": {
    "token": "7ec98824-67cc-469c-86ab-f9e047f9cf1a",
    "expiration": "2020-04-27T14:46:59Z",
    "approval_url": "https://dashboard.sezzle.com/customer/checkout-approval?merchant-request-id=3f3244fd-78ce-4994-af0c-b8c760d47794",
    "links": [
      {
        "href": "https://gateway.sezzle.com/v2/token/7ec98824-67cc-469c-86ab-f9e047f9cf1a/session ",
        "method": "GET",
        "rel": "token"
      }
    ]
  }
}

Note: This example response is a multi-purpose session

GET https://gateway.sezzle.com/v2/session/{session_uuid}

You can retrieve the details of an existing session using this endpoint.

Orders

Use the orders endpoints to get order details, update an order, release an amount by order, capture an amount by order, or refund an amount by order.

The {order_uuid} is the value returned from Create session (order.uuid) or Create order by customer (uuid). It is a different value than the Order ID displayed in the Sezzle Merchant Dashboard. It is important to note the Merchant Dashboard Order ID is not generated until a checkout is completed at Sezzle, whereas the {order_uuid} can represent an order before and after checkout completion.

Order payment flow

v2-order

  1. Merchant calls /v2/session with order and intent of AUTH or CAPTURE. Optionally, the merchant can send customer information.
  2. Sezzle returns order uuid and checkout URL.
  3. Merchant redirects customer to Sezzle checkout URL.
  4. Customer completes the Sezzle checkout and is redirected to the session complete URL.

Get an order

Example response:

{
  "uuid": "12a34bc5-6de7-890f-g123-4hi1238jk902",
  "links": [
    {
      "href": "https://gateway.sezzle.com/v2/order/12a34bc5-6de7-890f-g123-4hi1238jk902",
      "method": "GET",
      "rel": "self"
    },
    {
      "href": "https://gateway.sezzle.com/v2/order/12a34bc5-6de7-890f-g123-4hi1238jk902",
      "method": "PATCH",
      "rel": "self"
    },
    {
      "href": "https://gateway.sezzle.com/v2/order/12a34bc5-6de7-890f-g123-4hi1238jk902/release",
      "method": "POST",
      "rel": "release"
    },
    {
      "href": "https://gateway.sezzle.com/v2/order/12a34bc5-6de7-890f-g123-4hi1238jk902/capture",
      "method": "POST",
      "rel": "capture"
    },
    {
      "href": "https://gateway.sezzle.com/v2/order/12a34bc5-6de7-890f-g123-4hi1238jk902/refund",
      "method": "POST",
      "rel": "refund"
    }
  ],
  "intent": "AUTH",
  "reference_id": "ord_12345",
  "description": "sezzle-store - #12749253509255",
  "checkout_expiration": "2022-03-30T21:59:17Z",
  "checkout_status": "active",
  "metadata": {
    "location_id": "123",
    "store_name": "Downtown Minneapolis",
    "store_manager": "Jane Doe"
  },
  "order_amount": {
    "amount_in_cents": 10000,
    "currency": "USD"
  },
  "items": [
    {
      "name": "widget",
      "sku": "sku123456",
      "quantity": 1,
      "price": {
        "amount_in_cents": 1000,
        "currency": "USD"
      }
    }
  ],
  "customer": {
    "email": "john.doe@sezzle.com",
    "first_name": "John",
    "last_name": "Doe",
    "phone": "5555045294",
    "billing_address": {
      "name": "John Doe",
      "street": "123 W Lake St",
      "street2": "Unit 104",
      "city": "Minneapolis",
      "state": "MN",
      "postal_code": "55408",
      "country_code": "US",
      "phone_number": "5555045294"
    },
    "shipping_address": {
      "name": "John Doe",
      "street": "123 W Lake St",
      "street2": "Unit 104",
      "city": "Minneapolis",
      "state": "MN",
      "postal_code": "55408",
      "country_code": "US",
      "phone_number": "5555045294"
    }
  },
  "authorization": {
    "authorization_amount": {
      "amount_in_cents": 10000,
      "currency": "USD"
    },
    "approved": true,
    "expiration": "2020-04-23T16:13:44Z",
    "financing_option": "4-pay-biweekly",
    "sezzle_order_id": "order-id-in-merchant-dashboard",
    "releases": [
      {
        "uuid": "4b4d217c-18f1-4bfb-996e-767470c04661",
        "amount": {
          "amount_in_cents": 3000,
          "currency": "USD"
        }
      }
    ],
    "captures": [
      {
        "uuid": "f4415e94-e562-47cc-94f3-92279f27dc20",
        "amount": {
          "amount_in_cents": 7000,
          "currency": "USD"
        }
      }
    ],
    "refunds": [
      {
        "uuid": "83162d2f-d5f1-43ad-91ed-e8231920ce6d",
        "amount": {
          "amount_in_cents": 1000,
          "currency": "USD"
        }
      }
    ]
  }
}

GET https://gateway.sezzle.com/v2/order/{order_uuid}

Use this endpoint to get details on an existing order

Update an order

Example request:

{
  "reference_id": "ord_9876"
}

There is no response body for this request. If successful, we return an HTTP 204 Status No Content.

PATCH https://gateway.sezzle.com/v2/order/{order_uuid}

Use this endpoint to update an existing order. Only the reference ID can be updated.

Update Order Object

Parameter Type Description
reference_id* string Your reference ID for this order

Release amount by order

Example request:

{
  "amount_in_cents": 5000,
  "currency": "USD"
}

Example response:

{
  "uuid": "6c9db5d4-d09a-4224-860a-b5438ac32ca8"
}

The uuid returned from this operation is the release transaction uuid, but there are no
endpoints that use this value. You may retrieve an order's release transactions using the
Get an order endpoint.

POST https://gateway.sezzle.com/v2/order/{order_uuid}/release

Use this endpoint to release an amount by order.

Header Parameters

Parameter
Type Description
Sezzle-Request-Id string A unique, merchant-generated ID. Use this header to enforce idempotency when releasing an authorization.

Release Order Object

A price object

Price Object

Parameter Type Description
amount_in_cents* number The amount in cents to release on this order
currency* string The 3 character currency code as defined by ISO 4217

Capture amount by order

Example request:

{
  "capture_amount": {
    "amount_in_cents": 5000,
    "currency": "USD"
  }
}

Example response:

{
  "uuid": "6c9db5d4-d09a-4224-860a-b5438ac32ca8"
}

The uuid returned from this operation is the capture transaction uuid, but there are no
endpoints that use this value. You may retrieve an order's capture transactions using the
Get an order endpoint.

POST https://gateway.sezzle.com/v2/order/{order_uuid}/capture

Use this endpoint to capture an amount by order.

Header Parameters

Parameter
Type Description
Sezzle-Request-Id string A unique, merchant-generated ID. Use this header to enforce idempotency when capturing an order.

Capture Amount By Order Object

Parameter Type Description
capture_amount* object Details the amount and currency being captured

Capture Amount Object

A price object.

Price Object

Parameter Type Description
amount_in_cents* string The amount in cents to be captured
currency* string The 3 character currency code as defined by ISO 4217

Refund amount by order

Example request:

{
  "amount_in_cents": 5000,
  "currency": "USD"
}

Example response:

{
  "uuid": "6c9db5d4-d09a-4224-860a-b5438ac32ca8"
}

The uuid returned from this operation is the refund transaction uuid, but there are no
endpoints that use this value. You may retrieve an order's refund transactions using the
Get an order endpoint.

POST https://gateway.sezzle.com/v2/order/{order_uuid}/refund

Use this endpoint to refund an amount by order

Header Parameters

Parameter
Type Description
Sezzle-Request-Id string A unique, merchant-generated ID. Use this header to enforce idempotency when refunding an order.

Refund Amount Object

A price object.

Price Object

Parameter Type Description
amount_in_cents* string The amount in cents to be refunded
currency* string The 3 character currency code as defined by ISO 4217

Reauthorize amount by order

Example request:

{
  "amount_in_cents": 5000,
  "currency": "USD"
}

Example response:

{
  "uuid": "6c9db5d4-d09a-4224-860a-b5438ac32ca8",
  "links": [
    {
      "href": "https://gateway.sezzle.com/v2/order/6c9db5d4-d09a-4224-860a-b5438ac32ca8",
      "method": "GET",
      "rel": "self"
    }
  ],
  "intent": "AUTH",
  "reference_id": "original_order_reference_id",
  "order_amount": {
    "amount_in_cents": 5000,
    "currency": "USD"
  },
  "authorization": {
    "authorization_amount": {
      "amount_in_cents": 5000,
      "currency": "USD"
    },
    "approved": true,
    "expiration": "2022-04-23T16:13:44Z"
  }
}

POST https://gateway.sezzle.com/v2/order/{order_uuid}/reauthorize

Use this endpoint to reauthorize an amount by order. An order can only be reauthorized after the initial authorization has expired. Any attempts to reauthorize before the authorization expires will fail. An authorization can be released before expiration, thus allowing the order to be reauthorized.

Please note the following when reauthorizing an order.

Header Parameters

Parameter
Type Description
Sezzle-Request-Id string A unique, merchant-generated ID. Use this header to enforce idempotency when refunding an order.

Reauthorize Amount Object

A price object.

Price Object

Parameter Type Description
amount_in_cents* string The amount in cents to be reauthorized
currency* string The 3 character currency code as defined by ISO 4217

Delete checkout by order

There is no response body for this request. If successful, we return an HTTP 204 Status No Content.

DELETE https://gateway.sezzle.com/v2/order/{order_uuid}/checkout

Use this endpoint to delete a checkout for an order. The request fails if the checkout has already
been successfully completed by the customer.

If you have redirected the customer to the Sezzle checkout and subsequently cancel the order in
your ecommerce platform, then you should immediately call this endpoint to prevent the possibility
of the customer completing the Sezzle checkout.

Settlement Reports

These endpoints allow you to view a list of payout summaries or a detailed report of an individual payout.

Settlement Summaries Request

Example summaries response:

[
  {
    "uuid": "b7916fbe-f30a-4435-b411-124634287a8ca",
    "payout_currency": "USD",
    "payout_date": "2019-12-09T15:52:33Z",
    "net_settlement_amount": 9370,
    "forex_fees": 0,
    "status": "Complete"
  },
  {
    "uuid": "c51343hba-d54b-5641-e341-15235523b3at",
    "payout_currency": "USD",
    "payout_date": "2019-12-10T15:52:33Z",
    "net_settlement_amount": 23470,
    "forex_fees": 0,
    "status": "Complete"
  }
]

GET https://gateway.sezzle.com/v2/settlements/summaries

Query Parameter Description
start-date* The UTC start date for the report. Must be in yyyy-mm-dd format.
end-date The UTC end date for the report. Must be in yyyy-mm-dd format. If omitted, will default to the current date.
offset The offset for the report. Limit is 20.
currency-code The ISO-4217 currency code selected by users at checkout. If omitted, will default to USD.

Settlement Details Request

Example details response:

total_order_amount,total_capture_amount,total_refund_amount,total_fee_amount,total_returned_fee_amount,total_chargeback_amount,total_chargeback_reversal_amount,total_interest_transfer_amount,total_correction_amount,total_referral_revenue_transfer_amount,total_bank_account_withdrawals,total_bank_account_withdrawal_reversals,forex_fees,net_settlement_amount,payment_uuid,settlement_currency,payout_date,payout_status
703.20,1.80,-5.00,-43.80,.30,0.00,0.00,-4.30,1.71,10.00,100.00,-100.00,0.00,693.61,a5c13qt1-4126-41d3-2fq8-9ca431f51431,USD,2019-11-02 00:05:00 +0000 UTC,Complete
type,order_capture_date,order_created_at,event_date,order_uuid,customer_order_id,external_reference_id,order_amount,amount,posting_currency,type_code,chargeback_code,sezzle_order_id,product_type,mid,card_network_auth_ref
ORDER,2019-11-01T19:09:50Z,2019-11-01T19:09:50Z,2019-10-22T19:09:50Z,bm99f-31vu1-kg00e-rae1g,1,12345,500.00,,USD,001,,66d78e86-fd96-4266-9217-b769c102a0a0,standard_checkout,,
ORDER,2019-11-01T19:09:50Z,2019-11-01T19:09:50Z,2019-10-22T19:09:50Z,va13d-474s9-3000e-nungg,13,12346,200.00,,USD,001,,5e0d4886-8c3d-4d4e-901a-2046a06c1e0f,long_term_lending,,
ORDER,2019-11-01T20:00:01Z,2019-11-01T00:00:01Z,2019-11-01T00:00:01Z,as41g-4v4s9-3000e-nunh0,1,12347,1.40,,USD,001,,a2c1a142-96ad-48c9-93d2-1acaaee9f073,four_pay_monthly,,
ORDER,2019-11-01T20:00:01Z,2019-11-01T20:00:01Z,2019-11-01T20:00:01Z,as62l-5ptqs-9g00e-pvk10,2,12348,1.80,,USD,001,,3f62dcba-f5a4-41be-ad8f-53e938b5f310,six_pay_monthly,,
CAPTURE,2019-11-01T20:00:01Z,2019-11-01T20:00:01Z,2019-11-01T20:00:01Z,as62l-5ptqs-9g00e-pvk10,2,12348,,1.80,USD,001,,3f62dcba-f5a4-41be-ad8f-53e938b5f310,affiliate,,
FEE,2019-11-01T19:09:50Z,2019-11-01T19:09:50Z,2019-11-01T19:09:50Z,bm99f-31vu1-kg00e-rae1g,1,12345,,-30.00,USD,003,,66d78e86-fd96-4266-9217-b769c102a0a0,standard_checkout,,
FEE,2019-11-01T19:09:50Z,2019-11-01T19:09:50Z,2019-11-01T19:09:50Z,va13d-474s9-3000e-nungg,13,12346,,-12.00,USD,003,,5e0d4886-8c3d-4d4e-901a-2046a06c1e0f,pay_in_full,,
FEE,2019-11-01T20:00:01Z,2019-11-01T00:00:01Z,2019-11-01T20:00:01Z,as41g-4v4s9-3000e-nunh0,1,12347,,-1.20,USD,003,,a2c1a142-96ad-48c9-93d2-1acaaee9f073,standard_checkout,,
FEE,2019-11-01T20:00:01Z,2019-11-01T20:00:01Z,2019-11-01T20:00:01Z,as62l-5ptqs-9g00e-pvk10,2,12348,,-0.60,USD,003,,3f62dcba-f5a4-41be-ad8f-53e938b5f310,affiliate,,
REFUND,2019-10-22T19:09:50Z,2019-10-22T19:09:50Z,2019-11-01T19:09:50Z,bm5rm-vg2js-1tsky-c2dsky,8,12344,,5.00,USD,002,,e4194956-de70-4958-9da4-6c05f276fdab,gift_card,,
RETURNED_FEE,2019-10-22T19:09:50Z,2019-10-22T19:09:50Z,2019-11-01T19:09:50Z,bm5rm-vg2js-1tsky-c2dsky,7,12344,,.30,USD,004,,e4194956-de70-4958-9da4-6c05f276fdab,long_term_lending,,
CORRECTION,,,2019-11-01T17:00:01Z,,,,,-1.29,,007,
CORRECTION,,,2019-11-01T17:00:01Z,,,,,3.00,,007,
INTEREST_TRANSFER,,,2019-11-01T18:00:01Z,,,,,-4.30,,008,
REFERRAL_REVENUE_TRANSFER,,,2019-11-01T15:00:01Z,,,,,10.00,,009,
BANK_ACCOUNT_WITHDRAWAL,,,2019-11-02T00:05:00Z,,,,,100.00,,010,
BANK_ACCOUNT_WITHDRAWAL_REVERSAL,,,2019-11-02T00:05:00Z,,,,,-100.00,,011,

GET https://gateway.sezzle.com/v2/settlements/details/{payout_uuid}

Query Parameter Description
metadata An optional comma-separated list of metadata keys. To add a metadata key as a column to the report line items, include the key in this list. When applicable, the value of the metadata key will be added to the line item. If no line items contain the metadata key, the key will not be added as a column.

The settlement details response contains two sections. The first two rows are a summary of the payout. The remaining rows contain the individual line items that contributed to the payout.

Summary column definitions:

Column Header Description
Total order amount The sum of all orders on this payout.
Total refund amount The sum of all refunds on this payout.
Total fee amount The sum of all fees on this payout.
Total returned fee amount The sum of all returned fees on this payout.
Total chargeback amount The sum of all chargebacks on this payout.
Total chargeback reversal amount The sum of all chargeback reversals on this payout.
Total interest transfer amount The sum of all interest transfers on this payout. If you are not participating in the interest program, this field will be omitted.
Total correction amount The sum of all corrections on this payout.
Total referral revenue transfer amount The sum of all referral revenue transfers on this payout.
Total bank account withdrawal amount The sum of all bank account withdrawals.
Total bank account withdrawal reversal amount The sum of all bank account withdrawal reversals, which reflect a bank account withdrawal that has failed.
Forex fees The cost of foreign exchange fees associated with this payout.
Net settlement amount Net amount of settlement.
Payment uuid The UUID for this payout.
Settlement currency The currency in which this payout was sent.
Payout date The date this payout was sent.
Payout status The current status of this payout.

Line item column definitions:

Column Header Description
Type Describes the type of event (Order, Fee, Refund, etc.).
Order capture date The date at which the order was captured. This field is empty if the order has not yet been captured.
Order created at The date at which the order was created.
Event date The date at which the event took place.
Order uuid The uuid associated with the order.
Customer order id The customer's order number.
External reference id The external reference ID submitted with the order.
Order Amount The order amount for the ORDER event
Amount The amount of the event.
Posting currency The customer's currency code.
Type code A numeric code that corresponds with the Type field.
Chargeback code A numeric code that corresponds with the type of chargeback submitted.
Sezzle order ID The internal ID Sezzle has assigned to this order.
Product type Describes the type of merchant product (Affiliate, Gift card, Standard_checkout, etc.)
Merchant identification number (MID) The ID that identifies the merchant and the legitimacy of the business and facilitates the movement of funds from the customer’s bank account to the merchant’s bank account.
Card Network Auth Ref A unique numeric or alphanumeric identifier assigned to credit card transactions, making it easier to locate and identify an individual credit card transaction.

Line item event type definitions:

Type Description Type Code
ORDER A completed order with Sezzle. 001
REFUND An order that has been refunded. 002
FEE The fee assessed by Sezzle for a given order. 003
RETURNED_FEE A fee refunded by Sezzle. 004
CHARGEBACK A chargeback resulting from a disputed order. 005
CHARGEBACK_REVERSAL A reversal of a chargeback resulting from a disputed order. 006
CORRECTION A manual correction to a payout. 007
INTEREST_TRANSFER A transfer from the Sezzle interest account. 008
REFERRAL_REVENUE_TRANSFER A payment earned from Sezzle's merchant referral program. 009
BANK_ACCOUNT_WITHDRAWAL A withdrawal of funds from your bank to cover a negative balance with Sezzle. 010
BANK_ACCOUNT_WITHDRAWAL_REVERSAL A failed BANK_ACCOUNT_WITHDRAWAL. 011
CAPTURE An order that has been captured. 012

Line item product type definitions:

Type Description
standard_checkout Standard pay in four checkout
four_pay_monthly 4 pay monthly order
six_pay_monthly 6 pay monthly order
long_term_lending Base long term lending product with no promotions
virtual_card Virtual card order

Interest Account Reports

Sezzle gives merchants the option to enroll in an interest account program. If you are enrolled in the interest account program, you can use these endpoints to get the current balance and activity on the interest account. Fractions of cents are tracked to properly calculate daily interest accrual even if the interest balance is low.

Interest Account Balance Request

Example balance response:

{
  "interest_balance": 5183.4624
}

GET https://gateway.sezzle.com/v2/interest/balance

Query Parameter Description
currency-code The ISO-4217 currency code of the interest account. If omitted, will default to USD.

Interest Account Activity Request

Example activity response:

type,event_date,interest_account_change_amount,interest_account_balance_after_change
INTEREST_PAYOUT,2019-12-21T19:10:00Z,122.8718,5101.4676
INTEREST_WITHDRAWAL,2019-12-21T19:20:00Z,-26.1000,5075.3676
INTEREST_ACCRUAL,2019-12-21T19:15:00Z,1.0702,5182.3922
INTEREST_ACCRUAL,2019-12-22T19:15:00Z,1.0702,5183.4624

GET https://gateway.sezzle.com/v2/interest/activity

Query Parameter Description
start-date* The start date for the report. Must be in yyyy-mm-dd format.
end-date The end date for the report. Must be in yyyy-mm-dd format. If omitted, will default to the current date.
offset The offset for the report. Limit is 20.
currency-code The ISO-4217 currency code of the interest account. If omitted, will default to USD.

Tokenization

Customer tokenization

Customer tokenization is akin to adding Sezzle as a payment method on file with the merchant, thus allowing the merchant to use Sezzle as a payment method for future orders (without customer interaction). A primary use case for customer tokenization is subscriptions. For example, a merchant may choose to tokenize a customer in order to charge by Sezzle on a semi-annual basis.

A typical process of tokenizing a customer in Sezzle might be, a user is signed into the merchant site and the user wants to add Sezzle as a stored payment method. The merchant can start a session with Sezzle and assign the session UUID to the known user. The merchant will redirect the user to Sezzle and the user can agree to accept tokenization. Once the user accepts, Sezzle will redirect the user back to the merchant site and also append a unique customer UUID to the merchant URL, thus allowing the merchant to assign this customer UUID to the user that started the session. The customer UUID can now be used to create an order by customer directly with Sezzle. Orders created by customer are treated the same as orders created by completing a Sezzle checkout.

Tokenization is not required and only necessary if the merchant has a need to charge by Sezzle outside of a typical checkout process. Sezzle recommends tokenization on an as-needed basis.

a4f2385-v2-tokenize-customer

  1. Merchant starts a session by calling /v2/session with customer tokenize of true. Including customer information is optional, but it can expedite the registration process for new Sezzle users.
  2. Sezzle returns the session tokenize token and an approval URL.
  3. Merchant redirects customer to the Sezzle approval URL.
  4. Customer can agree (or disagree) to allow future Sezzle transactions by the merchant and is redirected to the session complete URL. If the customer agrees to be tokenized, Sezzle will add a query parameter to the complete URL named customer-uuid, allowing the merchant to get the UUID of the customer. Alternatively, the merchant can call /v2/token with the session tokenize.token to get the UUID of the customer.
  5. Merchant can subsequently charge the customer by calling /v2/customer/{customer_uuid}/order to create an order. If successful and the authorization is approved, the merchant can use the /v2/order endpoints to release, capture, or refund the order.

The merchant also has the option to create an order and tokenize the customer in a single session. In this instance, the merchant should redirect the customer to the order checkout URL. During checkout, the customer can agree to allow future Sezzle transactions by the merchant (i.e. accept tokenization). If the customer agrees to be tokenized, Sezzle will add a query parameter to the complete URL named customer-uuid. Note: Sezzle returns both a checkout URL and an approval URL on a create session that includes both tokenization and an order. If the customer does not agree to be tokenized during checkout, the merchant can use the approval URL at a later time.

Get session tokenization

Example response:

{
  "token": "4f8cf865-2089-4423-85fd-ea833a16b62d",
  "expiration": "2020-04-29T19:31:54Z",
  "links": [
    {
      "href": "https://gateway.sezzle.com/v2/token/4f8cf865-2089-4423-85fd-ea833a16b62d/session",
      "method": "GET",
      "rel": "self"
    }
  ],
  "customer": {
    "uuid": "a9d8e15c-5e4a-4201-aa8f-7540f934a9a2",
    "expiration": "2020-10-13T14:29:41Z",
    "links": [
      {
        "href": "https://gateway.sezzle.com/v2/customer/a9d8e15c-5e4a-4201-aa8f-7540f934a9a2",
        "method": "GET",
        "rel": "self"
      }
    ]
  }
}

GET https://gateway.sezzle.com/v2/token/{token}/session

You can use this endpoint to get the current state of a tokenization session. If the customer is not tokenized, then the customer object will be omitted.

Customers

Use the customers endpoints to get a list of customers, get details on an existing customer, delete a customer, preapprove an amount for the customer, or create an order for a customer.

Get a list of customers

Example response:

[
  {
    "uuid": "a9d8e15c-5e4a-4201-aa8f-7540f934a9a2",
    "expiration": "2020-04-28T17:58:11Z",
    "links": [
      {
        "href": "https://gateway.sezzle.com/v2/customer/a9d8e15c-5e4a-4201-aa8f-7540f934a9a2",
        "method": "GET",
        "rel": "self"
      },
      {
        "href": "https://gateway.sezzle.com/v2/customer/a9d8e15c-5e4a-4201-aa8f-7540f934a9a2",
        "method": "DELETE",
        "rel": "self"
      },
      {
        "href": "https://gateway.sezzle.com/v2/customer/a9d8e15c-5e4a-4201-aa8f-7540f934a9a2/preapprove",
        "method": "POST",
        "rel": "preapprove"
      },
      {
        "href": "https://gateway.sezzle.com/v2/customer/a9d8e15c-5e4a-4201-aa8f-7540f934a9a2/order",
        "method": "POST",
        "rel": "order"
      }
    ]
  }
]

GET https://gateway.sezzle.com/v2/customer

You can retrieve a list of existing customers using this endpoint.

Get a customer

Example response:

{
  "uuid": "a9d8e15c-5e4a-4201-aa8f-7540f934a9a2",
  "links": [
    {
      "href": "https://gateway.sezzle.com/v2/customer/a9d8e15c-5e4a-4201-aa8f-7540f934a9a2",
      "method": "GET",
      "rel": "self"
    },
    {
      "href": "https://gateway.sezzle.com/v2/customer/a9d8e15c-5e4a-4201-aa8f-7540f934a9a2",
      "method": "DELETE",
      "rel": "self"
    },
    {
      "href": "https://gateway.sezzle.com/v2/customer/a9d8e15c-5e4a-4201-aa8f-7540f934a9a2/preapprove",
      "method": "POST",
      "rel": "preapprove"
    },
    {
      "href": "https://gateway.sezzle.com/v2/customer/a9d8e15c-5e4a-4201-aa8f-7540f934a9a2/order",
      "method": "POST",
      "rel": "order"
    }
  ],
  "email": "john.doe@sezzle.com",
  "first_name": "John",
  "last_name": "Doe",
  "phone": "5555045294",
  "dob": "1990-02-25",
  "token_expiration": "2020-04-27T14:46:59Z",
  "billing_address": {
    "name": "John Doe",
    "street": "123 W Lake St",
    "street2": "Unit 104",
    "city": "Minneapolis",
    "state": "MN",
    "postal_code": "55408",
    "country_code": "US",
    "phone_number": "5555045294"
  }
}

GET https://gateway.sezzle.com/v2/customer/{customer_uuid}

You can use this endpoint to get details on an existing customer

Delete a customer

DELETE https://gateway.sezzle.com/v2/customer/{customer_uuid}

You can use this endpoint to delete an existing customer

There is no response body for this request. If successful, we return an HTTP 204 Status No Content.

Preapprove amount by customer

Example request:

{
  "amount_in_cents": 5000,
  "currency": "USD"
}

Example response:

{
  "uuid": "6c9db5d4-d09a-4224-860a-b5438ac32ca8",
  "approved": true
}

POST https://gateway.sezzle.com/v2/customer/{customer_uuid}/preapprove

You can use this endpoint to preapprove an amount for a customer. The primary purpose of this API is for the merchant to verify a customer will be approved for the order amount prior to creating an order. This API does not authorize the amount nor does it hold the amount for a future order. Also, you are not required to use this API before creating a customer order.

An example use case is, a merchant intends to charge a customer by Sezzle for an upcoming subscription payment. The merchant could check a day or two in advance of the payment to confirm the order will be approved. If not, the merchant could reach out to the customer requesting the Sezzle account be updated prior to the payment date to avoid a potential failed payment.

Preapprove Object

A price Object

Price Object

Parameter Type Description
amount_in_cents* number The amount in cents to preapprove
currency* string The 3 character currency code as defined by ISO 4217

Create order by customer

Example request:

{
  "intent": "AUTH",
  "reference_id": "annual_sub_123",
  "order_amount": {
    "amount_in_cents": 5000,
    "currency": "USD"
  }
}

Example response:

{
  "uuid": "6c9db5d4-d09a-4224-860a-b5438ac32ca8",
  "links": [
    {
      "href": "https://gateway.sezzle.com/v2/order/6c9db5d4-d09a-4224-860a-b5438ac32ca8",
      "method": "GET",
      "rel": "self"
    },
    {
      "href": "https://gateway.sezzle.com/v2/order/6c9db5d4-d09a-4224-860a-b5438ac32ca8",
      "method": "PATCH",
      "rel": "self"
    },
    {
      "href": "https://gateway.sezzle.com/v2/order/6c9db5d4-d09a-4224-860a-b5438ac32ca8/release",
      "method": "POST",
      "rel": "release"
    },
    {
      "href": "https://gateway.sezzle.com/v2/order/6c9db5d4-d09a-4224-860a-b5438ac32ca8/capture",
      "method": "POST",
      "rel": "capture"
    },
    {
      "href": "https://gateway.sezzle.com/v2/order/6c9db5d4-d09a-4224-860a-b5438ac32ca8/refund",
      "method": "POST",
      "rel": "refund"
    }
  ],
  "intent": "AUTH",
  "reference_id": "annual_sub_123",
  "order_amount": {
    "amount_in_cents": 5000,
    "currency": "USD"
  },
  "authorization": {
    "authorization_amount": {
      "amount_in_cents": 5000,
      "currency": "USD"
    },
    "approved": true,
    "expiration": "2020-04-23T16:13:44Z"
  }
}

POST https://gateway.sezzle.com/v2/customer/{customer_uuid}/order

You can use this endpoint to create an order for a customer

Header Parameters

Parameter
Type Description
Sezzle-Request-Id string A unique, merchant-generated ID. Use this header to enforce idempotency when authorizing order payment.

Order Payment Object

Parameter Type Description
intent* string Accepted values are "AUTH" or "CAPTURE"
reference_id* string A reference ID for the order
order_amount* object The amount and currency of the order
financing_options array The financing option of the order. Only one option can be included.

Order Amount Object

A price object. The amount must be greater than 99.

Price Object

Parameter Type Description
amount_in_cents* number The order amount in cents
currency* string The 3 character currency code as defined by ISO 4217

Webhooks

You can use these endpoints to configure your webhooks

Create webhooks

Example request:

{
  "url": "https://example.com/webhooks",
  "events": [
    "customer.tokenized"
  ]
}

Example response:

{
  "uuid": "747cf28a-bb5c-46a8-a288-d9b006fd6113",
  "links": [ ]
}

POST https://gateway.sezzle.com/v2/webhooks

This endpoint can be used to subscribe to webhooks

Webhooks Object

Parameter Type Description
url* string The url you are using to receive webhooks
events* array An array of events to subscribe to

Valid Webhook Events

We accept the following Webhook events

Event Description
customer.tokenized This webhook is called when a customer is tokenized
order.authorized This webhook is called when an order is authorized by Sezzle
order.captured This webhook is called when an order is captured by Sezzle
order.refunded This webhook is called when an order is refunded by Sezzle

List webhooks

Example response:

[
  {
    "uuid": "747cf28a-bb5c-46a8-a288-d9b006fd6113",
    "links": [ ],
    "url": "https://example.com/webhooks",
    "events": [
      "customer.tokenized"
    ]
  }
]

GET https://gateway.sezzle.com/v2/webhooks

You can get a list of your webhooks using this endpoint

Delete webhooks

There is no response body for this request. If successful, we return an HTTP 204 Status No Content.

DELETE https://gateway.sezzle.com/v2/webhooks/{webhooks_uuid}

You can delete your webhooks using this endpoint

Test Webhooks

There is no response body for this request. If successful, we return an HTTP 201 Status Created.

POST https://gateway.sezzle.com/v2/webhooks/test

You can trigger a test event using this endpoint

Test Webhooks Object

Parameter Type Description
event* string One of the Valid Webhook Events
url string A url to receive the test webhook. If omitted, the test webhook is sent to all urls subscribed to that event (see List Webhooks)

Webhook Signature

Webhooks are signed with an HMAC using the SHA256 algorithm. The header Sezzle-Signature value is a hash of the webhook's body with your merchant private key. You should always verify that the signature matches the webhook data to ensure that the webhook came from Sezzle.

Webhook Acceptance and Retries

A webhook has been successfully sent when we receive an HTTP 200 Status OK response. Any other response will queue the webhook to be retried. We will retry several times within the first hour, and a few times for the remainder of that day. The final two attempts are made one day later, and then 3 days later, for a total elapsed time of five days. If the final retry fails, then that subscribed webhook will be deleted for all events. You will need to create the webhook again to resubscribe, if desired.

It is possible that new webhooks will arrive before old webhooks have been retried, so webhooks are not guaranteed to be received in cronological order.

Webhooks are signed using the current merchant private key, not the private key at the time of their creation, so a retried webhook may have a different signature if the keys are changed after its originating event.

SDKs

Javascript SDK

The Javascript SDK can be used for a simple, lightweight integration, but it also includes an in-context mode which will host the Sezzle checkout in a modal iframe or pop-up window.

Installing the Javascript SDK

Include https://checkout-sdk.sezzle.com/checkout.min.js in the <head> section of the page.

Sezzle Button Configuration

<!-- button placeholder -->
<div id="sezzle-smart-button-container"></div>

<!-- button with customization -->
<div id="sezzle-smart-button-container" style="text-align: center"
  templateText="Pay with %%logo%%"
  borderType="semi-rounded"
  customClass="action,primary,checkout">
</div>
Attribute Description
templateText Text that will prepended with the Sezzle logo. Default is Checkout with %%logo%%
borderType Options are square and semi-rounded
customClass Custom classes to be applied
paddingX X-axis padding. Default is 13px
paddingY Y-axis padding. Default is 7px
width Width of the button
height Height of the button. Default is 20%

Render the Sezzle Button

// render button
checkout.renderSezzleButton("sezzle-smart-button-container");

Call renderSezzleButton passing the id of the placeholder element defined in Button Configuration, above.

Checkout Configuration

// configure checkout
const checkout = new Checkout({
  'mode': "popup",
  'publicKey': "xxxx",
  'apiMode': "sandbox",
  'apiVersion': "v2"
});
Attribute Options
mode redirect
apiMode sandbox
apiVersion v2
publicKey* xxxx (used only when creating a checkout or capturing payment)

Initialize the Checkout

checkout.init({
    onClick: function () {
        event.preventDefault();
        checkout.startCheckout({
          checkout_payload: {
            "order": {
              "intent": "AUTH",
              "reference_id": "ord_12345",
              "description": "sezzle-store - #12749253509255",
              "order_amount": {
                "amount_in_cents": 10000,
                "currency": "USD"
              }
            }
          }
        });
    },
    onComplete: function (event) {
        console.log(event.data)
    },
    onCancel: function() {
        console.log("checkout canceled");
    },
    onFailure: function() {
        console.log("checkout failed");
    }
})

The SDK requires the following event handlers:

Event Description
onClick* Sezzle Button is clicked by the user
onComplete* Sezzle payment is successfully completed
onCancel* Sezzle payment is cancelled
onFailure* Sezzle payment has failed

Hosting the Checkout

// e.g. start checkout with url
checkout.startCheckout({
  checkout_url: "https://checkout.sezzle.com/?id=example"
});

To be implemented in the checkout onClick handler. There are two methods for hosting a checkout.

  1. Use a checkout payload as detailed in the Session Object.
    • The cancel and complete urls are not required for iframe and popup mode.
  2. Use an existing checkout url.
    • The mode used when configuring the SDK checkout must match the checkout_mode when creating a session.
    • The parent window origin must be provided in the cancel and complete urls when the checkout_mode is iframe or popup.

Tokenization is not supported in the SDK.

Checkout Events

Events are only triggered in iframe or popup mode. The redirect mode will instead redirect to the complete or cancel url.

Checkout Completed

// checkout completed
function onCompleteHandler(event) {
  var data = event.data || Object.create(null);

  console.log('checkout data:',
    data.session_uuid,
    data.order_uuid);
}

checkout.init({
  onComplete : onCompleteHandler
});

Typically implemented in the onComplete handler. Capturing an order is not required if the CAPTURE intent was used when creating the checkout.

Capture Payment

// capture payment
var payload = {
  capture_amount: {
    amount_in_cents: 5000,
    currency: "USD"
  }
};

checkout.capturePayment(data.order_uuid, payload);

The capture payment method requires two parameters, the order_uuid and the payload as detailed in the Capture Amount By Order Object.

Installment Plan

const checkout = new Checkout({});
checkout.getInstallmentPlan(1000);
{
    "schedule": "bi-weekly",
    "totalInCents": 1000,
    "installments": [
        {
            "installment": 1,
            "amountInCents": 250,
            "dueDate": "2020-10-14"
        },
        {
            "installment": 2,
            "amountInCents": 250,
            "dueDate": "2020-10-28"
        },
        {
          "installment": 3,
            "amountInCents": 250,
            "dueDate": "2020-11-11"
        },
        {
          "installment": 4,
            "amountInCents": 250,
            "dueDate": "2020-11-25"
        }
    ]
}

This function will provide the installment details based on an amount in cents. An existing checkout can be used, or a checkout without any configuration can also be used to quickly get installment details.

Virtual Card SDK

The Sezzle Virtual Card is intended for merchants interested in accepting Sezzle in the form of a credit card. This allows merchants to process Sezzle using their existing credit card form in the checkout.

If you have any questions regarding our API, please reach out to our team here: Submit Merchant Help Request

You should have an approved Sezzle account to start the integration process. Please visit our signup page if you don't have a Sezzle account already.

The endpoints in this guide also require an authentication token.

Create a card Session

Example request:

{
    "origin": "https://example.com",
    "mode": "iframe",
    "merchant_reference_id": "merchant-cart-id-max-255",
    "amount_in_cents": 1000,
    "currency": "USD",
    "customer": {
        "email": "john.doe@example.com",
        "first_name": "John",
        "last_name": "Doe",
        "phone": "6125551234",
        "billing_address": {
            "street": "123 W Lake St",
            "street2": "Unit 104",
            "city": "Minneapolis",
            "state": "MN",
            "postal_code": "55408",
            "country_code": "US"
        }
    },
    "items": [
    {
      "name": "Blue tee",
      "sku": "sku123456",
      "quantity": 1,
      "price": {
        "amount_in_cents": 1000,
        "currency": "USD"
      }
    }
  ]
}

Example response:

{
  "uuid": "fadbc642-05a4-4e38-9e74-80e325623af9",
  "dashboard_url": "https://dashboard.sezzle.com/example?id=0001"
}

A card session represents the issuance of a Sezzle virtual card to a Sezzle user and/or the agreement of a Sezzle user to use the virtual card as payment. Use the card session endpoints to create and update a card session.

POST https://gateway.sezzle.com/v2/session/card

You can use this endpoint to create a virtual card session. The response will include a session uuid and the Sezzle customer dashboard URL to be hosted in an iframe or popup.

Card Session Object

Parameter Type Description
origin* string The window origin of the host
mode* string iframe|popup
merchant_reference_id string Typically a checkout or cart id, currently used for tracking only
amount_in_cents int The amount of the order in cents
currency string The 3 character currency code as defined by ISO 4217
customer object The customer for this session
card_response_format string Optional token. This determines the format of card data sent by window messaging on the front end. The default format is clear text.

Customer object

Parameter Type Description
email string The customer's email address
first_name string The customer's first name
last_name string The customer's last name
phone string The customer's phone number
billing_address object The customer's billing address

Address Object

Parameter Type Description
street string The street and number of the address
street2 string The apt or unit
city string The city
state string The 2 character state code
postal_code string The postal delivery code
country_code string The 2 character country code

Item Object

Parameter Type Description
name string The name of the item
sku string The sku identifier
quantity int The quantity purchased
price object The price object

Price Object

Parameter Type Description
amount_in_cents int The amount of the item in cents
currency string The 3 character currency code as defined by ISO 4217

Get card data by token

Example response:

{
  "cvv_number": "string",
  "expiration_date": "MMYY",
  "first_name": "string",
  "last_name": "string",
  "pan": "string"
}

GET https://gateway.sezzle.com/v2/session/card/token/{token}

You can use this endpoint to request card data with the checkout card token. The card token is temporary and only available for a limited time. This endpoint is only needed when a card session is created with a card response format of token.

 

Update a card session

Example request:

{
    "order_id": "merchant_order_number"
}

There is no response body for this request. If successful, we return an HTTP 204 Status No Content.

PATCH https://gateway.sezzle.com/v2/session/{session_uuid}/card

After the virtual card transaction for this session is successfully completed and a Sezzle order is created, call this endpoint to assign your order ID to the (external) reference ID of the Sezzle order.

Update Order Object

Parameter Type Description
order_id* string Your order ID (or number)

 

Javascript SDK

A virtual card checkout implements the Card Session API to provide an easy to use, in-context solution for issuing and using a Sezzle virtual card as payment.

Features

Installing the Javascript SDK

<head>
    <script type="text/javascript" src="https://checkout-sdk.sezzle.com/checkout.min.js"></script>
</head>

Include https://checkout-sdk.sezzle.com/checkout.min.js in the <head> section of the page.

Sezzle Button Configuration

<!-- button placeholder -->
<div id="sezzle-smart-button-container"></div>

<!-- button with customization -->
<div id="sezzle-smart-button-container" style="text-align: center"
  templateText="Pay with %%logo%%"
  borderType="semi-rounded"
  customClass="action,primary,checkout">
</div>
Attribute Description
templateText Text that will prepended with the Sezzle logo. Default is Checkout with %%logo%%
borderType Options are square and semi-rounded
customClass Custom classes to be applied
paddingTop Default is 1px
paddingBottom Default is 7px
paddingLeft Default is 30px
paddingRight Default is 30px
sezzleImageWidth Default is 84px
sezzleImagePositionTop Position of the Sezzle logo from top.
sezzleImagePositionBottom Position of the Sezzle logo from bottom.
sezzleImagePositionLeft Position of the Sezzle logo from left.
sezzleImagePositionRight Position of the Sezzle logo from right.
letterSpacing Spacing between the templateText letter.
width Width of the button
height Height of the button. Default is 4.2em

Render the Sezzle Button

checkout.renderSezzleButton("sezzle-smart-button-container");

Call renderSezzleButton passing the id of the placeholder element defined in Button Configuration, above.

Checkout Configuration

const checkout = new Checkout({
    'mode': "iframe|popup",
    'publicKey': "xxxx",
    'apiMode': "sandbox|live",
    'isVirtualCard': true
});
Attribute Options
mode iframe|popup
apiMode sandbox|live
isVirtualCard true
publicKey* xxxx (used only when creating a checkout)

For security reasons, Sezzle must enable hosting a Sezzle virtual card checkout for merchants. To have it enabled, please send your Sezzle Merchant ID and a list of domains to be allowed per environment (production and sandbox) to our Merchant Support team.

Initialize the Checkout

checkout.init({
    onClick: function () {
        event.preventDefault();
        checkout.startCheckout({
            checkout_payload: {
                amount_in_cents: 100,
                currency: "USD",
                merchant_reference_id: "merchant-checkout-id-max-255",
                customer: {
                    email: "test@test.com",
                    first_name: "John",
                    last_name: "Doe",
                    phone: "0987654321",
                    billing_address_street1: "3432 Terry Lane",
                    billing_address_street2: "12",
                    billing_address_city: "Katy",
                    billing_address_state: "TX",
                    billing_address_postal_code: "77449",
                    billing_address_country_code: "US"
                  },
                items: [
                  {
                    name: "Blue tee",
                    sku: "sku123456",
                    quantity: 1,
                    price: {
                      amount_in_cents: 1000,
                      currency: "USD"
                    }
                  }
                ]
            }
        });
    },
    onComplete: function (event) {
        console.log(event.data)
    },
    onCancel: function() {
        console.log("checkout canceled");
    },
    onFailure: function() {
        console.log("checkout failed");
    }
})

The SDK requires the following event handlers:

Event Description
onClick* Sezzle Button is clicked by the user
onComplete* Sezzle Virtual Card is successfully approved
onCancel* Sezzle Virtual Card approval process is cancelled
onFailure* Sezzle Virtual Card is not approved

Hosting the Checkout

To be implemented in the onClick handler. checkout_payload is optional, however, providing as much information as possible will improve the user experience. Note, the checkout_payload should be the request body of a create card session.

Checkout Events

 

Completed Checkout Data

Default response format:

{
    "session_id": "example-sezzle-id",
    "card": {
        "firstName": "string",
        "lastName": "string",
        "pan": "string",
        "cvv": "string",
        "expiryMonth": "string",
        "expiryYear": "string"
    },
    "holder": {
        "email": "string",
        "phone": "string",
        "firstName": "string",
        "lastName": "string",
        "address1": "string",
        "address2": "string",
        "city": "string",
        "state": "string",
        "country": "string",
        "postalCode": "string"
    }
}

Token response format:

{
    "card": {
        "token": "string"
    }
}

The default completed checkout data is in clear text. If you choose to use a card response format of token, then the card object will instead include a token that can be used to request card data.

 

Set the Order Reference ID

checkout.setOrderReferenceID({
    session_id: "example-session-id",
    order_id: "merchant-order-id"
});

In many cases, the merchant order ID will not be generated until after the checkout is completed and an order is created. Call setOrderReferenceID to set the Sezzle Order Reference ID with the merchant order ID after the virtual card transaction has been successfully completed.

 

Manual Integration

window.addEventListener('message', function() {
    var data = event.data || Object.create(null);

    if (data.szl_source !== 'v_card') {
        console.log('invalid source');
        return;
    }

    var card = data.card;
    var holder = data.holder
    if (!card && !holder) {
        console.log('failed virtual card session');
        return;
    }

    console.log('card data:',
        card.firstName,
        card.lastName, 
        card.pan,
        card.cvv,
        card.expiryMonth,
        card.expiryYear);

    console.log('holder data:',
        holder.email,
        holder.phone,
        holder.firstName,
        holder.lastName,
        holder.address1,
        holder.address2,
        holder.city,
        holder.state,
        holder.country,
        holder.postalCode);
});

If the Virtual Card SDK is not a viable option, the manual integration will guide you through the steps to complete a virtual card session in your checkout.

Overview

  1. Create a virtual card session.
  2. Add a window event listener with type message to the checkout page.
  3. Open the card session dashboard_url using the mode provided in the create card session request.
  4. Sezzle will post a message to the listener when the user has completed the card session.
  5. Verify message event.data exists.
  6. Verify event.data.szl_source is equal to v_card.
  7. Verify event.data.card and event.data.holder both exist.
    • If exists, use card and holder data to submit the order by credit card
    • If not, the user did not provide virtual card data
  8. (Optional) Upon order creation, use the card session uuid and the order ID to update the card session.

Widget SDK

Purpose

Increase average order value and boost conversions!

The Sezzle promotional messaging widget conveniently informs shoppers of available financing as they browse.

Follow the documentation below to install the Sezzle widget on your product and cart pages.

Many of our top platforms have in-app one-click installation. If the one-click installation is not available for your platform or does not appear to be compatible with your theme, you may either follow the manual installation instructions below or reach out to merchantsupport@sezzle.com

The Sezzle promotional messaging widget installation requires two components: the "configuration" and the "script".

How It Works

When the page loads, the script will reach out to the widget-server to obtain the Javascript and configuration details. If a configuration is not found on the server, it will look for a local configuration.

If your site has a non-Shopify storefront, please install the script before requesting assistance.

Configuring the Widgets

Basic configuration

<script type="text/javascript">
  document.sezzleConfig = {
    "configGroups": [
      {
        "targetXPath": "YOUR IDENTIFIER HERE"
      }
    ]
  }
</script>

Additional configuration

<script type="text/javascript">
  document.sezzleConfig = {
    configGroups: [
      {
        "targetXPath": ".price",
        "renderToPath": "..",
        "urlMatch": "product",
        "theme": "auto",
        "ignoredPriceElements": ["DEL","STRIKE"],
        "ignoredFormattedPriceText": ["Subtotal", "Total:", "Sold Out"],
        "alignment": "inherit",
        "alignmentSwitchMinWidth": 0,
        "alignmentSwitchType": "inherit",
        "containerStyle": {
          "marginTop": "0px",
          "marginBottom": "0px",
          "marginRight": "0px",
          "marginLeft": "0px"
        },
        "textStyle": {
          "color": "inherit"
          "fontFamily": "inherit",
          "fontSize": "14px",
          "fontWeight": 500,
          "lineHeight": "13px",
          "maxWidth": "480px"
        },
        "logoStyle": {
          "transform": "scale(1)",
          "transformOrigin": "center",
          "margin": "0px"
        },
        "hideClasses": [],
        "relatedElementActions": [{
          "relatedPath": "..",
          "initialAction": function(r,w){
            if(r.className.indexOf('compare') > -1){
              w.style.display = "none"
            }
          }
        }]
      }
    ],
    "language": document.querySelector("html").lang || "en",
    "apDualInstall": false,
    "minPrice": 0,
    "maxPrice": 250000,
    "observeElements": [
      {
        "eventType": "click",
        "element": ".options-selector"
      }
    ]
  }
</script>

The document.sezzleConfig object will accept the following keys, whose purpose and usage is outlined below:

configGroups (required)

Purpose: Allows multiple configurations for one store to suit different page types, layouts, or applications
Type: array of objects
Default: [{}]
Additional Details: Keys available for use within configGroups are outlined later in this document.

apDualInstall (optional)

Purpose: Afterpay's logo is appended to widget content. When clicked, the competitor's modal will display.
Type: boolean
Default: false

minPrice (optional)

Purpose: Minimum price in cents for which Sezzle can be selected at checkout. If the price at targetXPath is lower than this number, the widget will render with a note stating the minimum eligible price required.
Type: number
Default: 0
Additional Details: This configuration does not prevent a customer from checking out with Sezzle below this price. For more information on setting a gateway minimum, contact your Merchant Success representative or use the Contact Us section of the Sezzle Merchant Dashboard.

maxPrice (optional)

Purpose: Maximum price in cents for which the widget should be rendered. If the price at targetXPath is higher than this number, the widget will not render on the page.
Type: number
Default: 250000

language (optional)

Purpose: Language in which the widget text should be rendered.
Type: string
Options: 'en', 'fr', 'es'
Default: document.querySelector('html').lang
Additional Details: Currently, SezzleJS only supports 'en', 'fr', and 'es'. If the specified language is not supported, the translation will default to English.

observeElements (optional)

Purpose: Can attach event listeners to DOM element and re-initialize widget.
Type: array of objects
Additional Details: Each object should have an 'element' key with a string value containing an id or class & a valid 'eventType' such as 'click'

configGroups

Each object within the configGroups array will accept the following keys, whose purpose and usage is outlined below:

targetXPath (required)

Purpose: ID, class, or path to the element in the webpage where the product price text value will be detected.
Type: string
Default: ''
Additional Details: To indicate a path, all subpaths need to be separated by the '/' character. IDs need to be preceded by a '#' character. Classes needed to be preceded by a '.' character. Tag names need to be followed by the applicable index. The format of a tag name is as follows: tagName-Index (e.g. 'SPAN-2'). The indexes are zero-based, such that the first element of the specified type within the parent element is at index 0.

renderToPath (optional)

Purpose: Path from the targetXPath to the element in the webpage after which the Sezzle widget should be rendered.
Type: string
Default: '..'
Additional Details: '.' will place the widget as the next element sibling of the target element. To move the widget to a parent container, use '../' for each parent level. You may then traverse downward using ID, class, tag-index, or pseudo-selectors. As with targetXPath, prepend IDs with '#', classes with '.', and append tag names with the index (tagName-Index). Append pseudo-selectors with '::'. It is recommended to keep the renderToPath as simple as possible to maximize compatibility.

urlMatch (optional)

Purpose: Specific word appearing in the url of pages where the widget config should be applied.
Type: string
Default: ''
Additional Details: Typical values are 'product' or 'cart', as applicable

theme (optional)

Purpose: Updates the logo color to coordinate and contrast with different background colors of websites.
Type: string
Options: dark, light, black-flat, white-flat
Default: ''
Additional Details: If theme is not specified, the widget will attempt to detect the background color and apply the appropriate contrasting logo. Use "light" or "black-flat" for light backgrounds, and "dark" or "white-flat" for dark backgrounds.

containerStyle (optional)

Purpose: Custom styling to apply to the Sezzle widget container.
Type: object
Default: {}
Additional Details: The object will accept any CSS styling in JSON format. Keys must be surrounded by '', given in camelCase instead of kebob-case, and separated from the following key by a comma instead of a semi-colon.

textStyle (optional)

Purpose: Custom styling to apply to the Sezzle text within the widget.
Type: object
Default: {}
Additional Details: The object will accept any CSS styling in JSON format. Keys must be surrounded by '', given in camelCase instead of kebob-case, and separated from the following key by a comma instead of a semi-colon.

logoStyle (optional)

Purpose: Custom styling to apply to the Sezzle logo within the widget.
Type: object
Default: {}
Additional Details: The object will accept any CSS styling in JSON format. Keys must be surrounded by '', given in camelCase instead of kebob-case, and separated from the following key by a comma instead of a semi-colon.

relatedElementActions (optional)

Purpose: Functions related to Sezzle widget. Listen for changes on the webpage after the Sezzle widget loads.
Type: array of objects
Default: []
Additional Details: Each object in the array has three available keys: relatedPath, which targets an element in relation to the targetXPath (in the same manner as renderToPath); action; and initialAction, with preset params corresponding to the relatedPath element and the current widget which performs the provided function as the widget is rendering

ignoredPriceElements (optional)

Purpose: Direct child elements of targetXPath to be disregarded when detecting the price and rendering the widget.
Type: array of strings
Default: []
Additional Details: ignoredPriceElements can be used to solve targetXPath variations between sale and regular-priced items. In this case, targetXPath should point to the parent element surrounding the old and the new prices, then ignoredPriceElements will specify the old/compare-at price element. As with targetXPath, prepend IDs with '#', classes with '.', and append tag names with the index (tagName-Index).

ignoredFormattedPriceText (optional)

Purpose: Text strings within the targetXPath to be disregarded when detecting the price and rendering the widget.
Type: array of strings
Default: ['Subtotal', 'Total:', 'Sold Out']

hideClasses (optional)

Purpose: XPath of elements that should be hidden when Sezzle's widget is showing. This is useful for hiding a product similar to Sezzle that is not available in a country where Sezzle is.
Type: array of strings
Default: []
Additional Details: Despite what the name suggests, this config option accepts an array of xpaths. As with targetXPath, prepend IDs with '#', classes with '.', and append tag names with the index (tagName-Index).

alignment (optional)

Purpose: Alignment of the widget relative to the parent element.
Type: string
Options: left, center, right, auto
Default: 'auto'

alignmentSwitchMinWidth (optional)

Purpose: Screen width in pixels below which the alignment switches to alignmentSwitchType instead of alignment.
Type: number
Default: 0
Additional Details: The most common breakpoint is 768 (handheld vs desktop). alignmentSwitchMinWidth is typically only necessary when alignment is not auto.

alignmentSwitchType (optional)

Purpose: Alignment of the widget relative to the parent element to be applied when the viewport width is narrower than alignmentSwitchMinWidth.
Type: string
Options: left, center, right, auto
Default: 'auto'

Uploading the Widgets

The script with the applicable merchant ID must be included after document.sezzleConfig is defined.

<script src="https://widget.sezzle.com/v1/javascript/price-widget?uuid=YOUR MERCHANT ID HERE"></script>

After building up the config, it is time to upload the widgets to your webpages! The SDK needs to be called in the HTML of the webpage for the widgets to be rendered. Place the config and the widget script at the bottom of the code file for the HTML page, and you should be all set!

A pre-populated snippet should be provided in your Sezzle Merchant Dashboard Setup Checklist. If it is unavailable, you may start with the following snippet:

When using this snippet to add the widget script to your site, you must replace "YOUR MERCHANT ID HERE" with the 36-character Sezzle Merchant ID found in the Business Settings of your Sezzle Merchant Dashboard for the applicable store. Please do not re-use IDs across multiple URLs.

Plugin Guides

BigCommerce

This guide describes how to integrate Sezzle into your BigCommerce website so that you can provide Sezzle as a payment option for your customers. After integrating Sezzle, your BigCommerce site will:

This integration is only available with BigCommerce's Optimized One Page Checkout.

Integration Steps Overview

  1. Enable Sezzle as an online payment method
  2. Install and configure the Sezzle BigCommerce App
  3. Test your integration
  4. (Optional) Sandbox Testing

Before You Begin

  1. You should have a Sezzle merchant account.
  2. Please visit our signup page if you don't have an account.
  3. Make sure you have the following Sezzle details handy.
  4. Merchant ID
  5. Public API Key
  6. Private API Key

  7. Familiarize yourself with the transaction flow when buying with Sezzle.

Enable Sezzle as an online payment method

  1. Go to Store Setup > Payments.

payments

  1. Go to Online Payment Methods, find Sezzle and click Set up.

online payments

  1. Copy your Public Key and Private Key from your Sezzle Merchant Dashboard, and paste them into the corresponding fields.
  2. Select the Transaction Type.
  3. Note: If you select Authorize only, payment will only be authorized and will have to be captured later in BigCommerce.
  4. Select the Test Mode: No(Recommended), or Yes for testing.
  5. Click on Save.

Install the Sezzle BigCommerce App

  1. Log in to your website's BigCommerce store admin page.
  2. In the left sidebar, click Apps > Marketplace.
  3. Click BigCommerce.com/Apps.

apps

  1. Search for Sezzle.

search

  1. Click Sezzle, then click Get This App.

marketplace

  1. Click Install.

install

  1. Check the PCI Compliance box, then click Confirm to start the installation.

pci

BigCommerce Sandbox Testing

  1. Select the Test Mode as Yes from Sezzle Settings in Payments section of BigCommerce admin. Make sure you are doing this on your dev/staging website.

sandbox

  1. On your website, add an item to the cart, then proceed to Checkout and select Sezzle as the payment method.
  2. Click Place Order and you should be redirected to the Sezzle checkout page. If prompted, sign in.

checkout

  1. . Enter the payment details using test data then click Complete Order.
  2. After the payment is completed on Sezzle, you should be redirected back to your website and see a successful payment page.
  3. Sandbox testing is complete. You can log in to your Sezzle Merchant Sandbox Dashboard to see the test order you just placed.

BigCommerce Live Checkout

  1. Select the Test Mode as No(Recommended) from Sezzle Settings in Payments section of BigCommerce admin.
  2. On your website, add an item to your cart, then proceed to Checkout and select Sezzle as the payment method.

cart

  1. Click Place Order.

checkout

  1. If you are redirected to the Sezzle checkout page, your integration is complete. Congratulations!

  2. Warning Don't complete the payment. Your checkout is now live, so you will be charged if you complete it.

Widget Pre-Configuration

  1. Make sure you have the Sezzle App installed in your store.
  2. Go to Apps > Sezzle.
  3. Copy your Merchant ID from your Sezzle Merchant Dashboard, and paste them into the corresponding fields in the Sezzle App of your BigCommerce admin.
  4. Check the Add Sezzle Widget Script box. This will inject the widget script into the product and cart pages of your store.
  5. Save the configuration.

control panel

  1. Go to Storefront > Script Manager. Confirm that the Sezzle Widget scripts appear in the list of installed scripts.

script manager

  1. Widget is now ready to be configured.
  2. For finalizing the widget configuration, click Request Addition of Widgets in the widget step of your Sezzle Merchant Dashboard Setup Checklist.

Troubleshooting

If testing was unsuccessful, review the following:

Manual Theme Integration

If the Sezzle App fails to maintain the widget script on the product pages, or to add the script manually for additional pages, complete the following steps:

  1. Go to Storefront > Script Manager.
  2. Click the Create a Script button.
  3. Set Name of script to Sezzle Widget.
  4. Set Location on page to Footer.
  5. Set Select pages where script will be added to All pages.
  6. Set Script category to Essential.
  7. Set Script type to Script.
  8. In the Script content area, copy+paste the script, then click Save.

The script to be inserted into your webpage is as follows:

Template: <script src="https://widget.sezzle.com/v1/javascript/price-widget?uuid={sezzle_merchant_uuid}"></script>

Example: <script src="https://widget.sezzle.com/v1/javascript/price-widget?uuid=12a34bc5-6de7-890f-g123-4hi5678jk901"></script>

Instructions may vary slightly depending on your active plug-ins. If the issue persists after completing the above steps, look for other available features that allow the addition of a custom HTML code snippet to the site footer. If no such feature is found, the below steps may be followed as a last resort:

  1. Go to Storefront > My Themes.
  2. In your Current Theme, click Advanced then select Edit Theme Files.
  3. In the confirmation window, click Edit Theme Files.
  4. In the file list, go to templates > pages, then select product.html.
  5. Copy+paste the script into the very bottom of the file, then click Save and Apply Files.
  6. Repeat the previous step for the cart.html file.

For any kind of assistance, reach out to merchantsupport@sezzle.com.

Uninstall Steps

  1. Go to Apps > My Apps.
  2. Under the Sezzle App, click Uninstall.

my apps

  1. Toggle the button against Sezzle under Store Setup>Payments>Online Payment Methods to disable Sezzle as a payment option.

Bold Cashier

This guide describes how to integrate Sezzle into your Bold Cashier website so that you can provide Sezzle as a payment option for your customers. After integrating Sezzle, your Bold Cashier site will:

This integration is currently only available on Shopify.

Integration Steps Overview

  1. Install the Sezzle Bold Cashier app
  2. Test your integration

Before You Begin

Note: As a merchant you can use one of two options:

If you choose self hosting, contact Sezzle merchant support so we can add your domain to our security policy settings.

  1. You should have a Sezzle merchant account.
  2. Please visit our signup page if you don't have an account.
  3. You should generate API Keys using your Sezzle Merchant Dashboard
  4. Familiarize yourself with the transaction flow when buying with Sezzle.

Install the Sezzle Bold Cashier Extension

  1. First you must install the Bold Cashier app to your platform and store url. You can do this from the Bold Cashier site.
  2. Log in to your Shopify admin.
  3. Go to Apps > Bold Cashier.

bold-apps

  1. In the Bold Cashier left sidebar, click Marketplace, then find Sezzle and click Install.

bold-marketplace

  1. Click Allow to accept permissions and complete the installation.

bold-permissions

  1. Installation is complete.

Bold Cashier Live Checkout

  1. On your website, add an item to your cart, then proceed to Checkout and select Sezzle as the payment method.
  2. Click Complete Order.
  3. If you are redirected to the Sezzle checkout page, your integration is complete. Congratulations!
  4. Warning Don't complete the payment. Your checkout is now live, so you will be charged if you complete.

Uninstall Steps

  1. Go to your Bold Cashier Marketplace and scroll to find Sezzle.
  2. Click Uninstall.

BuyItLive

This guide describes how to integrate Sezzle into your BuyItLive website so that you can provide Sezzle as a payment option for your customers. After integrating Sezzle, your BuyItLive site will:

Integration Steps Overview

  1. Add and configure the Sezzle BuyItLive App
  2. Test your integration

Before You Begin

  1. You should have a Sezzle merchant account.
  2. Please visit our signup page if you don't have an account.
  3. Make sure you have the following Sezzle details handy.
  4. Merchant ID
  5. Public API Key
  6. Private API Key

  7. Familiarize yourself with the transaction flow when buying with Sezzle.

BuyItLive Admin Configuration

  1. Log in to your website's BuyItLive admin.
  2. Click Add Payment Provider.
  3. Select Connect with Sezzle.
  4. Go to Sezzle Payments > Tools.
  5. Copy your Private Key and Public Key from your Sezzle Merchant Dashboard, and paste them into the corresponding fields in the Sezzle configuration page of your BuyItLive admin.
  6. Click Save Settings.
  7. Go to Cart Settings and ensure the Sezzle switch is in the On position.
  8. Installation is complete.

BuyItLive Live Checkout

  1. On your website, add an item to your cart, then proceed to Checkout and select Sezzle as the payment method.
  2. Click Place Order.
  3. If you are redirected to the Sezzle checkout page, your integration is complete. Congratulations!
  4. Warning Don't complete the payment. Your checkout is now live, so you will be charged if you complete.

CommentSold

This guide describes how to integrate Sezzle into your CommentSold website so that you can provide Sezzle as a payment option for your customers. After integrating Sezzle, your CommentSold site will:

Integration Steps Overview

  1. Configure the Sezzle CommentSold App
  2. Test your integration

Before You Begin

  1. You should have a Sezzle merchant account.
  2. Please visit our signup page if you don't have an account.
  3. Make sure you have the following Sezzle details handy.
  4. Merchant ID
  5. Public API Key
  6. Private API Key

  7. Familiarize yourself with the transaction flow when buying with Sezzle.

CommentSold Admin Configuration

  1. In your CommentSold admin, go to Setup.
  2. Click Payment Gateways.
  3. Copy your Private Key and Public Key from your Sezzle Merchant Dashboard, and paste them into the corresponding fields in the Sezzle configuration page of your CommentSold admin.
  4. Click Update Keys.

payment-gateways

  1. Installation is complete.

CommentSold Live Checkout

  1. In the Sezzle configuration page of your CommentSold admin, enter the API Keys from your Sezzle Merchant Dashboard and uncheck the Use Sandbox checkbox, then save the configuration.
  2. On your website, add an item to your cart, then proceed to Checkout and select Sezzle as the payment method.
  3. Click Place Order.
  4. If you are redirected to the Sezzle checkout page, your integration is complete. Congratulations!
  5. Warning Don't complete the payment. Your checkout is now live, so you will be charged if you complete.

Lightspeed

This guide describes how to integrate Sezzle into your Lightspeed website so that you can provide Sezzle as a payment option for your customers.

Sezzle's Lightspeed App is certified and available here in the App Store.

After integrating Sezzle, your Lightspeed site will:

Integration Steps Overview

  1. Install and configure the Sezzle Lightspeed App
  2. Test your integration
  3. (Optional) Sandbox Testing

Before You Begin

  1. You should have a Sezzle merchant account.
  2. Please visit our signup page if you don't have an account.
  3. Make sure you have the following Sezzle details handy.
  4. Merchant ID
  5. Public API Key
  6. Private API Key

  7. Familiarize yourself with the transaction flow when buying with Sezzle.

Install the Sezzle Lightspeed App

app_search\

app_install

app_grant

app

Configure Sezzle

Navigate to the Sezzle App by clicking on Go to App located at Apps > Purchased Apps > Sezzle.

app_navigation

Account Verification

Settings

checkout

widget

Payment Refund

Lightspeed Sandbox Testing

  1. A Lightspeed test store must be used for Sandbox testing.
  2. On your website, add an item to the cart, then proceed to Checkout and select Sezzle as the payment method.
  3. Click Buy to be redirected to the Sezzle checkout page. If prompted, sign in.

checkout

  1. . Enter the payment details using test data then click Complete Order.
  2. After the payment is completed on Sezzle, you should be redirected back to your website and see a successful payment page.
  3. Sandbox testing is complete. You can log in to your Sezzle Merchant Sandbox Dashboard to see the test order you just placed.

Lightspeed Live Checkout

  1. Installing the Sezzle App in a live Lightspeed store will result in live checkouts.
  2. On your website, add an item to your cart, then proceed to Checkout and select Sezzle as the payment method.
  3. Click Buy.

checkout

  1. If you are redirected to the Sezzle checkout page, your integration is complete. Congratulations!

sezzle-checkout

  1. Warning Don't complete the payment. Your checkout is now live, so you will be charged if you complete it.

Magento 2

This guide describes how to integrate Sezzle into your Magento 2 website so that you can provide Sezzle as a payment option for your customers.

Sezzle's Magento 2 extension is certified in the marketplace and can also be downloaded from github.

After integrating Sezzle, your site will:

Integration Steps Overview

  1. Install and configure the Sezzle Magento 2 extension
  2. Test your integration
  3. (Optional) Sandbox Testing

Before You Begin

  1. You should have a Sezzle merchant account.
    • Please visit our signup page if you don't have an account.
  2. Make sure you have the following Sezzle details handy.

And familiarize yourself with the transaction flow when buying with Sezzle.

Install the Sezzle Magento 2 Extension

In the following section, [magento] refers to your Magento 2 root directory.

Using the Composer

Go to the Magento 2 installation directory, then run the below commands:

  1. composer require sezzle/sezzlepay
  2. php bin/magento setup:upgrade
  3. php bin/magento setup:di:compile
  4. php bin/magento setup:static-content:deploy
  5. php bin/magento cache:clean

Manual Method

  1. Download the .zip file from Sezzle's github repository.
  2. Unzip the file
  3. Navigate to Magento [Magento]/app/code/ using SFTP or SSH.
  4. Copy Sezzle directory from unzipped folder to [Magento]/app/code/.
  5. Open a terminal window and run the following command to enable Sezzle:
    • php bin/magento module:enable Sezzle_Sezzlepay
  6. Run the Magento setup upgrade:
    • php bin/magento setup:upgrade
  7. Run the Magento Dependencies Injection Compile:
    • php bin/`magento` setup:di:compile
  8. Run the Magento Static Content deployment:
    • php bin/magento setup:static-content:deploy
  9. Log in to Magento Admin and navigate to System > Cache Management.
  10. Flush the cache storage by selecting Flush Cache Storage.

You can now directly navigate from the Configuration Page to get signed up for Sezzle. To do so, you need to click on Signup for Sezzle which will redirect you to the Sezzle Merchant Signup Page. If you have the details already, you can simply click on I've already set up Sezzle, I want to edit my settings to move ahead.

  1. In your Magento 2 [Magento]/app/code/ directory, create a directory named Sezzle.
  2. Inside the new Sezzle directory, create a directory named Sezzlepay.
  3. Inside the new Sezzlepay directory, extract the files from this repository.
  4. Open the command line and run these commands:
    • php bin/magento module:enable Sezzle_Sezzlepay
    • php bin/magento setup:upgrade
    • php bin/magento setup:di:compile
    • php bin/magento setup:static-content:deploy
  5. Log in to your Magento 2 admin and go to System/Cache Management.
  6. Flush the cache storage by selecting Flush Cache Storage.

Upgrade the Magento 2 Extension

Using the Composer

  1. Open terminal and navigate to Magento root path.
  2. Execute the following commands in the terminal:
    • composer update sezzle/sezzlepay
    • php bin/magento setup:upgrade
    • php bin/magento setup:di:compile
    • php bin/magento setup:static-content:deploy
    • php bin/magento cache:clean

Configure Sezzle

Payment Configuration

Configuration_Settings_Stores_Magento_Admin__2022-08-22_at_2

In-Context Configuration

If you want to host Sezzle checkout in a modal iframe or pop-up window, you have to enable in-context checkout. To do this:

Configuration_Settings_Stores_Magento_Admin__2022-08-22_at_2

Settlement Report Configuration

Configuration_Settings_Stores_Magento_Admin__2022-08-22_at_2

Widget Configuration

Configuration_Settings_Stores_Magento_Admin__2022-08-22_at_2

Radiant_Tee__2022-08-22_at_2

Shopping_Cart__2022-08-22_at_2

Developer Configuration

Configuration_Settings_Stores_Magento_Admin__2022-08-22_at_2

Your store is now ready to accept payments through Sezzle.

Magento 2 Sandbox Testing

Checkout__2022-08-22_at_2

  1. If the customer is tokenized, click Place Order. Note: Sezzle will not redirect, the checkout process will be completed here.

Checkout__2022-08-22_at_3

  1. If In-Context checkout, click Pay with Sezzle.

Checkout__2022-08-22_at_3

Sezzle_Checkout__2022-08-23_at_1

Magento 2 Live Checkout

  1. In the Sezzle configuration page of your Magento 2 admin, enter the API Keys from your Sezzle Merchant Dashboard and disable Sandbox/Test as the API Mode, then save the configuration.
  2. On your website, add an item to the cart, then proceed to Checkout and select Sezzle as the payment method.
  3. To pay with Sezzle:
    • If the customer is not tokenized, click Continue to Sezzle.
    • If In-Context checkout, click Pay with Sezzle.
  4. If you are presented the Sezzle checkout page, your integration is complete. Congratulations!
  5. Warning Don't complete the payment. Your checkout is now live, so you will be charged if you complete it.

Capture Payment

Refund Payment

Release Payment

Order Verification in Magento Admin

Order Verification in Sezzle Merchant Dashboard

Customer Tokenization Details

Veronica_Costello_Customers_Customers_Magento_Admin_2022-08-22_at_4

Settlement Reports

Sezzle_Settlement_Reports_Sales_Reports_Magento_Admin__2022-08-22_at_3

Troubleshooting

If testing was unsuccessful, review the following:

Mojo

This guide describes how to integrate Sezzle into your Mojo website so that you can provide Sezzle as a payment option for your customers. After integrating Sezzle, your site will:

Integration Steps Overview

  1. Add Sezzle to your store as a payment method
  2. Test your integration

Before You Begin

  1. You should have a Sezzle merchant account.
  2. Make sure you have the following Sezzle details handy.
  3. Public API Key
  4. Private API Key

  5. Familiarize yourself with the transaction flow when buying with Sezzle.

Add Payment Method

  1. Log into your Mojo admin account and navigate to the Integrations tab.
  2. Select Payment Systems in the dropdown menu and click on Sezzle in the next window.
  3. Toggle Enable to ‘ON’.
  4. Next, toggle Test Mode to ‘OFF’ unless you are testing your integration in Sandbox. For Sandbox testing instructions, see Mojo sandbox testing.
  5. Next, enter your Sezzle Public and Private Key within the appropriate fields.

mojo-integration

  1. In order to ensure consistency between your webpage offers and payment options upon final checkout, take a moment to navigate to your Site Settings to enable or disable those features that you want enabled with Sezzle.
  2. NOTE: the Hide pay-over-time solutions switch will be automatically hidden for those customers that choose the multi-pay order option.
  3. Once satisfied with your transaction flow, click the blue Save Changes button.

Mojo Sandbox testing

  1. In the Sezzle Payment Systems configuration page of your Integrations tab, enter the Sandbox API Keys from your Sezzle Merchant Sandbox Dashboard.
  2. Next, toggle Test Mode to ‘ON’, then save the configuration. Make sure you are doing this on your dev/staging website.
  3. On your website, add an item to the cart, then proceed to Checkout and select Sezzle as the payment method.
  4. Complete the Mojo checkout process, and you should be redirected to the Sezzle checkout page. If prompted, sign in.
  5. Enter the payment details using test data then click Complete Order.
  6. After the payment is completed on Sezzle, you should be redirected back to your website and see a successful payment page.
  7. Sandbox testing is complete. You can log in to your Sezzle Merchant Sandbox Dashboard to see the test order you just placed.

Mojo Live Checkout

  1. On your store website, add an item to your cart, then proceed to check out and select Sezzle as the payment method.
  2. Follow the Mojo checkout process until you are redirected to Sezzle.
  3. If you are redirected to the Sezzle checkout page, your integration is complete. Congratulations!
    Warning: Don't complete the payment. Your checkout is now live, so you will be charged if you complete it.

NopCommerce

This guide describes how to integrate Sezzle into your NopCommerce website so that you can provide Sezzle as a payment option for your customers. After integrating Sezzle, your NopCommerce site will:

Integration Steps Overview

  1. Install and configure the Sezzle NopCommerce extension
  2. Test your integration
  3. (Optional) Sandbox Testing

Before You Begin

  1. You should have a Sezzle merchant account.
  2. Please visit our signup page if you don't have an account.
  3. Make sure you have the following Sezzle details handy.
  4. Merchant ID
  5. Public API Key
  6. Private API Key
  7. Familiarize yourself with the transaction flow when buying with Sezzle.

Install the Sezzle NopCommerce Extension

Go to https://www.nopcommerce.com/sezzle and click Get Extension.

Admin Configuration

  1. Go to Configuration > Local Plugins.
  2. Click Upload Plugin or Theme and select the downloaded zipped file per the instructions given.
  3. After the extension has been uploaded, click Install.
  4. Under Configuration, go to Payment Methods and then click Configure under Sezzle.

pay-methods

  1. Click Edit from the Payment Method list.
  2. Copy your Merchant ID from your Sezzle Merchant Dashboard, and paste it into the corresponding field in the Sezzle configuration page of your NopCommerce admin.
  3. Copy your Public Key and Private Key from your Sezzle Merchant Dashboard, and paste them into the corresponding fields in the Sezzle configuration page of your NopCommerce admin.
  4. Set Transaction Mode to either Authorize or Authorize and Capture. Important: See Authorize Only vs Authorize and Capture for details about the difference between the two choices.
  5. Save the configuration.

pay-configuration

  1. To restrict Sezzle usage based on billing country, go to Configuration > Payment Restrictions.
  2. Choose the country you want to restrict for Sezzle. Please note that Sezzle is currently available for customers from The United States and Canada. You may wish to restrict all countries where Sezzle is not available.

pay-restrictions

  1. Integration is complete.

NopCommerce Sandbox Testing

  1. In the Sezzle configuration page of your NopCommerce admin, enter the Sandbox API Keys from your Sezzle Merchant Sandbox Dashboard and check the Use Sandbox checkbox, then save the configuration. Make sure you are doing this on your dev/staging website.
  2. On your website, add an item to the cart, then proceed to Checkout and select Sezzle as the payment method.
  3. Click Confirm and you should be redirected to the Sezzle checkout page. If prompted, sign in.

payment-meth

  1. Enter the payment details using test data then click Complete Order.
  2. After the payment is completed on Sezzle, you should be redirected back to your website and see a successful payment page.
  3. Sandbox testing is complete. You can log in to your Sezzle Merchant Sandbox Dashboard to see the test order you just placed.

NopCommerce Live Checkout

  1. In the Sezzle configuration page of your NopCommerce admin, enter the API Keys from your Sezzle Merchant Dashboard and uncheck the Use Sandbox checkbox, then save the configuration.
  2. On your website, add an item to the cart, then proceed to Checkout and select Sezzle as the payment method.

product-widget

cart-widget

  1. Click Continue then Confirm.

payment-meth

  1. If you are redirected to the Sezzle checkout page, your integration is complete. Congratulations!

sezzle-checkout

  1. Warning Don't complete the payment. Your checkout is now live, so you will be charged if you complete.

Open Cart

This guide describes how to integrate Sezzle into Open Cart so that you can provide Sezzle as a payment option for your customers. After integrating Sezzle, your Open Cart site will:

Sezzle supports Opencart versions 3.0.3.7.

Integration Steps Overview

Before You Begin

  1. You should have a Sezzle merchant account.
    • Please visit our signup page if you don't have an account.
  2. Make sure you have the following Sezzle details handy.
  3. Familiarize yourself with the transaction flow when buying with Sezzle.

Installation

  1. Download the Sezzle module from the Opencart Marketplace.
  2. In your Opencart back office, go to Extensions > Installer.
  3. Select Upload and select the .zip file that you downloaded.
  4. Go to Extensions > Payments.
  5. Find Sezzle, and select Enable Module. The plugin is now ready to be configured. To learn how to install the plugin after you've downloaded it, you can also watch the official Opencart video tutorial.

Configuration

In your Opencart admin, go to Extensions > Payments. In the Payments section, find Sezzle and select Configure. Fill out the following fields: - Status : Enable or Disable. - Public Key : Enter the Public Key from the Sezzle Merchant Dashboard. - Private Key : Enter the Private Key from the Sezzle Merchant Dashboard. - Test Mode : Yes or No for Testing. - Transaction Method : Use Authorize and Capture to immediately capture payment when a Sezzle checkout is completed and Authorize Only to authorize payment when a Sezzle checkout is completed. Note: this requires a follow up capture request from backoffice to complete payment. See Authorize Only vs Authorize and Capture for details about the difference between the two choices. - Allow Tokenization : Enable to offer returning shoppers a faster checkout experience by bypassing the Sezzle checkout. - Enable Widget in PDP : Enable for showing the Sezzle widget on the PDP. - Enable Widget in Cart Page : Enable for showing the Sezzle widget on the Cart Page. - Sort Order : Enable for sorting the position of Sezzle payment option in the checkout page.

Payment Capture

Payment Action set as Authorize and Capture - Payment will automatically be captured during the checkout process.

Payment Action set as Authorize Only 1. In your Opencart back office, go to Sales > Orders. 2. Select the order in which you want to capture the payment. 3. Go to the Sezzle tab 4. Enter the capture amount. 5. Click Capture Payment.

Payment Refund

  1. In your Opencart back office, go to Sales > Orders.
  2. Select the order for which you want to refund the payment.
  3. Go to the Sezzle tab
  4. Enter the refund amount.
  5. Click Refund Payment.

Payment Release

  1. In your Opencart back office, go to Sales > Orders.
  2. Select the order for which you want to release the payment.
  3. Go to the Sezzle tab
  4. Enter the release amount.
  5. Click Release Payment.

Upgrading the module

If you are using an older Sezzle Opencart module version and want to use the latest version follow these steps: 1. Uninstall the existing Sezzle module. 2. Install the latest plugin version as described in Installation. 3. Configure the latest plugin version as described in Configuration step.

Prestashop

The Sezzle module for PrestaShop can be downloaded from github.

Installation

Configuration

In your PrestaShop back office, go to Modules > Module Manager. In the Payment section, find Sezzle and select Configure. Fill out the following fields: - Live Mode : Enable or Disable for testing. - Merchant Id : Enter the Merchant Id that you got from Merchant Dashboard. - Public Key : Enter the Public Key that you got from Merchant Dashboard. - Private Key : Enter the Private Key that you got from Merchant Dashboard. - Payment Action : Authorize and Capture for instant capture and Authorize Only for just authorization (needs to be captured manually from backoffice). Important: See Authorize Only vs Authorize and Capture for details about the difference between the two choices. - Allow Customer Tokenization : Enable to offer returning shoppers a faster checkout experience by saving their card details. - Enable Widget : Enable for showing Sezzle widget in PDP and Cart Page.

prestashop

Payment Capture

Payment will be automatically captured during the checkout process. - Payment Action as Authorize Only - In your PrestaShop backoffice, go to Orders > Orders. - Select the order for which you want to capture the payment. - In the Payment section right below, enter the below information and click Add - Date - Payment method - Amount - Change the Order Status to Payment Accepted if capture is successful.

prestashop2

Payment Refund

prestashop3

Payment Release

prestashop4

Upgrading the module

If you have an existing Sezzle PrestaShop module installed and want to upgrade a new version, proceed as follows: - Uninstall the existing Sezzle module. - In the Upgrade drop-down menu select Uninstall. - Manually remove the /sezzle folder from the /modules folder (if not removed during uninstall action). - Install the latest plugin version as described in Installation step. - Configure the latest plugin version as described in Configuration step.

Reinstallation

When you reinstall the plugin, the plugin takes care of most of its configurations and functions except for the items listed below. We recommend that you follow the steps here to make sure that when you reinstall the plugin, it won't pick up settings from a previous installation.

Order status - The plugin keeps the Awaiting Sezzle Payment order status because existing orders might still use them. If you would also like to remove these statuses, first make sure that these are no longer in use. - To check if the status is in use: - Go to the Orders page in your Prestashop admin panel. - Filter the orders for the Awaiting Sezzle Payment order status. - If there are any, move them to another status that you would like to use.

When there are no more orders using this status, you can delete the status from your order status list.

Configurations - The plugin keeps the AWAITING_SEZZLE_PAYMENT configuration fields in your database in case there are still orders in your system with the corresponding statuses. If you have already removed the status, you can also remove these leftover configurations.

Salesforce Commerce Cloud

This guide describes how to integrate Sezzle into your Salesforce Commerce Cloud website so that you can provide Sezzle as a payment option for your customers. This integration supports sites built with both the SiteGenesis and Reference Architecture. After integrating Sezzle, your site will:

Important: See Authorize Only vs Authorize and Capture for details about the difference between the two choices.

Installation

Get the Sezzle Cartridge for B2C Commerce on the Salesforce AppExchange or directly from GitHub. Installation instructions are included in the documentation.

If you need further assistance with our Salesforce cartridge, please contact our team by submitting a support request.

Shift4Shop

This guide describes how to integrate Sezzle into your Shift4Shop website so that you can provide Sezzle as a payment option for your customers. After integrating Sezzle, your Shift4Shop site will:

Integration Steps Overview

  1. Install and configure the Sezzle Shift4Shop App
  2. Test your integration
  3. (Optional) Sandbox Testing

Before You Begin

  1. You should have a Sezzle merchant account.
  2. Please visit our signup page if you don't have an account.
  3. Make sure you have the following Sezzle details handy.
  4. Merchant ID
  5. Public API Key
  6. Private API Key
  7. Familiarize yourself with the transaction flow when buying with Sezzle.

Install the Sezzle Shift4Shop Extension

  1. Log in to your website's Shift4Shop admin.
  2. Get the app here.
  3. Copy+paste your Store URL into the input area, then click Proceed.

application-authorization

  1. Check the PCI Compliance box, then click Acknowledge and Authorize the App to start the installation.

Admin Configuration

  1. In your Shift4Shop admin, go to Settings > Payment.
  2. Click Select Payment Methods.

select-payment-methods

  1. Turn the Sezzle switch to On.
  2. Copy your Public Key from your Sezzle Merchant Dashboard, and paste it into the corresponding field in the Sezzle configuration page of your Shift4Shop admin.
  3. Next to Private Key, click Change. Then, copy your Private Key from your Sezzle Merchant Dashboard, and paste it into the corresponding field in the Sezzle configuration page of your Shift4Shop admin.
  4. Click Save.

payment-methods

  1. To restrict Sezzle usage by country, click the Exclude List hyperlink under the Sezzle switch.
  2. Click Add Location.
  3. Select the desired country, then click Add.

exclude-list

  1. Installation is complete.

Shift4Shop Sandbox Testing

  1. In the Sezzle configuration page of your Shift4Shop admin, enter the Sandbox API Keys from your Sezzle Merchant Dashboard and check the Test Mode checkbox, then save the configuration. Make sure you are doing this on your dev/staging website.
  2. On your website, add an item to the cart, then proceed to checkout and select Sezzle as the payment method.
  3. Click Place Order and you should be redirected to the Sezzle checkout page. If prompted, sign in.

checkout

  1. Enter the payment details using test data then click Complete Order.
  2. After the payment is completed on Sezzle, you should be redirected back to your website and see a successful payment page.
  3. Sandbox testing is complete. You can log in to your Sezzle Merchant Sandbox Dashboard to see the test order you just placed.

Shift4Shop Live Checkout

  1. In the Sezzle configuration page of your Shift4Shop admin, enter the API Keys from your Sezzle Merchant Dashboard and uncheck the Test Mode checkbox, then save the configuration.
  2. On your website, add an item to your cart, then proceed to Checkout and select Sezzle as the payment method.
  3. Click Place Order.

checkout

  1. If you are redirected to the Sezzle checkout page, your integration is complete. Congratulations!
  2. Warning Don't complete the payment. Your checkout is now live, so you will be charged if you complete.

Troubleshooting

If testing was unsuccessful, review the following:

Manual Theme Integration

If the Shift4Shop app fails to maintain the widget script on the product pages, or to add the script manually for additional pages, complete the following steps:

  1. From your Shift4Shop admin, go to Settings > Design > Themes & Styles.
  2. In your Current Theme, click the button labeled More then select Edit Template(HTML).
  3. Find the copy of your theme under Go to Folder.
  4. Click the gear icon next to the product_items.html file, then click Edit.
  5. When the dashboard asks if you want to edit your theme files, click the Edit Theme Files button.
  6. In the Source Code text area, copy+paste the script at the very beginning of the file.
  7. Click Save.

The script to be inserted into your webpage is as follows:

Template: <script src="https://widget.sezzle.com/v1/javascript/price-widget?uuid={sezzle_merchant_uuid}"></script>

Note: Update {sezzle_merchant_uuid} in the above script template to reflect your site’s Merchant ID (removing the curly brackets), which can be found in the Sezzle Merchant Dashboard.

Example: <script src="https://widget.sezzle.com/v1/javascript/price-widget?uuid=12a34bc5-6de7-890f-g123-4hi5678jk901"></script>

Instructions may vary slightly depending on your active plug-ins. For assistance with widget configuration, click Request Addition of Widgets in the widget step of your Sezzle Merchant Dashboard Setup Checklist.

Uninstall Steps

  1. Go to Settings > Payment.
  2. Click Select Payment Methods.
  3. Under the Sezzle App, click the gear icon then click Delete.

Shopify Payments

This guide describes how to integrate Sezzle into your Shopify website so that you can provide Sezzle as a payment option for your customers. After integrating Sezzle, your Shopify site will:

  1. Offer Sezzle as a payment option on the checkout page.
  2. Refund Sezzle payments from your Shopify order management system.
  3. Authorize and capture payments.

Integration Steps Overview

  1. Install and configure the Sezzle Payments app
  2. Test your integration
  3. (Optional) Sandbox Testing

Before You Begin

  1. You should have a Sezzle merchant account.
  1. Make sure you have the following Sezzle details handy.
  1. Familiarize yourself with the transaction flow when buying with Sezzle.

Install the Sezzle Payments app

  1. Click on Add app by navigating to the Sezzle Payments app.
  2. Once the app is installed, you will be prompted to enter your production Sezzle public and private API keys.
    For most merchants, we are able to pre-fill the public and private API keys based on the Shopify store. If we cannot uniquely identify the merchant based on the Shopify store, you will be required to fill in the keys.
  3. Click update settings to verify your Sezzle account.
  4. You will be redirected to the payment settings page, where you will need to activate Sezzle Payments for your store.
  5. Click Activate.
  6. Once that is complete you should see Sezzle available as a payment method for your store.

f4a9175-Screen_Shot_2022-05-12_at_11

To validate that you’ve successfully installed the new Payments App:
You should see Sezzle Payments installed in your Settings > Payments.

b877992-Activate

Shopify Live Checkout

  1. In the Sezzle configuration page of your Shopify admin, enter the API Keys from your Sezzle Merchant Dashboard and uncheck the Enable Test Mode checkbox, then save the configuration.
  2. On your website, add an item to your cart, then proceed to Checkout and select Sezzle as the payment method.
  3. Click Place Order.

checkout

  1. If you are redirected to the Sezzle checkout page, your integration is complete. Congratulations!
  2. Warning Don't complete the payment. Your checkout is now live, so you will be charged if you complete.

The Shopify "Accepted Payment Methods" footer widget does not support third-party payment apps by default. To show Sezzle in this section, you will need to follow the instructions provided by Shopify, adding 'sezzle' to the list.

Troubleshooting

If testing was unsuccessful, review the following:

Uninstall the Sezzle Payments app

  1. Go to Apps.
  2. Find Sezzle Payments and click Delete.

Shopify_2022-04-08_at_8

FAQS

  1. I have my Shopify Payment Capture set to Manual. What do I need to do?

Sezzle Payments will honor your Shopify Payment Capture setting. If you are set to Manual, then you will need to manually capture payment on orders paid for by Sezzle. The authorization period can vary by Sezzle merchant, so we highly recommend you check the Sezzle authorization expiration at Settings > ecommerce in the Sezzle merchant dashboard. You can adjust this expiration period according to your needs.

  1. I have multiple stores on Shopify. What do I do?

There are several ways to install the payments app on your store. We recommend you use an incognito browser for this process. Navigate to https://{your-store.myshopify.com}/admin/settings/payments/alternative-providers/1057901 where the your-store.myshopify.com is to be replaced with the URL of your store. Once you log into the store, the rest of the process is the same. To install the payments app for another store, make sure to close the incognito browser and open a new session on the incognito browser.

  1. The order number in Shopify appeared in the merchant dashboard on Sezzle. I don't see it anymore?

Sezzle no longer has access to the Shopify order number. To track orders from Sezzle on Shopify, click the relevant order and then Click on Information from the gateway. The payment ID should match the ID in the Sezzle Merchant Dashboard under the Reference-ID column.

37dc708-Screen_Shot_2022-05-09_at_4

4ed3864-Screen_Shot_2022-05-09_at_4

You can also search in Shopify Admin for Orders for the payment id using the format receipt.payment_id: <payment_id>.

9dbcd73-Screen_Shot_2022-05-10_at_3

  1. I have the Sezzle inventory locking feature enabled today. Will this be enabled with the new app?

Unfortunately, no. Sezzle will no longer have access to view and adjust the inventory of a Shopify store. Without these permissions, we are unable to offer this feature alongside the new payment app.

  1. Will I be able to refund orders placed through the legacy gateway after moving to the new app?

Yes, refunds will work as usual from the Shopify Orders page for orders placed through the legacy gateway.

Shopify Sandbox Testing

With the new Sezzle Payments app, sandbox testing can be enabled in your Shopify admin by navigating to Settings > Payments > Sezzle Payments, click Manage, check Enable test mode and click Save. Also, be sure to click the Manage button in Sezzle Payments, enter your sandbox API keys, check Testing with Sandbox API Keys and click update settings.

Shopify Widgets

This guide describes how to integrate Sezzle widgets into your Shopify website so that you can advertise Sezzle as a payment option for your customers.

Integration Steps Overview

  1. Install the Sezzle Widget app
  2. Enable Widgets & Checkout Button embed blocks
  3. (Alternative - 2.0 themes only) Enable Widgets & Checkout Button app blocks

Before You Begin

  1. You should have a Sezzle merchant account.
    • Please visit our signup page if you don't have an account.
  2. Install and configure the Sezzle Payments App
  3. Make sure you have the following Sezzle details handy.

Install the Sezzle Widget app

  1. Log in to your website's Shopify admin.
  2. In your Sezzle Merchant Dashboard Setup Checklist, click Install Sezzle Widget app.
  3. Click Get the App.
  4. Click Install App.
    Authorize
  5. Within the Sezzle Widget app, enter your Public API Key and click link sezzle account. For most merchants, we are able to pre-fill the public API keys based on the Shopify store. If we cannot uniquely identify the merchant based on the Shopify store, you will be required to fill in the keys.
    LinkAccount

Integrating Widgets and Checkout Button (with Embed Blocks)

  1. Once your account is linked, select the theme you wish to edit, then click Next.

    ❗️ This field does not default to your live theme - you must make a selection.

    AccountVerified
  2. Select the asset you wish to install, i.e. Sezzle Price Widget, then click Next.
    SelectPage
  3. Select the page on which you wish to install the asset, i.e. Product page, then click Finish.
    • There must be a product in the cart before installing Sezzle asset to the cart page.
      SelectAsset
  4. The last window is information only, however, you must click Activate Widget and complete the following step before changes take effect.

    Confirm
  5. In the Embed Block Editor panel, change the font size and font family as desired, then click Save.
    Activate-Widget-Embed
  6. Add a product to the cart, then select Cart from the dropdown in the center of the top toolbar.
  7. Activate the Sezzle Checkout Button embed block, then click to expand and change the button theme and content as desired.
    • Template can be set to Checkout with Sezzle or Pay with Sezzle.
    • Theme can be set to light or dark.
  8. Click Save.

Checkout Button Installed

🚧 Button doesn't look quite right?

With the variety of Shopify themes and third-party plug-ins, sometimes the button doesn't match the theme styles perfectly. If you are familiar with CSS, click the Paintbrush icon in the top-left corner of the screen, then scroll down to the CUSTOM CSS section to add style overrides to the .sezzle-checkout-button or .sezzle-button-logo-img elements as needed.

Activate-Button-Embed

Request Help

If the Sezzle Widget app is not able to automatically install the Sezzle widget or checkout button on your storefront, please use the Request Help form within the app to contact the Sezzle Merchant Integrations team.

Note: The Request Help form in the Sezzle Widget app is for widget and checkout button help only. For questions regarding your account or issues with the Sezzle payment option at checkout, please reach out to merchantsupport@sezzle.com.

The Sezzle Merchant Integrations team does not respond to inquiries. If you request a response or if we need to contact you regarding your request, we will forward the response through our Merchant Support team.

Help

Integrating Widgets with App Blocks

App Blocks are compatible with Shopify 2.0 themes only and give merchants greater control over widget placement. If app blocks do not provide enough flexibility to place the widget as desired or you wish to install widgets and checkout button on a vintage theme, please refer to the instructions for Embed Blocks above.

If instead of a widget you see red text that says "Please complete the account verification step in ‵Sezzle Widget′ app to render widgets", return to the Sezzle Widget app and enter your public API key.

  1. In your Shopify Admin, go to Online Store > Themes.
  2. Click the green "Customize" button on the desired theme. Customize
  3. Click on the dropdown menu at the top middle of the screen and select "Products" and complete the remaining steps below for each of the product templates you want the widget to appear on, as well as the Cart page.
  4. Under "Product Information" click "+ Add block" and select "Sezzle Widget".
    • Section and snippet titles may vary between themes. If this exact section is not present, please defer to the equivalent.
  5. In the left sidebar drag the "Sezzle Widget" block under the "Price" block (or wherever you'd like the widget positioned on the page).
  6. In the App Block editor panel, adjust font family and font size as desired, then click Save.

Widget-Block

Image_2022-10-03_at_2

Integrating Sezzle Checkout Button with App Blocks

If instead of a checkout button you see red text that says "Please complete the account verification step in ‵Sezzle Widget′ app to render widgets", return to the Sezzle Widget app and enter your public API key.

  1. In your Shopify Admin, go to Online Store > Themes.
  2. Click the green "Customize" button on the desired theme. Customize
  3. Click on the dropdown menu at the top middle of the screen and select "Cart".
  4. Under "Subtotal" click "+ Add block" and select "Sezzle Checkout Button".
    • Section and snippet titles may vary between themes. If this exact section is not present, please defer to the equivalent.
  5. In the left sidebar drag the "Sezzle Checkout Button" block under the "Checkout button" block (or wherever you'd like the button positioned on the page).
  6. In the App Block editor panel, adjust button template and theme as desired, then click Save.
    • Template can be set to Checkout with Sezzle or Pay with Sezzle.
    • Theme can be set to light or dark.
    • The default placement will place the Sezzle Checkout Button after default checkout button and inherit page styles.
      • If unchecked, the button will be placed as indicated by the drag-and-drop placement. Styles may also be affected, based on the placement selected. Checkout-Block

Image_2022-10-03_at_2

Uninstalling Embed Blocks

  1. In your Shopify Admin, go to Online Store > Themes.
  2. Click the green "Customize" button on the desired theme.
  3. Click the Extensions icon in the left toolbar.
  4. Toggle the desired embed block(s) to the OFF position, then click Save.

remove-embed

Uninstalling App Blocks

  1. In your Shopify Admin, go to Online Store > Themes.
  2. Click the green "Customize" button on the desired theme.
  3. Click on the dropdown menu at the top middle of the screen and select "Products" and complete the remaining steps below for each of the product templates you want the widget to be removed from, as well as the Cart page.
  4. In the left sidebar, select the Sezzle Widget section.
  5. At the bottom of the Editor panel, click Remove Block then click Save.
  6. Click on the dropdown menu at the top middle of the screen and select "Cart".
  7. In the left sidebar, select the Sezzle Checkout Button section.
  8. At the bottom of the Editor panel, click Remove Block then click Save.

remove-block

Uninstalling the Sezzle Widget App

  1. Go to Apps > Sezzle Widget.
  2. In the top-right corner, click the Menu icon, then select App Settings.
  3. Click Delete App.
    • Deleting the app will automatically remove all app blocks and embed blocks from all themes. Any code change installations will not be removed automatically.

Remove-App

Manual Theme Integration

If the Shopify app fails to maintain the widget script on the product pages, or to add the script manually for additional pages, complete the following steps:

  1. Go to Sales Channels > Online Store > Themes.
  2. Click Actions, then select Edit Code.
  3. In the Code Explorer, go to the Layout folder and select the theme.liquid file.
  4. Copy+paste the script to the very bottom of the file, then click Save.

Script to be inserted into your webpage:

<!-- template -->
<script src="https://widget.sezzle.com/v1/javascript/price-widget?uuid={sezzle_merchant_uuid}"></script>

<!-- for example -->
<script src="https://widget.sezzle.com/v1/javascript/price-widget?uuid=12a34bc5-6de7-890f-g123-4hi5678jk901"></script>

For assistance with widget configuration, use the Request Help form within the Shopify App to contact Sezzle Merchant Integrations team.

Widget Troubleshooting

If testing was unsuccessful, review the following:

Shopware 5

This guide describes how to integrate Sezzle into your Shopware 5 website so that you can provide Sezzle as a payment option for your customers. Additionally, it includes steps to upgrade existing integrations to the latest version of the plugin.

Sezzle's Shopware 5 plugin can be Download from github.

After integrating Sezzle, your site will:

Integration Steps Overview

  1. Install and configure the Sezzle Shopware 5 Plugin
  2. Test your integration
  3. (Optional) Sandbox Testing

Before You Begin

  1. You should have a Sezzle merchant account.
  2. Please visit our signup page if you don't have an account.
  3. Make sure you have the following Sezzle details handy.
  4. Merchant ID
  5. Public API Key
  6. Private API Key

  7. Familiarize yourself with the transaction flow when buying with Sezzle.

Install the Sezzle Shopware 5 Plugin

In the following section, [Shopware] refers to your Shopware 5 root directory.

Using the Composer

Go to the Shopware 5 installation directory, then run the below commands:

  1. Open terminal and navigate to Shopware root path.
  2. Run the below command for the adding the plugin into your codebase: composer require sezzle/shopware5

Manual Method

  1. Download the .zip or tar.gz file from Sezzle's github repository.
  2. Unzip the file.
  3. Navigate to Shopware [Shopware]/custom/plugins/ either through SFTP or SSH.
  4. Copy SwagPaymentSezzle directory from unzipped folder to [Shopware]/custom/plugins/.
  5. Log in to Shopware 5 Backend and navigate to Configuration > Plugin Manager > Management > Installed.
  6. Find Sezzle from the Uninstalled list and click on the + button to install the plugin.
  7. Once installed, you will see Sezzle under Inactive list. Click on the x button to activate the plugin.
  8. After successful activation, you will be able to see Sezzle under Configuration > Payment Methods.

Upgrade the Shopware 5 Plugin

Using the Composer

  1. Change the version number of the sezzle/sezzlepay inside composer.json.
  2. Open terminal and navigate to Shopware root path.
  3. Run the following command for the updating the plugin to a newer version: composer update sezzle/sezzlepay

Manual Method

  1. Download the .zip or tar.gz file from Sezzle's github repository.
  2. Unzip the file.
  3. Delete the contents from [Shopware]/custom/plugins/SwagPaymentSezzle.
  4. Copy the contents of SwagPaymentSezzle directory from unzipped folder to [Shopware]/custom/plugins/SwagPaymentSezzle/.
  5. Log in to Shopware Backend and navigate to Configuration > Cache/performance.
  6. Flush the cache storage by selecting Clear shop cache.

Configure Sezzle

Payment Configuration

settings

Your store is now ready to accept payments through Sezzle.

Frontend Functionality

checkout

Capture Payment

Refund Payment

Release Payment

Order Verification in Shopware Backend

Merchants should always check the payment status and amount of all orders. The following steps ensure that each action has been completed as expected.

orders

order-sezzle-tab

Order Verification in Sezzle Merchant Dashboard

Customer Tokenization Details

customer

Shopware 5 Sandbox Testing

Shopware 5 Live Checkout

  1. In the Sezzle settings page of your Shopware Backend, enter the API Keys from your Sezzle Merchant Dashboard and uncheck the Enable sandbox checkbox, then save the configuration.
  2. On your website, add an item to the cart, then proceed to Checkout and select Sezzle as the payment method.
  3. Click Complete Payment.
  4. If you are redirected to the Sezzle checkout page, your integration is complete. Congratulations!
  5. Warning Don't complete the payment. Your checkout is now live, so you will be charged if you complete it.

Troubleshooting

Wix

This guide describes how to integrate Sezzle into your Wix website so that you can provide Sezzle as a payment option for your customers. After integrating Sezzle, your site will:

Integration Steps Overview

  1. Add Sezzle to your store as a payment method
  2. Test your integration

Before You Begin

  1. You should have a Sezzle merchant account.
  2. Make sure you have the following Sezzle details handy.
  3. Public API Key
  4. Private API Key
  5. Familiarize yourself with the transaction flow when buying with Sezzle.

Add Payment Method

  1. From your Wix store dashboard, select Settings, and Accept Payments.
  2. Choose the See More Payment Options link at the bottom of the page.
  3. Locate Sezzle in the list, and choose Connect. This takes you to the Connect Sezzle page.
  4. Enter your API Keys from the Sezzle Merchant Dashboard, and choose Connect. Sezzle will now be available as a payment method at checkout.

Wix Live Checkout

  1. On your store website, add an item to your cart, then proceed to Checkout and select Sezzle as the payment method.
  2. Follow the Wix checkout process to the final step and choose Place Order.
  3. If you are redirected to the Sezzle checkout page, your integration is complete. Congratulations!
    Warning: Don't complete the payment. Your checkout is now live, so you will be charged if you complete it.

Troubleshooting

For account connection problems, check the following:

If Sezzle does not appear as a payment option during live testing:

WooCommerce

This guide describes how to integrate Sezzle into your WooCommerce website so that you can provide Sezzle as a payment option for your customers. After integrating Sezzle, your WooCommerce site will:

Integration Steps Overview

  1. Install and configure the Sezzle WooCommerce extension
  2. Test your integration
  3. (Optional) Sandbox Testing

Before You Begin

  1. You should have a Sezzle merchant account.
  1. Make sure you have the following Sezzle details handy.
  1. Familiarize yourself with the transaction flow when buying with Sezzle.

Install the Sezzle WooCommerce Extension

  1. Log in to your website's Wordpress admin.

admin-login

  1. In the left sidebar, click Plugins > Add New.
  2. Search for Sezzle.
  3. Click Install Now.

search-sezzle

  1. Click Activate.

activate-sezzle

Admin Configuration

  1. In the left sidebar, click WooCommerce > Settings .
  2. Select the Payments tab.

go-to-payment-settings

  1. Click the Manage button for Sezzle.

select-sezzle

  1. Check the Enable/Disable checkbox for enabling Sezzle.
  2. Check the Payment option availability in other countries if you want to allow Sezzle outside of US and Canada.
  1. Set Merchant ID as received from the Business section of Sezzle Merchant Dashboard.
  2. Copy your Private Key and Public Key from your Sezzle Merchant Dashboard, and paste them into the corresponding fields.
  3. Check the Create order post checkout completion checkbox for enabling WooCommerce order creation only after Sezzle checkout is successfully completed.
  4. Set Minimum Checkout Amount if you want to restrict Sezzle based on a minimum order total.
  5. Set the Transaction Mode as Live for production and Sandbox for sandbox testing mode.
  6. Check the Show Sezzle widget in product pages checkbox for adding widget script in the Product Display Page, which allows enabling Sezzle Widget Modal in PDP.
  7. Configure the installment plan widget under Installment Plan Widget Configuration settings
  8. Check the Enable Installment Widget Plan in Checkout page checkbox for enabling installment widget plan.
  9. Set the Order Total Container Class Name. Default is woocommerce-Price-amount.
  10. Set the Order Total Container Parent Class Name. Default is order-total.
  11. Check the Enable Logging checkbox for logging Sezzle checkout related data. This is helpful for debugging issues, if encountered.

WooCommerce_settings__Sezzle__WordPress_2023-07-12_at_2

  1. Click Save Changes.

WooCommerce Sandbox Testing

  1. In the Sezzle configuration page of your WooCommerce admin, enter the Sandbox API Keys from your Sezzle Merchant Sandbox Dashboard and set the Transaction Mode to Sandbox, then save the configuration. Make sure you are doing this on your dev/staging website.
  2. On your website, add an item to the cart, then proceed to Checkout and select Sezzle as the payment method.
  3. Click Place Order, and you should be redirected to the Sezzle checkout page. If prompted, sign in.

select-sezzle-payment

  1. Enter the payment details using test data then click Complete Order.
  2. After the payment is completed on Sezzle, you should be redirected back to your website and see a successful payment page.
  3. Sandbox testing is complete. You can log in to your Sezzle Merchant Sandbox Dashboard to see the test order you just placed.

WooCommerce Live Checkout

  1. In the Sezzle configuration page of your WooCommerce admin, enter the API Keys from your Sezzle Merchant Dashboard and set the Transaction Mode to Live, then save the configuration.
  2. On your website, add an item to the cart, then proceed to Checkout and select Sezzle as the payment method.
  3. Click Place Order.

select-sezzle-payment

  1. If you are redirected to the Sezzle checkout page, your integration is complete. Congratulations!
  2. Warning Don't complete the payment. Your checkout is now live, so you will be charged if you complete.

Important Note on Order Fulfillment

Before shipping the order, ensure that the Order Notes in the WooCommerce interface show the order status is Processing and include Payment approved by Sezzle. When these notes exist, you know that the customer completed the checkout at Sezzle, and you will be paid for the order.

WooCommerce will create an order regardless of whether the customer completes the checkout at Sezzle. Check the Order Notes and do not fulfill orders where the Sezzle checkout is not completed.

Troubleshooting

If testing was unsuccessful, review the following:

Uninstall Steps

  1. Go to Plugins > Installed Plugins.
  2. Under Sezzle WooCommerce Payment, click Deactivate then click Delete.

Zoey

This guide describes how to integrate Sezzle into your Zoey website so that you can provide Sezzle as a payment option for your customers. After integrating Sezzle, your Zoey site will:

Integration Steps Overview

  1. Install and configure the Sezzle Zoey extension
  2. Test your integration
  3. (Optional) Sandbox Testing

Before You Begin

  1. You should have a Sezzle merchant account.
  2. Please visit our signup page if you don't have an account.
  3. Make sure you have the following Sezzle details handy.
  4. Merchant ID
  5. Public API Key
  6. Private API Key
  7. Familiarize yourself with the transaction flow when buying with Sezzle.

Install the Sezzle Zoey Extension

Go to https://www.zoey.com/apps/sezzle/ and click Get App.

Admin Configuration

  1. Go to Set-up > Payment Methods > Sezzle.
  2. Click Configure.

zoey-payment

  1. Configure the extension as follows:
  2. Set Enabled to Yes.
  3. Copy your Merchant ID from your Sezzle Merchant Dashboard, and paste it into the corresponding field in the Sezzle configuration page of your Zoey admin.
  4. Copy your Public Key and Private Key from your Sezzle Merchant Dashboard, and paste them into the corresponding fields in the Sezzle configuration page of your Zoey admin.
  5. If you want the widget script added to the Product Display Page, set Add Widget Script in PDP to Yes
  6. If you want the widget script added to the Cart Page, set Add Widget Script in Cart Page to Yes
  7. Set Payment from Applicable Countries to Specific Countries.
  8. Set Payment from Specific Countries to United States or Canada as applicable.
  9. Save the configuration.

zoey-pay-fields

  1. Click Advanced/Refresh Your Store.
  2. Installation is complete.

    Zoey Sandbox Testing

  3. In the Sezzle configuration page of your Zoey admin, enter the Sandbox API Keys from your Sezzle Merchant Sandbox Dashboard and set the API Mode to Sandbox/Test, then save the configuration. Make sure you are doing this on your dev/staging website.

  4. On your website, add an item to the cart, then proceed to Checkout and select Sezzle as the payment method.

  5. Click Continue then Place Order and you should be redirected to the Sezzle checkout page. If prompted, sign in.

zoey-sezzle-payment-page

  1. Enter the payment details using test data then click Complete Order.
  2. After the payment is completed on Sezzle, you should be redirected back to your website and see a successful payment page.
  3. Sandbox testing is complete. You can log in to your Sezzle Merchant Sandbox Dashboard to see the test order you just placed.

Zoey Live Checkout

  1. In the Sezzle configuration page of your Zoey admin, enter the API Keys from your Sezzle Merchant Dashboard and set the API Mode to Live, then save the configuration.
  2. On your website, add an item to your cart, then proceed to Checkout and select Sezzle as the payment method.
  3. Click Continue then Place Order.

zoey-sezzle-payment-page

  1. If you are redirected to the Sezzle checkout page, your integration is complete. Congratulations!
  2. Warning Don't complete the payment. Your checkout is now live, so you will be charged if you complete.

Guides

Here are some guides to help with your integration.

Authorize & Capture

As a merchant you have a choice to select either Authorize Only or Authorize and Capture as the Sezzle payment setting in an eCommerce platform. This page explains the difference between the two, in detail.

NOTE:

To change auth expiration in Merchant Dashboard:

  1. Log in to your Merchant Dashboard account
  2. Go to the ecommerce tab and click update.
  3. Set the value for days, hours, and minutes and click confirm.

About Sezzle Page

Light Theme (English)

  <div id="how-sezzle-works-container"></div>
  <script>
  document.addEventListener('DOMContentLoaded', function() {
    try {
        fetch('https://media.sezzle.com/how-sezzle-works/light-theme.html')
        .then(response => {
        if (!response.ok) {
            throw new Error('failed to fetch `how sezzle works`: ' + response.status);
        }
            return response.text();
        })
        .then(html => {
            const container = document.getElementById('how-sezzle-works-container');
            container.innerHTML = html;
    })
    }catch(e){
        console.error('Error rendering `how sezzle works`: ', e);
    }
  });
  </script>

Light Theme (French)

  <div id="how-sezzle-works-container"></div>
  <script>
  document.addEventListener('DOMContentLoaded', function() {
    try {
        fetch('https://media.sezzle.com/how-sezzle-works/light-theme-french.html')
        .then(response => {
        if (!response.ok) {
            throw new Error('failed to fetch `how sezzle works`: ' + response.status);
        }
            return response.text();
        })
        .then(html => {
            const container = document.getElementById('how-sezzle-works-container');
            container.innerHTML = html;
    })
    }catch(e){
        console.error('Error rendering `how sezzle works`: ', e);
    }
  });
  </script>

Dark Theme (English)

  <div id="how-sezzle-works-container"></div>
  <script>
  document.addEventListener('DOMContentLoaded', function() {
    try {
        fetch('https://media.sezzle.com/how-sezzle-works/dark-theme.html')
        .then(response => {
        if (!response.ok) {
            throw new Error('failed to fetch `how sezzle works`: ' + response.status);
        }
            return response.text();
        })
        .then(html => {
            const container = document.getElementById('how-sezzle-works-container');
            container.innerHTML = html;
    })
    }catch(e){
        console.error('Error rendering `how sezzle works`: ', e);
    }
  });
  </script>

Dark Theme (French)

  <div id="how-sezzle-works-container"></div>
  <script>
  document.addEventListener('DOMContentLoaded', function() {
    try {
        fetch('https://media.sezzle.com/how-sezzle-works/dark-theme-french.html')
        .then(response => {
        if (!response.ok) {
            throw new Error('failed to fetch `how sezzle works`: ' + response.status);
        }
            return response.text();
        })
        .then(html => {
            const container = document.getElementById('how-sezzle-works-container');
            container.innerHTML = html;
    })
    }catch(e){
        console.error('Error rendering `how sezzle works`: ', e);
    }
  });
  </script>

How do I make an "About Sezzle" page?

Adding a page about Sezzle will help your customers understand how Sezzle works and the benefits of paying with Sezzle. We have a pre-made HTML template ready for use on your website. Start by selecting your platform, and then use the code from the "Code Snippets" section to complete the page!

To see a sample of what the page looks like, click here

Shopify Process

To set up the page on Shopify, follow the steps below.

  1. Log in to your Shopify Store
  2. Navigate to "Online Store" "Themes"
  3. On the theme you want to edit, select "Actions" and then "Edit Code"
  4. Under the "Templates" folder, click "Add New Template," select template for "Page," template type "liquid", and name the page "Sezzle", then click Create Template
  5. Select the theme that best fits your store from the tabs listed.
  6. Copy the appropriate code (on the right) and paste it under {{page.content}} on the Shopify page.
  7. Save
  8. Navigate to "Pages"
  9. Add a new page, and give it a title - we recommend something like "How Sezzle Works" or "How to use Sezzle"
  10. Under "Theme Template" (in the bottom-right), select "sezzle"
  11. Save and view the page

Other Platforms

To set up the page on any other platform, please work with your web developer and/or follow the steps below.

  1. Create a new page in your theme
  2. Copy and paste the appropriate code snippet into your website's page
  3. Click save and/or publish!

In-Store

Overview

The integrated POS checkout API enables merchants to send a Sezzle Checkout link to a customer via text or email and then receive payment updates on their POS when the checkout has been completed.

Text Email
instore-url-text instore-url-email

The customer can click on the Sezzle URL in the text or email to complete the checkout:

Customer experience

Sign In OTP Add Payment Select Schedule Complete
instore-signin instore-otp instore-add-card instore-schedule instore-complete

Direct API

Checkout Steps

  1. Merchant creates a session

* Set order intent to AUTH * The customer checkout is texted or emailed as set in send_checkout_url

  1. Sezzle returns order uuid and checkout URL
  2. Customer receives Sezzle URL via text or email to check out
  3. Customer completes the Sezzle checkout
  4. Merchant receives order-complete notification

* You can either get order details or subscribe to webhooks

  1. (optional) Update the order reference
  2. Capture the payment
  3. (optional) Expire the checkout manually

* Delete the checkout if the customer has not completed the checkout and the merchant has canceled the order

  1. (optional) Refund the order