Balances configuration overview [beta]
This feature is currently in beta release to give you a chance to check out this functionality and provide feedback. The functionality or API contracts might change before it is released for use in production. For more information or to participate in this beta program, contact your Pismo representative.
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 use the Balance config API to create balance configurations, replace balance configurations, and get one or all balance configurations.
With a balance configuration you can:
- Apply a balance configuration to an organization, program or account in the level parameter.
- Define a filters object to filter transactions using processing codes, currency, merchant category code, and other filters.
- Define a condition object for evaluating a transaction amount’s impact on accounting limits and balances.
- Define a result object for account limits or balances to adjust or debit/credit based on the transaction amount.
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 going to be applied at the account level, 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 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 the type
field indicates 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 with 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 4 days ago