Multiple Financing Programs with Kibo

Multiple Financing Programs (MFPs) in Kibo (Mozu) enables you to selectively offer a specific custom financing program to consumers based on product or category attributes in your catalog, and site-wide, time-based programs.

Overview

Financing program are defined by the following inputs:

Interest rate (APR) range

APR, or Annual Percentage Rate, is the cost of credit (i.e., interest) as a yearly rate.

Range of loan term lengths

The loan term length is the number of months that a customer has to repay the loan.

Merchant fee (MDR)

The merchant fee is a percentage of the purchase price that gets deducted from the settlements made to the merchant. 

How do I start using Multiple Financing Programs?

Financing programs are built by the Affirm Client Success team, and are specific to each merchant. If you'd like to start offering custom financing programs, please reach out to the Client Success team at [email protected]. Not all merchants qualify for custom financing programs.

Once your financing program has been created, you will be provided with a financing program ID and Promo ID by the Affirm Client Success team for your financing program(s). These IDs are utilized later in the sections below regarding the implementation of MFP. Affirm Promo ID displays correct terms in the Affirm marketing messages, monthly payment pricing and modal, while financing program value provides these terms during the checkout process.


Get started with MFP

Once you have received your financing program name from our Client Success team, you can setup the Affirm Magento extension to apply that program when certain conditions are met. There are some common examples illustrated below show for a given promotion which fields need to be populated, and the possible outcomes.

How are different rules ranked?

This chart illustrates the relative ranking of the financing programs that are defined in Magento:

RankingType of financing programOptions
1Product-levelInclusive
2Product-levelExclusive
3Category-levelInclusive
4Category-levelExclusive
5Cart-size
6Date
7Default
Site-level programsItems in cartFinancing programs (ranked)
- Cart-size- Item 1
- Product 1
- financing program (inclusive) = "product_program"
- Category 1
- financing program (inclusive) = "category_program"
- Item 2
- Product 1
- no financing programs
1. product_program
2. category_program
3. cart_program
4. date_program
5. default_program

Configuration

To enable an Affirm Multiple Financing Programs, configure the JSON file found in your theme: resources/Affirm_MFP.json.

JSON high-level structure:

{
  "defaultMFP": "",
  "siteLevelMFP": [],
  "cartSizeMFP": {},
  "productLevelMFP": [],
  "categoryLevelMFP": []
}

Create rules

The structure is organized by "rule contexts" that allows you to configure one or more rules to apply to each context. All the rules defined into the JSON file are applied according to the following precedence. 

Product/SKU\

Product Category\

Cart size\

Sitewide (Time/date)\

Default

Note: This assumes you already have already been provided with a financing program ID and Promo ID. If you haven't received one, please contact [email protected].

Default financing programs:

Default MFP: One MFP String value.

{
  "defaultMFP": "DEFAULT_MFP",
}

Note: The Default Promo Id is configured in Admin -> Payment Type

Site-wide financing programs:

Site Level MFPs can be one or more rules that apply site-wide.

"siteLevelMFP": [
    {
        "enabled": true,                      /* (required true|false) Enable/Disable rule*/
        "mfpValue": "SITE_LEVEL_MFP",          /* (required) MFP value to use in the Affirm html placement */
        "promoId": "SITE_LEVEL_PROMO_ID",      /* (required) PromoId value to use in the Affirm html placement */
        "startDate": "2017-08-04T00:52:52.532Z",   /* (required) Date when the rule starts automatically */
        "endDate": "2017-08-07T00:00:00.532Z"    /* (required) Date when the rule becomes disabled automatically */
  },
  ...
  ]

Cart-size financing programs:

Cart Size MFPs mean that one or more rules can be applied based on the Cart/Order total.

"cartSizeMFP": {
    "enabled": true,                            /* (required true|false) Enable/Disable rule*/
    "mfpValue": "CART_SIZE_FINANCING_PROGRAM",    /* (required) MFP value to use in the Affirm html placement */
    "minOrderTotal": 101,                          /* (required) Integer: min cart total value to use this MFP */
    "maxOrderTotal": 395,                         /* (required) Integer: max cart total value to use this MFP */
    "promoId": "CART_SIZE_PROMO_ID"             /* (required) PromoId value to use in the Affirm html placement */
},

Category-level financing programs:

Category Level MFP: Configure one or more rules to apply based on the categories where belong the current Product page or categories of the products in the cart/order

"categoryLevelMFP": [
    {
        "enabled": true,                        /* (required true|false) Enable/Disable rule*/
        "categoryCodes": [ "10001", "2004" ],      /* (required String[]) Category Codes where this rule is valid*/
        "mfpValue": "FINANCING_NIKE_EXCLUSIVE",  /* (required) MFP value to use in the Affirm html placement */
        "mfpInclusiveType": true,                  /* (required) true -> Use Inclusive rule type, false-> Use Exclusive rule type */
        "promoId": "",                         /* (required) PromoId value to use in the Affirm html placement */
        "priority": false,                     /* (optional false|Integer) false -> don't use priority, 1-n -> prioritize rules, 1 is highest */
        "startDate": false,                    /* (optional false|Date) Date when the rule starts automatically */
        "endDate": false                       /* (optional false|Date) Date when the rule becomes disabled automatically */
  },
  ...
  ]
}

Product-level financing programs:

Product Level MFP: Configure one or more rules to apply based on the current Product page or products in the cart/order

"productLevelMFP": [
    {
        "enabled": true,                         /* (required true|false) Enable/Disable rule*/
        "skus": [ "10001", "2004" ],              /* (required String[]) Product Skus where this rule is valid */
        "mfpValue": "FINANCING_NIKE_EXCLUSIVE",   /* (required) MFP value to use in the Affirm html placement */
        "mfpInclusiveType": true,                /* (required) true -> Use Inclusive rule type, false-> Use Exclusive rule type */
        "promoId": "",                           /* (required) PromoId value to use in the Affirm html placement */
        "priority": false,                      /* (optional false|Integer) false -> don't use priority, 1-n -> prioritize rules, 1 is highest */
        "startDate": false,                     /* (optional false|Date) Date when the rule starts automatically */
        "endDate": false                        /* (optional false|Date) Date when the rule becomes disabled automatically */
  },

Logic for Selecting a Financing Program

The Affirm Kibo app allows you to define multiple financing programs at many different levels, and the application of those rules is such that the default program will be used if there is any ambiguity as to which program has priority (Product-level > Category-level > Cart-size > Time-based > Default).

The table details some scenarios where different financing programs could be applied, and what the result for the cart in Kibo would be:

ScenarioCart Item 1Cart Item 2Program
Consumer picks out two products, one with an inclusive product-level program and one without a financing programs.Product 1

- financing program = "zero_percent"
- inclusive
- priority 1
Product 3

has no financing program
zero_percent
Consumer picks out two products, one with an inclusive product-level program, and one with an exclusive product-level program.Product 1

- financing program = "zero_percent"
- inclusive
- priority 1
Product 4

- financing program = "increased_approvals"
- exclusive
- no priority
zero_percent
Consumer picks out two products, one with an inclusive product-level program, and one with an inclusive product-level program of a lower priority.Product 1

financing program = "zero_percent"
inclusive

- priority 1
Product 5

financing program = "18_months"
inclusive

- priority 2
zero_percent
Consumer picks out two products, one with an inclusive product-level program, and one with an inclusive product-level program with the same name and priority.Product 1

financing program = "zero_percent"
inclusive

- priority 1
Product 6

financing program = "zero_percent"
inclusive

- priority 1
zero_percent
Consumer picks out two products, one with an inclusive product-level program, and one with an inclusive product-level program with a different name but the same priority.

This is a priority conflict and is intended functionality. This would be how you setup inclusive programs that are not compatible with one another.
Product 2

financing program = "zero_percent"
inclusive

- priority 1
Product 7

financing program = "zero_percent_2"
inclusive

- priority 1
none
Consumer picks out two products, one with an exclusive product-level program, and one without a financing program.Product 2

financing program = "zero_percent"
exclusive

- priority 1
Product 8

no financing program
none
Consumer picks out one product, one with an exclusive product-level program.

This is the only scenario where this exclusive program is applied.
Product 2

financing program = "zero_percent"
exclusive

- priority 1
No productzero_percent
Consumer picks out one product, one with an exclusive product-level program.

This is the only scenario where this exclusive program is applied.
Product 2

financing program = "zero_percent"
exclusive

- priority 1
No Productzero_percent
Consumer picks out one product, one with an exclusive product-level program.

This is the only scenario where this exclusive program is applied.
Product 2

financing program = "zero_percent"
exclusive

- priority 1
No productzero_percent

Compliance with Consumer Protection Laws and Requirements

MFPs must comply with applicable federal, state, and local fair lending laws, regulations, and regulatory guidance. The purpose of fair lending standards is to ensure that individuals seeking financing are treated fairly and consistently. Generally, financing options must be offered to all qualified consumers without discrimination on the basis of race, color, religion, national origin, sex, marital status, age (provided that the applicant has the capacity to enter into a binding contract), the applicant's receipt of income through a public assistance program, the applicant's good faith exercise of a right under the federal Consumer Credit Protection Act, military status, sexual orientation, and other factors that may be prohibited under applicable state and local requirements. For example, merchants whose MFPs exclusively provide promotional pricing on items that appeal more to female customers than male customers may be found to be in non-compliance with fair lending requirements.

MFPs must also comply with the prohibitions in Title X of the Dodd-Frank Act and Section 5 of the Federal Trade Commission Act relating to unfair, deceptive, and abusive acts or practices. In essence, terms and conditions of financing programs must be clearly and accurately communicated to consumers.

Affirm reserves the right to request modifications to a financing program if it determines that the program may run afoul with applicable consumer protection requirements. Violating any applicable consumer protection requirement is a breach of your agreement with Affirm and can be grounds for termination as an Affirm merchant (and may result in legal action).


Reporting

In your settlement reports, we will include the financing program name that was active for a given transaction.