For Stakeholders
What this is
A one-file, two-line bug fix in the server's online-payments code (packages/server/src/resolvers/mutations/mutationUtils/onlinePaymentsUtils.js). It closes a gap where Paymob payment-link requests could go out missing a field Paymob's API expects, whenever the patient had no email address on file.
Why it matters
Online payment collection is a revenue-facing feature — every failed link generation is a payment that has to be collected some other way (cash, manual card terminal, a follow-up call), which is friction for the clinic and a worse experience for the patient. Because patient email is optional everywhere in Dentolize, "no email on file" isn't a rare edge case; it's routine, especially for phone-first regions. This fix removes one concrete, recurring cause of failed link generation for any clinic using Paymob.
Risk
Low. The change is narrowly scoped to the PAYMOB branch of a single function; it doesn't touch Geidea, Fawry, or Stripe, doesn't change any GraphQL schema, database column, or frontend field, and doesn't alter any validation rules (email was optional before, remains optional now). The blast radius of a regression, if there were one, is limited to Paymob link generation specifically.
Impact
Applies uniformly across every flow that can generate a Paymob payment link — invoices, diagnostic fee collection, appointment booking, and patient registration — because they all share the same underlying helper function. No flow was left out.
What this is not
Not a new integration, not a pricing or contract change, not something that needs to be communicated to customers as a new capability (see For Marketing). It's a reliability fix that customers will experience as "it just works now" rather than something to be told about explicitly.