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;
GET insights/v1/actionable/balances
endpoint - Provides a list of insights relevant to a customer's balancesGET insights/v1/actionable/income
endpoint - Provides a list of insights relevant to a customer's incomeGET 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. Therefore we strongly recommend you raise a support request so that we can configure any custom thresholds that you wish to use.
Retrieve Balances Actionable Insights
We currently have four actionable insights related to a customer's balance.
Insight | Description | Default Threshold |
---|---|---|
close_to_credit_limit | The customer's credit utilisation exceeds the given threshold for a single account | 70% |
low_balance | The customer's account balance has fallen below the given threshold | £50 |
in_overdraft | One or more of the customer's accounts has a balance lower than 0 | - |
cannot_cover_bills | The 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 '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 'accept: application/json'
The details
response contains extra information about the accounts including account_name
, holder
, identifiers
and provider
.
If you receive an error please consult the error responses guide.
Retrieve Income Actionable Insights
We currently have four actionable insights related to a customer's income.
Insight | Description | Default Threshold |
---|---|---|
late_income | A customer's regular income is later than we have predicted | 3 days / greater than £10 |
gambling_income | A customer has credit transactions from a known gambling company | £100 / greater than 5% of income |
pension_income | A customer has credit transactions that are categorised as pension_income | £500 / greater than 5% of income |
regular_income_changed | Identifies where regular income has increased or decreased in value compared to the previous month's income | 5% / greater than £1 |
Please note the absolute thresholds for
gambling_income
andpension_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 '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": "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"
}
}
}
}
]
},
"details": {
"days_late": 6,
"expected_date_time": "2023-05-10T10: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 '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 an error please consult the error responses guide.
Retrieve Spending Actionable Insights
We currently have four actionable insights related to a customer's spending.
Insight | Description | Default Threshold |
---|---|---|
new_insurance_expense | We have identified a new insurance expense in a customer's transactions | - |
suspected_duplicate_charge | A customer has one or more debit transactions with the same description, amount and on the same day | - |
regular_payment_changed | Identifies where regular payments have increased or decreased in value compared to the previous month's value | 5% / greater than £1 |
late_payment | A forecasted payment that we would predict through regular transactions has not been completed | 3 days / greater than £10 |
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 '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-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"
}
}
}
}
]
},
"details": {
"days_late": 6,
"expected_date_time": "2023-05-10T10: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 'accept: application/json'
The details
response contains extra information about the accounts including account_name
, holder
, identifiers
and provider
and any relevant transactions
.
Please note, these endpoints should not be called during the refresh of a customer's data, if you do call the details endpoint during an active refresh you may receive a
404
response due to the insight no longer existing post the refresh. You can understand when a refresh has been completed by calling theGET v1/open-banking/refresh/{task_id}
endpoint or subscribing to theopen_banking.refresh.completed
webhook.
If you continue to receive an error please consult the error responses guide.
If you have any questions, please contact us via the chatbot (bottom-right of screen 👉) or via a support request or check our FAQs.
Updated 8 months ago