Configuring the Business Formulas
The Business Formulas processor handles different inputs from your digital journey in order to generate desired outputs. By inserting arguments and using them in steps, the system creates complex calculations to be triggered in a flow. The order of the formula execution for the scoring done by the marketplace:
The order of the formula execution for the scoring done by the bank is:
- BNPL_RK_AvailableProducts
- BNPL_KO_Risk
- BNPL_Scoring_Risk
- BNPL_MaxDTI_Risk
- BNPL_FinancialCalculation.
The formulas and matrices are for example purposes only. They are subject to internal modifications for each implementation.
BNPL_KO
This formula calculates the knock-out criteria for the customer.
Field | Example |
---|---|
Name | BNPL_KO |
Formula Input | BNPL_KO |
Start date | 07/03/2022 16:42 |
Formula steps:
Name | Description | Master Type | SubType | Calculation Type | Formula |
---|---|---|---|---|---|
KO_bnplWithDpdPast12Months | It checks if the number of days is over 15. | Simple Type | Boolean | Normal |
Copy
|
KO_dpdForBnplActiveProducts | It checks if the number of active products is zero. | Simple Type | Boolean | Normal |
Copy
|
KO_ordersReturnedPercentage | It checks if the orders returned percetage is 0.5. | Simple Type | Boolean | Normal |
Copy
|
KO_bnplRefusedPaymentsNoLast30Days | It checks if the refused payments in the last 30 days is over 5. | Simple Type | Boolean | Normal |
Copy
|
KO_hasModifiedCredentialsPast24Hours | It checks if the credentials were modified in the last 24h. | Simple Type | Boolean | Normal |
Copy
|
KO_Final | It determines the knock-out of the customer. | Simple Type | Boolean | Normal |
Copy
|
Data Set BNPL_KO_BnplWithDpdPast12Months
Matrix | ||
---|---|---|
bnplWithDpdPast12Months | Values | Description |
(15;] | 0 | The customer fails the check. |
[;15] | 1 | The customer passes the check. |
Data Set BNPL_KO_DpdForBnplActiveProducts
Matrix | ||
---|---|---|
dpdForBnplActiveProducts | Values | Description |
(0;] | 0 | The customer fails the check. |
[;0] | 1 | The customer passes the check. |
Data set BNPL_KO_ordersReturnedPercentage
Matrix | ||
---|---|---|
ordersReturnedPercentage | Values | Description |
(0.5;] | 0 | The customer fails the check. |
[;0.5] | 1 | The customer passes the check. |
Data set BNPL_KO_bnplRefusedPaymentsNoLast30Days
Matrix | ||
---|---|---|
bnplRefusedPaymentsNoLast30Days | Values | Description |
(5;] | 0 | The customer fails the check. |
[;5] | 1 | The customer passes the check. |
Data set BNPL_KO_hasModifiedCredentialsPast24Hours
Matrix | ||
---|---|---|
hasModifiedCredentialsPast24Hours | Values | Description |
(0;] | 0 | The customer fails the check. |
[;0] | 1 | The customer passes the check. |
BNPL_Scoring
After the customer continued to the check out page, the system decided if the customer is eligible for the limit. The data is hard-coded, but it can be fetched via API. For eligibility rules, the customer fails if:
- Buy Now, Pay Later with DPD >15 days in the past 12 months
- DPD more then 0 for Buy Now, Pay Later active products
- orders returned in the past 30 days >50%
- payments for Buy Now, Pay Later initiated at checkout and refused >5 in the past 30 days
- customer has modified the credentials in the past 24 hours.
Field | Example |
---|---|
Name | BNPL_Scoring |
Formula Input | BNPL_Scoring |
Start date | 07/03/2022 17:40 |
Formula steps:
Name | Description | Master Type | SubType | Calculation Type | Formula |
---|---|---|---|---|---|
SCORING_customerLoyalty | It determines the customer loyalty. | Simple Type | Whole Number | Normal |
Copy
|
SCORING_averageCheckoutTicketSIze | It determines the average checkout ticket size in the past 12 months. | Simple Type | Whole Number | Normal |
Copy
|
SCORING_mostCommonInstrument | It determines the type of payment used by the customer used in the last 12 months. | Simple Type | Whole Number | Normal |
Copy
|
SCORING_maxDPD | It determines the maximum DPD in the past 12 months for Buy Now, Pay Later payments. | Simple Type | Whole Number | Normal |
Copy
|
SCORING_advancePay | It determines how many times the customer paid in advanced in the past 12 months . |
Simple Type | Whole Number | Normal |
Copy
|
SCORING_usageRate | It determines the usage rate for Buy Now, Pay Later in past 12 months. | Simple Type | Whole Number | Normal |
Copy
|
SCORING_returnedProductsPercent | It determines the % of returned products in the past 12 months, min 10 orders placed. |
Simple Type | Whole Number | Normal |
Copy
|
SCORING_uniqueCardsUsed | It determines the number of unique cards used for transactions in the past 12 months, it must be more than 10 orders. | Simple Type | Whole Number | Normal |
Copy
|
SCORING_CustomerAge | It determines the age of the customer. | Simple Type | Whole Number | Normal |
Copy
|
Userscore | It calculates the scoring per customer. | Simple Type | Whole Number | Normal |
Copy
|
Data set BNPL_Scoring_CustomerLoyalty
The hard-coded values from the following data sets are placed in FTOS_EC_ShoppingCartLoader.
It is measured in years.
Matrix | ||
---|---|---|
Customer Loyalty | Values | Description |
[-1;-1] | 5 | N/A |
[0;1) | 5 | customer for <1 year |
[1;2] | 10 | customer for 1-2 years |
(2;3] | 15 | customer for 2-3 years |
(3;4] | 20 | customer for 3-4 years The hard-coded value is 4. |
(4;] | 25 | customer for >4 years |
Data set BNPL_Scoring_AverageCheckoutTIcketSize
It is measured in euros.
Matrix | ||
---|---|---|
AverageCheckoutTicketSize | Values | Description |
[-1;-1] | 5 | N/A |
[0;10) | 5 | <50 EURO |
[10;30] | 10 | <20 EURO |
[31;50] | 15 | 20 - 50 EURO The hard-coded value is 31. |
[51;100] | 20 | 51 -100 EURO |
[101;300] | 25 | 101-300 EURO |
[301;500] | 30 | 301- 500 EURO |
[501;] | 35 | >500 EURO |
Data set BNPL_Scoring_MostCommonPaymentInstrument
Matrix | ||
---|---|---|
MostCommonPayment | Value | Description |
N/A | 5 | |
Cash at delivery | 5 | |
Debit Card | 10 | |
Credit Card | 15 | |
Bank Transfer | 10 | The hard-coded value is Bank Transfer. |
BNPL | 20 |
Data set BNPL_SCORING_maxDPD
Matrix | ||
---|---|---|
maxDPD | Values | Description |
[-1;-1] | 5 | N/A |
[0;0] | 25 | 0 days past due |
[1;5] | 15 | between 1 and 5 DPD |
[6;10] | 10 | between 6 and 10 DPD |
(10;15] | 5 | between 10 and 15 DPD |
Data Set BNPL_Scoring_AdvancePayments
Matrix | ||
---|---|---|
AdvancePayments | Values | Description |
[-1;-1] | 5 | N/A |
[0;0] | 5 | Never payed in advance |
[1;1] | 10 | Payed in advance at least once |
(1;] | 20 | Payed in advance more than once The hard-coded value is 2. |
Data Set BNPL_Scoring_UsageRate
Matrix | ||
---|---|---|
BNPLUsageRate | Values | Description |
[-1;-1] | 5 | The customer has never paid using Buy Now, Pay Later. |
[0;0] | 5 | |
[1;5] | 10 | The customer has paid using Buy Now, Pay Later 1-5 times. |
[6;10] | 15 | The customer has paid using Buy Now, Pay Later 6-10 times. |
[11;20] | 20 | The hard-coded value is 20. The customer has paid using Buy Now, Pay Later 11-20 times. |
[21;40] | 25 | The customer has paid using Buy Now, Pay Later 21-40 times. |
(40;] | 30 | The customer has paid using Buy Now, Pay Later >40 times. |
Data set BNPL_SCORING_returnedProductsPercent
Matrix | ||
---|---|---|
returnedProductsPercent | Values | Description |
[-1;-1] | 5 | N/A |
[0;5] | 20 | <5% of returned products |
(5;10] | 15 | 5-10% of returned products |
(10;25] | 10 | >10% - 25% of returned products The hard-coded value is 20. |
(25;50] | 5 | >25%- 50% of returned products |
Data set BNPL_SCORING_uniqueCardsUsed
Matrix | ||
---|---|---|
UniqueCardsUsed | Values | Description |
[-1;-1] | 5 | N/A |
[0;2) | 30 | <2 |
[2;3] | 20 | between 2 - 3 cards The hard-coded value is 3. |
[4;5] | 10 | between 4 -5 cards |
(5;] | 5 | >5 cards |
Data set BNPL_SCORING_CustomerAge
Matrix | ||
---|---|---|
CustomerAge | Values | Description |
[-1;-1] | 5 | N/A |
[18;25] | 5 | between 18 and 25 years |
(25;35] | 10 | between 25 and 35 years |
(35;50] | 15 | between 35 and 50 years The hard-coded value is 40. |
(50;] | 20 | over 50 years |
BNPL_Limit
It calculates the limit of the customer. If the user score is over 100, the system assigns a limit to that user and progresses to the next calculation Product availability rules. If the user score is below 100, the system does not show any Buy Now, Pay Later products in the Payment screen. If the total check out value is over or equal to the limit, then the system does not trigger the risk calculations and the customer cannot pay with Buy Now, Pay Later.
Field | Example |
---|---|
Name | BNPL_Scoring |
Formula Input | BNPL_Scoring |
Start date | 07/03/2022 17:40 |
Formula steps:
Name | Master Type | SubType | Calculation Type | Formula |
---|---|---|---|---|
LIMIT_userscore | Simple Type | Whole Number | Normal | Copy
|
The currencyCode
is hard-coded to EUR.
Data set BNPL_Limit
Matrix | ||
---|---|---|
UserScore | Values | Description |
[45;100] | 0 | |
[101;150] | 250 | |
[151;180] | 500 | |
[181;225] | 1000 | The hard-coded value is 200. |
BNPL_RK_AvailableProducts
This formula calculates the available products.
Field | Example |
---|---|
Name | BNPL_RK_AvailableProducts |
Formula Input | BNPL_RK_AvailableProducts |
Start date | 07/03/2022 12:54 |
Formula steps:
Name | Description | Master Type | SubType | Calculation Type | Number of iterations | Formula |
---|---|---|---|---|---|---|
availableProducts | This formula calculates based on the data set BNPL_Risk_AvailableProducts containing the product code and the score the available products to be offered. | Collection | Text | Iteration | productCodes | Copy
|
Data set BNPL_Risk_AvailableProducts has two data set values depending on the country Germany or France.
BNPL_Risk_AvailableProducts - DE
Score/Product | BNPL30D | BNPL3X | BNPL4X | BNPL5X | BNPL6X | BNPL7X | BNPL8X | BNPL9X | BNPL10X | BNPL11X | BNPL12X |
---|---|---|---|---|---|---|---|---|---|---|---|
[101;150] | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
[151;180] | 0 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
[181;] | 0 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
[;100] | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
BNPL_Risk_AvailableProducts - FR
Score/Product | BNPL30D | BNPL3X | BNPL4X | BNPL5X | BNPL6X | BNPL7X | BNPL8X | BNPL9X | BNPL10X | BNPL11X | BNPL12X |
---|---|---|---|---|---|---|---|---|---|---|---|
[;100] | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
[101;150] | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
[151;180] | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 |
[181;] | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
BNPL_RK_RiskLevel
After the customer selected the product type, the system calculates the risk level based on the total cart value and the product used. Based on the risk level, the system can decide to ask for additional information from the customer so that they can access the Buy Now, Pay Later product.
Field | Example |
---|---|
Name | BNPL_RK_RiskLevel |
Formula Input | BNPL_RK_RiskLevel |
Start date | 07/03/2022 14:56 |
Formula steps:
Name | Description | Master Type | SubType | Calculation Type | Formula |
---|---|---|---|---|---|
riskLevel | This formula determines the risk level based on the amount and product code. Each amount range has a risk level. | Simple Type | Text | Normal | Copy
|
Name | Matrix | ||||||||
---|---|---|---|---|---|---|---|---|---|
BNPL_RK_RiskLevel - BNPL10X |
| ||||||||
BNPL_RK_RiskLevel - BNPL11X |
| ||||||||
BNPL_RK_RiskLevel - BNPL12X |
| ||||||||
BNPL_RK_RiskLevel - BNPL30D |
| ||||||||
BNPL_RK_RiskLevel - BNPL3X |
| ||||||||
BNPL_RK_RiskLevel - BNPL4X |
| ||||||||
BNPL_RK_RiskLevel - BNPL5X |
| ||||||||
BNPL_RK_RiskLevel - BNPL6X |
| ||||||||
BNPL_RK_RiskLevel - BNPL7X |
| ||||||||
BNPL_RK_RiskLevel - BNPL8X |
| ||||||||
BNPL_RK_RiskLevel - BNPL9X |
|
BNPL_FinancialCalculation
This formula calculates whether the loan is approved or not.
Field | Example |
---|---|
Name | BNPL_FinancialCalculation |
Formula Input | BNPL_FinancialCalculation |
Start date | 04/04/2022 17:54 |
Formula steps:
Name | Master Type | Sub Type | Calculation Type | Formula |
---|---|---|---|---|
DTI | Simple Type | Decimal | Normal | Copy
|
availableDTI | Simple Type | Decimal | Normal | Copy
|
maxInstallment | Simple Type | Decimal | Normal | Copy
|
decision | Simple Type | Text | Normal | Copy
|
BNPL_KO_Risk
This formula determines the risk level of a customer based on age and employment status.
Field | Example |
---|---|
Name | BNPL_KO_Risk |
Formula Input | BNPL_KO_Risk |
Start date | 21/03/2022 09:44 |
Formula steps:
Name | Master Type | SubType | CalculationType | Exclude From Mapping | Formula |
---|---|---|---|---|---|
KO_Risk_Age | Simple Type | Boolean | Normal | FALSE | Copy
|
KO_Risk_EmploymentStatus | Simple Type | Boolean | Normal | FALSE | Copy
|
KO_Risk_Decision | Simple Type | Boolean | Normal | FALSE | Copy
|
Data set BNPL_KO_Risk_Age
Age | Values |
---|---|
[;18) | 1 |
[18;] | 0 |
Data set BNPL_KO_Risk_EmploymentStatus
EmploymentStatus | Values |
---|---|
Unemployed | 1 |
Student | 1 |
Housewife | 1 |
BNPL_MaxDTI_Risk
This formula determines the value for the risk category based on the user score.
Field | Example |
---|---|
Name | BNPL_MaxDTI_Risk |
Formula Input | BNPL_MaxDTI_Risk |
Start date | 01/04/2022 03:00 |
Formula steps:
Name | Master Type | Sub Type | Calculation Type | Formula | Exclude From Mapping |
---|---|---|---|---|---|
MAXDTI_riskCategory | Simple Type | Text | Normal | Copy
| FALSE |
MAXDTI | Simple Type | Decimal | Normal | Copy
| FALSE |
Data set BNPL_Scoring_Risk_Category
User Score | Values |
---|---|
[45;100] | D |
[101;150] | C |
[151;180] | B |
[181;225] | A |
Data set BNPL_Scoring_Risk_MaxDTI
Risk Category | Values |
---|---|
A | 0.4 |
B | 0.3 |
C | 0.2 |
D | 0 |
BNPL_Scoring_Risk
This formula determines the scoring of a customer based on the age, marital status, employment status, time spent at current employer, DPD, active number of loans, education and user score.
Field | Example |
---|---|
Name | BNPL_Scoring_Risk |
Formula Input | BNPL_Scoring_Risk |
Start date | 01/04/2022 03:00 |
Formula steps:
Name | Master Type | Sub Type | Calculation Type | Formula | Exclude From Mapping |
---|---|---|---|---|---|
SCORING_age | Simple Type | Whole Number | Normal | Copy
| FALSE |
SCORING_maritalStatus | Simple Type | Whole Number | Normal | Copy
| FALSE |
SCORING_employmentStatus | Simple Type | Whole Number | Normal | Copy
| FALSE |
SCORING_timeAtCurrEmployer | Simple Type | Whole Number | Normal | Copy
| FALSE |
SCORING_DPD | Simple Type | Whole Number | Normal | Copy
| FALSE |
SCORING_activeLoansNo | Simple Type | Whole Number | Normal | Copy
| FALSE |
SCORING_education | Simple Type | Whole Number | Normal | Copy
| FALSE |
userScore | Simple Type | Whole Number | Normal | Copy
| FALSE |
Data set BNPL_Scoring_Risk_Age
Age | Values |
---|---|
[;26) | 5 |
[26;31] | 10 |
[32;41] | 15 |
[42;51] | 35 |
[52;] | 30 |
Data set BNPL_Scoring_Risk_MaritalStatus
Marital Status | Values |
---|---|
Married | 35 |
Civil partnership | 10 |
Single | 10 |
Widow | 20 |
Separated | 15 |
Data set BNPL_Scoring_Risk_EmploymentStatus
Employment Status | Values |
---|---|
Full-time employed | 30 |
Retired | 25 |
Self employed | 15 |
Management/ Mandate contract | 10 |
Unemployed/ Student/ Housewife | 5 |
Data set BNPL_Scoring_Risk_ActiveLoansNo
Active Loans No | Values |
---|---|
[0;0] | 30 |
[1;1] | 15 |
[2;2] | 10 |
[3;] | 5 |
[-1;-1] | 5 |
[-2;-2] | 10 |
Data set BNPL_Scoring_Risk_TimeSpentAtCurrentEmployer
Time Spent Current Employer | Values |
---|---|
(10;) | 30 |
(5;10] | 10 |
(2;5] | 15 |
[1;2] | 10 |
(;1) | 5 |
Data set BNPL_Scoring_Risk_DPD
DPD | Values |
---|---|
[0;29] | 35 |
[30;59] | 15 |
[60;89] | 10 |
[90;] | 5 |
[-2;-2] | 20 |
[-1;-1] | 5 |
Data set BNPL_Scoring_Risk_Education
Education | Values |
---|---|
University | 30 |
High school | 20 |
Middle school | 15 |
Elementary school | 10 |