# Placeful 2.9.1

## Highlights

- **Integration apps can take table orders** — Registered partner apps can submit paid table rounds through the `/api/v1` bridge: an `external_id`-keyed round lands on the table's tab, the diner pays through a Placeful-hosted Stripe Checkout, and the app can read the order back or cancel it while unpaid. Prices are always re-snapshotted from the canonical menu, every submitted line waits for payment before firing, and orders, projections and `order.*` webhooks stay stamped to the submitting bridge so an app only ever sees its own rounds.
- **Tighter integration surface** — A round's `external_id` is bound to its table (rebinding conflicts instead of merging), submits require a live published event and a fresh `menus` revision, checkout return URLs are checked against the app registration's `return_hosts` allowlist, and bridge reads mask staff notes and other issuers' cover labels on shared tabs.
- **Safer order deletion** — Soft-deleting an order now refuses while it is open, holds unsettled lines, or still has a pending online payment leg; terminal orders delete cleanly and report as tombstones.
- **Per-company commission policy** — Developers now control each company's booking commission from the billing danger zone: automatic (package rules then the global fee), exempt, or a custom percentage/flat — a per-Stripe-account override still wins, and a minted Checkout keeps its chosen fee rail so later policy edits cannot double-bill or drop a booking. Grandfathered companies default to exempt and can opt back into package commissions, which bill through the application fee — percentage per charge, flat once per booking — instead of meters.


---
> Source: https://placeful-app.com/en/changelog/2.9.1
