school-operations

Driving school payment system with Stripe: what owners should check

A plain-English guide to connected school accounts, direct charges, pupil wallets, verified webhooks, fees and reconciliation.
A driving school payment system using Stripe should make ownership of the money clear. The school sets the lesson and block prices, connects its Stripe account, and receives pupil payments on that account. The management software confirms the result and updates the pupil ledger without storing card numbers.
The important questions are not whether a page has a “Pay” button. They are who is merchant of record, where the charge exists, which fees apply, how refunds and disputes work, and what prevents a duplicate wallet credit.
Connected accounts and direct charges
Stripe describes direct charges as payments created on a connected account. The charge appears on that account and its balance increases. Stripe also notes that direct charges suit software-as-a-service platforms where customers transact with the connected business.
For a driving school, this can keep the payment relationship aligned with the school providing tuition. The owner completes Stripe's hosted onboarding and uses the Stripe dashboard for bank, payout and dispute details.
DriveBest uses connected-school direct charges and does not request an application fee. “No DriveBest fee” does not mean “free card processing”: the connected account remains subject to Stripe's published processing, dispute and payout terms.
Never credit from the success page alone
After Checkout, the browser may return to the app. That is useful feedback but not authoritative payment evidence: the tab can close, a redirect can be copied, or settlement can finish later.
The server should verify a signed Stripe event and match the connected account, school, pupil, session, amount, currency and payment status. It should store the provider event or session identifier so replaying the webhook cannot credit the same pupil twice.
Model block bookings as transactions
For a ten-hour purchase, add a ledger credit after verified payment. Each completed lesson deducts the delivered duration exactly once. Adjustments and refunds should be separate entries with reasons rather than edits to an unexplained total.
That transaction history lets staff answer “why does the pupil have 3.5 hours left?” without reconstructing bank statements.
Separate pupil money from the SaaS licence
The annual software licence and the school's pupil payments are different flows:
•
- DriveBest licence: every school pays the standard £399 per year, billed annually.
•
- Pupil tuition: the pupil pays the school's connected Stripe account at prices set by the school.
Use separate products, metadata, webhook checks and reporting. A pupil payment must never activate a school licence, and a licence renewal must never alter a pupil wallet.
Guided onboarding matters
The owner-only setup should show three clear states: not connected, more information required, and charges/payouts enabled. “Continue setup” should resume Stripe rather than creating multiple connected accounts. Only the owner should be able to open a payout-dashboard link.
Demo checklist
1.
Change a school block price and create a pupil checkout.
2.
Confirm which Stripe account owns the charge.
3.
Replay the success event and verify only one ledger credit exists.
4.
Send a mismatched amount or connected-account event and see it rejected.
5.
Explain refund, dispute and export handling.
Sources checked
•
- Stripe Connect direct charges
•
- Stripe direct-charge fee behaviour
•
- Total Drive in-app payment information
•
- GoRoadie Pro payment information
Sources were checked on 15 September 2026. Stripe configuration and fees can change, so confirm current terms during onboarding.
© 2026 LPR NEXUS LTD. All rights reserved.
DriveBest is operated by LPR NEXUS LTD, registered in England and Wales, company number 16356758. Registered office: Unit A, 82 James Carter Road, Mildenhall, United Kingdom, IP28 7DE.