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 the AvailableCreditLimit.

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