Year

2026

Healthcare · Therapy SaaS

Duration

12+

Credit ledger booking model

Every booking action emits a typed ledger entry with a deterministic key. Reschedule preserves the hold; cancel inside the window writes a release; complete writes release + use.

TRS overview

Subscriptions don't grant a counter — they grant ledger entries. CreditLedger + CreditLedgerEntry record HOLD, HOLD_RELEASE, USE and RENEWAL events with deterministic idempotency keys per appointment. Reschedule preserves the original ledgerHoldEntryId so a webhook retry or a UI double-click can never double-credit. Cancel inside the configured 24-hour window writes a HOLD_RELEASE; complete writes both HOLD_RELEASE and USE. Renewals are gated on exact-period payment evidence — no payment, no credit grant; the subscription flips to PAST_DUE.

Mechanics
  • HOLD on book; HOLD_RELEASE + USE on complete; HOLD_RELEASE on cancel-in-window.
  • Deterministic dedupe keys per appointment — retries safe.
  • Reschedule preserves ledgerHoldEntryId.
  • Renewal credits gated on payment evidence; PAST_DUE on miss.
  • Replaces a counter with an auditable journal.
More deep dives

Got something
this size?

Big ambitions, we match the energy. Drop a brief — reply within one working day.