NAV Navbar

Introduction

The Sezzle Pay API is intended for merchants interested in accepting Sezzle Pay as a payment option. The Sezzle Pay Integration Flow illustrates the user payment interaction.

Sezzle supports individually authorized transactions for a single purchase of goods or services.

Sezzle offers integrations with some of the most popular eCommerce platforms.
Please choose your platform to see the relevant documentation:
1. WooCommerce
2. Magento 1
3. Magento 2
4. Zoey
5. NopCommerce
6. BigCommerce
7. Bold Cashier

If you have any questions regarding our API, please reach out to our team by email at dev@sezzle.com.

Integration Flow

Overview of Integration Flow

payment flow

Explanation of payment flow

  1. Merchant calls /v1/checkouts to send cart data to Sezzle.
  2. Sezzle returns URL to redirect consumer to make payment at Sezzle checkout.
  3. Merchant redirects the consumer to Sezzle.
  4. When the consumer completes the Sezzle checkout flow, they are redirected back to merchant’s website.
  5. Alternatvely, on approval, the consumer is redirected from Sezzle checkout to merchant’s website and merchant captures the order by calling /v1/complete.

Authentication

Obtain Authentication Token

To authorize, use the following format:

Request Body

{
    "public_key": "myPublicKey",
    "private_key": "myPrivateKey"
}

Make sure to replace keys with your API keys from your Merchant Dashboard.

Response Body

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

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

Sezzle Pay 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 authToken

Configuration

Setting your configuration

Request Body

{
    "webhook_url": "https://yourdomain.com/webhook"
}

There is no response body for this request on a success, we return an HTTP 200 Status OK.

POST https://gateway.sezzle.com/v1/configuration

At this time, Sezzle only allows configuration of the URL that we send our webhooks to.

Parameter Type Description
webhook_url* string A URL for us to send our webhooks to.

Checkouts

Create a Checkout

Request Body

{
    "amount_in_cents": 12999,
    "currency_code": "USD",
    "order_reference_id": "Ref123456789",
    "order_description": "Order #1800",
    "checkout_cancel_url": "https://sezzle.com/cart",
    "checkout_complete_url": "https://sezzle.com/complete",
    "customer_details":
    {
        "first_name": "John",
        "last_name": "Doe",
        "email": "john.doe@sezzle.com",
        "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"
    },
    "requires_shipping_info": false,
    "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"
          }
        }
    ],
    "tax_amount": {
        "amount_in_cents": 1000,
        "currency": "USD"
    },
    "shipping_amount": {
        "amount_in_cents": 1000,
        "currency": "USD"
    },
    "metadata": {
      "location_id": "123",
      "store_name": "Downtown Minneapolis",
      "store_manager": "Jane Doe"
    }
}

Response Body

{
    "checkout_url": "https://checkout.sezzle.com/?id=<checkout_id>",
    "checkout_uuid": "<checkout_id>"
}

HTTP Request

POST https://gateway.sezzle.com/v1/checkouts

This checkout endpoint creates a checkout in our system, and returns the URL that you should redirect the user to. 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.

Sezzle is able to handle the entire checkout process after a Checkout has been provided. However, if your flow requires that the user confirm their checkout on your site after being approved by Sezzle, you may include the merchant_completes parameter with the checkout request. In this flow, Sezzle will not complete the order unless you make a checkout completion request.

Checkout Object

Parameter Type Description
amount_in_cents* int The amount of the checkout. Must be at least 100
currency_code* string The currency code of the checkout
order_reference_id* string A reference to this checkout in your systems
order_description* string A user-facing description for this checkout
checkout_cancel_url* string The URL we should redirect the customer to in the case of a cancellation
checkout_complete_url* string The URL we should redirect to in the case of a successful checkout
customer_details object The customer in the checkout
billing_address object The billing address of the checkout
shipping_address object The shipping address of the checkout
requires_shipping_info boolean Optional flag to indicate if you would like us to collect shipping information for this checkout from the customer
items array The items being purchased
discounts array The discounts applied. Must be included in the total
tax_amount object The taxes applied to this checkout. Must be included in the total
shipping_amount object The shipping fees applied to this checkout. Must be included in the total
merchant_completes boolean Optional flag to determine whether this checkout must be completed by the merchant.
metadata object Optional object for any custom data you want to submit with the checkout

Customer Details Object

Parameter Type Description
first_name string The user’s first name
last_name string The user’s last name
email string The user’s email address
phone string The user’s phone number

Address Object

This is used for both billing and shipping

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

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

Tax Amount Object

Parameter Type Description
tax_amount* object A price object

Shipping Amount Object

Parameter Type Description
shipping_amount* object A price object

Discount Object

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

Price Object

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

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

Complete a Checkout (optional)

Success response

Echos the given Checkout.

Rejection response

{
    "status": 409,
    "id": "checkout_expired",
    "message": "checkout not completed within time limit"
}

POST https://gateway.sezzle.com/v1/checkouts/{order_reference_id}/complete

If you pass true to merchant_completes in our Create Checkout flow, then you must call our Complete Checkout endpoint.

For some checkouts, a merchant may need to have the user return to their site for additional steps before completing the purchase. If this is the case, the order completion endpoint is used to complete the Checkout with Sezzle. From the time the user is redirected back to the Merchant’s site, you must make the request to complete the checkout within 30 minutes, or the checkout will be cancelled by Sezzle. If the checkout has expired, we will return the rejection response on the right, with a Status 409.

There are two non-error responses expected. Either an HTTP 200, which echos all accepted fields given at Checkout creation, or a rejection message.

Orders

Order Details

Order Details Response Body

{
    "created_at": "2018-11-02T20:09:59Z",
    "captured_at": "2018-11-02T20:18:50Z",
    "capture_expiration": "2018-11-02T20:48:45Z",
    "description": "Description of order",
    "amount_in_cents": 20000,
    "usd_amount_in_cents": 20000,
    "customer_amount_in_cents": 20000,
    "currency_code": "USD",
    "customer_currency_code": "USD",
    "reference_id": "Ref123456789",
    "customer": {
        "first_name": "John",
        "last_name": "Doe",
        "email": "john.doe@sezzle.com",
        "phone": "5555045294"
    },
    "shipping_address": {
        "name": "John Doe",
        "phone_number": "5555045294",
        "street": "123 W Lake St",
        "street2": "Unit 104",
        "city": "Minneapolis",
        "state": "MN",
        "postal_code": "55408",
        "country_code": "US"
    },
    "billing_address": {
        "name": "John Doe",
        "phone_number": "5555045294",
        "street": "123 W Lake St",
        "street2": "Unit 104",
        "city": "Minneapolis",
        "state": "MN",
        "postal_code": "55408",
        "country_code": "US"
    },
    "refunds": [
      {
        "amount": {
          "amount_in_cents": 10000,
          "currency": "USD"
        },
        "created_at": "2018-11-02T20:09:59Z",
        "is_full_refund": false,
        "order_reference_id": "Ref123456789",
        "refund_id": "52b2O9Lv-8",
        "refund_reason": "broken"
      }
    ],
    "metadata": {
      "location_id": "123",
      "store_name": "Downtown Minneapolis",
      "store_manager": "Jane Doe"
    }
}

GET https://gateway.sezzle.com/v1/orders/{order_reference_id}

Once an order is created, you can retrieve the details of the order using this endpoint.

Optional Query Parameter(s)

Parameter Type Values Description
include-shipping-info string true or false If your checkout post data required us to collect shipping information from the customer, then you can request that information alongside the order details.

Order Refunds

Refund Request Body

{
    "refund_id": "41a2O9Lv-7",
    "amount": {
        "amount_in_cents": 500,
        "currency": "USD"
    },
    "refund_reason": "Item returned by user"
}

POST https://gateway.sezzle.com/v1/orders/{order_reference_id}/refund

Sezzle allows refunds for orders either through our Merchant Dashboard or through the API. If the refund is processed through the dashboard, a webhook will be sent to your system. In either case, Sezzle allows for either partial or complete refunds. Refund amounts are relative to the order total, not the amount that has been paid by the shopper.

Refund Request

Parameter Type Description
amount* object A price object that defines the amount to be refunded. Amount may not be 0, negative, or exceed the total order amount. Currency must either be the order’s currency or the customer’s paying currency. This field is optional if the is_full_refund parameter is true.
refund_id string UUID for the Refund. Must be unique to a Merchant.
refund_reason string An optional reason for the refund.
is_full_refund boolean An optional amount override. If used, the order will be fully refunded.

Reporting

Settlement Reports

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

Settlement Summaries Response Body

[
    {
        "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"
    }
]

Settlement Summaries Request

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

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.
currency-code The ISO-4217 currency code of the account. If omitted, will default to USD.

Settlement Details Response

total_order_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,-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,amount,posting_currency,type_code,chargeback_code
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,
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,
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,
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,
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,
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,
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,
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,
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,
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,
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,

Settlement Details Request

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

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 Sezzle order number.
Customer order id The customer’s order number.
External reference id The external reference ID submitted with the order.
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.

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 Response Body

{
  "interest_balance": 5183.4624
}

Interest Account Balance Request

GET https://gateway.sezzle.com/v1/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 Response Body

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

Interest Account Activity Request

GET https://gateway.sezzle.com/v1/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.
currency-code The ISO-4217 currency code of the interest account. If omitted, will default to USD.

Webhooks

Order Webhooks

Webhook

{
    "time": "2017-10-19T00:33:10.548372055Z",
    "uuid": "02c5a2a0-8394-4b45-80b3-52d40c494322",
    "type": "order_update",
    "event": "order_complete",
    "object_uuid": "Ref123456789",
    "refund_id": "szl-a0293Pn-3948-80b3-ao34JAia39zQ",
    "refund_amount": {
        "amount_in_cents": 500,
        "currency": "USD"
    }
}

Because the majority of a consumer’s checkout process happens on Sezzle’s pages, our API uses webhooks to communicate information about checkout updates, completions, or refunds to your system.

We expect any response in the 200 range on submitting webhooks.

Order Webhook Object

Parameter Type Description
time string The time (UTC) at which the Webhook was generated.
uuid string A unique identifier for the webhook.
type string The high-level category. For example, order_update
event string The specific action. For example, order_complete
object_uuid string The ID for the Checkout/Order.
refund_id string optional Unique ID for a refund. Included if the webhook event is order_refund.
refund_amount object optional Price object. Included if the webhook event is order_refund.

Order Update Events/Types

Type Event Description
order_update order_complete The checkout was completed successfully
order_update order_refund The order was refunded from the Sezzle Merchant Dashboard

Errors

Error Details

Response Error Body

{
    "status": 400,
    "id": "error_id",
    "message": "Descriptive message"
}

Unless otherwise specified in our documentation, Sezzle returns a standard API error object.

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

Error Object

Parameter Type Description
Status int Matches the HTTP Status code of the response
ID string A programmatic identifier for the error. These rarely (if at all) change.
Message string A human-friendly string. These may change, and are intended to assist in debugging rather than program logic.

SezzleJS

Purpose

SezzleJS serves to load our sales widgets to web pages. The widgets will not show unless a config is provided before the script is loaded. The repository for this project can be found at https://github.com/sezzle/sezzle-js.

Configuring the Widgets

An example of how to configure the widget:

    document.sezzleConfig = 
    {
        targetXPath: ['.price'],
        renderToPath: ['..'],
        urlMatch: 'product',
        theme: 'light',
        scaleFactor: 1.0,
        logoSize: 1.00,
        logoStyle: {'margin': '0px 0px -4px 1px','transformOrigin': 'center top'},
        altVersionTemplate: {
          'en': 'or 4 interest-free payments of %%price%% with %%logo%% %%info%%',
          'fr': 'ou 4 paiements de %%price%% sans intérêts avec %%logo%% %%info%%'
        },
        splitPriceElementsOn: '-',
        ignoredPriceElements: ['.Price-compareAt'],
        ignoredFormattedPriceText: ['Subtotal', 'Total:', 'Sold Out'],
        hideClasses: ['.afterpay-paragraph'],
        fontFamily: 'inherit',
        fontSize: 12,
        fontWeight: 300,
        color: 'inherit',
        alignment: 'auto',
        alignmentSwitchMinWidth: 768,
        alignmentSwitchType: 'center',
        lineHeight: '13px',
        maxWidth: 400,
        marginTop: 0,
        marginBottom: 0,
        marginLeft: 0,
        marginRight: 0,
        language: navigator.language,
        forcedShow: false
    }

Only the targetXPath is required in the local config. Each key using the default value may be removed from the sezzleConfig, and the default values will be used automatically.

The config must be specified in a property of the document object called document.sezzleConfig. SezzleJS also provides various options to customize the widget’s position and appearance. The explanation for all the options can be found below:

targetXPath (required)

Purpose: Path to the element in the webpage where the product price text value will be detected.
Type: string, or array of strings
Default: “
Additional Details: Specify one path if only one price element is targeted. Specify multiple paths in an array if multiple price elements are targeted. The path may contain multiple subpaths. 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 tagname 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.

Example: ’#ProductSection/.product-price/SPAN-1’ would target the 2nd 'SPAN’ element contained within elements that contain the 'product-price’ class which are contained within the element with an ID of 'ProductSection’.

An example of targetXPath:

<div id="ProductSection">
    <div class="product-price">
        <span>Price: </span>
        <span>$15.99</span>
    </div>
</div>
<script type="text/javascript">
    document.sezzleConfig = {
        targetXPath: '#ProductSection/.product-price/SPAN-1'
    }
</script>

renderToPath (optional)

Purpose: Path to the element in the webpage relative to targetXPath where the Sezzle widget should be rendered.
Type: string, or array of strings
Default: ’..’
Additional Details: Path to the element below which the widget should render (widget’s previous element sibling). If you wish to place widgets in multiple places, you can pass multiple paths in an array. The price path at the nth index of the targetXPath array will be rendered at the path given at the nth index of the renderToPath array. If you do not pass anything to the nth index of the renderToPath array but there is a path at the nth index of targetXPath, then the widget will default to be rendered directly below the parent of the corresponding target element.
’./’ will place the widget as the next element sibling of the target element.
’../’ means go up one parent element.
As with targetXPath, prepend IDs with ’#’, classes with ’.’, and append tag names with the index (tagName-Index). 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, grayscale, black-flat, white, white-flat
Default: 'light’

scaleFactor (optional)

Purpose: Ratio at which to scale the Sezzle widget.
Type: number
Default: 1.0

logoSize (optional)

Purpose: Ratio at which to scale the Sezzle logo.
Type: number
Default: 1.00
Additional Details: The space the logo occupies between the widget text and the More Info link/icon is determined by the font size. When dramatically scaling the widget, it may be necessary to override the styling to adjust the left and right margins of the logo using logoStyle.

logoStyle (optional)

Purpose: Custom styling to apply to the Sezzle logo within the widget, particularly when using logoSize.
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.

altVersionTemplate (optional)

Purpose: Text content of the widget. Also changes the arrangement of price, logo, and the info/learn-more icon within the widget.
Type: string, or object
Default: {en: 'or 4 interest-free payments of %%price%% with %%logo%% %%info%%’, fr: 'ou 4 paiements de %%price%% sans intérêts avec %%logo%% %%info%%’}
Additional Details: Currently available templates: %%price%%, %%logo%%, %%link%%, %%info%%, %%question-mark%%, %%line-break%%

splitPriceElementsOn (optional)

Purpose: Character or string at which to split the price elements (for elements with price ranges).
Type: string
Default: ”
Additional Details: Certain websites, especially WooCommerce websites, have price ranges as their price element (e.g. $650 - $1000). Setting this field to the character or string which separates the prices (e.g. in the case above, it is ’-’) enables the widgets to parse the price elements separately. For instance, setting this field to ’-’ would cause the widget to render the widget price above as $162.50 - $250.00.

An example of splitPriceElementsOn:

<div class="price">
    <span class="woocommerce-Price-amount">$12</span>
    " - "
    <span class="woocommerce-Price-amount">$15</span>
</div>
<script type="text/javascript">
    document.sezzleConfig = {
        targetXPath: '.price/.woocommerce-Price-amount',
        splitPriceElementsOn: '-',
        "relatedElementActions": [{
            "relatedPath": '.',
          "initialAction":(e, t)=> {
              if(e.nextSibling&&" – "===e.nextSibling.textContent) {
          let i=(e.nextElementSibling.innerText.replace(",", "").substr(1)/4).toFixed(2);
          t.getElementsByClassName("sezzle-price-split")[0].innerText+=" - $"+i
              }
          }
        }, 
        {
            "relatedPath": '.',
            "initialAction":(e, t)=> {
        e.previousSibling&&" –" ===e.previousSibling.textContent&&(t.style="display: none")
            }
        }]
    }
</script>

ignoredPriceElements (optional)

Purpose: 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).

An example of ignoredPriceElements:

<span class="ProductMeta__PriceList">
    <span class="product__price--regular">$20</span>
    <span class="product__price--sale">$15</span>
</span>
<script type="text/javascript">
    document.sezzleConfig = {
        targetXPath: '.ProductMeta__PriceList',
        ignoredPriceElements: ['.product__price--regular']
    }
</script>

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: Classes of elements that should be hidden when Sezzle’s logo 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: []

fontFamily (optional)

Purpose: Font family of the widget text.
Type: string
Default: 'inherit’

fontSize (optional)

Purpose: Font size of the widget text in pixels.
Type: number
Default: 12
Additional Details: Enter numbers only. Do not enter the unit (e.g. px)!

fontWeight (optional)

Purpose: Boldness of the widget text.
Type: number
Default: 300
Additional Details: 100 is the lightest, 900 is the boldest.

color (optional)

Purpose: Color of the widget text.
Type: string
Default: 'inherit’
Additional Details: Accepts all kinds of values (hexadecimal, rgb(), hsl(), etc…)

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’

lineHeight (optional)

Purpose: Content height of the widget.
Type: string
Default: '13px’
Additional Details: Include unit (e.g.: px)

maxWidth (optional)

Purpose: Maximum width of the widget element in pixels.
Type: number
Default: 400
Additional Details: 200 to render the widget nicely on 2 lines, 120 for 3 lines.

marginTop (optional)

Purpose: Amount of space above the widget in pixels.
Type: number
Default: 0

marginBottom (optional)

Purpose: Amount of space below the widget in pixels.
Type: number
Default: 0

marginLeft (optional)

Purpose: Amount of space left of the widget in pixels.
Type: number
Default: 0

marginRight (optional)

Purpose: Amount of space right of the widget in pixels.
Type: number
Default: 0

language (optional)

Purpose: Language in which the widget text should be rendered.
Type: string
Options: 'en’, 'fr’
Default: navigator.language
Additional Details: To match the selected language in the window instead of the user’s default browser language, use document.querySelector('html’).lang. Currently, SezzleJS only supports 'en’ and 'fr’

forcedShow (optional)

Purpose: Shows the widget in every country if true. Shows the widget in only the United States and Canada if false.
Type: boolean
Options: false, true
Default: false

Uploading the Widgets

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

Placing the following code snippet into your HTML loads SezzleJS into the webpage.

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

The SezzleJS script reflecting the applicable merchant ID must be called only after the config is specified (document.sezzleConfig is defined). Here is a complete example:

<script type="text/javascript">
    document.sezzleConfig = 
      {
        targetXPath: ['.price'],
        renderToPath: ['..'],
        urlMatch: 'product',
        theme: 'light',
        scaleFactor: 1.0,
        logoSize: 1.00,
        logoStyle: {'margin': '0px 0px -4px 1px','transformOrigin': 'center top'},
        altVersionTemplate: {
          'en': 'or 4 interest-free payments of %%price%% with %%logo%% %%info%%',
          'fr': 'ou 4 paiements de %%price%% sans intérêts avec %%logo%% %%info%%'
        },
        splitPriceElementsOn: '-',
        ignoredPriceElements: ['.Price-compareAt'],
        ignoredFormattedPriceText: ['Subtotal', 'Total:', 'Sold Out'],
        hideClasses: ['.afterpay-paragraph'],
        fontFamily: 'inherit',
        fontSize: 12,
        fontWeight: 300,
        color: 'inherit',
        alignment: 'auto',
        alignmentSwitchMinWidth: 768,
        alignmentSwitchType: 'center',
        lineHeight: '13px',
        maxWidth: 400,
        marginTop: 0,
        marginBottom: 0,
        marginLeft: 0,
        marginRight: 0,
        language: navigator.language,
        forcedShow: false
    }
</script>
<script src="https://widget.sezzle.com/v1/javascript/price-widget?uuid=12a34bc5-6de7-890f-g123-4hi5678jk901"></script>

The “simple” configuration above is intended for a single template of code (product or cart page) individually. Alternatively, a single configuration could be created for the entire webpage using an array of objects called configGroups. The Sezzle.js script will determine which configGroup(s) applies to the active webpage and render the widget(s) accordingly.

<script type="text/javascript">
document.sezzleConfig = {
  configGroups: [
    {
        targetXPath: ['.price'],
        renderToPath: ['..'],
        urlMatch: 'product',
        theme: 'light',
        scaleFactor: 1.0,
        logoSize: 1.00,
        logoStyle: {'margin': '0px 0px -4px 1px','transformOrigin': 'center top'},
        altVersionTemplate: {
          'en': 'or 4 interest-free payments of %%price%% with %%logo%% %%info%%',
          'fr': 'ou 4 paiements de %%price%% sans intérêts avec %%logo%% %%info%%'
        },
        splitPriceElementsOn: '-',
        ignoredPriceElements: ['.Price-compareAt'],
        ignoredFormattedPriceText: ['Subtotal', 'Total:', 'Sold Out'],
        hideClasses: ['.afterpay-paragraph'],
        fontFamily: 'inherit',
        fontSize: 12,
        fontWeight: 300,
        color: 'inherit',
        alignment: 'auto',
        alignmentSwitchMinWidth: 768,
        alignmentSwitchType: 'center',
        lineHeight: '13px',
        maxWidth: 400,
        marginTop: 0,
        marginBottom: 0,
        marginLeft: 0,
        marginRight: 0
    },
    {
      targetXPath: '.cart__subtotal',
      renderToPath: '../..', 
      urlMatch: 'cart',
    }
  ],
  forcedShow: false,
  language: document.querySelector('html').lang || navigator.language,
}
</script>
<script src="https://widget.sezzle.com/v1/javascript/price-widget?uuid=12a34bc5-6de7-890f-g123-4hi5678jk901"></script>

Testing

While you are working on the integration, you should test it before going live. Please use this section for information on testing.

Sandbox

API Endpoint https://sandbox.gateway.sezzle.com
Sandbox Dashboard https://sandbox.dashboard.sezzle.com/merchant

Test Data

You can use the following test data to test your integration

Bank

Bank Test Bank
Username demo
Password go

Card

Card Number 4242424242424242
CVV/CVC any (3 numbers)
Expiration Date any
Name any
Address any

Phone and other information

  1. Please use any valid phone number.
  2. The expected OTP is 123123.
  3. Personal information does not need to be real.

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.

Specification

Download the Sezzle Pay OpenAPI Specification for Sandbox or Production.

Client Generator

The Sezzle Pay OpenAPI Specification can be imported into the Swagger Editor to easily generate a Sezzle Pay client in a variety of programming languages. Generate a Sezzle Pay client for Sandbox or Production.

 

Platform Integrations

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:

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

Integration Steps Overview

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

Before You Begin

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

Install the Sezzle WooCommerce Extension

  1. Login to your website’s Wordpress admin
    • Ex: your-website.com/wp-admin wordpress login
  2. In the left sidebar, click Plugins > Add New
  3. Search for Sezzle
  4. Click Install Now search sezzle
  5. Click Activate activate sezzle

Admin Configuration

  1. In the left sidebar, click WooCommerce > Settings
  2. Select the Payments tab payment settings
  3. Click the Manage button for Sezzle. select sezzle
  4. Copy your Merchant ID, Private Key and Public Key from your Sezzle Merchant Dashboard, and paste them into the corresponding fields in the Sezzle configuration page of your WooCommerce admin.
  5. Check the Show Sezzle widget in product pages box
  6. Click Save Changes. sezzle page overview
  7. Installation is complete.

Sandbox Testing

  1. In the Sezzle configuration page of your WooCommerce admin, enter the Sandbox API Keys from your Sezzle Merchant Sandbox Dashboard and set the Sezzle API URL to https://sandbox.gateway.sezzle.com/v1, then save the configuration. Make sure you are doing this on your dev/staging website.
  2. On your website, add an item to the cart, then proceed to Checkout and select Sezzle as the payment method.
  3. Click Place Order, and you should be redirected to the Sezzle checkout page. If prompted, sign in. select sezzle payment
  4. Enter the payment details using test data, then click Complete Order.
  5. After the payment is completed on Sezzle, you should be redirected back to your website and see a successful payment page.
  6. Sandbox testing is complete. You can login to your Sezzle Merchant Sandbox Dashboard to see the test order you just placed.

Live Checkout

  1. In the Sezzle configuration page of your WooCommerce admin, enter the API Keys from your Sezzle Merchant Dashboard and set the Sezzle API URL to https://gateway.sezzle.com/v1, then save the configuration.
  2. On your website, add an item to the cart, then proceed to Checkout and select Sezzle as the payment method.
  3. Click Place Order. select sezzle payment
  4. If you are redirected to the Sezzle checkout page, your integration is complete. Congratulations! sezzle checkout
  5. Warning Don’t complete the payment because you will be charged if you complete.

Troubleshooting

If testing was unsuccessful, review the following:

Manual Theme Integration

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

  1. Go to Appearance > Widgets
  2. Click Custom HTML, then select Footer Widget Area 1 and click Add Widget
  3. In the Content text area, insert the script then click Save and Done

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

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

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

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

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

Uninstall Steps

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

Magento 1

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

  1. Offer Sezzle as a payment option on the checkout page.
  2. Refund Sezzle payments from your Magento 1 order management system.
  3. Display Sezzle promotional messaging.
  4. Authorize and capture payments.
  5. Offer instant and delayed capture.

Integration Steps Overview

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

Before You Begin

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

Install the Sezzle Magento 1 Extension

For the below instructions, assume [Magento] represents your root Magento directory.

  1. Download the .zip or tar.gz file from Sezzle’s github repository.
  2. Unzip the file and follow the following instructions.
  3. Copy all files in the extracted folder’s: /app/code/community/ to: [MAGENTO]/app/code/community.
  4. Copy all files in the extracted folder’s /app/design/frontend/base/default/layout/ to: [MAGENTO]/app/design/frontend/base/default/layout.
  5. Copy all files in the extracted folder’s /app/design/frontend/base/default/template/ to: [MAGENTO]/app/design/frontend/base/default/template.
  6. Copy all files in the extracted folder’s: /app/etc/ to: [MAGENTO]/app/etc.
  7. Copy all files in the extracted folder’s: /js to: [MAGENTO]/js.
  8. Login to your Magento 1 admin and go to System/Cache Management.
  9. Flush the cache storage by selecting Flush Cache Storage.

Note : To upgrade the extension, completely remove the previously added Sezzle Magento extension files, then repeat the above steps with the updated sezzle-magento repository.

Admin Configuration

  1. Go to System > Configuration > Sales > Payment Methods > Sezzle Pay
  2. Configure the extension as follows:
    1. Set Enabled to Yes.
    2. Copy your Merchant ID from your Sezzle Merchant Dashboard, and paste it into the corresponding field in the Sezzle configuration page of your Magento 1 admin.
    3. Copy your Public Key and Private Key from your Sezzle Merchant Dashboard, and paste them into the corresponding fields in the Sezzle configuration page of your Magento 1 admin.
    4. Set API Mode to Sandbox/Test. (We will change this to Live after testing.)
    5. Set Payment from Applicable Countries to Specific Countries.
    6. Set Payment from Specific Countries to United States or Canada as applicable.
    7. Set Payment Action as Authorize Only to authorize the payment at the time the order is placed but capture payment later, or Authorize and Capture to both authorize and capture at the time the order is placed.
      • If Authorize Only is selected, then the capture expiry time will be visible in the Order Details page. You need to capture the payment before the given deadline by choosing Capture Online when you create the invoice.
    8. Save the configuration. admin sezzle
  3. Go to System > Configuration > General > Sezzle Widget and update the fields as desired.
  4. Save the configuration. product widget sezzle cart widget sezzle
  5. Go to System/Cache Management.
  6. Flush the cache storage by selecting Flush Cache Storage.
  7. Installation is complete.

Sandbox Testing

  1. In the Sezzle configuration page of your Magento 1 admin, enter the Sandbox API Keys from your Sezzle Merchant Sandbox Dashboard and set the API Mode to Sandbox/Test, then save the configuration. Make sure you are doing this on your dev/staging website.
  2. On your website, add an item to the cart, then proceed to Checkout and select Sezzle as the payment method.
  3. Click Continue then Place Order and you should be redirected to the Sezzle checkout page. If prompted, sign in. onepage movement
  4. Enter the payment details using test data, then click Complete Order.
  5. After the payment is completed on Sezzle, you should be redirected back to your website and see a successful payment page.
  6. Sandbox testing is complete. You can login to your Sezzle Merchant Sandbox Dashboard to see the test order you just placed.

Live Checkout

  1. In the Sezzle configuration page of your Magento 1 admin, enter the API Keys from your Sezzle Merchant Dashboard and set the API Mode to Live, then save the configuration.
  2. On your website, add an item to the cart, then proceed to Checkout and select Sezzle as the payment method.
  3. Click Continue then Place Order. onepage movement
  4. If you are redirected to the Sezzle checkout page, your integration is complete. Congratulations! sezzle sign
  5. Warning Don’t complete the payment because you will be charged if you complete.

Troubleshooting

If testing was unsuccessful, review the following:

Manual Theme Integration

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

Within the repository for your site theme, insert the following script to the very bottom of the file, below the <html></html> element within both the product.html and cart.html files:

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, 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>

If your theme has additional custom product templates, the script will need to be added to the bottom of each product.html file within the templates folder.

For assistance with widget configuration, click Request Addition of Widgets in the widget step of your Sezzle Merchant Dashboard Setup Checklist.

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. After integrating Sezzle, your site will:

  1. Offer Sezzle as a payment option on the checkout page.
  2. Refund Sezzle payments from your Magento 2 order management system.
  3. Display Sezzle promotional messaging.
  4. Authorize and capture payments.
  5. Offer instant and delayed capture.

Integration Steps Overview

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

Before You Begin

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

Install the Sezzle Magento 2 Extension

For the below instructions, assume [Magento] represents your root Magento directory.

Composer Way

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

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

Manual Way

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

Note : If you have installed the extension via Composer Way, upgrade it by executing composer remove sezzle/sezzlepay and then follow the above Composer Way process again. For manual installation, remove the Sezzle directory from [Magento]/app/code and follow the above Manual Way process again to upload the newer version.

Admin Configuration

  1. Go to Store > Configuration > Sales > Payment Methods > Sezzle
  2. Click Configure admin sezzle magento2 option
  3. Click I've already set up Sezzle Pay, I want to edit my settings. then click Payment Settings admin sezzle magento2 option expand
  4. Configure the extension as follows:
    1. Set Enabled to Yes.
    2. Set Payment Mode to Sandbox. (We will change this to Live after testing.)
    3. Copy your Merchant ID from your Sezzle Merchant Dashboard, and paste it into the corresponding field in the Sezzle configuration page of your Magento 2 admin.
    4. Copy your Public Key and Private Key from your Sezzle Merchant Dashboard, and paste them into the corresponding fields in the Sezzle configuration page of your Magento 2 admin.
    5. Set Payment from Applicable Countries to Specific Countries.
    6. Set Payment from Specific Countries to United States or Canada as applicable.
    7. Set Payment Action as Authorize Only to authorize the payment at the time the order is placed but capture the payment later, or Authorize and Capture to both authorize and capture at the time the order is placed.
      • If “Authorize Only” is selected, then the capture expiry time will be visible in the Order Details page. You need to capture the payment before the given deadline by choosing Capture Online when you create the invoice.
    8. Save the configuration. admin sezzle magento2 pay
  5. Go to Store > Configuration > Sales > Payment Methods > Sezzle > Widget Settings and update the fields as desired.
  6. Save the configuration. product widget magento2 sezzle cart widget magento2 sezzle
  7. Go to System/Cache Management.
  8. Flush the cache storage by selecting Flush Cache Storage.
  9. Installation is complete.

Sandbox Testing

  1. In the Sezzle configuration page of your Magento 2 admin, enter the Sandbox API Keys from your Sezzle Merchant Sandbox Dashboard and set the API Mode to Sandbox/Test, then save the configuration. Make sure you are doing this on your dev/staging website.
  2. On your website, add an item to the cart, then proceed to Checkout and select Sezzle as the payment method.
  3. Click Place Order and you should be redirected to the Sezzle checkout page. If prompted, sign in. onepage magento2
  4. Enter the payment details using test data, then click Complete Order.
  5. After the payment is completed on Sezzle, you should be redirected back to your website and see a successful payment page.
  6. Sandbox testing is complete. You can login to your Sezzle Merchant Sandbox Dashboard to see the test order you just placed.

Live Checkout

  1. In the Sezzle configuration page of your Magento 2 admin, enter the API Keys from your Sezzle Merchant Dashboard and disable Sandbox/Test as the API Mode, then save the configuration.
  2. On your website, add an item to the cart, then proceed to Checkout and select Sezzle as the payment method.
  3. Click Place Order. onepage magento2
  4. If you are redirected to the Sezzle checkout page, your integration is complete. Congratulations! sezzle sign
  5. Warning Don’t complete the payment because you will be charged if you complete.

Troubleshooting

If testing was unsuccessful, review the following:

Manual Theme Integration

If the Magento 2 extension fails to maintain the widget script on the product pages, or to add the script manually for additional pages, complete the following steps:.

Within the repository for your site theme, insert the following script to the very bottom of the file, below the <html></html> element within both the product.html and cart.html files:

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, 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>

Note: If your theme has additional custom product templates, the script will need to be added to the bottom of each product.html file within the templates folder.

For assistance with widget configuration, click Request Addition of Widgets in the widget step of your Sezzle Merchant Dashboard Setup Checklist.

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:

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

Integration Steps Overview

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

Before You Begin

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

Install the Sezzle Zoey Extension

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

Admin Configuration

  1. Go to Set-up > Payment Methods > Sezzle Pay
  2. Click Configure admin zoey
  3. Configure the extension as follows:
    1. Set Enabled to Yes.
    2. 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.
    3. Copy your Public Key and Private Key from your Sezzle Merchant Dashboard, and paste them into the corresponding fields in the Sezzle configuration page of your Zoey admin.
    4. Set API Mode to Sandbox/Test. (We will change this to Live after testing.)
    5. Set Payment from Applicable Countries to Specific Countries.
    6. Set Payment from Specific Countries to United States or Canada as applicable.
    7. Save the configuration. admin zoey sezzlepay
  4. Go to Apps > Sezzle Widget and update the fields as desired.
  5. Save the configuration. product widget zoey sezzle cart widget zoey sezzle
  6. Click Advanced/Refresh Your Store.
  7. Installation is complete.

Sandbox Testing

  1. In the Sezzle configuration page of your Zoey admin, enter the Sandbox API Keys from your Sezzle Merchant Sandbox Dashboard and set the API Mode to Sandbox/Test, then save the configuration. Make sure you are doing this on your dev/staging website.
  2. On your website, add an item to the cart, then proceed to Checkout and select Sezzle as the payment method.
  3. Click Continue then Place Order and you should be redirected to the Sezzle checkout page. If prompted, sign in. onepage zoey payment movement
  4. Enter the payment details using test data, then click Complete Order.
  5. After the payment is completed on Sezzle, you should be redirected back to your website and see a successful payment page.
  6. Sandbox testing is complete. You can login to your Sezzle Merchant Sandbox Dashboard to see the test order you just placed.

Live Checkout

  1. In the Sezzle configuration page of your Zoey admin, enter the API Keys from your Sezzle Merchant Dashboard and set the API Mode to Live, then save the configuration.
  2. On your website, add an item to your cart, then proceed to Checkout and select Sezzle as the payment method.
  3. Click Continue then Place Order. onepage zoey payment movement
  4. If you are redirected to the Sezzle checkout page, your integration is complete. Congratulations! sezzle sign
  5. Warning Don’t complete the payment because you will be charged if you complete.

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:

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

Integration Steps Overview

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

Before You Begin

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

Install the Sezzle NopCommerce Extension

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

Admin Configuration

  1. Go to Configuration > Local Plugins.
  2. Click Upload Plugin or Theme and select the downloaded zipped file per the instructions given.
  3. After the extension has been uploaded, click Install.
  4. Under Configuration, go to Payment Methods and then click Configure under Sezzle Pay admin nopcommerce
  5. Click Edit from the Payment Method list.
  6. Check Use Sandbox checkbox. (We will uncheck this after testing.)
  7. 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.
  8. Copy your Public Key and Private Key from your Sezzle Merchant Dashboard, and paste them into the corresponding fields in the Sezzle configuration page of your NopCommerce admin.
  9. Set Transaction Mode to either Authorize or Authorize and Capture.
  10. Save the configuration. admin nopcommerce sezzlepay
  11. To restrict Sezzle usage based on billing country, go to Configuration > Payment Restrictions.
  12. Choose the country you want to restrict for Sezzle. admin nopcommerce_sezzlepay restriction
  13. Integration is complete.

Sandbox Testing

  1. In the Sezzle configuration page of your NopCommerce admin, enter the Sandbox API Keys from your Sezzle Merchant Sandbox Dashboard and check the Use Sandbox checkbox, then save the configuration. Make sure you are doing this on your dev/staging website.
  2. On your website, add an item to the cart, then proceed to Checkout and select Sezzle as the payment method.
  3. Click Confirm and you should be redirected to the Sezzle checkout page. If prompted, sign in. onepage nopcommerce payment movement
  4. Enter the payment details using test data, then click Complete Order.
  5. After the payment is completed on Sezzle, you should be redirected back to your website and see a successful payment page.
  6. Sandbox testing is complete. You can login to your Sezzle Merchant Sandbox Dashboard to see the test order you just placed.

Live Checkout

  1. In the Sezzle configuration page of your NopCommerce admin, enter the API Keys from your Sezzle Merchant Dashboard and uncheck the Use Sandbox checkbox, then save the configuration.
  2. On your website, add an item to the cart, then proceed to Checkout and select Sezzle as the payment method.
  3. Click Continue then Confirm. onepage nopcommerce payment movement
  4. If you are redirected to the Sezzle checkout page, your integration is complete. Congratulations! sezzle sign
  5. Warning Don’t complete the payment because you will be charged if you complete.

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:

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

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

Integration Steps Overview

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

Before You Begin

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

Install the Sezzle BigCommerce Extension

  1. Login to your website’s BigCommerce admin.
  2. In the left sidebar, click Apps > Marketplace
  3. Click BigCommerce.com/Apps
  4. Search for Sezzle
  5. Click Sezzle, then click Get This App sezzle_app_bigcommerce_marketplace
  6. Click Install. sezzle_app_install_step1
  7. Check the PCI Compliance box, then click Confirm to start the installation. sezzle_app_install_step2

Admin Configuration

  1. Go to Store Setup > Payments.
  2. Choose one unused Offline Payment method and set the Display Name as Sezzle.
  3. Select from the Available Countries list to restrict Sezzle based on country.
  4. Click Save. sezzle_app_offline_payments
  5. Go to Apps > Sezzle.
  6. Copy your Merchant ID, Private Key and Public Key from your Sezzle Merchant Dashboard, and paste them into the corresponding fields in the Sezzle configuration page of your BigCommerce admin.
  7. Select the applicable Offline Payment Method
  8. Check the Use Sandbox checkbox. (We will uncheck it later in testing.)
  9. Check the Add Sezzle Widget Script box. This will inject the widget script into the product and cart pages of your store.
  10. Save the configuration. sezzle_app_control_panel
  11. Go to Storefront > Script Manager. Confirm that the Sezzle Checkout and Sezzle Widget scripts appear in the list of installed scripts. sezzle_app_script_manager
  12. Installation is complete.

Sandbox Testing

  1. In the Sezzle configuration page of your BigCommerce admin, enter the Sandbox API Keys from your Sezzle Merchant Sandbox Dashboard and check the Use Sandbox checkbox, then save the configuration. Make sure you are doing this on your dev/staging website.
  2. On your website, add an item to the cart, then proceed to Checkout and select Sezzle as the payment method.
  3. Click Place Order and you should be redirected to the Sezzle checkout page. If prompted, sign in. onepage bigcommerce payment movement
  4. Enter the payment details using test data, then click Complete Order.
  5. After the payment is completed on Sezzle, you should be redirected back to your website and see a successful payment page.
  6. Sandbox testing is complete. You can login to your Sezzle Merchant Sandbox Dashboard to see the test order you just placed.
  7. Verify the payment by checking the order in your BigCommerce admin. You will be able to see Staff Notes with the Sezzle Reference ID and order status as Awaiting Fulfillment.
  8. If the payment is unsuccessful, order status will be Awaiting Payment and there will be no Sezzle Reference ID in Staff Notes.

Live Checkout

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

Troubleshooting

If testing was unsuccessful, review the following:

Manual Theme Integration

Some custom themes are not compatible with custom scripts. The following steps will walk you through editing your theme to allow loading of custom scripts.

  1. From your BigCommerce admin, go to Storefront > My Themes.
  2. In your Current Theme, click the button labeled Advanced. If you have a copied theme, you can click Edit Theme Files in the context menu and proceed to step 4. If you do not have a copied theme or would prefer to create a new copy, then click Make a Copy. You can name your copy whatever you like. A copy of your theme with the new name will appear below in the My Themes area. copy_theme
  3. Find the copy of your theme under My Themes. Click the ... icon.
    Click Edit Theme Files in the context menu. edit_theme_dropdown
  4. When the dashboard asks if you want to edit your theme files, click the Edit Theme Files button. confirm_edit_theme
  5. You will be directed to a page showing the files for your theme. On the left side of the page there will be a directory of folders and files. Go to your checkout.html file. The checkout.html file can usually be found by clicking on the templates folder, then clicking on the pages folder, and then clicking on checkout.html. Please note that some themes may store the checkout.html file in a different location. file_directory
  6. In your checkout.html file, insert a new line with the text {{{head.scripts}}} below {{#partial "head"}} and above the corresponding {{/partial}}. More info can be found on {{partial}} in String Helpers of the Big Commerce Handlebars Helper Reference. partial_tag scripts_tag
  7. Next, click Save File to save your changes. Once you have saved your changes, you can return to the My Themes page for your storefront.
  8. If you created a copy of your theme in step 2, find the new copy of your theme in the My Themes section, click the ... icon, and click Apply. If prompted to select a style, select your preferred style and click Continue. Your newly copied theme should now be your Current Theme.

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

  1. Go to Storefront > Script Manager
  2. Click the Create a Script button
  3. Select the following: Location on page: Footer
  4. Select pages where script will be added: All pages
  5. Script category: Essential
  6. Script type: Script
  7. 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>

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

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

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

Uninstall Steps

  1. Go to Apps > My Apps
  2. Under the Sezzle App, click Uninstall sezzle uninstall
  3. Go to Store Setup > Payments.
  4. Disable the Offline Payment method that was being used for Sezzle.

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:

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

This integration is currently only available on Shopify.

Integration Steps Overview

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

Before You Begin

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

Install the Sezzle Bold Cashier Extension

  1. First you must install the Bold Cashier app to your platform and store url. You can do this from the Bold Cashier site.
  2. Log in to your Shopify admin
  3. Go to Apps > Bold Cashier. Bold cashier
  4. In the Bold Cashier left sidebar, click Marketplace, then find Sezzle and click Install. Bold install
  5. Click Allow to accept permissions and complete the installation. Bold permissions
  6. Installation is complete. Bold marketplace

Live Checkout

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

Uninstall Steps

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