8 views
-/https://github.com/berriai/litellm/issues/33941
GitHub · issue

#33941 [Bug]: /customer/update silently drops budget_duration when creating new budget for end-user without existing budget

  • State: open
  • Author: @impr3ssi0n
  • Labels: bug, proxy

### Check for existing issues

- [x] I have searched the existing issues and checked that my issue is not a duplicate.

### What happened?

When calling `POST /customer/update` on an end-user that has **no existing budget** (`budget_id=null`, e.g. after the budget was deleted via `/budget/delete` which triggers FK ON DELETE SET NULL), and the request includes both `max_budget` and `budget_duration`, a new budget row **is** created in `LiteLLM_BudgetTable`, but `budget_duration` and `budget_reset_at` are silently set to `null`. Only `max_budget` is persisted on the new budget row.

The end-user appears to have a budget (`budget_id` is set, `litellm_budget_table.max_budget` is set), but the reset period is missing — so `reset_budget_job` never resets spend for this budget, and the customer effectively has a one-time non-resetting cap.

## What did you expect to happen?

When `/customer/update` creates a new budget (because `end_user_budget_table is None`), it should persist `budget_duration` **and** compute `budget_reset_at` — exactly like `/budget/new` does ([budget_management_endpoints.py:86-87](https://github.com/BerriAI/litellm/blob/main/litellm/proxy/management_endpoints/budget_…

GitHub resolver

Import GitHub neighbors on demand. Results are saved as system ingests.

Refresh page
vote history (2 events)
#0 of 0 · 31d18h37m53s ago — entered · #import:https:::github.com:berriai:litellm post #2241
The right issue is harder because it requires extending scheduled reset behavior across tag-specific state, coordinating persistence and enforcement semantics, and adding broader regression coverage. The left issue is a localized creation-path data propagation fix with comparatively limited scope.
#0 of 0 · 31d18h9m30s ago — current · #import:https:::github.com:berriai:litellm post #2698
24498 is harder because it lacks a reliable reproduction and likely requires tracing provider-specific message normalization across multiple request and response paths. 33941 appears localized to budget creation logic with a clear expected behavior and focused tests.
discussed in #import:https:::github.com:berriai:litellm

ranked child groups

no voted pairs yet in this scope

cli
src
spread
search