API: Common aggregations

Summary

The following guide takes you through the API endpoints to use to access the main aggregated datasets for affordability related purposes.

Pre-requisites

To begin, we assume that you've completed the following get started steps in particular:

  1. Setting up a Connect flow to ingest financial data - see here.
  2. Are ready to initiate applications to capture and store the data - see here.

Once you have successfully ingested the financial data for a given customer, you can then retrieve the aggregated data for analysis.


Viewing an applicant's data

Once you have retrieved an applicant's application using the GET /assess/v1/customer-applications/{application_id} endpoint (here), you will be able to see the applicant's Bud Customer ID under the customer_id field in the response which is key to retrieving all related data:

{
  "operation_id": "v1_customer_application_get",
  "data": {
    "application_id": "<application_id>",
    "customer_id": "<customer_id>",     // <---
    "creation_date": "2023-08-14T10:04:42Z",
    "deletion_date": "2023-08-15T10:04:42Z",
    "accounts_connected": 5,
    "metadata": {
      "account_connection_initiator": "advisor",
      "application_id": "1234"
    },
    "assessment_date": "2023-08-14T10:04:41Z",
    "primary_applicant": {
      "first_name": "Jim",
      "last_name": "Flarsky"
    },
    "secondary_applicants": null,
    "initiator_id": "<initiator_id>",
    "customer_link": {
      "created_at": "2023-08-14T10:04:43Z",
      "url": "<url_to_link_accounts>",
      "finished_connecting_accounts": true,
      "expired": true,
      "status": "completed"
    },
    "review_status": "pending",
    "assignee": "<assignee_id>"
  }
}

👍

Assess customer entities are examples of "hosted customers"

Customers created via the Assess API have their customer secret hosted by Bud. This means that you can simply use the Customer ID along with any available endpoints for retrieving customer data, and use this to present that customer's information on the page.


Account(s) overview

At a top level, one of the first things you'll want to understand and confirm is the bank accounts that your customer has connected for the assessment:

To get an overview of those accounts use the GET /financial/v2/accounts endpoint (here). Here is an example of this endpoint:

curl --request GET \
  --url 'https://api-sandbox.thisisbud.com/financial/v2/accounts' \
  --header 'Authorization: Bearer <access_token>' \
  --header 'X-Client-ID: <client_id>' \
  --header 'X-Customer-ID: <customer_id>'
{
  "operation_id": "financial_v2_accounts",
  "data": [
    {
      "account_id": "ee0f46f7-3256-471a-b7c9-f4eb053c88ca",
      "currency": "GBP",
      "holder": {
        "name": "Credit Card - Natwest - Jim",
        "relationship": "unknown"
      },
      "account_name": "Credit Card - Natwest - Jim",
      "account_type": "current_account",
      "usage_type": "personal",
      "provider": "Natwest_Sandbox",
      "identifiers": {
        "uk_account_number": "22222125",
        "uk_sort_code": "805401"
      },
      "balances": [
        {
          "date": "2023-08-14T10:05:17Z",
          "amount": {
            "value": "9155.76",
            "currency": "GBP"
          },
          "type": "expected",
          "credit_debit_indicator": "debit"
        },
        {
          "date": "2023-08-14T10:05:17Z",
          "amount": {
            "value": "9155.76",
            "currency": "GBP"
          },
          "type": "forward_available",
          "credit_debit_indicator": "debit"
        }
      ]
    },
    {
      "account_id": "1da3ba98-07f7-469e-b7e7-3a7cfcf19b82",
      "currency": "GBP",
      "holder": {
        "name": "Savings Account - Natwest - Jim",
        "relationship": "unknown"
      },
      "account_name": "Savings Account - Natwest - Jim",
      "account_type": "current_account",
      "usage_type": "personal",
      "provider": "Natwest_Sandbox",
      "identifiers": {
        "uk_account_number": "22222124",
        "uk_sort_code": "805401"
      },
      "balances": [
        {
          "date": "2023-08-14T10:05:17Z",
          "amount": {
            "value": "276180.92",
            "currency": "GBP"
          },
          "type": "expected",
          "credit_debit_indicator": "credit"
        },
        {
          "date": "2023-08-14T10:05:17Z",
          "amount": {
            "value": "276180.92",
            "currency": "GBP"
          },
          "type": "forward_available",
          "credit_debit_indicator": "credit"
        }
      ]
    },
    {
      "account_id": "d607d0da-fb58-497f-ac51-d70f309be304",
      "currency": "GBP",
      "holder": {
        "name": "Debit Card - Nationwide - Jim",
        "relationship": "unknown"
      },
      "account_name": "Debit Card - Nationwide - Jim",
      "account_type": "current_account",
      "usage_type": "personal",
      "provider": "Natwest_Sandbox",
      "identifiers": {
        "uk_account_number": "22222126",
        "uk_sort_code": "805401"
      },
      "balances": [
        {
          "date": "2023-08-14T10:05:18Z",
          "amount": {
            "value": "16674.67",
            "currency": "GBP"
          },
          "type": "expected",
          "credit_debit_indicator": "credit"
        },
        {
          "date": "2023-08-14T10:05:18Z",
          "amount": {
            "value": "16674.67",
            "currency": "GBP"
          },
          "type": "forward_available",
          "credit_debit_indicator": "credit"
        }
      ]
    },
    {
      "account_id": "6aa9a396-75ca-48da-9dba-5f4094cb3a83",
      "currency": "GBP",
      "holder": {
        "name": "Debit Account - Natwest - Jim",
        "relationship": "unknown"
      },
      "account_name": "Debit Account - Natwest - Jim",
      "account_type": "current_account",
      "usage_type": "personal",
      "provider": "Natwest_Sandbox",
      "identifiers": {
        "uk_account_number": "22222123",
        "uk_sort_code": "805401"
      },
      "balances": [
        {
          "date": "2023-08-14T10:05:17Z",
          "amount": {
            "value": "238362.64",
            "currency": "GBP"
          },
          "type": "expected",
          "credit_debit_indicator": "credit"
        },
        {
          "date": "2023-08-14T10:05:17Z",
          "amount": {
            "value": "238362.64",
            "currency": "GBP"
          },
          "type": "forward_available",
          "credit_debit_indicator": "credit"
        }
      ]
    },
    {
      "account_id": "1fa5f939-9183-4ea0-9fe9-471383dea4d5",
      "currency": "GBP",
      "holder": {
        "name": "Current Account Joint - Nationwide - Jim & Judy",
        "relationship": "unknown"
      },
      "account_name": "Current Account Joint - Nationwide - Jim & Judy",
      "account_type": "current_account",
      "usage_type": "personal",
      "provider": "Natwest_Sandbox",
      "identifiers": {
        "uk_account_number": "22222127",
        "uk_sort_code": "805401"
      },
      "balances": [
        {
          "date": "2023-08-14T10:05:20Z",
          "amount": {
            "value": "8856.44",
            "currency": "GBP"
          },
          "type": "expected",
          "credit_debit_indicator": "debit"
        },
        {
          "date": "2023-08-14T10:05:20Z",
          "amount": {
            "value": "8856.44",
            "currency": "GBP"
          },
          "type": "forward_available",
          "credit_debit_indicator": "debit"
        }
      ]
    }
  ],
  "metadata": {
    "parameters": {},
    "result_count": 5
  }
}

Grouping / bucket summaries

One of the most crucial aggregated datasets, is the summary of the customer's income and spending across the core distinct groupings (aka "buckets") used in Assess - more info here.

The GET /aggregations/v2/buckets/{bucket_id} endpoint (here) will provide this information to you (using bucket_id = assess_dashboard) - use the customer_id in the header X-Customer-ID, and use group_by=bucket_l1 to get the top level buckets:

curl --request GET \
  --url 'https://api-sandbox.thisisbud.com/aggregations/v2/buckets/assess-dashboard/totals?group_by=bucket_l1&month_from=2023-07&month_to=2023-07' \
  --header 'Authorization: Bearer <access_token>' \
  --header 'X-Client-ID: <client_id>' \
  --header 'X-Customer-ID: <customer_id>'
{
  "operation_id": "v2_aggregations_bucket_totals_get",
  "data": [
    {
      "group_name": "income",
      "group_type": "bucket_l1",
      "incoming": {
        "total": {
          "value": "6500.00",
          "currency": "GBP"
        },
        "monthly_average": {
          "value": "6500.00",
          "currency": "GBP"
        },
        "transaction_count": 1,
        "_links": {
          "transactions": "<link_to_transactions>"
        }
      },
      "outgoing": {
        "total": {
          "value": "0.00",
          "currency": "GBP"
        },
        "monthly_average": {
          "value": "0.00",
          "currency": "GBP"
        },
        "transaction_count": 0,
        "_links": {
          "transactions": "<link_to_transactions>"
        }
      },
      "transaction_count": 1,
      "_links": {
        "transactions": "<link_to_transactions>"
      }
    },
    {
      "group_name": "essentials",
      "group_type": "bucket_l1",
      "incoming": {
        "total": {
          "value": "0.00",
          "currency": "GBP"
        },
        "monthly_average": {
          "value": "0.00",
          "currency": "GBP"
        },
        "transaction_count": 0,
        "_links": {
          "transactions": "<link_to_transactions>"
        }
      },
      "outgoing": {
        "total": {
          "value": "1851.00",
          "currency": "GBP"
        },
        "monthly_average": {
          "value": "1851.00",
          "currency": "GBP"
        },
        "transaction_count": 46,
        "_links": {
          "transactions": "<link_to_transactions>"
        }
      },
      "transaction_count": 46,
      "_links": {
        "transactions": "<link_to_transactions>"
      }
    },
    {
      "group_name": "non_essentials",
      "group_type": "bucket_l1",
      "incoming": {
        "total": {
          "value": "0.00",
          "currency": "GBP"
        },
        "monthly_average": {
          "value": "0.00",
          "currency": "GBP"
        },
        "transaction_count": 0,
        "_links": {
          "transactions": "<link_to_transactions>"
        }
      },
      "outgoing": {
        "total": {
          "value": "1395.93",
          "currency": "GBP"
        },
        "monthly_average": {
          "value": "1395.93",
          "currency": "GBP"
        },
        "transaction_count": 39,
        "_links": {
          "transactions": "<link_to_transactions>"
        }
      },
      "transaction_count": 39,
      "_links": {
        "transactions": "<link_to_transactions>"
      }
    },
    {
      "group_name": "general",
      "group_type": "bucket_l1",
      "incoming": {
        "total": {
          "value": "0.00",
          "currency": "GBP"
        },
        "monthly_average": {
          "value": "0.00",
          "currency": "GBP"
        },
        "transaction_count": 0,
        "_links": {
          "transactions": "<link_to_transactions>"
        }
      },
      "outgoing": {
        "total": {
          "value": "868.21",
          "currency": "GBP"
        },
        "monthly_average": {
          "value": "868.21",
          "currency": "GBP"
        },
        "transaction_count": 27,
        "_links": {
          "transactions": "<link_to_transactions>"
        }
      },
      "transaction_count": 27,
      "_links": {
        "transactions": "<link_to_transactions>"
      }
    },
    {
      "group_name": "transfers",
      "group_type": "bucket_l1",
      "incoming": {
        "total": {
          "value": "250.00",
          "currency": "GBP"
        },
        "monthly_average": {
          "value": "250.00",
          "currency": "GBP"
        },
        "transaction_count": 1,
        "_links": {
          "transactions": "<link_to_transactions>"
        }
      },
      "outgoing": {
        "total": {
          "value": "2552.27",
          "currency": "GBP"
        },
        "monthly_average": {
          "value": "2552.27",
          "currency": "GBP"
        },
        "transaction_count": 95,
        "_links": {
          "transactions": "<link_to_transactions>"
        }
      },
      "transaction_count": 96,
      "_links": {
        "transactions": "<link_to_transactions>"
      }
    }
  ],
  "metadata": {
    "date_from": "2023-07-01T00:00:00Z",
    "date_to": "2023-07-31T23:59:59Z",
    "group_by": [
      "bucket_l1"
    ],
    "currency": "GBP"
  }
}

For each of the groupings, you have access to the incoming and outgoing totals, as well as the monthly averages (which are used in the Assess dashboard).

The month_from and month_to parameters in the bucket totals can be altered to change the date range for the calculations (which will also change the transaction links in the responses), so you can use this to change the period of time for the financial data presented.

🚧

Note the bucket totals endpoint works with full calendar months (hence the parameters being month_fromand month_to to ensure that it is calculating the most representative monthly average possible).


Grouping / bucket sub-categories

The same buckets endpoint (as above) can be used to retrieve to see the sub categories that make up said bucket. To do this: simply change the group_by parameter to now have the value bucket_l1,bucket_l2, and it will show a breakdown of the subtotals within those buckets. Below is a truncated response showing example values for the default buckets - more info here:

curl --request GET \
  --url 'https://api-sandbox.thisisbud.com/aggregations/v2/buckets/assess-dashboard/totals?group_by=bucket_l1,bucket_l2&month_from=2023-07&month_to=2023-07' \
  --header 'Authorization: Bearer <access_token>' \
  --header 'X-Client-ID: <client_id>' \
  --header 'X-Customer-ID: <customer_id>'
{
  "operation_id": "v2_aggregations_bucket_totals_get",
  "data": [
    {
      // income...
    },
    {
      "group_name": "essentials",
      "group_type": "bucket_l1",
      "incoming": {
        "total": {
          "value": "0.00",
          "currency": "GBP"
        },
        "monthly_average": {
          "value": "0.00",
          "currency": "GBP"
        },
        "transaction_count": 0,
        "_links": {
          "transactions": "<link_to_transactions>"
        }
      },
      "outgoing": {
        "total": {
          "value": "1851.00",
          "currency": "GBP"
        },
        "monthly_average": {
          "value": "1851.00",
          "currency": "GBP"
        },
        "transaction_count": 46,
        "_links": {
          "transactions": "<link_to_transactions>"
        }
      },
      "subtotals": [
        // ...subtotals cut down to what is on the screenshot above
        {
          "group_name": "mortgage",
          "group_type": "bucket_l2",
          "incoming": {
            "total": {
              "value": "0.00",
              "currency": "GBP"
            },
            "monthly_average": {
              "value": "0.00",
              "currency": "GBP"
            },
            "transaction_count": 0,
            "_links": {
              "transactions": "<link_to_transactions>"
            }
          },
          "outgoing": {
            "total": {
              "value": "850.00",
              "currency": "GBP"
            },
            "monthly_average": {
              "value": "850.00",
              "currency": "GBP"
            },
            "transaction_count": 1,
            "_links": {
              "transactions": "<link_to_transactions>"
            }
          },
          "transaction_count": 1,
          "_links": {
            "transactions": "<link_to_transactions>"
          }
        },
        {
          "group_name": "savings",
          "group_type": "bucket_l2",
          "incoming": {
            "total": {
              "value": "0.00",
              "currency": "GBP"
            },
            "monthly_average": {
              "value": "0.00",
              "currency": "GBP"
            },
            "transaction_count": 0,
            "_links": {
              "transactions": "<link_to_transactions>"
            }
          },
          "outgoing": {
            "total": {
              "value": "250.00",
              "currency": "GBP"
            },
            "monthly_average": {
              "value": "250.00",
              "currency": "GBP"
            },
            "transaction_count": 1,
            "_links": {
              "transactions": "<link_to_transactions>"
            }
          },
          "transaction_count": 1,
          "_links": {
            "transactions": "<link_to_transactions>"
          }
        },
        {
          "group_name": "groceries",
          "group_type": "bucket_l2",
          "incoming": {
            "total": {
              "value": "0.00",
              "currency": "GBP"
            },
            "monthly_average": {
              "value": "0.00",
              "currency": "GBP"
            },
            "transaction_count": 0,
            "_links": {
              "transactions": "<link_to_transactions>"
            }
          },
          "outgoing": {
            "total": {
              "value": "161.94",
              "currency": "GBP"
            },
            "monthly_average": {
              "value": "161.94",
              "currency": "GBP"
            },
            "transaction_count": 6,
            "_links": {
              "transactions": "<link_to_transactions>"
            }
          },
          "transaction_count": 6,
          "_links": {
            "transactions": "<link_to_transactions>"
          }
        },
        {
          "group_name": "council_tax",
          "group_type": "bucket_l2",
          "incoming": {
            "total": {
              "value": "0.00",
              "currency": "GBP"
            },
            "monthly_average": {
              "value": "0.00",
              "currency": "GBP"
            },
            "transaction_count": 0,
            "_links": {
              "transactions": "<link_to_transactions>"
            }
          },
          "outgoing": {
            "total": {
              "value": "116.00",
              "currency": "GBP"
            },
            "monthly_average": {
              "value": "116.00",
              "currency": "GBP"
            },
            "transaction_count": 1,
            "_links": {
              "transactions": "<link_to_transactions>"
            }
          },
          "transaction_count": 1,
          "_links": {
            "transactions": "<link_to_transactions>"
          }
        },
        {
          "group_name": "utilities_energy",
          "group_type": "bucket_l2",
          "incoming": {
            "total": {
              "value": "0.00",
              "currency": "GBP"
            },
            "monthly_average": {
              "value": "0.00",
              "currency": "GBP"
            },
            "transaction_count": 0,
            "_links": {
              "transactions": "<link_to_transactions>"
            }
          },
          "outgoing": {
            "total": {
              "value": "114.14",
              "currency": "GBP"
            },
            "monthly_average": {
              "value": "114.14",
              "currency": "GBP"
            },
            "transaction_count": 3,
            "_links": {
              "transactions": "<link_to_transactions>"
            }
          },
          "transaction_count": 3,
          "_links": {
            "transactions": "<link_to_transactions>"
          }
        },
        {
          "group_name": "childrens_expenses",
          "group_type": "bucket_l2",
          "incoming": {
            "total": {
              "value": "0.00",
              "currency": "GBP"
            },
            "monthly_average": {
              "value": "0.00",
              "currency": "GBP"
            },
            "transaction_count": 0,
            "_links": {
              "transactions": "<link_to_transactions>"
            }
          },
          "outgoing": {
            "total": {
              "value": "99.99",
              "currency": "GBP"
            },
            "monthly_average": {
              "value": "99.99",
              "currency": "GBP"
            },
            "transaction_count": 1,
            "_links": {
              "transactions": "<link_to_transactions>"
            }
          },
          "transaction_count": 1,
          "_links": {
            "transactions": "<link_to_transactions>"
          }
        },
        {
          "group_name": "public_transport",
          "group_type": "bucket_l2",
          "incoming": {
            "total": {
              "value": "0.00",
              "currency": "GBP"
            },
            "monthly_average": {
              "value": "0.00",
              "currency": "GBP"
            },
            "transaction_count": 0,
            "_links": {
              "transactions": "<link_to_transactions>"
            }
          },
          "outgoing": {
            "total": {
              "value": "65.00",
              "currency": "GBP"
            },
            "monthly_average": {
              "value": "65.00",
              "currency": "GBP"
            },
            "transaction_count": 26,
            "_links": {
              "transactions": "<link_to_transactions>"
            }
          },
          "transaction_count": 26,
          "_links": {
            "transactions": "<link_to_transactions>"
          }
        },
        {
          "group_name": "gym_and_fitness",
          "group_type": "bucket_l2",
          "incoming": {
            "total": {
              "value": "0.00",
              "currency": "GBP"
            },
            "monthly_average": {
              "value": "0.00",
              "currency": "GBP"
            },
            "transaction_count": 0,
            "_links": {
              "transactions": "<link_to_transactions>"
            }
          },
          "outgoing": {
            "total": {
              "value": "64.00",
              "currency": "GBP"
            },
            "monthly_average": {
              "value": "64.00",
              "currency": "GBP"
            },
            "transaction_count": 1,
            "_links": {
              "transactions": "<link_to_transactions>"
            }
          },
          "transaction_count": 1,
          "_links": {
            "transactions": "<link_to_transactions>"
          }
        },
        {
          "group_name": "utilities_water_and_sewage",
          "group_type": "bucket_l2",
          "incoming": {
            "total": {
              "value": "0.00",
              "currency": "GBP"
            },
            "monthly_average": {
              "value": "0.00",
              "currency": "GBP"
            },
            "transaction_count": 0,
            "_links": {
              "transactions": "<link_to_transactions>"
            }
          },
          "outgoing": {
            "total": {
              "value": "44.99",
              "currency": "GBP"
            },
            "monthly_average": {
              "value": "44.99",
              "currency": "GBP"
            },
            "transaction_count": 1,
            "_links": {
              "transactions": "<link_to_transactions>"
            }
          },
          "transaction_count": 1,
          "_links": {
            "transactions": "<link_to_transactions>"
          }
        },

        {
          "group_name": "health_and_life_insurance",
          "group_type": "bucket_l2",
          "incoming": {
            "total": {
              "value": "0.00",
              "currency": "GBP"
            },
            "monthly_average": {
              "value": "0.00",
              "currency": "GBP"
            },
            "transaction_count": 0,
            "_links": {
              "transactions": "<link_to_transactions>"
            }
          },
          "outgoing": {
            "total": {
              "value": "31.38",
              "currency": "GBP"
            },
            "monthly_average": {
              "value": "31.38",
              "currency": "GBP"
            },
            "transaction_count": 1,
            "_links": {
              "transactions": "<link_to_transactions>"
            }
          },
          "transaction_count": 1,
          "_links": {
            "transactions": "<link_to_transactions>"
          }
        }

        // ...
      ],
      "transaction_count": 46,
      "_links": {
        "transactions": "<link_to_transactions>"
      }
    },
    {
      // non_essentials...
    },
    {
      // transfers...
    },
    {
      // general...
    }
  ],
  "metadata": {
    "date_from": "2023-07-01T00:00:00Z",
    "date_to": "2023-07-31T23:59:59Z",
    "group_by": [
      "bucket_l1",
      "bucket_l2"
    ],
    "currency": "GBP"
  }
}

Totals

The GET aggregations/v2/totals/categories endpoint (here) is designed to allow a client to produce statistics based on query parameters. As per the documentation, the following parameters are available to filter transactions:

  1. Date to/from
  2. Transaction categories
  3. Transaction currency

Using this API, the following aggregated statistical data can be retrieved:

  • Per group break down with sub groupings nested within parent structure
  • Statistical aggregates drilled down per currency
  • Month to month aggregations of:
    • Incoming/outgoing totals, averages, and variances
  • Overall monthly aggregations of
    • Incoming/outgoing totals, averages, and variances

To fully leverage this endpoint, we recommend have a good understanding of Bud's taxonomy and categories that can be retrieved using the GET resources/v2/categories endpoint (here) and remember you can amend the aggregations using buckets.


Income/expenditure analysis

Clearly key for affordability decisioning, Assess is designed to easily surface information on the below:

  1. What is my customer's net income?
  2. What essential expenditure and non essential expenditure does my customer have?

For an easy overview, the GET /v1/affordability/report endpoint (here) was created to address this. Filtering transactions based on:

  • To/From dates
  • Account IDs

You're able to generate an income/expense comparison which provides the following data view:

  • Total income and net income with monthly break downs
    • Net income being described as total income subtracting total essential expenditure
  • Total essential and non essential expenditure with monthly break downs
    • Essential expenditure can be described as "need" transactions such as rent, groceries etc
    • Non essential expenditure be described as "want" transactions such as hobby/entertainment categorised transactions.

📘

More information on the affordability report can be found here.


However, if you want more detailed information so you can, for example, compare income and expenditure against each-other over time, you will need these data points:

  • Income for each month in the period
  • Essentials for each month in the period

To retrieve this data, once again you can use the bucket totals endpoint, but you have to use the group_by=bucket_l1,month as the query parameter. This will give you a breakdown within each bucket per month over the period of time, allowing you to use all the data within the object for income and essentials to do a detailed comparison:

curl --request GET \
  --url 'https://api-sandbox.thisisbud.com/aggregations/v2/buckets/assess-dashboard/totals?group_by=bucket_l1,month&month_from=2023-02&month_to=2023-07' \
  --header 'Authorization: Bearer <access_token>' \
  --header 'X-Client-ID: <client_id>' \
  --header 'X-Customer-ID: <customer_id>'
{
  "operation_id": "v2_aggregations_bucket_totals_get",
  "data": [
    {
      "group_name": "income",
      "group_type": "bucket_l1",
      "incoming": {
        "total": {
          "value": "42350.00",
          "currency": "GBP"
        },
        "monthly_average": {
          "value": "7058.33",
          "currency": "GBP"
        },
        "transaction_count": 9,
        "_links": {
          "transactions": "<link_to_transactions>"
        }
      },
      "outgoing": {
        "total": {
          "value": "0.00",
          "currency": "GBP"
        },
        "monthly_average": {
          "value": "0.00",
          "currency": "GBP"
        },
        "transaction_count": 0,
        "_links": {
          "transactions": "<link_to_transactions>"
        }
      },
      "subtotals": [
        {
          "group_name": "2023-02",
          "group_type": "month",
          "incoming": {
            "total": {
              "value": "8000.00",
              "currency": "GBP"
            },
            "monthly_average": {
              "value": "8000.00",
              "currency": "GBP"
            },
            "transaction_count": 2,
            "_links": {
              "transactions": "<link_to_transactions>"
            }
          },
          "outgoing": {
            "total": {
              "value": "0.00",
              "currency": "GBP"
            },
            "monthly_average": {
              "value": "0.00",
              "currency": "GBP"
            },
            "transaction_count": 0,
            "_links": {
              "transactions": "<link_to_transactions>"
            }
          },
          "transaction_count": 2,
          "_links": {
            "transactions": "<link_to_transactions>"
          }
        },
        {
          "group_name": "2023-03",
          "group_type": "month",
          "incoming": {
            "total": {
              "value": "6500.00",
              "currency": "GBP"
            },
            "monthly_average": {
              "value": "6500.00",
              "currency": "GBP"
            },
            "transaction_count": 1,
            "_links": {
              "transactions": "<link_to_transactions>"
            }
          },
          "outgoing": {
            "total": {
              "value": "0.00",
              "currency": "GBP"
            },
            "monthly_average": {
              "value": "0.00",
              "currency": "GBP"
            },
            "transaction_count": 0,
            "_links": {
              "transactions": "<link_to_transactions>"
            }
          },
          "transaction_count": 1,
          "_links": {
            "transactions": "<link_to_transactions>"
          }
        },
        {
          "group_name": "2023-04",
          "group_type": "month",
          "incoming": {
            "total": {
              "value": "6500.00",
              "currency": "GBP"
            },
            "monthly_average": {
              "value": "6500.00",
              "currency": "GBP"
            },
            "transaction_count": 1,
            "_links": {
              "transactions": "<link_to_transactions>"
            }
          },
          "outgoing": {
            "total": {
              "value": "0.00",
              "currency": "GBP"
            },
            "monthly_average": {
              "value": "0.00",
              "currency": "GBP"
            },
            "transaction_count": 0,
            "_links": {
              "transactions": "<link_to_transactions>"
            }
          },
          "transaction_count": 1,
          "_links": {
            "transactions": "<link_to_transactions>"
          }
        },
        {
          "group_name": "2023-05",
          "group_type": "month",
          "incoming": {
            "total": {
              "value": "6850.00",
              "currency": "GBP"
            },
            "monthly_average": {
              "value": "6850.00",
              "currency": "GBP"
            },
            "transaction_count": 2,
            "_links": {
              "transactions": "<link_to_transactions>"
            }
          },
          "outgoing": {
            "total": {
              "value": "0.00",
              "currency": "GBP"
            },
            "monthly_average": {
              "value": "0.00",
              "currency": "GBP"
            },
            "transaction_count": 0,
            "_links": {
              "transactions": "<link_to_transactions>"
            }
          },
          "transaction_count": 2,
          "_links": {
            "transactions": "<link_to_transactions>"
          }
        },
        {
          "group_name": "2023-06",
          "group_type": "month",
          "incoming": {
            "total": {
              "value": "8000.00",
              "currency": "GBP"
            },
            "monthly_average": {
              "value": "8000.00",
              "currency": "GBP"
            },
            "transaction_count": 2,
            "_links": {
              "transactions": "<link_to_transactions>"
            }
          },
          "outgoing": {
            "total": {
              "value": "0.00",
              "currency": "GBP"
            },
            "monthly_average": {
              "value": "0.00",
              "currency": "GBP"
            },
            "transaction_count": 0,
            "_links": {
              "transactions": "<link_to_transactions>"
            }
          },
          "transaction_count": 2,
          "_links": {
            "transactions": "<link_to_transactions>"
          }
        },
        {
          "group_name": "2023-07",
          "group_type": "month",
          "incoming": {
            "total": {
              "value": "6500.00",
              "currency": "GBP"
            },
            "monthly_average": {
              "value": "6500.00",
              "currency": "GBP"
            },
            "transaction_count": 1,
            "_links": {
              "transactions": "<link_to_transactions>"
            }
          },
          "outgoing": {
            "total": {
              "value": "0.00",
              "currency": "GBP"
            },
            "monthly_average": {
              "value": "0.00",
              "currency": "GBP"
            },
            "transaction_count": 0,
            "_links": {
              "transactions": "<link_to_transactions>"
            }
          },
          "transaction_count": 1,
          "_links": {
            "transactions": "<link_to_transactions>"
          }
        }
      ],
      "transaction_count": 9,
      "_links": {
        "transactions": "<link_to_transactions>"
      }
    },
    {
      "group_name": "essentials",
      "group_type": "bucket_l1",
      "incoming": {
        "total": {
          "value": "0.00",
          "currency": "GBP"
        },
        "monthly_average": {
          "value": "0.00",
          "currency": "GBP"
        },
        "transaction_count": 0,
        "_links": {
          "transactions": "<link_to_transactions>"
        }
      },
      "outgoing": {
        "total": {
          "value": "11516.10",
          "currency": "GBP"
        },
        "monthly_average": {
          "value": "1919.35",
          "currency": "GBP"
        },
        "transaction_count": 226,
        "_links": {
          "transactions": "<link_to_transactions>"
        }
      },
      "subtotals": [
        {
          "group_name": "2023-02",
          "group_type": "month",
          "incoming": {
            "total": {
              "value": "0.00",
              "currency": "GBP"
            },
            "monthly_average": {
              "value": "0.00",
              "currency": "GBP"
            },
            "transaction_count": 0,
            "_links": {
              "transactions": "<link_to_transactions>"
            }
          },
          "outgoing": {
            "total": {
              "value": "1898.08",
              "currency": "GBP"
            },
            "monthly_average": {
              "value": "1898.08",
              "currency": "GBP"
            },
            "transaction_count": 30,
            "_links": {
              "transactions": "<link_to_transactions>"
            }
          },
          "transaction_count": 30,
          "_links": {
            "transactions": "<link_to_transactions>"
          }
        },
        {
          "group_name": "2023-03",
          "group_type": "month",
          "incoming": {
            "total": {
              "value": "0.00",
              "currency": "GBP"
            },
            "monthly_average": {
              "value": "0.00",
              "currency": "GBP"
            },
            "transaction_count": 0,
            "_links": {
              "transactions": "<link_to_transactions>"
            }
          },
          "outgoing": {
            "total": {
              "value": "1890.11",
              "currency": "GBP"
            },
            "monthly_average": {
              "value": "1890.11",
              "currency": "GBP"
            },
            "transaction_count": 46,
            "_links": {
              "transactions": "<link_to_transactions>"
            }
          },
          "transaction_count": 46,
          "_links": {
            "transactions": "<link_to_transactions>"
          }
        },
        {
          "group_name": "2023-04",
          "group_type": "month",
          "incoming": {
            "total": {
              "value": "0.00",
              "currency": "GBP"
            },
            "monthly_average": {
              "value": "0.00",
              "currency": "GBP"
            },
            "transaction_count": 0,
            "_links": {
              "transactions": "<link_to_transactions>"
            }
          },
          "outgoing": {
            "total": {
              "value": "2069.89",
              "currency": "GBP"
            },
            "monthly_average": {
              "value": "2069.89",
              "currency": "GBP"
            },
            "transaction_count": 27,
            "_links": {
              "transactions": "<link_to_transactions>"
            }
          },
          "transaction_count": 27,
          "_links": {
            "transactions": "<link_to_transactions>"
          }
        },
        {
          "group_name": "2023-05",
          "group_type": "month",
          "incoming": {
            "total": {
              "value": "0.00",
              "currency": "GBP"
            },
            "monthly_average": {
              "value": "0.00",
              "currency": "GBP"
            },
            "transaction_count": 0,
            "_links": {
              "transactions": "<link_to_transactions>"
            }
          },
          "outgoing": {
            "total": {
              "value": "1914.83",
              "currency": "GBP"
            },
            "monthly_average": {
              "value": "1914.83",
              "currency": "GBP"
            },
            "transaction_count": 46,
            "_links": {
              "transactions": "<link_to_transactions>"
            }
          },
          "transaction_count": 46,
          "_links": {
            "transactions": "<link_to_transactions>"
          }
        },
        {
          "group_name": "2023-06",
          "group_type": "month",
          "incoming": {
            "total": {
              "value": "0.00",
              "currency": "GBP"
            },
            "monthly_average": {
              "value": "0.00",
              "currency": "GBP"
            },
            "transaction_count": 0,
            "_links": {
              "transactions": "<link_to_transactions>"
            }
          },
          "outgoing": {
            "total": {
              "value": "1892.19",
              "currency": "GBP"
            },
            "monthly_average": {
              "value": "1892.19",
              "currency": "GBP"
            },
            "transaction_count": 31,
            "_links": {
              "transactions": "<link_to_transactions>"
            }
          },
          "transaction_count": 31,
          "_links": {
            "transactions": "<link_to_transactions>"
          }
        },
        {
          "group_name": "2023-07",
          "group_type": "month",
          "incoming": {
            "total": {
              "value": "0.00",
              "currency": "GBP"
            },
            "monthly_average": {
              "value": "0.00",
              "currency": "GBP"
            },
            "transaction_count": 0,
            "_links": {
              "transactions": "<link_to_transactions>"
            }
          },
          "outgoing": {
            "total": {
              "value": "1851.00",
              "currency": "GBP"
            },
            "monthly_average": {
              "value": "1851.00",
              "currency": "GBP"
            },
            "transaction_count": 46,
            "_links": {
              "transactions": "<link_to_transactions>"
            }
          },
          "transaction_count": 46,
          "_links": {
            "transactions": "<link_to_transactions>"
          }
        }
      ],
      "transaction_count": 226,
      "_links": {
        "transactions": "<link_to_transactions>"
      }
    },
    {
      // non_essentials...
    },
    {
      // general...
    },
    {
      // transfers...
    }
  ],
  "metadata": {
    "date_from": "2023-02-01T00:00:00Z",
    "date_to": "2023-07-31T23:59:59Z",
    "group_by": [
      "bucket_l1",
      "month"
    ],
    "currency": "GBP"
  }
}

Grouping / bucket transactions

When requesting bucket totals, each subtotal provides links to the underlying set of transactions that made up that specific total. These links can be de-referenced with a request that uses the API Base URL as a prefix (e.g. api-sandbox.thisisbud.com), and then using the required headers for the GET /financial/v2/transactions endpoint (here). You will be given the list of transactions in that format.





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