> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.solvimon.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.solvimon.com/_mcp/server.

## Summary

☀️🏖️ Summer is in full swing and we're not euro-maxxing so this release packs a good bunch of goodies: usage limits with threshold webhooks across the customer hierarchy, a send-webhook workflow action, localized email templates, flexible pricing and tiering conditions in Desk, a guided billing metric setup, and a credit-and-duplicate flow for invoices. Payment error details in Desk and a tidied-up invoice creation flow round out the release.

## Meters and events

**Usage limits with threshold alerts on the customer hierarchy**
You can now store usage limits per customer and get alerted when consumption approaches them, which is the building block for pay-as-you-go platforms that give each end user (modelled as a processing-only child customer) a soft cap. A new `UsageLimit` resource is managed through [POST /v1/usage-limits](https://docs.solvimon.com/api-docs/configuration-api/usage-limits/post-usage-limits): it links a `customer_id` to a [`meter_value_calculation_id`](/platform-guides/meter-and-event-design/meter/meter-values) with a `limit` (a number, amount or credits) and a `scope`. `SELF` limits the customer's own usage; `CHILDREN` sets a default limit for each child, resolved by walking up the [hierarchy](/platform-guides/customers-and-billing/customer/parent-child-relationships) to the nearest parent, and a child's own `SELF` limit for the same metric overrides its parent's default.

Alerting is configured through a new `USAGE` [workflow trigger type](/platform-guides/workflows/workflow-triggers): the workflow holds the thresholds (percentages of the resolved limit, or absolute values) while the limit itself stays per customer, so one platform-level workflow covers every customer and seat. Each threshold crossing fires the workflow's actions once per billing period.

Two supporting pieces ship alongside it. [GET /v1/usage-limits/status](https://docs.solvimon.com/api-docs/event-api/usage-limits/get-usage-limits-status) returns the current-period consumption against the resolved limit per customer (with `include_children=true` to cover a whole hierarchy), giving you the numbers for an in-product usage dashboard. And `POST /v1/workflows/init` idempotently ensures a workflow and its actions exist by `reference`, creating them when missing and leaving them untouched otherwise, so provisioning can be scripted safely.

## Workflows

**Send a webhook as a workflow action**
A new `SEND_WEBHOOK` action type delivers a workflow's trigger payload to one of your registered [webhooks](/platform-guides/for-developers/webhooks), referenced by `webhook_id` in the action's `send_webhook` block. Combined with usage-limit workflows this produces `USAGE_LIMIT.THRESHOLD_REACHED` notifications carrying the customer, the metric, the threshold that was crossed, the resolved limit and the consumption, so your platform can react to usage events in real time.

**Localized email templates**
Send-email [workflow actions](/platform-guides/workflows/workflow-actions) gained a `localize_template_names` toggle. When enabled, the action appends the end customer's locale to the template name at send time (for example `credit.invoice_en-us`) and looks that template up with your email provider, falling back to the base template when no localized variant exists. This matches the behaviour of the legacy Paragon email integration, so platforms sending invoice emails in their customers' languages can migrate to native workflows without losing localization. Desk exposes the toggle, and the support email field from the previous release, in the send-email action settings.

## Pricing

**Flexible pricing in Desk**
[Flexible pricing](/platform-guides/products-and-pricing/pricing-plans/flexible-pricing), where the customer chooses how much to pay within a band and receives wallet credits in proportion, could previously only be configured through the API. The Desk pricing editor now supports the `FLEXIBLE` pricing type directly, including the minimum and maximum amounts and the credit conversion, so self-service top-up pricing can be set up without code.

**Tiering conditions in Desk**
The pricing item config editor now includes an editor for `tiering_conditions`, the filter that decides which events count toward a config's [tier](/platform-guides/products-and-pricing/pricing-plans/usage-based-pricing-methods/tiered-pricing) for product items with a tiering metric. You build the same AND/OR/XOR expression tree used for product item conditions, using the properties of the tiering meter; a config without tiering conditions keeps counting every tiering event. The editor only appears when the product item actually has a tiering meter value calculation, matching the API's validation.

**Clearer tiering tables and custom unit names**
Tiering tables in Desk now state explicitly which range each tier covers, and custom unit names you define on a product item are now used consistently across the pricing screens instead of a generic "units". Pricing screens now read the way you'd explain the pricing to a customer, which makes it easier to spot a misconfigured tier before it reaches an invoice.

### Fixes

bug-fix

* Per-seat product items marked as not billed no longer trigger a "Please fill in all fields in all currencies" error when using "Copy from default" on a multi-currency plan.
* The root condition of a pricing condition tree is collapsible again.

## Products

**Guided billing metric setup**
Picking the billing metric while setting up a revenue item was redesigned into a guided flow, so you can create a new product and its pricing in one go without first learning how meters, meter values and calculation methods fit together. You select the meter, then the meter values and properties attached to it, then the usage metric (calculation method), and a summary text describes what the resulting metric measures. Anything missing can be created inline; choosing "add" opens the meter panel pre-filled for the meter you were configuring, so first-time setups no longer bounce between the products and meters areas. This flow is new and we're actively shaping it, so if it helps (or gets in your way), tell us: we'd love to hear how it works for your setup.

**Edit metric filters on active product items**
Metric filters on a product item can now be edited while the item is active, instead of requiring a new draft version for a filter change. Small corrections, like excluding a test event type you forgot to filter out, no longer force you through a full version cycle.

**Navigation cleanup**
Features moved out of the product catalog submenu, and the products list now loads 50 items per page so most catalogs fit on a single page.

## Invoices

**Credit and duplicate an invoice in Desk**
The credit flow in Desk can now credit an invoice and create a duplicate in one action, which is the common way to correct a finalized invoice: the [credit note](/platform-guides/invoicing/invoice-corrections/credit-invoices) cancels the original and the duplicate gives you an editable draft to fix and re-send. Previously this combination was only available through the API.

**Pricing plan schedules on the invoice**
Invoices now expose a read-only `pricing_plan_schedule_ids` field listing the [pricing plan schedules](/platform-guides/customers-and-billing/subscriptions/subscription-schedules) the invoice bills for, next to the existing `pricing_plan_subscription_ids`. Because an invoice can span multiple subscriptions and can include usage and pay-in-advance fees from different schedules around a cut-over, this is a list; it lets you trace every line back to the schedule that produced it without expanding each line.

**Invoice creation flow cleanup**
Creating an invoice in Desk was reworded and tidied up, so occasional users, like a support agent issuing a one-off correction, can find the right action without guessing what a button does: the one-off invoice action and button were renamed to say what they do, the report request form was rebuilt, the two "Add" buttons on the invoice were joined into one, the list filters now sit on a single row, and the paid status filter uses a clearer select component.

### Fixes

bug-fix

* Invoices for plans with multiple billing cycles now only use the pricing item configs that belong to the cycle being invoiced.

## Payments

**Payment error details in Desk**
When a payment ends in an error, the payment side panel now shows the result details including the `external_reason` returned by the payment service provider (for example a missing acquirer account for a card type and currency), so you can diagnose a failed payment without pulling the raw API response.

## Customers

### Fixes

bug-fix

* Updating a customer no longer sends the PATCH request twice, which could cause unexpected side effects.
* Individual customers can be created using the keyboard only; selecting from a dropdown no longer drops the focus out of the form.
* The "Add subscription" button is hidden on deprecated customers, where creating a subscription is not allowed.
* The reprocess option on the customer screen received usability improvements, and a duplicate country code chip was removed from the customer form.
* Where an invoice email address is expected, Desk now falls back to an individual customer's email when no separate invoice email is set.

## Subscriptions

**Subscription form and overview cleanup**
The new-subscription form and the subscription overview page were decluttered: redundant fields and sections were removed and the remaining information was regrouped, making the common path through creating and inspecting a subscription shorter.

## Developers

### Fixes

bug-fix

* API requests with malformed URLs containing empty path segments now return a proper error response instead of a 500.