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
Merchant direct integration quickstart
- Use API keys to obtain an authentication token
- Create a session with an order object
- Redirect user to Sezzle checkout URL
- User completes Sezzle checkout
- Sezzle redirects user back to merchant complete URL
- 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.
If a merchant registers for a Sezzle production account the merchant also automatically has sandbox access. A user given default admin access to the production dashboard also has access to the sandbox.
A merchant can also register a sandbox account to run tests without registering for a production account, if for example the merchant is integrating the production functions into their own system and don’t want to be a merchant in the Sezzle system.
- Access the sandbox: https://sandbox.dashboard.sezzle.com/merchant
- Log in using your Sezzle Merchant dashboard credentials.
- From the menu at the left select Settings > API Keys
- Click the button labeled *create API key
- 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.
- Create an order on your store website using the example data below.
- Select Sezzle as the payment method.
- Verify that the order goes through.
User Test Data
Phone and Personal Information
- Use any valid US or CA phone number, real or fake.
- The expected OTP is
123123
. - 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:
- Go to www.postman.com/downloads/
- Click Download the App.
- When the installation file has finished downloading, click the file to install the application.
- 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.
- Click Run in Postman below to run the collection.
- In the Web page that opens, select your operating system.
- Click Open Postman if prompted.
- 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:
- In Postman, select Sezzle Gateway to open the collection tab.
- In the collection tab, click Variables. This tab will store your credentials that apply across the collection.
- To access your credentials, log in to the Sandbox Dashboard
- Go to Settings > API Keys - your sandbox credentials are here.
- In Postman, paste your credentials into both INITIAL VALUE and CURRENT VALUE columns for:
- public_key
- private_key
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. |
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
- Merchant calls
/v2/session
with order and intent ofAUTH
orCAPTURE
. Optionally, the merchant can send customer information. - Sezzle returns order uuid and checkout URL.
- Merchant redirects customer to Sezzle checkout URL.
- Customer completes the Sezzle checkout and is redirected to the session complete URL.
- If the intent was to
CAPTURE
, Sezzle will capture the total order amount. - If the intent was to
AUTH
, Sezzle will only authorize the total order amount and the merchant can call/v2/order
later to release or capture amounts using the order uuid.
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.
- A new order will be created
- The
intent
will be set toAUTH
- The
reference_id
will be the same as the original order
- The
- The reauthorized amount will be a new installment plan for the customer
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.
- Merchant starts a session by calling
/v2/session
with customer tokenize oftrue
. Including customer information is optional, but it can expedite the registration process for new Sezzle users. - Sezzle returns the session
tokenize
token and an approval URL. - Merchant redirects customer to the Sezzle approval URL.
- 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 sessiontokenize.token
to get the UUID of the customer. - 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.
- Create Checkout
- Capture Payment
- Supports Sezzle Checkout in an iframe, pop-up window, or redirect to Sezzle
- Handle Payment Success
- Handle Payment Cancel
- Handle Payment Failure
- Render Sezzle Button
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>
Create a placeholder element for the Sezzle Button to be rendered on the page(s).
Use HTML attributes to customize the button.
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"
});
- Edit the page file to implement the SDK.
- Configure the SDK with the following options:
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.
- Use a checkout payload as detailed in the Session Object.
- The cancel and complete urls are not required for
iframe
andpopup
mode.
- The cancel and complete urls are not required for
- Use an existing checkout url.
- The
mode
used when configuring the SDK checkout must match thecheckout_mode
when creating a session. - The parent window
origin
must be provided in the cancel and complete urls when thecheckout_mode
isiframe
orpopup
.
- The
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.
- A successfully completed Sezzle checkout will trigger an event to the
onComplete
handler. The event should include adata
object with thesession_uuid
andorder_uuid
. - If the user exits the Sezzle checkout for any reason, the
onCancel
handler will be executed. - Any error will trigger an event to the
onFailure
handler. The event should include adata
object with the error details.
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 |
---|---|---|
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
- Get Installment Plan
- Virtual Card Checkout in an iframe or pop-up window
- Handle Virtual Card Approval Success
- Handle Virtual Card Approval Cancel
- Handle Virtual Card Approval Failure
- Render Sezzle Button
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>
Create a placeholder element for the Sezzle Button to be rendered on the page(s).
Use HTML attributes to customize the button.
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
});
- Edit the page file to implement the SDK.
- Configure the SDK with the following options:
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
- A successfully completed Sezzle checkout will trigger an event to the
onComplete
handler. The event should include adata
object with thesession_id
and objects withcard
andholder
details. - If the user exits the Sezzle checkout for any reason, the
onCancel
handler will be executed. - If there is an error loading the Sezzle checkout page, the
onFailure
handler will be executed.
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
- Create a virtual card session.
- Add a window event listener with type
message
to the checkout page. - Open the card session
dashboard_url
using the mode provided in the create card session request. - Sezzle will post a message to the listener when the user has completed the card session.
- Verify message
event.data
exists. - Verify
event.data.szl_source
is equal tov_card
. - Verify
event.data.card
andevent.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
- (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:
- offer Sezzle as a payment option on the checkout page.
- refund Sezzle payments from your BigCommerce order management system.
- display Sezzle promotional messaging.
- authorize and capture payments.
This integration is only available with BigCommerce's Optimized One Page Checkout.
Integration Steps Overview
- Enable Sezzle as an online payment method
- Install and configure the Sezzle BigCommerce App
- Test your integration
- (Optional) Sandbox Testing
Before You Begin
- You should have a Sezzle merchant account.
- Please visit our signup page if you don't have an account.
- Make sure you have the following Sezzle details handy.
- Merchant ID
- Public API Key
Familiarize yourself with the transaction flow when buying with Sezzle.
Enable Sezzle as an online payment method
- Go to
Store Setup
>Payments
.
- Go to
Online Payment Methods
, findSezzle
and clickSet up
.
- Copy your
Public Key
andPrivate Key
from your Sezzle Merchant Dashboard, and paste them into the corresponding fields. - Select the
Transaction Type
. - Note: If you select
Authorize only
, payment will only be authorized and will have to be captured later in BigCommerce. - Select the
Test Mode
:No(Recommended)
, orYes
for testing. - Click on
Save
.
Install the Sezzle BigCommerce App
- Log in to your website's BigCommerce store admin page.
- In the left sidebar, click
Apps
>Marketplace
. - Click
BigCommerce.com/Apps
.
- Search for
Sezzle
.
- Click
Sezzle
, then clickGet This App
.
- Click
Install
.
- Check the PCI Compliance box, then click
Confirm
to start the installation.
BigCommerce Sandbox Testing
- Select the
Test Mode
asYes
fromSezzle Settings
inPayments
section of BigCommerce admin. Make sure you are doing this on yourdev
/staging
website.
- On your website, add an item to the cart, then proceed to
Checkout
and selectSezzle
as the payment method. - Click
Place Order
and you should be redirected to the Sezzle checkout page. If prompted, sign in.
- . Enter the payment details using test data then click
Complete Order
. - After the payment is completed on Sezzle, you should be redirected back to your website and see a successful payment page.
- 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
- Select the
Test Mode
asNo(Recommended)
fromSezzle Settings
inPayments
section of BigCommerce admin. - On your website, add an item to your cart, then proceed to
Checkout
and selectSezzle
as the payment method.
- Click
Place Order
.
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.
Widget Pre-Configuration
- Make sure you have the
Sezzle
App installed in your store. - Go to
Apps
>Sezzle
. - Copy your
Merchant ID
from your Sezzle Merchant Dashboard, and paste them into the corresponding fields in the Sezzle App of your BigCommerce admin. - Check the
Add Sezzle Widget Script
box. This will inject the widget script into the product and cart pages of your store. - Save the configuration.
- Go to
Storefront
>Script Manager
. Confirm that the Sezzle Widget scripts appear in the list of installed scripts.
- Widget is now ready to be configured.
- 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:
- Site has Optimized One-Page Checkout enabled.
- Go to
Advanced Settings
>Checkout
. - API Keys were entered correctly.
- To avoid typos or extra spaces, use the Copy icon in the Sezzle Merchant Dashboard.
- If you have multiple accounts with Sezzle, each store has its own merchant ID and API Keys that are tied to the store's URL.
Add Sezzle Widget Script
box is checked.- Widget script is present on your website and reflects the
Merchant ID
from your Sezzle Merchant Dashboard. - Go to a product page on your website.
- Right-click then select
Inspect
. - In the
Elements
tab, search forwidget.sezzle
.
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:
- Go to
Storefront
>Script Manager
. - Click the
Create a Script
button. - Set
Name of script
toSezzle Widget
. - Set
Location on page
toFooter
. - Set
Select pages where script will be added
toAll pages
. - Set
Script category
toEssential
. - Set
Script type
toScript
. - 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:
- Go to
Storefront
>My Themes
. - In your
Current Theme
, clickAdvanced
then selectEdit Theme Files
. - In the confirmation window, click
Edit Theme Files
. - In the file list, go to
templates
>pages
, then selectproduct.html
. - Copy+paste the script into the very bottom of the file, then click
Save and Apply Files
. - Repeat the previous step for the cart.html file.
For any kind of assistance, reach out to merchantsupport@sezzle.com
.
Uninstall Steps
- Go to
Apps
>My Apps
. - Under the Sezzle App, click
Uninstall
.
- Toggle the button against
Sezzle
underStore Setup
>Payments
>Online Payment Methods
to disableSezzle
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:
- Offer Sezzle as a payment option on the checkout page.
- Refund Sezzle payments from your Bold Cashier order management system.
- Authorize and capture payments.
This integration is currently only available on Shopify.
Integration Steps Overview
- Install the Sezzle Bold Cashier app
- Test your integration
Before You Begin
Note: As a merchant you can use one of two options:
- Bold hosting
- Self hosting
If you choose self hosting, contact Sezzle merchant support so we can add your domain to our security policy settings.
- You should have a Sezzle merchant account.
- Please visit our signup page if you don't have an account.
- You should generate API Keys using your Sezzle Merchant Dashboard
- Familiarize yourself with the transaction flow when buying with Sezzle.
Install the Sezzle Bold Cashier Extension
- First you must install the Bold Cashier app to your platform and store url. You can do this from the Bold Cashier site.
- Log in to your Shopify admin.
- Go to
Apps
>Bold Cashier
.
- In the Bold Cashier left sidebar, click
Marketplace
, then findSezzle
and clickInstall
.
- Click
Allow
to accept permissions and complete the installation.
- Installation is complete.
Bold Cashier Live Checkout
- On your website, add an item to your cart, then proceed to
Checkout
and selectSezzle
as the payment method. - Click
Complete Order
. - 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.
Uninstall Steps
- Go to your Bold Cashier
Marketplace
and scroll to findSezzle
. - 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:
- offer Sezzle as a payment option on the checkout page.
- refund Sezzle payments from your BuyItLive order management system.
- authorize and capture payments.
Integration Steps Overview
Before You Begin
- You should have a Sezzle merchant account.
- Please visit our signup page if you don't have an account.
- Make sure you have the following Sezzle details handy.
- Merchant ID
- Public API Key
- Private API Key
- Familiarize yourself with the transaction flow when buying with Sezzle.
BuyItLive Admin Configuration
- Log in to your website's BuyItLive admin.
- Click
Add Payment Provider
. - Select
Connect with Sezzle
. - Go to
Sezzle Payments
>Tools
. - Copy your
Private Key
andPublic Key
from your Sezzle Merchant Dashboard, and paste them into the corresponding fields in the Sezzle configuration page of your BuyItLive admin. - Click
Save Settings
. - Go to
Cart Settings
and ensure the Sezzle switch is in theOn
position. - Installation is complete.
BuyItLive Live Checkout
- On your website, add an item to your cart, then proceed to
Checkout
and selectSezzle
as the payment method. - Click
Place Order
. - 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.
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:
- offer Sezzle as a payment option on the checkout page.
- refund Sezzle payments from your CommentSold order management system.
- authorize and capture payments.
Integration Steps Overview
Before You Begin
- You should have a Sezzle merchant account.
- Please visit our signup page if you don't have an account.
- Make sure you have the following Sezzle details handy.
- Merchant ID
- Public API Key
- Private API Key
- Familiarize yourself with the transaction flow when buying with Sezzle.
CommentSold Admin Configuration
- In your CommentSold admin, go to
Setup
. - Click
Payment Gateways
. - Copy your
Private Key
andPublic Key
from your Sezzle Merchant Dashboard, and paste them into the corresponding fields in the Sezzle configuration page of your CommentSold admin. - Click
Update Keys
.
- Installation is complete.
CommentSold Live Checkout
- 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. - On your website, add an item to your cart, then proceed to
Checkout
and selectSezzle
as the payment method. - Click
Place Order
. - 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.
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:
- Offer Sezzle as a payment option on the checkout page.
- Refund Sezzle payments from your Lightspeed backend.
- Display Sezzle promotional messaging.
- Authorize and capture payments.
Integration Steps Overview
- Install and configure the Sezzle Lightspeed App
- Test your integration
- (Optional) Sandbox Testing
Before You Begin
- You should have a Sezzle merchant account.
- Please visit our signup page if you don't have an account.
- Make sure you have the following Sezzle details handy.
- Merchant ID
- Public API Key
- Private API Key
- Familiarize yourself with the transaction flow when buying with Sezzle.
Install the Sezzle Lightspeed App
- Log in to your Lightspeed back office.
- Navigate to
Apps > App Store
. - Search for
Sezzle
in the search bar and click on the Sezzle app.
- Click on
Install App
in the top right corner.
- Grant permission by clicking on
Grant access
.
- On successful install, you will be redirected to Sezzle App.
Configure Sezzle
Navigate to the Sezzle App by clicking on Go to App
located at Apps > Purchased Apps > Sezzle
.
Account Verification
- Copy your
Public Key
andPrivate Key
from your Sezzle Merchant Dashboard, and paste them into the corresponding fields. - Click on
link sezzle account
to link your Sezzle account with your Lightspeed store. - The message
Account successfully linked
is displayed when the account is verified.
Settings
- Toggle the
Sezzle at Checkout
checkbox to enable (On
) or disable (Off
) Sezzle as a payment option in the checkout page.
- Toggle the
Sezzle Widgets
checkbox to enable (On
) or disable (Off
) Sezzle widget in the PDP and Cart pages.
Payment Refund
- In your Lightspeed back office, go to
Orders > Orders
. - Select the order to be refunded.
- Click
Add Credit Invoice
. - Select the item and enter the quantity.
- Ensure that Status is set to
Not Paid
. - Click
Add
. - Cancelling a
Paid
order will also refund the payments for thePaid
Invoices. - On successful refund:
- An invoice with the status of
Not Paid
will be created in theOrders > Invoices
section. - The Order Status will be displayed as
Refunded
in your Sezzle Merchant Dashboard.
Lightspeed Sandbox Testing
- A Lightspeed test store must be used for Sandbox testing.
- On your website, add an item to the cart, then proceed to
Checkout
and selectSezzle
as the payment method. - Click
Buy
to be redirected to the Sezzle checkout page. If prompted, sign in.
- . Enter the payment details using test data then click
Complete Order
. - After the payment is completed on Sezzle, you should be redirected back to your website and see a successful payment page.
- 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
- Installing the Sezzle App in a live Lightspeed store will result in live checkouts.
- On your website, add an item to your cart, then proceed to
Checkout
and selectSezzle
as the payment method. - Click
Buy
.
- 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.
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:
- offer Sezzle as a payment option on the checkout page.
- refund Sezzle payments from your Magento 2 order management system.
- display Sezzle promotional messaging.
- authorize and capture payments.
- offer instant and delayed capture.
Integration Steps Overview
- Install and configure the Sezzle Magento 2 extension
- Test your integration
- (Optional) Sandbox Testing
Before You Begin
- You should have a Sezzle merchant account.
- Please visit our signup page if you don't have an account.
- 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:
composer require 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
Manual Method
- Download the .zip file from Sezzle's github repository.
- Unzip the file
- Navigate to
Magento
[Magento]/app/code/
usingSFTP
orSSH
. - Copy
Sezzle
directory from unzipped folder to[Magento]/app/code/
. - Open a terminal window and run the following command to enable
Sezzle
:php bin/magento module:enable Sezzle_Sezzlepay
- Run the
Magento
setup upgrade:php bin/magento setup:upgrade
- Run the
Magento
Dependencies Injection Compile:php bin/`magento` setup:di:compile
- Run the
Magento
Static Content deployment:php bin/magento setup:static-content:deploy
- Log in to
Magento
Admin and navigate toSystem > Cache Management
. - 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.
- In your Magento 2
[Magento]/app/code/
directory, create a directory namedSezzle
. - Inside the new
Sezzle
directory, create a directory namedSezzlepay
. - Inside the new
Sezzlepay
directory, extract the files from this repository. - 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
- Log in to your Magento 2 admin and go to
System/Cache Management
. - Flush the cache storage by selecting
Flush Cache Storage
.
Upgrade the Magento 2 Extension
Using the Composer
- Open terminal and navigate to
Magento
root path. - 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
- In the
Magento
admin site, navigate toStores > Configuration > Sales > Payment Methods > Sezzle > Payment Settings
- Select the Payment Mode:
Live
, orSandbox
for testing. - Enter your
Merchant UUID
,Public Key
andPrivate Key
. These can be found at the Sezzle Merchant Dashboard. - Select the
Payment Action
.Authorize only
will only authorize payment and requires that the payment be captured later.Authorize and Capture
will perform both in a single step. Important: See Authorize Only vs Authorize and Capture for details about the difference between the two choices. - Set the
Merchant Country
as per the origin. - Set
Min Checkout Amount
to restrict Sezzle payment method below that amount. - Set
Payment from Applicable Countries
toSpecific Countries
. - Set
Payment from Specific Countries
toUnited States
orCanada
as Sezzle is currently available for US and Canada only. - Select
Enable Customer Tokenization
.Yes
prompts the customer to allow their account to be tokenized. See Customer tokenization - Set
Sort Order
to manage the position of Sezzle in the checkout payment options list. - Save the configuration and clear the cache.
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:
- Set
Enable In-Context Solution
toYes
to enable In-Context Checkout. - Set
In-Context Checkout Mode
toIFrame
orPopUp
Settlement Report Configuration
- Set
Enable Settlement Reports
toYes
to enable the Settlement Reports Dashboard. - Set
Range
to a value based on which you want to fetch the Settlement Reports. - Set
Enable Automatic Syncing
to fetch the Settlement Reports asynchronously. (Note that this requirescron
to be enabled.) - Set Schedule and Time of Day for the automatic sync to run.
Widget Configuration
- Set
Enable Widget in PDP
toYes
when adding the widget script to the Product Display Page, helping to enable the Sezzle payment widget modal in the PDP. - Set
Enable Widget in Cart Page
toYes
when adding the widget script to the Cart Page, helping to enable Sezzle payment widget modal in the Cart Page. - Set
Enable Installment Widget in Checkout Page
toYes
if you want to show the Sezzle installment plan widget under the Sezzle payment option on the Checkout Page. - Set
Path to Price Element
to define where in the Checkout Page the order total text value will be detected. - Save the configuration and clear the cache.
- PDP Widget
- Cart Page Widget
Developer Configuration
- Enable the log tracker to trace the Sezzle checkout process.
- Set
Send Logs to Sezzle
toYes
to send the logs to Sezzle on a periodic basis. (Note that this requires cron to be enabled.) - You may download the latest logs by clicking on
Sezzle Log
. - Save the configuration and clear the cache.
Your store is now ready to accept payments through Sezzle.
Magento 2 Sandbox Testing
- In the
Sezzle
configuration page of yourMagento
admin, enter theSandbox
API Keys
from your Sezzle Merchant Sandbox Dashboard and set thePayment Mode
toSandbox
, and save the configuration. Make sure you are doing this on a dev/staging/test website. - On your website, add an item to the cart, then proceed to
Checkout
and selectSezzle
as the payment method. - To pay with Sezzle:
- If the customer is not tokenized, click
Continue to Sezzle
.
- If the customer is tokenized, click
Place Order
. Note: Sezzle will not redirect, the checkout process will be completed here.
- If In-Context checkout, click
Pay with Sezzle
.
- Sign In or Sign Up to continue.
- Enter the payment details using test data, then advance to the final page.
- (Optional, tokenization only) Check the
Approve {Website Name} to process payments from your Sezzle account for future transactions. You may revoke this authorization at any time in your Sezzle Dashboard
to tokenize your account.
- After payment is completed at Sezzle, you will be returned to your site's successful payment page.
Sandbox
testing is complete. You can log in to yourSezzle Merchant Sandbox Dashboard
to see the test order you just placed.
Magento 2 Live Checkout
- In the Sezzle configuration page of your Magento 2 admin, enter the API Keys from your Sezzle Merchant Dashboard and disable
Sandbox/Test
as theAPI Mode
, then save the configuration. - On your website, add an item to the cart, then proceed to
Checkout
and selectSezzle
as the payment method. - To pay with Sezzle:
- If the customer is not tokenized, click
Continue to Sezzle
. - If In-Context checkout, click
Pay with Sezzle
.
- If the customer is not tokenized, click
- If you are presented 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.
Capture Payment
- If
Payment Action
is set toAuthorize and Capture
, the capture will be performed instantly from the extension after the order is created and validated inMagento
. - If
Payment Action
is set toAuthorize
, you will need to capture the payment manually from theMagento
admin using the following steps: - Go to the order and click on
Invoice
. - Verify your input in the
Create Invoice
page and click onSave
to create the invoice. - This will automatically capture the payment in Sezzle.
Refund Payment
- Go to
Sales > Orders
in theMagento
admin. - Select the order for which you want to refund the payment.
- Click on
Credit Memo
and verify your input on theCreate Credit Memo
page. - Save it to initiate the refund in Sezzle.
- Check the
Order Status
in theSezzle Merchant Dashboard
.Refunded
indicates that payment has been fully refunded whilePartially Refunded
indicates that the payment has been partially refunded.
Release Payment
- Go to
Sales > Orders
in theMagento
admin. - Select the order for which you want to release the payment.
- Click on
Void
and confirm your action. - Check the
Order Status
inSezzle Merchant Dashboard
.Deleted due to checkout not being captured before expiration
indicates that the payment has been fully released. Magento does not support partial releases.
Order Verification in Magento Admin
- Log in to
Magento
admin, navigate toSales > Orders
, and select the order to verify. - If Order Status is
Processing
andTotal Paid
equalsGrand Total
, then the payment was successfully captured by Sezzle. - If Order Status is
Pending
andTotal Paid
does not equalGrand Total
, then payment is authorized but yet not captured. - If the Order Status is
Closed
, then payment has been refunded. - If the Order Status is
Canceled
, then payment has been released.
Order Verification in Sezzle Merchant Dashboard
- Log in to
Sezzle Merchant Dashboard
, navigate toOrders
, and select the order to verify. Approved
status indicates that payment was successfully captured by Sezzle.Authorized, uncaptured
indicates that payment was authorized but yet not captured.Refunded
status indicates that the payment was refunded.Deleted due to checkout not being captured before expiration
status indicates that either the payment was not captured before the authorization expired, or the payment has been released.
Customer Tokenization Details
- Log in to
Magento
admin, navigate toCustomers > All Customers
, and select the customer to view tokenization details. - If the customer is tokenized, the
Sezzle
tab will appear. - The
Status
,Token
, andToken Expiration
will appear on the tab.
Settlement Reports
- Log in to
Magento
admin and navigate toReports > Sales > Sezzle Settlement
. A list of recent Settlement Reports will be shown. - To make a quick sync, enter the
From
andTo
Date and click onSync
. - Click on
Download
from theAction
column to download a Settlement Report. - To view details of a particular Settlement Report, click on
View
from theAction
column. You may also download the Settlement Report details from the Settlement Report view. - You can download the Settlement Report in
CSV
orExcel
format.
Troubleshooting
If testing was unsuccessful, review the following:
- Sezzle-Magento2 extension is the latest version.
- Sezzle extension is enabled.
- Go to
System
>Configuration
>Sales
>Payment Methods
>Sezzle
and ensureEnabled
dropdown is set toYes
.
- Go to
Merchant UUID
was entered correctly.- API Keys were entered correctly.
- It is recommended to use the Copy icon in the Sezzle Merchant Dashboard to avoid typos or extra spaces.
- Cache Storage was flushed.
- Widget script is present on your website and reflects the
Merchant UUID
from your Sezzle Merchant Dashboard.- Go to a product page on your website.
- Right-click then select
Inspect
. - In the
Elements
tab, search forwidget.sezzle
.
- If all the above checks failed, the merchant can forward the
<magento root>/var/log/sezzlepay.log
to the Sezzle team atmerchantsupport@sezzle.com
. It is always recommended to send thesystem.log
andexception.log
for better tracing of issues.
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:
- offer Sezzle as a payment option on the checkout page.
- refund Sezzle payments from your Mojo order management system.
- display Sezzle promotional messaging.
- authorize and capture payments.
Integration Steps Overview
- Add Sezzle to your store as a payment method
- Test your integration
Before You Begin
- You should have a Sezzle merchant account.
- Make sure you have the following Sezzle details handy.
- Public API Key
- Private API Key
- Familiarize yourself with the transaction flow when buying with Sezzle.
Add Payment Method
- Log into your Mojo admin account and navigate to the
Integrations
tab. - Select Payment Systems in the dropdown menu and click on
Sezzle
in the next window. - Toggle Enable to ‘ON’.
- Next, toggle Test Mode to ‘OFF’ unless you are testing your integration in Sandbox. For Sandbox testing instructions, see Mojo sandbox testing.
- Next, enter your Sezzle Public and Private Key within the appropriate fields.
- 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.
- NOTE: the Hide pay-over-time solutions switch will be automatically hidden for those customers that choose the multi-pay order option.
- Once satisfied with your transaction flow, click the blue Save Changes button.
Mojo Sandbox testing
- In the
Sezzle
Payment Systems configuration page of yourIntegrations
tab, enter the Sandbox API Keys from your Sezzle Merchant Sandbox Dashboard. - Next, toggle Test Mode to ‘ON’, then save the configuration. Make sure you are doing this on your
dev
/staging
website. - On your website, add an item to the cart, then proceed to
Checkout
and selectSezzle
as the payment method. - Complete the Mojo checkout process, and you should be redirected to the Sezzle checkout page. If prompted, sign in.
- Enter the payment details using test data then click
Complete Order
. - After the payment is completed on Sezzle, you should be redirected back to your website and see a successful payment page.
- 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
- On your store website, add an item to your cart, then proceed to check out and select
Sezzle
as the payment method. - Follow the Mojo checkout process until you are redirected to Sezzle.
- 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:
- offer Sezzle as a payment option on the checkout page.
- refund Sezzle payments from your NopCommerce order management system.
- authorize and capture payments.
- offer instant and delayed capture.
Integration Steps Overview
- Install and configure the Sezzle NopCommerce extension
- Test your integration
- (Optional) Sandbox Testing
Before You Begin
- You should have a Sezzle merchant account.
- Please visit our signup page if you don't have an account.
- Make sure you have the following Sezzle details handy.
- Merchant ID
- Public API Key
- Private API Key
- 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
- Go to
Configuration
>Local Plugins
. - Click
Upload Plugin or Theme
and select the downloaded zipped file per the instructions given. - After the extension has been uploaded, click
Install
. - Under
Configuration
, go toPayment Methods
and then clickConfigure
underSezzle
.
- Click
Edit
from thePayment Method
list. - 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. - Copy your
Public Key
andPrivate Key
from your Sezzle Merchant Dashboard, and paste them into the corresponding fields in the Sezzle configuration page of your NopCommerce admin. - Set
Transaction Mode
to eitherAuthorize
orAuthorize and Capture
. Important: See Authorize Only vs Authorize and Capture for details about the difference between the two choices. - Save the configuration.
- To restrict Sezzle usage based on billing country, go to
Configuration
>Payment Restrictions
. - Choose the country you want to restrict for Sezzle. Please note that Sezzle is currently available for customers from
The United States
andCanada
. You may wish to restrict all countries where Sezzle is not available.
- Integration is complete.
NopCommerce Sandbox Testing
- 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 yourdev
/staging
website. - On your website, add an item to the cart, then proceed to
Checkout
and selectSezzle
as the payment method. - Click
Confirm
and you should be redirected to the Sezzle checkout page. If prompted, sign in.
- Enter the payment details using test data then click
Complete Order
. - After the payment is completed on Sezzle, you should be redirected back to your website and see a successful payment page.
- 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
- 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. - On your website, add an item to the cart, then proceed to
Checkout
and selectSezzle
as the payment method.
- Click
Continue
thenConfirm
.
- 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.
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:
- offer Sezzle as a payment option.
- refund Sezzle payments from your Open Cart order management system.
- display Sezzle promotional messaging.
- authorize and capture payments.
Sezzle supports Opencart versions 3.0.3.7.
Integration Steps Overview
Before You Begin
- You should have a Sezzle merchant account.
- Please visit our signup page if you don't have an account.
- Make sure you have the following Sezzle details handy.
- Familiarize yourself with the transaction flow when buying with Sezzle.
Installation
- Download the Sezzle module from the Opencart Marketplace.
- In your Opencart back office, go to
Extensions
>Installer
. - Select Upload and select the .zip file that you downloaded.
- Go to
Extensions
>Payments
. - 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
- In your Opencart back office, go to
Sales
>Orders
. - Select the order for which you want to refund the payment.
- Go to the
Sezzle
tab - Enter the refund amount.
- Click
Refund Payment
.
Payment Release
- In your Opencart back office, go to
Sales
>Orders
. - Select the order for which you want to release the payment.
- Go to the
Sezzle
tab - Enter the release amount.
- 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
- In your PrestaShop back office, go to
Modules > Module Manager
. - Select 'Upload a module' , then select the .zip file that you downloaded on your computer.
- Go to
Payment > Payment methods
. - 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 PrestaShop video tutorial.
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.
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.
Payment Refund
- In your PrestaShop backoffice, go to
Orders > Orders
. - Select the order for which you want to refund the payment.
- Click on
Partial Refund
, enter the amount and click onPartial Refund
right below - For Full Refund, you have to fill up all the order related amounts in respective places.
- Change the Order Status to
Refunded
only if full refund is successful.
Payment Release
- In your PrestaShop backoffice, go to
Orders > Orders
. - Select the order for which you want to refund the payment.
- Change the Order status to
Cancelled
and clickUpdate Status
.
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:
- Offer Sezzle as a payment option on the checkout page.
- Fefund Sezzle payments from your order management system.
- Display Sezzle promotional messaging.
- Authorize and capture payments.
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:
- offer Sezzle as a payment option on the checkout page.
- refund Sezzle payments from your Shift4Shop order management system.
- display Sezzle promotional messaging.
- authorize and capture payments.
Integration Steps Overview
- Install and configure the Sezzle Shift4Shop App
- Test your integration
- (Optional) Sandbox Testing
Before You Begin
- You should have a Sezzle merchant account.
- Please visit our signup page if you don't have an account.
- Make sure you have the following Sezzle details handy.
- Merchant ID
- Public API Key
- Private API Key
- Familiarize yourself with the transaction flow when buying with Sezzle.
Install the Sezzle Shift4Shop Extension
- Log in to your website's Shift4Shop admin.
- Get the app here.
- Copy+paste your
Store URL
into the input area, then clickProceed
.
- Check the PCI Compliance box, then click
Acknowledge and Authorize the App
to start the installation.
Admin Configuration
- In your Shift4Shop admin, go to
Settings
>Payment
. - Click
Select Payment Methods
.
- Turn the Sezzle switch to
On
. - 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. - Next to
Private Key
, clickChange
. Then, copy yourPrivate Key
from your Sezzle Merchant Dashboard, and paste it into the corresponding field in the Sezzle configuration page of your Shift4Shop admin. - Click
Save
.
- To restrict Sezzle usage by country, click the
Exclude List
hyperlink under the Sezzle switch. - Click
Add Location
. - Select the desired country, then click
Add
.
- Installation is complete.
Shift4Shop Sandbox Testing
- 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 yourdev
/staging
website. - On your website, add an item to the cart, then proceed to checkout and select
Sezzle
as the payment method. - Click
Place Order
and you should be redirected to the Sezzle checkout page. If prompted, sign in.
- Enter the payment details using test data then click
Complete Order
. - After the payment is completed on Sezzle, you should be redirected back to your website and see a successful payment page.
- 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
- 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. - On your website, add an item to your cart, then proceed to
Checkout
and selectSezzle
as the payment method. - Click
Place Order
.
- 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.
Troubleshooting
If testing was unsuccessful, review the following:
- Sezzle Shift4Shop extension is the most updated version.
- Sezzle payment method is enabled.
- API Keys were entered correctly.
- It is recommended to use the Copy icon in the Sezzle Merchant Dashboard to avoid typos or extra spaces.
- If you have multiple accounts with Sezzle, the merchant ID and API Keys are tied to only one URL.
- Widget script is present on your website and reflects the
Merchant ID
from your Sezzle Merchant Dashboard. - Go to a product page on your website.
- Right-click then select
Inspect
. - In the
Elements
tab, search forwidget.sezzle
.
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:
- From your Shift4Shop admin, go to
Settings
>Design
>Themes & Styles
. - In your
Current Theme
, click the button labeledMore
then selectEdit Template(HTML)
. - Find the copy of your theme under
Go to Folder
. - Click the
gear
icon next to theproduct_items.html
file, then clickEdit
. - When the dashboard asks if you want to edit your theme files, click the
Edit Theme Files
button. - In the
Source Code
text area, copy+paste the script at the very beginning of the file. - 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
- Go to
Settings
>Payment
. - Click
Select Payment Methods
. - Under the Sezzle App, click the
gear
icon then clickDelete
.
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:
- Offer Sezzle as a payment option on the checkout page.
- Refund Sezzle payments from your Shopify order management system.
- Authorize and capture payments.
Integration Steps Overview
- Install and configure the Sezzle Payments app
- Test your integration
- (Optional) Sandbox Testing
Before You Begin
- You should have a Sezzle merchant account.
- Please visit our signup page if you don't have an account.
- Make sure you have the following Sezzle details handy.
- Familiarize yourself with the transaction flow when buying with Sezzle.
Install the Sezzle Payments app
- Click on
Add app
by navigating to the Sezzle Payments app. - 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. - Click
update settings
to verify your Sezzle account. - You will be redirected to the payment settings page, where you will need to activate Sezzle Payments for your store.
- Click
Activate
. - Once that is complete you should see Sezzle available as a payment method for your store.
To validate that you’ve successfully installed the new Payments App:
You should see Sezzle Payments
installed in your Settings
> Payments
.
Shopify Live Checkout
- 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. - On your website, add an item to your cart, then proceed to
Checkout
and selectSezzle
as the payment method. - Click
Place Order
.
- 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.
Adding the Sezzle Tile to Accepted Payment Methods Footer
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:
- Sezzle Payments Shopify extension is the most updated version.
- Go to
Apps
>Sezzle Payments
, then clickAbout
. If there is an option to upgrade, do so now.
- Go to
- Sezzle gateway is activated.
- Go to
Settings
>Payment Providers
and ensure "Sezzle is active" is listed under theAlternative Payment Methods
section.
- Go to
- API Keys were entered correctly.
- It is recommended to use the Copy icon in the Sezzle Merchant Dashboard to avoid typos or extra spaces.
- If you have multiple accounts with Sezzle, the merchant ID and API Keys are tied to only one URL.
Uninstall the Sezzle Payments app
- Go to
Apps
. - Find
Sezzle Payments
and clickDelete
.
FAQS
- 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.
- 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.
- 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.
You can also search in Shopify Admin for Orders for the payment id using the format receipt.payment_id: <payment_id>
.
- 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.
- 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
- Install the Sezzle Widget app
- Enable Widgets & Checkout Button embed blocks
- (Alternative - 2.0 themes only) Enable Widgets & Checkout Button app blocks
Before You Begin
- You should have a Sezzle merchant account.
- Please visit our signup page if you don't have an account.
- Install and configure the Sezzle Payments App
- Make sure you have the following Sezzle details handy.
Install the Sezzle Widget app
- Log in to your website's Shopify admin.
- In your Sezzle Merchant Dashboard Setup Checklist, click
Install Sezzle Widget app
. - Click
Get the App
. - Click
Install App
.
- 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.
Integrating Widgets and Checkout Button (with Embed Blocks)
- 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.
- Select the asset you wish to install, i.e. Sezzle Price Widget, then click Next.
- Select the page on which you wish to install the asset, i.e. Product page, then click Finish.
- The last window is information only, however, you must click Activate Widget and complete the following step before changes take effect.
- In the Embed Block Editor panel, change the font size and font family as desired, then click Save.
- Add a product to the cart, then select Cart from the dropdown in the center of the top toolbar.
- 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
orPay with Sezzle
. - Theme can be set to
light
ordark
.
- Template can be set to
- 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.
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.
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.
- In your Shopify Admin, go to Online Store > Themes.
- Click the green "Customize" button on the desired theme.
- 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.
- 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.
- In the left sidebar drag the "Sezzle Widget" block under the "Price" block (or wherever you'd like the widget positioned on the page).
- In the App Block editor panel, adjust font family and font size as desired, then click Save.
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.
- In your Shopify Admin, go to Online Store > Themes.
- Click the green "Customize" button on the desired theme.
- Click on the dropdown menu at the top middle of the screen and select "Cart".
- 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.
- 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).
- In the App Block editor panel, adjust button template and theme as desired, then click Save.
- Template can be set to
Checkout with Sezzle
orPay with Sezzle
. - Theme can be set to
light
ordark
. - The default placement will place the Sezzle Checkout Button after default checkout button and inherit page styles.
- Template can be set to
Uninstalling Embed Blocks
- In your Shopify Admin, go to Online Store > Themes.
- Click the green "Customize" button on the desired theme.
- Click the Extensions icon in the left toolbar.
- Toggle the desired embed block(s) to the OFF position, then click Save.
Uninstalling App Blocks
- In your Shopify Admin, go to Online Store > Themes.
- Click the green "Customize" button on the desired theme.
- 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.
- In the left sidebar, select the Sezzle Widget section.
- At the bottom of the Editor panel, click
Remove Block
then click Save. - Click on the dropdown menu at the top middle of the screen and select "Cart".
- In the left sidebar, select the Sezzle Checkout Button section.
- At the bottom of the Editor panel, click
Remove Block
then click Save.
Uninstalling the Sezzle Widget App
- Go to Apps > Sezzle Widget.
- In the top-right corner, click the Menu icon, then select
App Settings
. - 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.
- Deleting the app will automatically remove all app blocks and embed blocks from all themes. Any code change installations will not be removed automatically.
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:
- Go to
Sales Channels
>Online Store
>Themes
. - Click
Actions
, then selectEdit Code
. - In the
Code Explorer
, go to theLayout
folder and select thetheme.liquid
file. - 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:
- Sezzle Shopify extension is the most updated version.
- Go to
Apps
>Sezzle Widget
, then clickAbout
. If there is an option to upgrade, do so now.
- Go to
- API Keys were entered correctly.
- If you have multiple accounts with Sezzle, the API Keys are tied to only one URL.
- It is recommended to use the Copy icon in the Sezzle Merchant Dashboard to avoid typos or extra spaces.
- Widget script is present on your website and reflects the
Merchant ID
from your Sezzle Merchant Dashboard.- If you have multiple accounts with Sezzle, the Merchant ID are tied to only one URL.
- Go to a product page on your website.
- Right-click then select
Inspect
. - In the
Sources
tab, open the top folder with your store URL as title. If there is a subfolder titledapps/sezzle/v1/javascript
, the widget blocks are enabled correctly.
- Widget configuration is present.
- Go to product page on your website.
- Right-click then select
Inspect
. - In the
Console
tab, typedocument.sezzleConfig
. - If the value is not undefined and configGroups Array is more than 0, a config is present.
- Blocks and Embed Blocks support a long list of themes. If your theme is not supported, the config might not be present. Please use the Request Help form to request custom integration.
- Widget configuration is not being overridden.
- Go to a product page on your website.
- Right-click then select
Inspect
. - In the
Sources
tab, open the top folder with your store URL as title, then the subfolder titledapps/sezzle/v1/javascript
. - If you see
document.sezzleConfig
in this file, a config override is present but may be out of date. This must be removed or updated from Sezzle's side. - Config overrides are necessary for implementing widgets on custom themes or templates, or adding advanced customization options to the widget.
- If you see a note in this file stating that widgets for this account have been deactivated, please contact Sezzle team to reactivate them.
- Widget appearance is not to merchant's standards.
- If you have noticed a bug in the widget, modal, or checkout button please use the Request Help form to notify us of the issue. We can then determine whether this is an issue for all merchants or your specific theme and work to resolve accordingly.
- We offer a few select customization options. Please use the Request Help form to request any of the following:
- Grayscale logo
- Reflect checkout minimum in widget
- Reflect Sezzle/Afterpay dual widget
- Style & position changes
- Conditional rendering for subscription, gift cards, etc.
- Conditional rendering above a certain price threshold > Note: Implementing customizations may prevent widgets from showing on unpublished themes and will require help from the Sezzle team to update widgets when a new theme is published.
- Grayscale logo
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:
- offer Sezzle as a payment option on the checkout page.
- refund Sezzle payments from your Shopware 5 backend.
- authorize and capture payments.
- offer instant and delayed capture.
Integration Steps Overview
- Install and configure the Sezzle Shopware 5 Plugin
- Test your integration
- (Optional) Sandbox Testing
Before You Begin
- You should have a Sezzle merchant account.
- Please visit our signup page if you don't have an account.
- Make sure you have the following Sezzle details handy.
- Merchant ID
- Public API Key
- Private API Key
- 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:
- Open terminal and navigate to
Shopware
root path. - Run the below command for the adding the plugin into your codebase:
composer require sezzle/shopware5
Manual Method
- Download the .zip or tar.gz file from
Sezzle's
github repository. - Unzip the file.
- Navigate to
Shopware
[Shopware]/custom/plugins/
either throughSFTP
orSSH
. - Copy
SwagPaymentSezzle
directory from unzipped folder to[Shopware]/custom/plugins/
. - Log in to
Shopware 5
Backend and navigate toConfiguration > Plugin Manager > Management > Installed
. - Find
Sezzle
from theUninstalled
list and click on the+
button to install the plugin. - Once installed, you will see
Sezzle
underInactive
list. Click on thex
button to activate the plugin. - After successful activation, you will be able to see
Sezzle
underConfiguration > Payment Methods
.
Upgrade the Shopware 5 Plugin
Using the Composer
- Change the version number of the
sezzle/sezzlepay
insidecomposer.json
. - Open terminal and navigate to
Shopware
root path. - Run the following command for the updating the plugin to a newer version:
composer update sezzle/sezzlepay
Manual Method
- Download the .zip or tar.gz file from
Sezzle's
github repository. - Unzip the file.
- Delete the contents from
[Shopware]/custom/plugins/SwagPaymentSezzle
. - Copy the contents of
SwagPaymentSezzle
directory from unzipped folder to[Shopware]/custom/plugins/SwagPaymentSezzle/
. - Log in to
Shopware
Backend and navigate toConfiguration > Cache/performance
. - Flush the cache storage by selecting
Clear shop cache
.
Configure Sezzle
Payment Configuration
- Make sure you have the
Merchant UUID
and theAPI Keys
from the Sezzle Merchant Dashboard. You must be registered with Sezzle to access the Merchant Dashboard. - Navigate to
Customers > Payments > Sezzle > Settings
in yourShopware
Backend. - Enable
Sezzle
by checking theEnable for this shop
checkbox. - Set the
Public Key
andPrivate Key
. - For testing, enable the Sandbox mode by checking the
Enable sandbox
checkbox. - You can also verify your
API Keys
by clicking on theTest API Settings
button. - Set the
Merchant UUID
. - Set the
Merchant Location
as per the store origin. - Check the
Enable Tokenization
checkbox to enable customer tokenization in the Sezzle checkout. If the customer agrees to be tokenized, then future checkouts for this customer will not require a redirect to Sezzle. See Customer tokenization - Set
Payment Action
asAuthorize only
for doing payment authorization only andAuthorize and Capture
for doing instant capture. Important: See Authorize Only vs Authorize and Capture for details about the difference between the two choices. - Check the
Enable Widget in PDP
checkbox to add the widget script and theSezzle Widget
Modal to the Product Display Page. - Check the
Enable Widget in Cart
checkbox to add the widget script and theSezzle Widget
Modal to the Cart Page. - Check the
Display errors
checkbox for showing upSezzle
related error code in the web URL on failure. - Set
Logging
toERROR
to log only error messages orALL
to log all messages, including errors, warnings, and notices. - Save the settings and clear the cache.
Your store is now ready to accept payments through Sezzle.
Frontend Functionality
- If you have successfully installed the Sezzle plugin, then Sezzle will be included as a payment method in the checkout page.
- Select
Sezzle
and continue. - Once you click
Complete Payment
, you will be redirected toSezzle Checkout
to complete the checkout. Note: If your account is already tokenized, skip the next two steps as you will not be redirected to Sezzle. - [Optional] On the final page of Sezzle Checkout, check the
Approve {Store Name} to process payments from your Sezzle account for future transactions. You may revoke this authorization at any time in your Sezzle Dashboard
to tokenize your account. - Finally, click on
Complete Order
to complete your purchase. - On successful order placement, you will be redirected to the order confirmation page.
Capture Payment
- If
Payment Action
is set toAuthorize and Capture
, capture will be performed instantly from the plugin after order is created and validated inShopware
. - If
Payment Action
is set toAuthorize
, capture needs to be performed manually from theShopware
backend. Follow the below steps to capture. - Go the order and click on
Sezzle
tab. - Enter a value in
Amount
field and click onCapture
to capture the payment inSezzle
.
Refund Payment
- Go the order and click on
Sezzle
tab. - Enter a value in
Amount
field and click onRefund
to refund the payment inSezzle
.
Release Payment
- Go the order and click on
Sezzle
tab. - Enter a value in
Amount
field and click onRelease
to release the payment inSezzle
.
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.
- Log in to
Shopware
admin and navigate toCustomers > Orders
.
- Proceed into the corresponding order.
- Payment is successfully captured by
Sezzle
when: - Current Payment Status is
Completely Paid
. Capture Amount
equals theAuth Amount
.- Payment is only authorized when:
- Current Payment Status is
Open
. Auth Amount
equals theOrder Amount
.Capture Amount
equals0
.- Payment is refunded when:
- Current Payment Status is
Re-crediting
. Refund Amount
is equal to or less than theCapture Amount
.- Payment is released when:
- Current Payment Status is
The process is cancelled for a full release or Open for a partial release
. - Amount will be deducted from
Auth Amount
and should appear inReleased Amount
.
Order Verification in Sezzle Merchant Dashboard
- Log in to
Sezzle Merchant Dashboard
and navigate toOrders
. - Proceed into the corresponding order.
- Payment successfully captured has a status of
Approved
. - Payment authorized but not captured has a status of
Authorized, uncaptured
. - Payment refunded has a status of
Refunded
orPartially refunded
. - Payment released or not captured before the authorization expired has a status of
Deleted due to checkout not being captured before expiration
.
Customer Tokenization Details
- Log in to
Shopware
Backend and navigate toCustomers > Customers
. - Select customer to view tokenization details.
Sezzle Customer UUID
,Sezzle Customer UUID Expiry
andSezzle Customer UUID Status
will appear underFree text fields
.
Shopware 5 Sandbox Testing
- In the
Sezzle
settings page of yourShopware
Backend, enter theSandbox
API Keys
from your Sezzle Sezzle Merchant Dashboard and check theEnable sandbox
checkbox, then save the configuration. Make sure you are doing this on yourdev/staging
website. - On your website, add an item to the cart, then proceed to
Checkout
and selectSezzle
as the payment method. - Once you click
Complete Payment
, you will be redirected toSezzle Checkout
to complete the checkout. Note: If your account is already tokenized, skip the next four steps as you will not be redirected to Sezzle. - Sign In or Sign Up to continue.
- Enter the payment details using test data then click
Complete Order
. - [Optional] Check the
Approve {Store Name} to process payments from your Sezzle account for future transactions. You may revoke this authorization at any time in your Sezzle Dashboard
to tokenize your account. - Finally, click on
Complete Order
to complete your purchase. Sandbox
testing is complete. You can log in to yourSezzle Merchant Sandbox Dashboard
to see the test order you just placed.
Shopware 5 Live Checkout
- In the
Sezzle
settings page of yourShopware
Backend, enter theAPI Keys
from your Sezzle Merchant Dashboard and uncheck theEnable sandbox
checkbox, then save the configuration. - On your website, add an item to the cart, then proceed to
Checkout
and selectSezzle
as the payment method. - Click
Complete Payment
. - 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
Sezzle
plugin creates logs ofSezzle
action.- In the event that
Merchant Success
andSupport
teams are unable to resolve any issue, the Merchant may request that these logs be forwarded to thePlatform Integrations
team for further troubleshooting.. - Logs are named as
plugin_dev-<current-date>.log
. To facilitate troubleshooting, we recommend sending thecore_dev-<current-date>.log
as well.. - Logs can be find in
[Shopware]/var/log/
.
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:
- offer Sezzle as a payment option on the checkout page.
- refund Sezzle payments from your Wix order management system.
- display Sezzle promotional messaging.
- authorize and capture payments.
Integration Steps Overview
- Add Sezzle to your store as a payment method
- Test your integration
Before You Begin
- You should have a Sezzle merchant account.
- Make sure you have the following Sezzle details handy.
- Public API Key
- Private API Key
- Familiarize yourself with the transaction flow when buying with Sezzle.
Add Payment Method
- From your Wix store dashboard, select
Settings
, andAccept Payments
. - Choose the
See More Payment Options
link at the bottom of the page. - Locate Sezzle in the list, and choose
Connect
. This takes you to the Connect Sezzle page. - 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
- On your store website, add an item to your cart, then proceed to
Checkout
and selectSezzle
as the payment method. - Follow the Wix checkout process to the final step and choose
Place Order
. - 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:
- API Keys were entered correctly.
- To avoid typos or extra spaces, use the Copy icon in the Sezzle Merchant Dashboard.
- If you have multiple accounts with Sezzle, each store has its own merchant ID and API Keys that are tied to the store's URL.
If Sezzle does not appear as a payment option during live testing:
- Ensure that Sezzle is activated as a payment provider on your site.
- Go to
Settings
>Accept Payments
and ensure that "Accepting Payments" is displayed for Sezzle.
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:
- offer Sezzle as a payment option on the checkout page.
- refund Sezzle payments from your WooCommerce order management system.
- display Sezzle promotional messaging.
- authorize and capture payments.
Integration Steps Overview
- Install and configure the Sezzle WooCommerce extension
- Test your integration
- (Optional) Sandbox Testing
Before You Begin
- You should have a Sezzle merchant account.
- Please visit our signup page if you don't have an account.
- Make sure you have the following Sezzle details handy.
- Familiarize yourself with the transaction flow when buying with Sezzle.
Install the Sezzle WooCommerce Extension
- Log in to your website's Wordpress admin.
- Ex: your-website.com/wp-admin
- In the left sidebar, click
Plugins
>Add New
. - Search for
Sezzle
. - Click
Install Now
.
- Click
Activate
.
Admin Configuration
- In the left sidebar, click
WooCommerce
>Settings
. - Select the
Payments
tab.
- Click the
Manage
button forSezzle
.
- Check the
Enable/Disable
checkbox for enabling Sezzle. - Check the
Payment option availability in other countries
if you want to allow Sezzle outside ofUS
andCanada
.
- Note, Sezzle operates only in
US
andCanada
. Be sure to check this option.
- Set
Merchant ID
as received from theBusiness
section of Sezzle Merchant Dashboard. - Copy your
Private Key
andPublic Key
from your Sezzle Merchant Dashboard, and paste them into the corresponding fields. - Check the
Create order post checkout completion
checkbox for enabling WooCommerce order creation only after Sezzle checkout is successfully completed. - Set
Minimum Checkout Amount
if you want to restrict Sezzle based on a minimum order total. - Set the
Transaction Mode
asLive
for production andSandbox
for sandbox testing mode. - 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. - Configure the installment plan widget under
Installment Plan Widget Configuration
settings - Check the
Enable Installment Widget Plan in Checkout page
checkbox for enabling installment widget plan. - Set the
Order Total Container Class Name
. Default iswoocommerce-Price-amount
. - Set the
Order Total Container Parent Class Name
. Default isorder-total
. - Check the
Enable Logging
checkbox for logging Sezzle checkout related data. This is helpful for debugging issues, if encountered.
- Click
Save Changes
.
WooCommerce Sandbox Testing
- In the
Sezzle
configuration page of your WooCommerce admin, enter the Sandbox API Keys from your Sezzle Merchant Sandbox Dashboard and set theTransaction Mode
toSandbox
, then save the configuration. Make sure you are doing this on yourdev
/staging
website. - On your website, add an item to the cart, then proceed to
Checkout
and selectSezzle
as the payment method. - Click
Place Order
, and you should be redirected to the Sezzle checkout page. If prompted, sign in.
- Enter the payment details using test data then click
Complete Order
. - After the payment is completed on Sezzle, you should be redirected back to your website and see a successful payment page.
- 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
- In the
Sezzle
configuration page of your WooCommerce admin, enter the API Keys from your Sezzle Merchant Dashboard and set theTransaction Mode
toLive
, then save the configuration. - On your website, add an item to the cart, then proceed to
Checkout
and selectSezzle
as the payment method. - Click
Place Order
.
- 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.
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:
- Sezzle WooCommerce extension is the most updated version.
- Go to
Plugins
>Installed Plugins
, then clickView Details
next to theSezzle WooCommerce Payment
. If there is an option to upgrade, do so now. - Sezzle extension is activated.
- Go to
WooCommerce
>Settings
and ensure the switch is turned On. Merchant ID
was entered correctly.- API Keys were entered correctly.
- It is recommended to use the Copy icon in the Sezzle Merchant Dashboard to avoid typos or extra spaces.
- If you have multiple accounts with Sezzle, the merchant ID and API Keys are tied to only one URL.
Show Sezzle widget in product pages
box is checked.- Widget script is present on your website and reflects the
Merchant ID
from your Sezzle Merchant Dashboard. - Go to a product page on your website.
- Right-click then select
Inspect
. - In the
Elements
tab, search forwidget.sezzle
.
Uninstall Steps
- Go to
Plugins
>Installed Plugins
. - Under
Sezzle WooCommerce Payment
, clickDeactivate
then clickDelete
.
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:
- offer Sezzle as a payment option on the checkout page.
- refund Sezzle payments from your Zoey order management system.
- authorize and capture payments.
Integration Steps Overview
Before You Begin
- You should have a Sezzle merchant account.
- Please visit our signup page if you don't have an account.
- Make sure you have the following Sezzle details handy.
- Merchant ID
- Public API Key
- Private API Key
- 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
- Go to
Set-up
>Payment Methods
>Sezzle
. - Click
Configure
.
- Configure the extension as follows:
- Set
Enabled
toYes
. - 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. - Copy your
Public Key
andPrivate Key
from your Sezzle Merchant Dashboard, and paste them into the corresponding fields in the Sezzle configuration page of your Zoey admin. - If you want the widget script added to the Product Display Page, set
Add Widget Script in PDP
toYes
- If you want the widget script added to the Cart Page, set
Add Widget Script in Cart Page
toYes
- Set
Payment from Applicable Countries
toSpecific Countries
. - Set
Payment from Specific Countries
toUnited States
orCanada
as applicable. - Save the configuration.
- Click
Advanced/Refresh Your Store
. Installation is complete.
Zoey Sandbox Testing
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
toSandbox/Test
, then save the configuration. Make sure you are doing this on yourdev
/staging
website.On your website, add an item to the cart, then proceed to
Checkout
and selectSezzle
as the payment method.Click
Continue
thenPlace Order
and you should be redirected to the Sezzle checkout page. If prompted, sign in.
- Enter the payment details using test data then click
Complete Order
. - After the payment is completed on Sezzle, you should be redirected back to your website and see a successful payment page.
- 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
- In the Sezzle configuration page of your Zoey admin, enter the API Keys from your Sezzle Merchant Dashboard and set the
API Mode
toLive
, then save the configuration. - On your website, add an item to your cart, then proceed to
Checkout
and selectSezzle
as the payment method. - Click
Continue
thenPlace Order
.
- 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.
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.
Authorize Only -- Payment will only be automatically authorized, not captured, after a successful checkout. -- In the History section of order details, the Captured field displays 0, and Not Captured displays the order amount. -- If **Authorize Only **is set, you must capture the order amount manually before the auth is expired in order to mark the payment as paid.
Authorize and Capture -- Payment is captured automatically after a successful checkout -- In the History section of order details, the Captured field displays the order amount, and Not Captured displays 0.
NOTE:
The default auth expiration is 30 minutes for all merchants excluding Shopify.You can extend this, to a maximum of seven days. The default auth expiration time for Shopify merchants is set to 7 days.
After the auth is expired, capturing is denied and the remaining uncaptured amount is released.
The order will be deleted if the order total is not captured before the auth expiration
Payment is said to be paid only if the payment amount is captured
If Not Captured appears in the order amount, and Captured in the History section of order details in the Merchant Dashboard shows a value of 0, the order amount is not captured yet. The order will be deleted if the amount is not captured before the auth is expired.
To change auth expiration in Merchant Dashboard:
- Log in to your Merchant Dashboard account
- Go to the ecommerce tab and click update.
- 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.
- Log in to your Shopify Store
- Navigate to "Online Store" "Themes"
- On the theme you want to edit, select "Actions" and then "Edit Code"
- Under the "Templates" folder, click "Add New Template," select template for "Page," template type "liquid", and name the page "Sezzle", then click Create Template
- Select the theme that best fits your store from the tabs listed.
- Copy the appropriate code (on the right) and paste it under {{page.content}} on the Shopify page.
- Save
- Navigate to "Pages"
- Add a new page, and give it a title - we recommend something like "How Sezzle Works" or "How to use Sezzle"
- Under "Theme Template" (in the bottom-right), select "sezzle"
- 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.
- Create a new page in your theme
- Copy and paste the appropriate code snippet into your website's page
- 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 | |
---|---|
![]() |
![]() |
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 |
---|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
Direct API
Checkout Steps
- Merchant creates a session
* Set order intent
to AUTH
* The customer checkout is texted or emailed as set in send_checkout_url
- Sezzle returns order uuid and checkout URL
- Customer receives Sezzle URL via text or email to check out
- Customer completes the Sezzle checkout
- Merchant receives order-complete notification
* You can either get order details or subscribe to webhooks
* Delete the checkout if the customer has not completed the checkout and the merchant has canceled the order
- (optional) Refund the order