Root release notes | August 2026

We’re committed to keeping you fully up to speed with all of the features, enhancements and fixes we ship at Root. Here are all of the updates and improvements we shipped over the last month 🛠️

Features

We’re working on new features to expand what you can do on Root:

  • Human-readable application numbers: New applications can now be assigned a human-readable reference (returned on the API, in webhooks, and filterable on the applications list), with the format configurable per product, character set, length, prefix, and suffix, matching how policy numbers work. Read the docs.
  • Links in module data and deep-linking: Support was added for clickable links in module data, which can point to related policies, policyholders, claims, applications, complaints, or external pages. Links to a policy can also target a specific section, such as invoices, claims, or the ledger, so it opens with that section already in view. Links in module data can be enabled per organisation on request. Read the docs.
  • Programmatic user group assignment on policy issue: Product modules can now assign a policy to a user group at issue by returning user_group_id from the getPolicy function. Read the docs.
  • Backdated alteration and requote start dates: Alteration hooks and requote can now set any policy start date, including dates in the past and on policies that have already started. Read the docs.

Platform Enhancements

  • Performance Enhancements

    We’ve introduced enhancements to improve stability, efficiency, and visibility across Root:

    • Whole-document reading and caching for Claims AI: Improvements to how Claims AI reads claim documents so that documents under a certain size are now processed in full rather than only the top-ranked passages, larger documents use a per-field search, and repeat questions read from cache (reducing cost per set of questions).
    • Cleaner policy events endpoint: The policy events endpoint was tidied up to return only event data, with new filters for version number and date.
    • Clearer messaging and safer publishing in the rp workbench CLI: A batch of improvements to the workbench CLI:
      • Consistent progress spinners and status lines across every command, with plain-ASCII fallbacks so output stays readable in CI logs.
      • API errors now end with a Tip pointing to the next command to run (for example, publishing without a draft suggests rp push).
      • rp publish now checks that a draft definition exists before asking for confirmation, and fails fast when there isn't one.
      • Resolved an issue where rp push could return a stale draft after a concurrent read repopulated the cache mid-transaction.
  • Billing Enhancements

    We’ve made several improvements to increase reliability, accuracy, and automation across Root’s billing processes.

    • New features in the Billing domain: We’ve been building new features and enhancing current functionality across the billing domain, including Collection Modules, payment methods and Invoicing.
      • Added account holder on debit-order payment methods: Debit-order payment methods now include the account holder in the selection list alongside bank, account type, and debit day. Editing the account holder from the payment details screen retriggers bank-account verification.
      • Mark a payment successful or failed from the policy: Payments on a policy can now be marked successful or failed directly from the payments and ledger tables, with a reason and a choice of what happens next, retry as normal, no retry, or block the payment method.
      • Payment imports accept in-flight collections: Payment CSV imports now accept rows with a processing status, so insurers migrating onto Root mid-collection cycle can bring in-flight payments across without having to drop them or import them as settled and correct them afterwards.
      • Collection-request & refunds payment method picker: The Submit collection request & refunds screens show a payment method picker, so the request is raised against a chosen method rather than defaulting to the policy's payment method.
      • Continued work on new Invoicing functionality: We're continuing to develop Invoicing for policyholders, including more flexible setup at the product-module level and improvements to how invoices, credits, and payments are handled. This functionality is still in development.
    • Once-off billing requests cancel when uncollectible: A once-off billing request that can never be collected (for example, a policy with no payment method, or one already billed) is now cancelled automatically on the first attempt, with the reason recorded on the request, rather than being retried every day.
    • Retried payments can count once toward lapse: Product configurations can now be set up so that multiple retried premium payments count once toward the policy-lapse calculation, rather than every retry counting as a separate missed payment. Read the docs.
    • Credit and debit policy balances from a collection module: Collection modules can now credit or debit a policy's balance from their hooks, matching what product modules can already do. This supports goodwill credits, reinstatement fees, and similar adjustments handled inside a client's billing module. Read the docs.
    • eNL Mutual Bank removed from the debit-order bank list: eNL Mutual Bank can no longer be selected when capturing debit-order details, following PASA's suspension of the bank from clearing effective 7 August 2026. Existing payment methods and policies are unaffected.

Bug fixes

We’ve addressed key issues to improve system reliability:

  • Policy activity "View schedule" link: Resolved an issue where opening a policy schedule from the Activity feed returned a "does not have a version N schedule" error rather than the document itself.

  • ID number validation on beneficiaries: In Manage beneficiaries, the ID number is now validated against the ID type the user has selected, and switching the type re-validates the number immediately, resolving an issue where a valid passport could be rejected as a South African ID and an invalid ID could be saved after switching type.

  • Stale documents on late document-generation jobs: Resolved an issue where a document-generation job running late could re-render a stale policy snapshot over a newer document. Jobs now carry the policy id and aggregate version and hydrate the policy at that version on the worker.

  • Reject webhook URLs pointing at localhost: Creating or updating a webhook now rejects URLs that point at localhost, since such webhooks can never be reached and every delivery attempt would surface an error.


If you have any suggestions or feedback, please share them with your Client Success Manager or submit them via the Root product roadmap to make sure we always know what’s top of mind for you.