NewThree filters returned the wrong rows
BeeL
Get StartedMulti-NIFVeriFactuStripeAPI ReferenceChangelog

Changelog

Every change to the BeeL. API, newest first — what moved, when the old way stops working, and how to tell whether it affects you.


Most changes are one entry here. A few are big enough to need the old-to-new route table, the retirement calendar and a way to check your own integration against it — those keep their entry in this list and link to the full note.

Every deprecated route also tells you the same thing in its own responses — Deprecation: true, a Sunset date and Link: <successor>; rel="successor-version" — so you never have to trust a page over your own traffic.

Breaking
Breaking
Breaking
Breaking
Breaking

Lists answer data.<plural>, deletes answer 204 unless the body informs, and every create returns Location. DELETE products/bulk takes ?ids= instead of a body.

Lists: data is never a bare array anymore. Six lists that answered data: [...] + root pagination (companies of an account, series, recurring invoices, payment events, request logs, sent emails) now answer data.<plural> + data.pagination — deprecated flat aliases included, since they share the schema. Five unpaginated lists (company stats, email indicators, payment connections, recurring history, series defaults) are wrapped in data.{plural} with no pagination block.Deletes: DELETE .../customers/{id} and DELETE .../representation now answer 204 with no body — their old 200 bodies carried nothing you could not already know. Bulk deletes and DELETE .../activations keep their 200 body (partial results and the computed effective_at are only knowable from the response).DELETE /v1/companies/{company_id}/products/bulk no longer takes a request body — a body on DELETE has no defined semantics and intermediaries may drop it. Send ?ids= (comma-separated, max 100 per request), same as customers/bulk.Every single-resource 201 now carries a Location header pointing at the created resource's canonical GET — including actions that produce a resource (corrective, convert, derivations, generate, payment-event draft). Claim tokens point at their claim_url. Bulk creations carry none: there is no single URI to point at.PUT /v1/configuration/series/{series_id} is now deprecated like the rest of the flat series routes. It has no drop-in successor: the canonical PATCH /v1/companies/{company_id}/series/{series_id} behaves the same for every body except an explicit description: null, which the old PUT ignored and the PATCH honours by clearing the field.Declarative sweep: every live operation now documents 429 and 500, every tag is declared, and the account companies operations moved from the PublicCompanies tag to AccountCompanies.These changes ship without a grace window: measured traffic on the affected shapes was test-mode only. If your integration reads any of the old list shapes, adapt the paths above — everything else about each operation is unchanged.

Breaking

The invoice field first announced as external_reference is now called external_ref. Responses already emit the new name; the old one is still accepted when you write, as a deprecated alias.

Responses emit external_ref — the old name is no longer returnedWrites still accept external_reference, as a deprecated aliasAffects the request body of the create-invoice routes and the GET /v1/invoices query filterNothing has stopped working, and no removal date is announced yet

Breaking

New: an account can hold several NIFs, each addressed in the path. As a result the old flat routes are deprecated — 82 operations gain a Sunset date, and all but three a successor route, and keep answering until then.

82 operations are deprecated, each with a Sunset date and, for all but three, a successor routeNothing is removed — every deprecated route keeps answering until its Sunset dateDeprecated routes carry Deprecation: true, Sunset and, where a successor is declared, Link: <successor>; rel="successor-version"The three replacing PUTs (customer, product, recurring invoice) declare no successor: the canonical PATCH merges instead of replacing, so it is not a drop-in

Breaking
Breaking
Breaking
Breaking
Breaking