# Breakdowns, series and schedules

Tax breakdowns travel complete and add up. Series publish the next number they will assign. Recurring invoices declare `frequency` in the request.

Aug 21, 2026 · Improved

Breakdowns travel complete and their bases add up to the invoice base. Series publish the number they will actually assign next. Recurring invoices declare `frequency` in the request. A submission that was never sent is now `NOT_SUBMITTED` rather than absent.

## What else changed

- **Tax breakdowns travel complete.** Every breakdown line is present in the response, and their bases add up to the invoice base exactly — the rounding remainder is distributed rather than left to fall where it may, so `base × rate` no longer disagrees with the amount charged. Lines that carry no tax no longer report a phantom `main_tax`.
- **`next_number` is the number that will actually be assigned.** It is resolved with the same rule the issuing path uses, so it accounts for the series' counter reset policy: a series that resets annually publishes the first number of the current year, not the last one of the previous year.
- **`numbering_locked` tells you whether you can still change how a series numbers.** It is `true` once the series has issued its first invoice; from that point `code`, `format`, `counter_reset` and `initial_number` are permanently locked. A draft does not lock anything — it has consumed no number yet.
- **Corrective invoices.** A partial corrective inherits the defaults of the invoice it corrects instead of requiring them again, and a corrective invoice cannot itself be corrected.
- **Recurring invoices declare `frequency`** in the request contract, and an unsupported value is rejected with `422` naming it, instead of being accepted and quietly producing nothing.
- **VeriFactu submission status gains `NOT_SUBMITTED`** for an invoice that was never sent. Reading it no longer requires inferring absence, and filtering by submission status now matches the value the invoice itself reports.
- **Voiding.** `voided_at` is the instant the system recorded the void, not a date the client supplies.

---

Full OpenAPI spec: https://docs.beel.es/api/openapi