Actionable Insights

Summary

Actionable insights are designed to give you timely insights into your customers' financial health and provide you with enough information to notify your customer of what is happening in their financial lives. The insights are split into three logical groups;

  1. GET insights/v1/actionable/balances endpoint - Provides a list of insights relevant to a customer's balances
  2. GET insights/v1/actionable/income endpoint - Provides a list of insights relevant to a customer's income
  3. GET insights/v1/actionable/spending endpoint - Provides a list of insights relevant to a customer's spending

Each of these insights is accompanied by a details endpoint which can be used to retrieve all the relevant accounts/transactions that were used to generate the insight. It's not intended for you to subsequently hit the details endpoint each time you generate an insight for your customer but rather it can be used if you would like to show the associated accounts/transactions to an insight or for testing purposes during your integration with Bud.

For each of the endpoints, you have the option whether to return all applicable insights for the customer or to specify which insights are of interest to you. This can be done using the enabled_insights query parameter in the request. See example below.

curl --request GET \
     --url 'https://api-sandbox.thisisbud.com/insights/v1/actionable/balances?enabled_insights=in_overdraft' \
     --header 'accept: application/json'

Thresholds

Most of the insights have thresholds for triggering that insight; for example with low_balance, you can set the balance amount from where this triggers. By default, there are Bud thresholds but you can also update these thresholds for a given project by logging a support request.

These thresholds (default or specified) will be used at the point of initial account connection or any subsequent data ingestion to calculate all the applicable insights for the given customer, by hitting one of the insights endpoints you will then be retrieving these pre-calculated insights.

🚧

You can also specify thresholds on an individual request by sending query parameters, however, this will require the insight to be recalculated with the new threshold meaning latency will be drastically increased.

Retrieve Balances Actionable Insights

We currently have four actionable insights related to a customer's balance.

InsightDescriptionDefault Threshold
close_to_credit_limitThe customer's credit utilisation exceeds the given threshold for a single account70%
low_balanceThe customer's account balance has fallen below the given threshold£50
in_overdraftOne or more of the customer's accounts has a balance lower than 0-
cannot_cover_billsThe customer is likely to have a negative account balance at the end of the month after paying their bills, taking into account predicted future transactions and the current account balance-

An example of a successful 200 response can be seen below.

{
  "operation_id": "insights_v1_actionable_balances_get",
  "data": {
    "insights": [
      {
        "id": "in_overdraft_8789764a-df2f-4589-b550-00bcd0e9cb2c",
        "type": "in_overdraft",
        "account_id": "8789764a-df2f-4589-b550-00bcd0e9cb2c",
        "balance": {
          "value": "100.00",
          "currency": "GBP",
          "credit_debit_indicator": "debit"
        },
        "threshold": {
          "value": "0.00",
          "currency": "GBP",
          "credit_debit_indicator": "debit"
        },
        "_links": {
          "details": "https://domain/insights/v1/actionable/balances/in_overdraft/in_overdraft_8789764a-df2f-4589-b550-00bcd0e9cb2c/details"
        }
      }
    ]
  },
  "metadata": {
    "results": 1,
    "from": "2022-11-01T00:00:00Z",
    "to": "2023-05-16T17:30:00Z",
    "options": []
  }
}
curl --request GET \
     --url https://api-sandbox.thisisbud.com/insights/v1/actionable/balances \
     --header 'X-Client-Id: <client_id>' \
     --header 'X-Customer-Id: <customer_id>' \
     --header 'X-Customer-Secret: <customer_secret>' \ # Not required for hosted customers
     --header 'accept: application/json'

The response contains all applicable insights for the given customer that have been triggered, each insight will contain the account_id, balance and a link to the details endpoint.

An example of the response of the details endpoint can be seen below.

{
  "operation_id": "insights_v1_actionable_balances_details_get",
  "data": {
    "id": "in_overdraft_ee7a2d6a-2baa-461a-aca2-844e88a3f3e7",
    "type": "in_overdraft",
    "caused_by": {
      "accounts": [
        {
          "account_id": "ee7a2d6a-2baa-461a-aca2-844e88a3f3e7",
          "currency": "GBP",
          "holder": {
            "name": "David Smith",
            "relationship": "unknown"
          },
          "account_name": "My Current Account",
          "account_type": "current_account",
          "usage_type": "personal",
          "provider": "BankOfBud",
          "identifiers": {
            "uk_sort_code": "126432",
            "uk_account_number": "31510604"
          },
          "balances": [
            {
              "date": "2023-05-12T00:00:00Z",
              "amount": {
                "value": "100.00",
                "currency": "GBP"
              },
              "type": "interim_booked",
              "credit_debit_indicator": "debit"
            },
            {
              "date": "2023-05-12T00:00:00Z",
              "amount": {
                "value": "100.00",
                "currency": "GBP"
              },
              "type": "expected",
              "credit_debit_indicator": "debit"
            }
          ],
          "credit_lines": [
            {
              "date": "2023-05-12T00:00:00Z",
              "type": "credit",
              "amount": {
                "value": "1000.00",
                "currency": "GBP"
              }
            }
          ]
        }
      ],
      "transactions": []
    },
    "details": {}
  },
  "metadata": {
    "from": "2022-11-01T00:00:00Z",
    "to": "2023-05-16T17:30:00Z",
    "options": []
  }
}
curl --request GET \
     --url https://api-sandbox.thisisbud.com/insights/v1/actionable/balances/%3Cin_overdraft%3E/%3Clate_income_8789764a%3E/details \
     --header 'X-Client-Id: <client_id>' \
     --header 'X-Customer-Id: <customer_id>' \
     --header 'X-Customer-Secret: <customer_secret>' \ # Not required for hosted customers
     --header 'accept: application/json'

The details response contains extra information about the accounts including account_name, holder, identifiers and provider.

If you receive a 401 response from either of the endpoints this would indicate that you are not authorised to make this request, if you believe this to be a mistake or are receiving persistent 500 responses please raise a support request.

Retrieve Income Actionable Insights

We currently have four actionable insights related to a customer's income.

InsightDescriptionDefault Threshold
late_incomeA customer's regular income is later than we have predicted3 days / greater than £10
gambling_incomeA customer has credit transactions from a known gambling company£100 / greater than 5% of income
pension_incomeA customer has credit transactions that are categorised as pension_income£500 / greater than 5% of income
regular_income_changedIdentifies where regular income has increased or decreased in value compared to the previous month's income5% / greater than £1

📘

Please note the absolute thresholds for gambling_income and pension_income of £100 and £500 are per month.

An example of a successful 200 response can be seen below.

{
  {
  "operation_id": "insights_v1_actionable_income_get",
  "data": {
    "insights": [
      {
        "id": "late_income_8789764a-df2f-4589-b550-00bcd0e9cb2c",
        "type": "late_income",
        "transactions": [
          {
            "transaction_id": "a_transaction_id",
            "account_id": "ee7a2d6a-2baa-461a-aca2-844e88a3f3e7",
            "provider": "a_bank_account_provider",
            "description": "SALARY",
            "credit_debit_indicator": "credit",
            "status": "booked",
            "amount": {
              "value": "3000.00",
              "currency": "GBP"
            },
            "date_time": "2023-04-10T10:00:00Z",
            "enrichments": {
              "categories": {
                "l1": {
                  "slug": "income",
                  "confidence": "0.99"
                },
                "l2": {
                  "slug": "employment_income",
                  "confidence": "0.98"
                }
              },
              "regularity": {
                "slug": "monthly",
                "confidence": "0.99",
                "predicted_date_times": {
                  "date_time": "2023-05-10T10:00:00Z"
                }
              }
            }
          }
        ],
        "_links": {
          "details": "https://domain/insights/v1/actionable/income/late_income/late_income_8789764a-df2f-4589-b550-00bcd0e9cb2c/details"
        }
      }
    ],
    "totals": {
      "income": [
        {
          "value": "12000.00",
          "currency": "GBP"
        }
      ],
      "expenditure": [
        {
          "value": "14000.00",
          "currency": "GBP"
        }
      ]
    }
  },
  "metadata": {
    "results": 1,
    "from": "2022-11-01T00:00:00Z",
    "to": "2023-05-16T17:30:00Z",
    "options": [
      {
        "insight_type": "late_income",
        "option": "minimum_days_late_threshold",
        "value": "3"
      },
      {
        "insight_type": "late_income",
        "option": "minimum_value_threshold",
        "value": "100.00"
      }
    ]
  }
}
curl --request GET \
     --url https://api-sandbox.thisisbud.com/insights/v1/actionable/income \
     --header 'X-Client-Id: <client_id>' \
     --header 'X-Customer-Id: <customer_id>' \
     --header 'X-Customer-Secret: <customer_secret>' \ # Not required for hosted customers
     --header 'accept: application/json'

The response contains all applicable insights for the given customer that have been triggered, each insight will contain a list of transactions and a link to the details endpoint.

An example of the response of the details endpoint can be seen below.

{
  "operation_id": "insights_v1_actionable_income_details_get",
  "data": {
    "id": "late_income_8789764a-df2f-4589-b550-00bcd0e9cb2c",
    "type": "late_income",
    "caused_by": {
      "accounts": [
        {
          "account_id": "ee7a2d6a-2baa-461a-aca2-844e88a3f3e7",
          "currency": "GBP",
          "holder": {
            "name": "David Smith",
            "relationship": "unknown"
          },
          "account_name": "My Current Account",
          "account_type": "current_account",
          "usage_type": "personal",
          "provider": "BankOfBud",
          "identifiers": {
            "uk_sort_code": "126432",
            "uk_account_number": "31510604"
          },
          "balances": [
            {
              "date": "2023-05-12T00:00:00Z",
              "amount": {
                "value": "3552.61",
                "currency": "GBP"
              },
              "type": "interim_booked",
              "credit_debit_indicator": "credit"
            },
            {
              "date": "2023-05-12T00:00:00Z",
              "amount": {
                "value": "3552.61",
                "currency": "GBP"
              },
              "type": "expected",
              "credit_debit_indicator": "credit"
            }
          ],
          "credit_lines": [
            {
              "date": "2023-05-12T00:00:00Z",
              "type": "credit",
              "amount": {
                "value": "1000.00",
                "currency": "GBP"
              }
            }
          ]
        }
      ],
      "transactions": [
        {
          "transaction_id": "a_transaction_id",
          "account_id": "ee7a2d6a-2baa-461a-aca2-844e88a3f3e7",
          "provider": "a_bank_account_provider",
          "description": "SALARY",
          "credit_debit_indicator": "credit",
          "status": "booked",
          "amount": {
            "value": "2400.00",
            "currency": "GBP"
          },
          "date_time": "2023-05-05T10:00:00Z",
          "enrichments": {
            "categories": {
              "l1": {
                "slug": "income",
                "confidence": "0.99"
              },
              "l2": {
                "slug": "employment_income",
                "confidence": "0.98"
              }
            }
          }
        }
      ]
    },
    "details": {
      "days_late": 11,
      "expected_date_time": "2023-05-05T10:00:00Z"
    }
  },
  "metadata": {
    "from": "2022-11-01T00:00:00Z",
    "to": "2023-05-16T17:30:00Z",
    "options": [
      {
        "insight_type": "late_income",
        "option": "minimum_days_late_threshold",
        "value": "3"
      },
      {
        "insight_type": "late_income",
        "option": "minimum_value_threshold",
        "value": "100.00"
      }
    ]
  }
}
curl --request GET \
     --url https://api-sandbox.thisisbud.com/insights/v1/actionable/income/%3Clate_income%3E/%3Clate_income_878954a%3E/details \
     --header 'X-Client-Id: <client_id>' \
     --header 'X-Customer-Id: <customer_id>' \
     --header 'X-Customer-Secret: <customer_secret>' \ # Not required for hosted customers
     --header 'accept: application/json'

The details response contains extra information about the accounts including account_name, holder, identifiers, provider and any relevant transactions.

If you receive a 401 response from either of the endpoints this would indicate that you are not authorised to make this request, if you believe this to be a mistake or are receiving persistent 500 responses please raise a support request support request.

Retrieve Spending Actionable Insights

We currently have four actionable insights related to a customer's spending.

InsightDescriptionDefault Threshold
late_paymentA forecasted payment that we would predict through regular transactions has not been completed3 days / greater than £10
new_insurance_expenseWe have identified a new insurance expense in a customer's transactions-
suspected_duplicate_chargeA customer has one more debit transactions that are likely to be a duplicate of eachother-
regular_payment_changedIdentifies where regular payments have increased or decreased in value compared to the previous month's income5% / greater than £1

An example of a successful 200 response can be seen below.

{
  "operation_id": "insights_v1_actionable_spending_get",
  "data": {
    "insights": [
      {
        "id": "late_payment_8789764a-df2f-4589-b550-00bcd0e9cb2c",
        "type": "late_payment",
        "transactions": [
          {
            "transaction_id": "a_transaction_id",
            "account_id": "ee7a2d6a-2baa-461a-aca2-844e88a3f3e7",
            "provider": "a_bank_account_provider",
            "description": "MORTGAGE",
            "credit_debit_indicator": "debit",
            "status": "booked",
            "amount": {
              "value": "1400.00",
              "currency": "GBP"
            },
            "date_time": "2023-04-10T10:00:00Z",
            "enrichments": {
              "categories": {
                "l1": {
                  "slug": "mortgage_and_rent",
                  "confidence": "0.99"
                },
                "l2": {
                  "slug": "mortgage",
                  "confidence": "0.98"
                }
              },
              "regularity": {
                "slug": "monthly",
                "confidence": "0.99",
                "predicted_date_times": {
                  "date_time": "2023-05-10T10:00:00Z"
                }
              }
            }
          }
        ],
        "_links": {
          "details": "https://domain/insights/v1/actionable/spending/late_income/late_income_8789764a-df2f-4589-b550-00bcd0e9cb2c/details"
        }
      }
    ],
    "totals": {
      "income": [
        {
          "value": "12000.00",
          "currency": "GBP"
        }
      ],
      "expenditure": [
        {
          "value": "14000.00",
          "currency": "GBP"
        }
      ]
    }
  },
  "metadata": {
    "results": 1,
    "from": "2022-11-01T00:00:00Z",
    "to": "2023-05-16T17:30:00Z",
    "options": [
      {
        "insight_type": "late_payment",
        "option": "minimum_days_late_threshold",
        "value": "3"
      },
      {
        "insight_type": "late_payment",
        "option": "minimum_value_threshold",
        "value": "100.00"
      }
    ]
  }
}
curl --request GET \
     --url https://api-sandbox.thisisbud.com/insights/v1/actionable/spending \
     --header 'X-Client-Id: <client_id>' \
     --header 'X-Customer-Id: <customer_id>' \
     --header 'X-Customer-Secret: <customer_secret>' \ # Not required for hosted customers
     --header 'accept: application/json'

The response contains all applicable insights for the given customer that have been triggered, each insight will contain a list of transactions, a totals object detailing the customers total income and expenditure and a link to the details endpoint.

An example of the response of the details endpoint can be seen below.

{
  "operation_id": "insights_v1_actionable_spending_details_get",
  "data": {
    "id": "late_payment_8789764a-df2f-4589-b550-00bcd0e9cb2c",
    "type": "late_payment",
    "caused_by": {
      "accounts": [
        {
          "account_id": "ee7a2d6a-2baa-461a-aca2-844e88a3f3e7",
          "currency": "GBP",
          "holder": {
            "name": "David Smith",
            "relationship": "unknown"
          },
          "account_name": "My Current Account",
          "account_type": "current_account",
          "usage_type": "personal",
          "provider": "BankOfBud",
          "identifiers": {
            "uk_sort_code": "126432",
            "uk_account_number": "31510604"
          },
          "balances": [
            {
              "date": "2023-05-12T00:00:00Z",
              "amount": {
                "value": "3552.61",
                "currency": "GBP"
              },
              "type": "interim_booked",
              "credit_debit_indicator": "credit"
            },
            {
              "date": "2023-05-12T00:00:00Z",
              "amount": {
                "value": "3552.61",
                "currency": "GBP"
              },
              "type": "expected",
              "credit_debit_indicator": "credit"
            }
          ],
          "credit_lines": [
            {
              "date": "2023-05-12T00:00:00Z",
              "type": "credit",
              "amount": {
                "value": "1000.00",
                "currency": "GBP"
              }
            }
          ]
        }
      ],
      "transactions": [
        {
          "transaction_id": "a_transaction_id",
          "account_id": "ee7a2d6a-2baa-461a-aca2-844e88a3f3e7",
          "provider": "a_bank_account_provider",
          "description": "MORTGAGE",
          "credit_debit_indicator": "debit",
          "status": "booked",
          "amount": {
            "value": "1400.00",
            "currency": "GBP"
          },
          "date_time": "2023-05-05T10:00:00Z",
          "enrichments": {
            "categories": {
              "l1": {
                "slug": "mortgage_and_rent",
                "confidence": "0.99"
              },
              "l2": {
                "slug": "mortgage",
                "confidence": "0.98"
              }
            }
          }
        }
      ]
    },
    "details": {
      "days_late": 11,
      "expected_date_time": "2023-05-05T10:00:00Z"
    }
  },
  "metadata": {
    "from": "2022-11-01T00:00:00Z",
    "to": "2023-05-16T17:30:00Z",
    "options": [
      {
        "insight_type": "late_payment",
        "option": "minimum_days_late_threshold",
        "value": "3"
      },
      {
        "insight_type": "late_payment",
        "option": "minimum_value_threshold",
        "value": "10.00"
      }
    ]
  }
}
curl --request GET \
     --url https://api-sandbox.thisisbud.com/insights/v1/actionable/spending/type/id/details \
     --header 'X-Client-Id: <client_id>' \
     --header 'X-Customer-Id: <customer_id>' \
     --header 'X-Customer-Secret: <customer_secret>' \ # Not required for hosted customers
     --header 'accept: application/json'

The details response contains extra information about the accounts including account_name, holder, identifiers and provider and any relevant transactions.

If you receive a 401 response from either of the endpoints this would indicate that you are not authorised to make this request, if you believe this to be a mistake or are receiving persistent 500 responses please raise a support request support request.





If you have any questions, please contact us via the chatbot (bottom-right of screen 👉) or via a support request or check our FAQs.