Summary

This release introduces automatic wallet top-ups, workflow trigger conditions with configurable email variables, rate card discounts below the invoice level, richer usage reports, and Paragon multi-account support, alongside a broad set of Desk improvements across invoices, products, subscriptions and event ingestion.

Pricing

Automatic wallet top-ups Wallets can now be topped up automatically when their balance runs low, so a customer on credit-based pricing never stalls because their credits ran out. You create a config through POST /v1/auto-top-up-configs with the wallet_id, a threshold (an amount or a number of credits, matching the wallet’s denomination), the pricing_plan_schedule_id and pricing_item_id of a one-off on-demand item that grants credits to the wallet, and the payment_method_id to charge. Whenever the balance drops below the threshold, the charge is executed through the existing on-demand flow against the stored payment method. Configs can be switched on and off through the activate and deactivate actions, and this also works with flexible pricing items.

Wallet grants are no longer prorated When a subscription change starts mid-period, pricing item configs that carry wallet grants are now charged at the full price and grant the full number of credits, instead of being prorated. This makes mid-period upgrades work as customers expect for credit bundles: someone who runs out of credits halfway through the month and upgrades receives the complete credit allowance of the new tier immediately. Items without wallet grants are still prorated as before.

Discounts on rate cards at every level Rate cards previously only accepted discounts on the invoice total; a discount on a product, product item or condition was rejected. Discounts within subscription schedules can now target all levels, including a new product_item_meter_property_conditions clause type for discounting a specific meter-property condition of a product item. This removes a common blocker for platforms that offer their merchants item-specific discounts but want the bulk-update convenience of rate cards.

Fixed amounts for tiered pricing on amount-based metrics in Desk When a usage metric is amount-based, Desk previously only offered percentage-based tier prices even though the API already accepted fixed amounts. The pricing editor now lets you choose between a percentage and a fixed amount per tier, so this setup no longer requires the API.

Copy pricing plans with indexing across currencies and billing periods Copying a pricing plan that combines multiple currencies and/or multiple billing periods now carries the pricing indexing configuration over to the copy, instead of dropping it.

Fixes

bug-fix
  • Weekly proration is calculated correctly again for pricing periods expressed in weeks.
  • Previewing a subscription with a rate card now works when the rate card’s schedule does not start on the day of the preview.
  • The Equals comparator is no longer offered for discount conditions, in the API and in Desk. A discount condition compares against a usage total, where an exact-equality match is ambiguous; the remaining comparators (greater/less than) express the intent unambiguously.
  • Patching a subscription schedule now validates that a config’s pricing period does not exceed its billing period, returning a clear error instead of accepting a configuration that cannot be invoiced.

Products

Guided product setup in Desk The product catalog area of Desk received a set of usability improvements: the new-product modal was streamlined, selecting a revenue type now explains what each type means, the empty state points you to the next step, and naming was aligned across the UI (including renaming the pricing “amount type” to “Tax behavior”, which is what it controls). Activating a product item now shows a confirmation overlay summarizing the effect before you commit.

Meters and events

Ingest page improvements in Desk The manual ingest page (now called “Ingest event”) is easier to work with: the meter and reference fields are searchable selectors, and typing a name that doesn’t exist yet offers to create the meter on the spot, building on dynamic meter creation. Existing meters are summarized in a card instead of raw input fields, the code example was restyled, and the Events menu was reordered to Events, Meters, Files, Reprocessing log.

Workflows

Trigger conditions Workflow triggers now support an optional conditions tree that gates whether the workflow’s actions run. A condition node is either a COMPARISON (a single trigger field evaluated against a value) or a GROUP combining nested conditions with an AND/OR operator, so you can express rules such as “only run this action for credit invoices”. Conditions are evaluated when the trigger fires, and each execution records the evaluated tree in conditions_result_tree, so you can see in the execution audit exactly why a workflow did or did not run.

Date format and support email in email actions Send-email workflow actions gained two configuration fields. date_format controls how date variables such as invoice_date and invoice_due_date are rendered in the email, so dates can match your locale or house style (for example DD.MM.YYYY instead of YYYY-MM-DD). support_email is exposed to email templates as the support_email variable and falls back to the action’s reply-to address when not set.

Fetch a single action execution A workflow action execution can now be fetched directly through GET /v1/workflow-action-executions/{id}, instead of misusing the search endpoint to look up one record. Desk uses this to show the details of a single execution.

Invoices

Invoice screen improvements in Desk The invoice detail screen now combines the summary and invoice details into one view, shows a “Credited” label next to the status of an invoice that has been credited, and drops the due date column from invoice tables where it added noise. The context menu actions were reordered by frequency of use, and adding items to a one-off invoice received copy and interaction improvements.

Original or current customer details on one-off invoice credits The choice between keeping the original customer details or using the customer’s current details, introduced for standard credit notes in the previous release, is now also available when crediting a one-off invoice.

Fixes

bug-fix
  • Idempotent retries of API requests whose original response was stored gzip-compressed now return the response body correctly. Previously the replay could return the compressed bytes instead of the JSON payload.

Subscriptions

Clearer billing timing and currency selection in Desk The subscription form now explains the difference between Exact and Calendar billing when you pick a billing timing, and shows a billing currency selector when the selected plan supports multiple currencies, so multi-currency plans can be subscribed in the right currency without leaving Desk.

Fixes

bug-fix
  • Changing a subscription’s end date now only skips invoices that fall after the new end date. Previously invoices could be skipped too eagerly when an end date was moved.
  • The invoice preview no longer flashes while toggling an add-on on the subscription form.
  • Inactive add-ons are no longer hidden by default in schedules, and multi-select pricings are shown for selection again, so existing configurations remain visible and editable.
  • “Show seats history” is hidden when a subscription has no seats history, and the non-optional billing period field no longer shows a clear (“X”) control.

Integrations

Paragon multi-account setup Platforms that run multiple instances of the same ERP integration (for example one Xero account per billing entity) can now model this through Paragon’s multi-account authorization. A new ERP integration type with the PARAGON_MULTI_ACCOUNT variant represents one Paragon multi-account as a single Solvimon integration, and a paragon_external_ids custom field on the synced resources controls routing: webhook deliveries are fanned out per account, each carrying the X-Paragon-Credential header for the target account, so every object lands in the right ERP instance.

Fixes

bug-fix
  • AvaTax: processing-only customers are now excluded from the AvaTax sync, so tax documents are only created for customers you actually invoice.

Reporting

Usage report improvements The usage report now breaks the currency conversion chain into its two actual steps and shows the tax-inclusive cost. New columns: Cost Amount Quantity Including Tax (the event’s cost in the invoice currency including tax), Billable Metric Quantity and Billable Metric Currency (the metric in its original currency), Pricing Currency, Metric to Pricing Exchange Rate, and Pricing to Invoice Exchange Rate. Previously only a single exchange rate between the metric currency and the invoice currency was reported, which hid the intermediate pricing-currency conversion. The precision of the cost amount quantity movement columns was increased as well.

Desk

AI chat on Insights The Insights area now embeds an AI chat assistant, so you can ask questions about the data behind your dashboards in natural language instead of composing filters by hand.

Redesigned side panels and schedule actions Side panels across Desk were restyled with a consistent footer and close button, the subscription and quote view screens use explicit action buttons on schedules, and “Expand all” on pricing plan schedules now renders expanded sections only when they scroll into view, keeping large plans responsive.

Fixes

bug-fix
  • Nested pricing conditions now display correctly for multi-currency plans.
  • Discounts show up again on checkout pages when a rate card is selected, along with other rate card display fixes on checkout pages.
  • The quote template selector was improved, making it easier to find the right template when building a quote.
  • Fixed an overlap issue when clicking “Show plan” on quotes and subscriptions, and a sizing issue in the pricing plan dropdown.

Customer portal

Fixes

bug-fix
  • Fixed the CORS configuration for the portal’s X-CLIENT-VERSION header, which could block portal API requests from the browser.