This release brings a large body of work to Payments, including continued rollout of Payments V2, a new billing Ledger for reconciliation, and full subscription management. We have also added lab configuration management, which allows you to deactivate lab configuration items, expanded the Partner API significantly, improved scheduling accuracy across timezones, and shipped a number of security and reliability fixes.
Bug Fixes
- Patients were unable to upload or view images on forms in some cases; image upload now works for all patients, including those without a recorded name.
- Default images on "Image or Photo" form fields were not displaying; they now appear for patients and in the staff preview.
- The forms-complete "F" indicator was not lighting up when all intake forms were finished. It now reflects intake forms only and is no longer held back by unsigned clinical notes.
- Recently completed forms were being re-sent to patients when a new appointment was created. Duplicate form assignment has been corrected for appointments created from the patient profile, from self-scheduling, and from GoHighLevel.
- Chart PDFs were cutting off patient history text and overlapping the page footer; the layout has been corrected.
- Administrators on Forms-only accounts (without Appointment Scheduling) could not see all Settings tabs, including Users. All applicable tabs are now visible.
- Status pills across appointments, tasks, action items, clinical charts, and labs have been restored to their previous appearance after an unintended visual change.
- Loading the staff form templates list was slow and could destabilize the application under load. It is now substantially faster.
Payments
Note: Payments V2 is rolling out through a guided migration. Some items below apply to your account as it is migrated. Contact support@lobbie.com for details on your migration timeline.
Subscriptions
- Added a full subscription management experience: list, filter, and open a subscription detail drawer to edit, pause, resume, complete, or cancel a recurring plan.
- Staff can pause a subscription to stop charges and resume it later, with the change synced to the payment processor.
- Edits to an enrolled subscription (price, frequency, schedule) now reach the processor, so recorded amounts always match what cards are actually charged.
- A failed subscription edit no longer saves partially; staff now see a clear error and accurate data instead of a stranded record.
- Subscriptions that were paid after a failed first charge showed as Overdue; they now show Active with the correct next billing date.
- Active subscriptions were incorrectly flipping to "Completed"; status now reflects the real billing schedule.
- Recurring subscription payments now separate sales tax and surcharge into their own fields.
- Subscription status changes now happen only from the subscription details dropdown, removing a duplicate path in the Edit Subscription flow.
- Billing intervals are now Weekly, Monthly, and Yearly; the Daily option has been removed.
Ledger & Reporting
- Added a new billing Ledger view to see, filter, and export all money movement — payments, refunds, and chargebacks — for reconciliation.
- Ledger now labels card payments as "Credit Card: Visa - 4242", matching the Payment Attempts format.
- Ledger refund records now credit the staff member who issued the refund instead of showing System User.
- Surcharge refunds now display in red with a negative sign in the ledger and on PDFs, matching how other amounts are shown.
- Invoice PDFs now show the ledger entry ID for refunds, matching the invoice view and CSV export.
- Invoice IDs now include the account and location prefix in the Payment Attempts table and in Order and Subscription details, consistent with other tables.
Billing, Orders & Invoices
- Fully paid invoices were intermittently remaining Open with a zero balance; they now correctly show as Paid.
- Bill and invoice totals now account for discounts created by editing a line item's charge amount, and Original price consistently reflects service settings.
- Order line items now reject invalid money entries — negative quantity or price, discounts over 100%, and negative tax rates.
- Bills with an empty subscription no longer partially submit, and bill creation now scrolls to a missing subscription start date instead of appearing unresponsive.
- The Tax Applied column is now hidden across billing tables and PDFs for locations that do not have taxes enabled.
- Sales tax was appearing on overnight recurring invoices and payments for locations without tax enabled; tax is no longer shown or applied for those locations.
- Staff can now mark a draft order as void, and impossible status options (Draft on Invoices; Pending and Canceled on Orders) have been removed from filter dropdowns.
- All CRM categories now appear when adding or editing billing Services and Supplies, and the category picker is now searchable for long lists.
- Already-added services and supplies now appear visibly disabled with an explanation, rather than silently failing to be selectable again.
- A 500 error when viewing certain patient profiles has been fixed; the Payments tab billing summary now loads correctly.
- Superadmin can again delete a location's payment vendor.
- Patient search in payment flows now matches the intended design, with a "Find or Create a New Patient" prompt and clearer selection controls, and charge modals now show the finalized processing indicator.
Payments & Refunds
- Swapping a card on a failed one-time payment no longer charges the surcharge twice.
- One-time payments now succeed on invoices carried over from the previous billing system.
- Payment attempts that were stuck in Pending now re-check the processor for resolution and move to Failed after 14 days.
- A partial refund no longer removes the entire opportunity value in GoHighLevel; partially paid and partially refunded invoices are now reflected accurately.
- The patient pay page now indicates when a card is already on file, matching the behavior in staff Billing.
- Invoice pay links now expire and authorize only that invoice's payment rather than granting broader portal access.
Payments V2 Migration
- Subscription payments that were failing as "Unauthorized" on migrated accounts now process successfully.
- Migrated orders now carry the correct tax rate, so editing a migrated order calculates tax correctly.
- Refunded payments from the previous billing system now migrate as Void invoices instead of appearing as Open.
- Migration no longer triggers GoHighLevel start-service automations or prescription tasks against patients' historical paid invoices.
Labs
- Lab configurations can now be deactivated and reactivated from Settings, with separate Active and Inactive views, so unused test packets, panels, and components can be retired without deleting history.
- The Enter Labs and Order Labs pickers now list only active lab configurations. Previously ordered labs are unaffected.
- Inactive staff no longer appear in the lab "Drawn by" and "Provider NPI" dropdowns.
- In-house lab reports now include appointment ID and patient ID to support lab inspection requirements.
- Prime Labs orders that include an appointment now submit successfully instead of erroring.
Appointments & Scheduling
- Schedule columns now display times in the location's timezone, and multi-schedule views let you choose which timezone to view.
- The Scheduler was duplicating an appointment onto subsequent days until the page was refreshed; the day-to-day view now stays accurate without a refresh.
KPI Dashboard
- KPI and revenue reporting now works for accounts on either the previous or the new payments model, so reports stay accurate through migration.
- UTM attribution is now captured at landing and carried through to booking, so self-scheduling traffic that did not convert can be reported on.
Controlled Substance Log
- Staff can again check out and log entries against affected containers instead of receiving an error.
Enhanced Branding
Note: This feature is still being developed and is not broadly available.
- Lato and Google Sans have been restored as branding font options, and affected accounts once again render their chosen font.
Integrations
- GoHighLevel synchronization has been reworked so patients and appointments reliably reach GoHighLevel instead of silently failing to sync.
- Patient text messages rejected by GoHighLevel were retrying every minute for up to a week and never being delivered. These now fail fast or fall back so delivery problems surface immediately.
Partner API
- Added Form endpoints for creating, reading, updating, and deleting form packets, and for retrieving packet PDFs and form elements.
- Added a Scheduler resource to list scheduler configurations, read templates, and fetch availability before booking.
- Added a Tasks resource to read tasks with filters and to create or update manual tasks, including staff assignees and due dates.
- Added an External IDs resource so integrators can map Lobbie patients and locations to GoHighLevel and MX Merchant identifiers in both directions.
- Added UTM endpoints to list attribution records (filtered by appointment, attempt, date range, or funnel stage) and to attach UTM data to a self-scheduling attempt.
- Added a cross-patient patient-category query to list all patients in a category or CRM status along with their transition dates.
- Added webhooks for form-packet creation and completion and for payment and payment-attempt events across both payment models. Payment attempt events now include the location ID so the related invoice can be resolved.
- Webhook endpoints that fail consistently are now automatically disabled and the partner is notified so they can investigate and re-enable.
- Past webhook attempts can now be queried and re-triggered, so failed deliveries can be replayed programmatically.
- Patient responses and webhooks now include created and updated timestamps, so integrators can preserve original dates when backfilling.
- List endpoints can now return up to 1,000 records per page, reducing the number of requests needed for a bulk sync.
- Rate limit responses now distinguish short-term burst throttling from daily quota exhaustion and indicate when to retry, and one partner's traffic can no longer throttle another partner.
- The appointment list endpoint is significantly faster, responding in well under 200ms.
- Fixed an error on invoice detail for certain legacy invoices, and corrected pagination cursors on payment and payment-attempt queries.
- The OpenAPI specification now documents the webhook envelope schema so partners can generate types for inbound handlers.
New Patient Portal & Sign-In
Note: This feature is still being developed and is not yet broadly available.
- Patients can now sign in with their email address and a one-time code and stay signed in, replacing single-use identity-proof links.
- After signing in, patients land in the portal already authenticated with no second sign-in step.
- Sign-in code emails are now sent through a dedicated delivery pool with branded templates for better deliverability.
- Added a responsive portal navigation shell with a desktop sidebar and a mobile footer.
- Enterprise accounts can be provisioned with a dedicated, branded sign-in experience.
- Hardened the sign-in application with a strict content security policy and subresource integrity checks.
Security
- Invoice payment links are now single-purpose and time-limited, and the sign-in application enforces a strict content security policy.