How it is built

The front desk takes a card on the processor's own page, and the receipt goes back into the practice management system by itself. Everything below is what makes that one sentence true.

The pieces

PieceWhat it isWhat it does
Front desk appLocal web app on the practice's own PC, Node 22, no cloud hop for patient dataFind the family, show the plan, hand off to the card page, show the receipt
Family's pageSame app, opened on a phone by link or textAuthorize, sign, pay, receipt
Practice bridge.NET 8 client speaking the practice system's own service layerReads the ledger and the due list; writes the receipt and closes the instalment
Card pageThe processor's hosted pageTakes the card. Our software never sees or stores a card number
Admin and licenceSubscription state per practiceSwitches a practice on or off. Scheduled payments keep running during grace

How a payment actually moves

StepWhat happensWhere
1. FindTwo letters of a surname finds the family and the plan, read live from the practice systemPractice system
2. ConfirmThe plan, the amount due and the technology fee are shown as one totalFront desk
3. AuthorizeThe family ticks one consent and signs. Marketing consent is asked separately, after the moneyFamily's phone
4. CardA session is opened with the processor and the card is entered on the processor's pageProcessor
5. ApprovalThe approval is read back by its own reference before anything is recordedProcessor
6. Write backThe receipt is posted to the family's ledger and the instalment is closedPractice system
7. ProofThe open payments count moves by exactly one, on the practice's own screenPractice system

The money, in one line each

ItemWho paysWhere it lands
The instalmentThe familyThe practice's own ledger, in full
Technology feeThe family, on every paymentUs. One authorization on the card, one line on the statement
ProcessingConfirmed by the processor for the practiceNot our line

What keeps it safe

ControlWhat it refuses
No card dataThe card is entered on the processor's page. We hold no cardholder data
Subject fenceAny write to a record that is not the one we were given permission for. Unreadable is treated as a real patient, never as permission
Write permitEvery write needs a permit re-armed from a confirmed read, inside a two hour window
One chokepointAll three write paths pass through a single guard. Nothing writes around it
Exactly onceEach charge is keyed to database, plan, instalment and due date. A replay is refused, a genuine new one is not
Rate ceilingsCounted against an append only ledger, not a timer in memory
AttendedA person at the practice fires every write. Nothing writes into the practice system on its own

What we can show you it did

RecordWhat is in it
Call ledgerEvery call to the processor, append only, with the spacing between them
Sign in ledgerEvery sign in to the practice system, written before the attempt, not after
Ledger readsA stamped copy of the plan as the practice system gave it, with a hash
Close intentThe exact receipt we asked the practice system to post, kept next to what it answered
Machine linesOne structured line per card, per write and per permit, so any run can be graded later
Alarm logAnything the software wanted to warn about, kept internally rather than shown to a patient
Today this runs against a training database and the processor's test system, so no live patient record and no live card are involved.

Technical detail

AreaDetail
Desk runtimeNode 22 web app, served on the practice's own machine on a local port. No inbound port is opened to the internet
Practice integration.NET 8 client speaking the practice system's own service layer. Two components: one that only reads, one that writes, so the reading path cannot write by accident
ReadsThe family's ledger, the list of instalments due, the office's posting accounts and tender types, and the open payments count
WritesPost the receipt against the plan, then set the instalment closed. Two calls, in that order, never one without the other
Card handlingA session is opened with the processor, the card is entered on the processor's page, and a token comes back. No card number reaches our software or our logs
Approval checkThe approved amount is read back from the processor by its own reference and that figure, not the requested one, is what gets recorded
Exactly onceEvery charge carries a key built from the database, the plan, the instalment and its due date. The same key twice is refused; a genuinely new instalment is not
Where data sitsPatient data stays on the practice machine. What leaves it is the payment request to the processor and nothing else
Failure behaviourIf a write cannot complete, the charge is not silently kept: the intent is written to disk with what the practice system answered, so a person can see exactly what happened
LedgersAppend only files for processor calls, sign ins, plan reads and write intents. Counters are read from those files, not from memory, so a restart cannot reset a limit