Note the following restrictions and common errors when working with campaign
budgets.

## Restrictions

- Any campaign that has [campaign
  experiments](https://support.google.com/google-ads/answer/6318742) enabled must have its own non-shared budget.
- Demand Gen campaigns require a minimum daily budget of 5 USD (or the local currency equivalent). Starting in `v26`, you can query the [`demand_gen_info.minimum_budget_per_day_micros`](https://developers.google.com/google-ads/api/reference/rpc/v26/CurrencyConstant.DemandGenInfo#minimum_budget_per_day_micros) field of [`CurrencyConstant`](https://developers.google.com/google-ads/api/reference/rpc/v26/CurrencyConstant) to find the minimum daily budget for a given currency; see the GAQL query example in [Create a Demand Gen campaign](https://developers.google.com/google-ads/api/docs/demand-gen/create-campaign#create-budget).

## Common errors

| Error | Description |
|---|---|
| [`CampaignBudgetError.CANNOT_UPDATE_CAMPAIGN_BUDGET_TO_IMPLICITLY_SHARED`](https://developers.google.com/google-ads/api/reference/rpc/v26/CampaignBudgetErrorEnum.CampaignBudgetError#cannot_update_campaign_budget_to_implicitly_shared) | Indicates that you tried to set the [`explicitly_shared`](https://developers.google.com/google-ads/api/reference/rpc/v26/CampaignBudget#explicitly_shared) field of a budget from `true` to `false` in an `update` operation. Once a budget is explicitly shared (`explicitly_shared = true`), you cannot change `explicitly_shared` back to `false`. |
| [`ResourceCountLimitExceededError.ACCOUNT_LIMIT`](https://developers.google.com/google-ads/api/reference/rpc/v26/ResourceCountLimitExceededErrorEnum.ResourceCountLimitExceededError#account_limit) | Indicates you've reached the maximum number of budgets in an account. |
| [`CampaignError.CAMPAIGN_CANNOT_USE_SHARED_BUDGET`](https://developers.google.com/google-ads/api/reference/rpc/v26/CampaignErrorEnum.CampaignError#campaign_cannot_use_shared_budget) | The campaign to which you're trying to add the budget is using campaign experiments, and the budget is already being used by another campaign. |
| [`CampaignBudgetError.CAMPAIGN_BUDGET_IN_USE`](https://developers.google.com/google-ads/api/reference/rpc/v26/CampaignBudgetErrorEnum.CampaignBudgetError#campaign_budget_in_use) | You're trying to remove a budget associated with one or more active or paused campaigns. |
| [`CampaignBudgetError.BUDGET_BELOW_PER_DAY_MINIMUM`](https://developers.google.com/google-ads/api/reference/rpc/v26/CampaignBudgetErrorEnum.CampaignBudgetError#budget_below_per_day_minimum) | The budget amount is below the required minimum daily budget (for example, 5 USD for Demand Gen campaigns). The required minimum is returned in `ErrorDetails.budget_per_day_minimum_error_details.minimum_budget_amount_micros`. Starting in `v26`, you can also check the minimum required daily budget for any currency in advance by querying `currency_constant.demand_gen_info.minimum_budget_per_day_micros`. |
| [`CampaignError.END_DATE_TIME_REQUIRED_FOR_TOTAL_BUDGET`](https://developers.google.com/google-ads/api/reference/rpc/v26/CampaignErrorEnum.CampaignError#end_date_time_required_for_total_budget) | A campaign using a campaign total budget (`period = CUSTOM_PERIOD`) must specify `Campaign.end_date_time` (and cannot exceed the maximum duration enforced by `CampaignError.DURATION_TOO_LONG_FOR_TOTAL_BUDGET`). |