Account flex controls

Get account flex control

Get a flex control, given the accountId and flexControlId.

NOTE: This endpoint requires an account-specific access token.

get/v1/accounts/{accountId}/flex-controls/{flexControlId}

Request

  • Base URL
    https://sandbox.pismolabs.io/rules
  • URL
    https://sandbox.pismolabs.io/rules/v1/accounts/{accountId}/flex-controls/{flexControlId}
  • Auth
    HTTP bearer

Path parameters

accountIdnumber required
Example:9999999

Account ID

flexControlIdstring required
Example:84ba9052-31d3-41da-99d2-a1632d5ce2e5

Flex control ID

Response

OK. Flex control was found.

idstring uuidv4 required

Flex control ID

deny_codestring required

Deny code related to restriction. This code is returned when the evaluation does not meet the conditions.

namestring required

Flex control name

type'spending_limit' | 'usage_limit' | 'restriction' required

Flex control scope

  • usage_limit: Cumulative flex control that increases by one until max_limit
  • spending_limit: Cumulative flex control that increases by the current transaction's amount until max_limit
  • restriction: Restriction flex control that only validates specified conditions
rule_reference_idstring

Flex control template ID

beneficiary_idstring

Account beneficiary ID

override_controlsstring[]

List of existing flex control IDs to override. The platform ignores these controls for the beneficiary identified by beneficiary_id and only evaluates the new flex control.

descriptionstring

Flex control description

processing_codesstring[]

Processing codes list for evaluating flex control conditions. If the value is empty, the flex control applies to any processing code.

currency_codestring

Flex control currency code (ISO 4217). Defines the precision used for monetary values such as max_limit, available_limit, and condition.value.

time_zonestring

IANA Time Zone database, such as "America/New_York". This attribute is used to evaluate the flex control using the desired time zone for condition attributes such as week_day, month_day, time_now, and reset_period. If time_zone is empty, the control is evaluated using the UTC time zone.

max_limitinteger

Defines the maximum limit for the control. Its meaning depends on the flex control type.

  • For spending_limit controls, max_limit represents the maximum spending amount allowed.
  • For usage_limit controls, max_limit represents the maximum number of transactions allowed.

Once met or exceeded, any subsequent transactions are declined by evaluation control flow.

For spending limits, note that this value is an integer. Since global currencies vary in the number of digits that are allowed after the decimal point, you must convert the actual maximum spending limit into an integer value to use in this field. To do this, use the following formula.

value = floatNumber × 10^X, where X is the number of digits after the decimal separator for the currency as defined in ISO 4217.

For example, if you want to set the value 499.99 for BRL currency transactions, where the number of decimal places is 2, you must set it to 49999 (499.99 × 10²).

If you want to set the value 499 for JPY currency transactions, where the number of decimal places is 0, you must set it to 4999 (4999.0 × 10^0 = 4999.0 × 1 - in other words, the value doesn't change.)

This field is REQUIRED for flex controls with the type of spending_limit and usage_limit, and it does not apply to flex controls with the type of restriction and cumulative_limit.

available_limitinteger

Represents the remaining limit for the flex control. Its meaning depends on the flex control type.

  • For spending_limit controls, available_limit is the remaining spending amount.
  • For usage_limit controls, available_limit is the remaining number of transactions allowed.

The available_limit is calculated by: max_limit - current_spend_limit. The current_spend_limit, an internal field, is the total amount of all approved transactions in the limit_duration period. It is reset by the evaluation flow when a new transaction is evaluated in the new period according to the reset_period.

When available_limit is set in a PATCH request via Update account flex control or Update customer flex control, it resets current_spend_limit. In this case, available_limit cannot be greater than max_limit.

For spending limits, note that available_limit is an integer. Since global currencies vary in the number of digits that are allowed after the decimal point, you must convert the actual maximum spending limit into an integer value to use in this field. To do this, use the following formula:

value = floatNumber * 10^x, where x is the number of digits for the currency as defined in ISO 4217.

For example, if you want to set the value 499.99 for BRL currency transactions, you must set 49999 = 499.99 * 10^2.

On the other hand, the Japanese money system doesn't use fractions of a yen (the Japanese currency). So, to set the value at 4999 yen, you must set 4999 = 4999.0 * 10^0 = 4999.0 * 1. (In other words, the value doesn't change.)

limit_durationstring

Flex control limit period duration (ISO 8601 format). For example, if a flex control sets a spending limit of $500, and limit_duration is set to one month (P1M), then the user cannot spend more than $500 from the account in any one month period.

reset_datetimestring date-time

The exact date and time of the next reset for the flex control's spending window, in RFC-3339 format. This value is response-only: it is calculated by the platform and is never accepted in requests.

When reset_period is defined, the reset follows the configured schedule (for example, month_day: 10 resets on the 10th day of every month). When reset_period is omitted, the reset occurs at the control's creation date and time plus limit_duration.

This value is recalculated whenever an authorization is evaluated. If no authorizations have been processed since the last reset, it may still point to a reset datetime that has already passed.

This field is returned only for flex controls with the type of spending_limit or usage_limit.

activeboolean

If not specified, defaults to 'true'. If set to 'false', the flex control is skipped during evaluation.

customizedboolean

Indicates whether the flex control is updated at the account level or customer level (true) or managed at the program level (false).

To revert a customized flex control back to program-level management, call Update account flex control or Update customer flex control and set customized as false.

response_codestring

Alphanumeric two-character response code. This can be the standard card network response code. When the platform denies a transaction, it returns the response code that provides the precise reason for the denial by the card network.

custom_codestring

Alphanumeric three-character custom code. This can be an alternative custom code. When the platform denies a control evaluation, it returns the custom code that provides the precise reason for the denial by the anti-fraud solution.

evaluation_orderinteger

Order in which the control is evaluated. If this value is not provided, the control is evaluated after the controls with the configured evaluation_order value.

Example response

{
  "id": "9cbdadc-860b-4275-a5cd-d9d892fd3869",
  "deny_code": "ERR_VAL_BALANCE",
  "name": "Purchase 1M limit",
  "rule_reference_id": "purchase-1M",
  "beneficiary_id": "8497225d-2096-4b92-990e-f73bd21bc48c",
  "override_controls": [
    "spending-limit-id-1",
    "spending-limit-id-2"
  ],
  "description": "This flex control restricts the max value to be spent every 24 hours",
  "processing_codes": [
    "07000",
    "07001"
  ],
  "currency_code": "BRL",
  "time_zone": "America/Sao_Paulo",
  "max_limit": 1000,
  "available_limit": 300,
  "conditions": [
    {
      "id": "b4930a4d-e2c4-4fdc-9803-c83dec3a30d1",
      "value": "10000"
    }
  ],
  "limit_duration": "P1M",
  "reset_period": {
    "week_day": "monday",
    "time": "3:00AM",
    "utc_time": "3:00AM"
  },
  "reset_datetime": "2022-03-08T21:19:55Z",
  "active": true,
  "customized": true,
  "response_code": "57",
  "custom_code": "A1B"
}

Changes

No recorded changes to this operation across all 1 revision of this API.