Balances configuration overview [beta]
Beta release
This feature is currently in beta release to give customers a chance to check out its functionality and provide feedback. Its functionality might change before being released to production. Contact your Pismo representative for more information or to participate in the beta program..
A balance configuration is a set of flex controls to determine how balances and account limits are adjusted or credited and debited based on transaction amounts. For example, you can stop a customer from spending over their available credit limit. You can use the Balance config API to create balance configurations, replace balance configurations, and get one or all balance configurations.
You can use the Create balance configuration endpoint to do the following:
- Apply a balance configuration to an organization, program, or account using the
level
parameter. - Define a
filter
object to filter transactions using processing codes , currency codes, merchant category codes, and other criteria. - Define a
condition
object to evaluate a transaction amount’s impact on accounting limits and balances. - Define a
result
object to adjust account limits or balances or debit/credit based on transaction amount.
Note: The scenarios
object is a container for condition
and result
objects. The configs
(Configurations below) object is a container for filter
and scenarios
objects.
Use Cases
Adjust available credit limit based on transaction spending
In the payload below, the account’s available credit limit is set so the account cannot exceed their spending limit on transportation services. You can manage the account’s available credit limit based on transaction amount. In this case, the account is allowed to directly adjust the available credit limit without checking if the available credit limit has been exceeded.
In this example, level
is set to account
indicating the balance configuration is applied to an account, specifically to account 12345678
. This is the same account identified in the impact_account
object that will have its available credit limit adjusted based on transaction amounts.
The configs
object is the balance configuration. You can use the filters
object to determine the transaction filtering criteria like processing_codes
or merchant category codes (mcc
). The processing_codes
field is required. For more information on processing codes, refer to Processing codes and transaction types . Processing code 903002
is for utilities and mcc
4000
is for transportation services.
The scenarios
object is a container for condition
and result
objects which represent the account balances and limits evaluated and adjusted. Since there can be multiple scenarios
objects, the condition
object determines in what order (order
) it is executed and its type
.
A scenario
can either have a custom
or default
type. A custom
type is executed before a default
type and does validations (such as checking if the customer has a high enough available credit limit for the transaction amount) as would be indicated in a consider
object (not shown here) which would list what account limits to check. A default
type is executed last and does not do validations and therefore, does not require a consider
object.
The result
object represents the account's adjusted limits or balances based on the transaction amount. In result
, amount
and impact
are required. The impact
field defines how the limit or balance is adjusted.
In the result
object, impact
= AvailableCreditLimit
is evaluated and AvailableCreditLimit
is the limit adjusted. Since amount
= contract_amount
, the amount credited to AvailableCreditLimit
is the contract_amount
. The contract_amount
is the final amount including any interest or fees. The available credit limit (AvailableCreditLimit
) for the account that impact_account.account_id
identifies is adjusted.
{
"level": "account",
"account_id": 12345678,
"configs": [
{
"filters": {
"processing_codes": [
"903002"
],
"mcc":[
"4000"
]
},
"scenarios": [
{
"condition": {
"order": 1,
"type": "default"
},
"result": {
"impact": [
"AvailableCreditLimit"
],
"amount": "contract_amount",
"impact_account": {
"account_id": 12345678
}
}
}
]
}
]
}
Given a transaction for $10 that had a processing code of 903002
and an mcc
= 4000
as identified in the filters
object, the 12345678
account would have its available credit limit (AvailableCreditLimit
) debited $10. If AvailableCreditLimit
was $100, it would be $90 after this transaction.
Impacting different limits due to insufficient main limit
Use a different limit in situations where the main limit is not sufficient. With two distinct credit limits, the clean credit limit and the collateral credit limit, the Pismo platform determines which limit takes priority during the authorization flow. The example below shows which limit should be impacted.
{
"level": "account",
"account_id": 123456,
"configs": [
{
"filters": {
"processing_codes": [
"003100"
]
},
"scenarios": [
{
"condition": {
"order": 1,
"type": "custom",
"amount_to_check_balance": "amount"
},
"result": {
"impact": [
"AvailableCreditLimit"
],
"consider": [
"AvailableCreditLimit",
"OverLimit"
],
"amount": "contract_amount"
}
},
{
"condition": {
"order": 2,
"type": "default"
},
"result": {
"impact": [
"InstallmentCreditLimit"
],
"amount": "contract_amount"
}
}
]
}
]
}
Managing credit limits based on number of installments
The Pismo platform provides customizable credit limits such as personal loans. In the following example, Pismo handles credit limit impacts based on the number of installments.
Scenario A - Authorizations up to 12 Installments:
- Condition 1: If authorizations have up to 12 installments and there is sufficient available credit, Pismo impacts the
AvailableCreditLimit
. - Condition 2: If the available credit is insufficient, Pismo impacts the
InstallmentCreditLimit
.
Scenario B - Authorizations with more than 12 Installments:
- Condition 1: For authorizations with more than 12 installments and if there is sufficient installment credit, Pismo platform directly impacts the
InstallmentCreditLimit
. - Condition 2: If the
InstallmentCreditLimit
is insufficient, Pismo platform impacts theAvailableCreditLimit
.
In summary, to perform these configurations, create two distinct scenarios
, each containing two specific conditions
, as follows:
{
"level": "program",
"program_id": 1065,
"configs": [
{
"filters": {
"processing_codes": [
"00"
],
"min_installments": 1,
"max_installments": 12
},
"scenarios": [
{
"condition": {
"order": 1,
"type": "custom",
"amount_to_check_balance": "amount"
},
"result": {
"impact": [
"AvailableCreditLimit"
],
"consider": [
"AvailableCreditLimit",
"OverLimit"
],
"amount": "contract_amount",
"amount_consider": "principal_amount",
"reset_limit": "payment"
}
},
{
"condition": {
"order": 2,
"type": "default"
},
"result": {
"impact": [
"AvailableTotalInstallmentCredit"
],
"amount": "contract_amount",
"amount_consider": "principal_amount",
"reset_limit": "payment"
}
}
]
},
{
"filters": {
"processing_codes": [
"00"
],
"min_installments": 13,
"max_installments": 99
},
"scenarios": [
{
"condition": {
"order": 1,
"type": "custom",
"amount_to_check_balance": "amount"
},
"result": {
"impact": [
"AvailableTotalInstallmentCredit"
],
"consider": [
"AvailableTotalInstallmentCredit"
],
"amount": "contract_amount",
"amount_consider": "principal_amount",
"reset_limit": "payment"
}
},
{
"condition": {
"order": 2,
"type": "default"
},
"result": {
"impact": [
"AvailableCreditLimit"
],
"amount": "contract_amount",
"amount_consider": "principal_amount",
"reset_limit": "payment"
}
}
]
}
]
}
Updated 13 days ago