> ## Documentation Index
> Fetch the complete documentation index at: https://docs.sorce.jobs/llms.txt
> Use this file to discover all available pages before exploring further.

# Budgets

> Cap spend per job or across your whole company, and never get billed past a cap.

Spend budgets cap what Sorce can bill you, per window:

| Window     | Resets                 |
| ---------- | ---------------------- |
| `DAILY`    | Every UTC calendar day |
| `WEEKLY`   | Mondays, UTC           |
| `MONTHLY`  | The 1st, UTC           |
| `LIFETIME` | Never                  |

A budget either targets **one job** (set on the job itself) or your
**whole company** (aggregate across every job, set in the dashboard's
Billing tab). **No budget means unlimited**. That's the default; you
remove a cap by clearing it, not by setting a sentinel value.

## Setting a job budget

Budgets ride the job payload as a replace-set:

```bash theme={null}
curl -X PATCH https://www.sorce.jobs/api/external/v1/jobs/{id} \
  -H "Authorization: Bearer sk_ext_..." \
  -H "Content-Type: application/json" \
  -d '{ "budgets": [{ "window": "MONTHLY", "budgetCents": 50000 }] }'
```

* The array you send becomes the entire new set. Switching windows can
  never leave a stale cap behind.
* `"budgets": []` clears every cap (back to unlimited).
* One budget per window; amounts are whole non-negative cents.

## The over-billing guarantee

Budget enforcement happens in two layers:

1. **Serving stops.** Once a window's spend reaches the cap, the job stops
   being surfaced to candidates until the window resets.
2. **Billing refuses.** If an application slips in after the window filled
   (e.g. sync lag), it is still delivered to you. The candidate is real,
   but the charge is skipped permanently and never appears on an invoice.

You may receive activity past the cap, but you won't be charged past it.
