diff --git a/source/includes/_budget.md b/source/includes/_budget.md
index 270e160..63ebce0 100644
--- a/source/includes/_budget.md
+++ b/source/includes/_budget.md
@@ -1,49 +1,65 @@
# Budget
+The v1/budgets API is deprecated. Developers are encouraged to migrate their application to the new [v2/summary API](https://alpha.lunchmoney.dev/v2/docs#tag/summary) instead.
+
## Budget Object
-Attribute Name | Type | Nullable | Description
-------------------- | ------- | -------- | -----------
-category_name | string | false | Name of the category, will be "Uncategorized" if no category is assigned
-category_id | number | true | Unique identifier for category, can be null when `category_name` is "Uncategorized"
-category_group_name | string | true | Name of the category group, if applicable
-group_id | number | true | Unique identifier for category group
-is_group | boolean | true | If true, this category is a group
-is_income | boolean | false | If true, this category is an income category (category properties are set in the app via the Categories page)
-exclude_from_budget | boolean | false | If true, this category is excluded from budget (category properties are set in the app via the Categories page)
-exclude_from_totals | boolean | false | If true, this category is excluded from totals (category properties are set in the app via the Categories page)
-data | Data[] | false | For each month with budget or category spending data, there is a data object with the key set to the month in format YYYY-MM-DD. For properties, see Data object below.
-config | object | true | Object representing the category's budget suggestion configuration
-order | number | false | Numerical ordering of budgets
-archived | boolean | false | True if the category is archived and not displayed in relevant areas of the Lunch Money app.
-recurring | object | true | Returns a list object that contains an array of Recurring Expenses objects (just the `payee`, `amount`, `currency`, and `to_base` fields) that affect this budget
+| Attribute Name | Type | Nullable | Description |
+| ------------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
+| category_name | string | false | Name of the category, will be "Uncategorized" if no category is assigned |
+| category_id | number | true | Unique identifier for category, can be null when `category_name` is "Uncategorized" |
+| category_group_name | string | true | Name of the category group, if applicable |
+| group_id | number | true | Unique identifier for category group |
+| is_group | boolean | true | If true, this category is a group |
+| is_income | boolean | false | If true, this category is an income category (category properties are set in the app via the Categories page) |
+| exclude_from_budget | boolean | false | If true, this category is excluded from budget (category properties are set in the app via the Categories page) |
+| exclude_from_totals | boolean | false | If true, this category is excluded from totals (category properties are set in the app via the Categories page) |
+| data | Data[] | false | For each month with budget or category spending data, there is a data object with the key set to the month in format YYYY-MM-DD. For properties, see Data object below. |
+| config | object | true | Object representing the category's budget suggestion configuration. Will be `null` if the category has no budget configuration set. See Config Object below for details. |
+| order | number | false | Numerical ordering of budgets |
+| archived | boolean | false | True if the category is archived and not displayed in relevant areas of the Lunch Money app. |
+| recurring | object | true | Returns a list object that contains an array of Recurring Expenses objects (just the `payee`, `amount`, `currency`, and `to_base` fields) that affect this budget |
+
+**Note:** A category may appear in the budget response even if no budget has been set for it. This can happen when:
+- The category has transactions but no budget entries have been created
+- The category has a custom budget period configured but no budget amounts have been set
+- Budget entries were deleted but transactions still exist for that category
+- After a users existing v1 budgets were migrated to v2 budgets, if a user changed their budget period settings (quantity, granularity, or anchor date), categories without budget values may exist.
+
+In these cases, the `config` property will be `null`, and the `data` object will contain spending information (`spending_to_base`, `num_transactions`) but all `budget_*` properties will be `null`.
## Data Object
-Attribute Name | Type | Nullable | Description
-------------------- | ------- | -------- | -----------
-budget_amount | number | true | The budget amount, as set by the user. If empty, no budget has been set.
-budget_currency | string | true | The budget currency, as set by the user. If empty, no budget has been set.
-budget_to_base | number | true | The budget converted to the user's primary currency. If the multicurrency feature is not being used, budget_to_base and budget_amount will be the same. If empty, no budget has been set.
-spending_to_base | number | false | The total amount spent in this category for this time period in the user's primary currency
-num_transactions | number | false | Number of transactions that make up "spending_to_base"
-is_automated | boolean | true | If true, the budget_amount is only a suggestion based on the set config. If not present, it is false (meaning this is a locked in budget)
+| Attribute Name | Type | Nullable | Description |
+| ---------------- | ------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| budget_amount | number | true | The budget amount, as set by the user. Will be `null` if no budget has been set for this category and time period. |
+| budget_currency | string | true | The budget currency, as set by the user. Will be `null` if no budget has been set for this category and time period. |
+| budget_to_base | number | true | The budget converted to the user's primary currency. If the multicurrency feature is not being used, budget_to_base and budget_amount will be the same. Will be `null` if no budget has been set for this category and time period. |
+| spending_to_base | number | false | The total amount spent in this category for this time period in the user's primary currency. This value will always be present, even if no budget has been set. |
+| num_transactions | number | false | Number of transactions that make up "spending_to_base". This value will always be present, even if no budget has been set. |
+| is_automated | boolean | true | If true, the budget_amount is only a suggestion based on the set config. If not present, it is false (meaning this is a locked in budget). Will be `null` if no budget has been set. |
+
+**Note:** When a category has transactions but no budget entries, the `data` object will still be present with spending information, but all `budget_*` properties will be `null`. This allows you to see spending activity even when budgets haven't been configured.
## Config Object
-Attribute Name | Type | Nullable | Description
-------------------- | ------ | -------- | -----------
-config_id | number | false | Unique identifier for config
-cadence | string | false | One of: