Mobile-App
Lawyer Appointment Booking App: Complete Development Guide
Most legal-tech apps live or die on the booking flow, not the feature list. Here’s exactly how search, case submission, accept/reject, payment timing, and per-minute billing fit to
Written from production. Our articles draw on products we run live and the client work behind them, and are revised as the systems they describe evolve.
Platforms like LawRato and Vidhikarya proved the market exists — people will book a lawyer from a phone the same way they book a cab or a doctor. Demand was never the hard part.
The hard part is the appointment itself. A legal consultation isn’t a 30-minute slot on a calendar — it’s a case, with documents and a voice note attached, and an advocate who has to say yes before anyone gets charged.
We covered the full platform build in our guide to building an online lawyer consultation app. This post goes deeper on the one piece that decides whether users trust it: the booking and scheduling flow.
Legal consultation demand is shifting to app-based booking — the flow underneath it decides whether users come back.What Makes Legal Appointment Booking Different
Copy a restaurant reservation system onto a legal app and it breaks on day one. A legal booking carries weight a table for two never will.
Every design decision in the flow below traces back to one fact: an advocate is agreeing to take on a case, not just holding open a chair.
Case context comes before the slot: An advocate can’t say yes to a time without knowing what the case is — that means documents and a voice note upfront, not a follow-up email later.
Availability isn’t just a calendar: A litigation advocate’s free hours depend on court dates, not fixed office hours — availability has to flex around case type and specialization.
Payment timing matters: Charging at the moment of booking means charging for consultations that later get rejected. Charging on acceptance protects both sides from that.
The “appointment” is really a case file: Once booked, it carries documents, a chat thread, a call record, and a summary — a bare time slot can’t hold any of that.
Trust signals carry more weight: A KYC badge and bar verification matter more here than a star rating ever will on a food delivery app.
Search, KYC-verified profile, and case submission — the three screens that carry the most weight in a legal booking flow.The Booking Flow, Screen by Screen
Here’s the actual sequence a client walks through, from open app to closed case.
Search and filter: The client searches advocates by category (family, criminal, corporate), sub-category, and city to get to relevant results fast.
View a verified profile: Every profile carries KYC verification, practice areas, experience, ratings, and a live weekly availability calendar.
Submit the case, not just a time: The client records a voice note describing the issue and attaches up to 10 supporting documents before requesting a slot.
Advocate reviews and responds: The advocate sees the case details first and accepts or rejects — no blind bookings on either side of the exchange.
Payment triggers on acceptance: Only once the advocate accepts does the app charge the client through its Razorpay integration.
Chat unlocks: A real-time chat thread, powered by Laravel Reverb, opens between client and advocate the moment payment clears.
The consultation happens: A voice call runs over Agora, scheduled or immediate, billed per minute in the background.
A PDF summary generates automatically: The app compiles a case summary right after the call — no manual note-taking on either side.
Client rates the consultation: A rating and review closes the loop and feeds directly into the advocate’s public profile score.
Notice what’s missing: there’s no step where a client pays before an advocate has actually looked at the case. That ordering isn’t an accident — it’s the whole design.
Each screen also exists for a reason beyond convenience. Cut the voice note step and advocates start rejecting cases blind. Cut the PDF summary and clients lose their only record of what was discussed.
Nine screens, one continuous flow — from advocate search to a signed-off case summary.Advocate-Side Scheduling Features
The advocate app — Legal Advisor Advocate — is where the actual scheduling logic lives. The client side just consumes it.
Weekly availability scheduler: Advocates set recurring open hours by day of week, blocking out court dates and personal time without contacting support.
Accept or reject with full case visibility: Advocates see the voice note and documents before committing, so no one wastes a slot on a case outside their practice area.
Earnings tied to completed consultations: Payouts trigger on completed, paid consultations only — never on bookings that stall or get rejected.
Calendar view of upcoming and past cases: One screen shows what’s next, what’s pending payment, and what’s already closed out.
Practice-area tagging: Availability and case requests filter through the same category and sub-category tags clients use to search, so mismatched cases never reach an advocate’s queue.
Give advocates this much control and the marketplace stays healthy on its own. Nobody accepts a case they can’t handle, and nobody sits waiting on a slot that was never really open.
Availability, accept/reject, earnings, and a case calendar — the four screens that keep advocates in control of their schedule.Notification & Reminder System
A booking flow is only as reliable as its notifications. Miss one push alert and a client assumes the app is broken — or worse, that the advocate ghosted them.
Booking confirmed: The client gets immediate confirmation the moment a case request goes out to an advocate.
Advocate accepted: A push alert fires the second the advocate responds, so no one sits refreshing the app.
Payment due: A clear prompt to complete payment the instant acceptance triggers the charge.
Consultation starting: A reminder as the scheduled call time approaches, sent to both sides.
Low-balance warnings: During the call itself, alerts fire at five, two, and one minute remaining, so no one gets cut off mid-sentence.
Scheduled call reminders: For appointments booked ahead, reminders land the day before and again shortly before the call, on both the client and advocate side.
Timely notifications aren’t a nice-to-have here. They’re what stops a booking from quietly dying in someone’s notification tray.
Every stage above fires as a push notification and an in-app alert, so the update reaches a user whether the app is open or closed.
Payment & Billing Mechanics
Money moves at exactly two points in this flow, and the timing is deliberate, not incidental.
Charge on acceptance, not on booking: Nobody pays for a case an advocate hasn’t agreed to take — this alone eliminates a whole category of refund disputes.
Per-minute billing on the call: Voice consultations bill by the minute through Razorpay, with low-balance warnings built into the call screen itself.
Auto-generated invoice and summary: A PDF case summary and payment record generate automatically once the call ends — nothing for admin staff to compile by hand.
Every transaction lands in the admin panel: Bookings, acceptances, payments, and payouts all sync to the Blade/AdminLTE admin dashboard in real time.
Every booking, payment, and payout tracked from a single admin dashboard — no reconciliation spreadsheets required.That visibility matters as much as the client-facing app does. A support team fielding a payment dispute needs the full case timeline in one screen, not three systems.
What This Costs to Build vs License
Two paths get you to a working booking app. The gap between them is bigger than most founders expect going in.
Custom development means hiring for Laravel, Flutter (iOS and Android), Reverb, Agora integration, and Razorpay — then testing all of it against real call drops and payment edge cases.
Licensing ready-made source code skips the build entirely. You inherit the same architecture, already tested in production, and start customizing from day one.
Two native-feeling apps, not one: Client and advocate apps both need to ship, stay in sync, and pass App Store and Play Store review.
Real-time infrastructure is unforgiving: Chat and voice calling fail in ways that only show up under real network conditions, which means real testing cycles.
Payment logic has to be exact: Getting accept-then-charge timing wrong isn’t a cosmetic bug — it’s a refund and a support ticket.
Ongoing OS and SDK updates: Every iOS and Android release, plus every Agora and Razorpay SDK update, is a maintenance cost that doesn’t stop after launch.
Custom build versus white-label source — the difference shows up in both budget and time-to-launch.| Path | Upfront Cost | Time to Launch | Ownership | Best For |
|---|---|---|---|---|
| Custom Build | $35,000–$90,000+ | 5–9 months | Full, but you carry all technical debt | Teams with in-house dev capacity and a differentiated roadmap |
| White-Label Source (Legal Advisor) | $799–$2,000 one-time | 1–2 weeks | Full source-code ownership, no recurring platform fees | Founders who want to launch and iterate fast |
Neither path is wrong. But if the booking flow above is what you actually need — not a from-scratch experiment — one of these paths gets you there a lot faster than the other.
Why Build on Legal Advisor
Every flow described in this guide — search, KYC profiles, availability, case submission, accept/reject, payment-on-acceptance, chat, per-minute calls, PDF summaries — is already built into Legal Advisor.
It’s live today at legaladvisorapp.com, running on Laravel 11, Flutter, Reverb, Agora, and Razorpay in production — not sketched out on a slide deck.
The booking, payment, and call infrastructure already built, tested, and running — ready to license and rebrand.One-time source-code cost: No monthly platform fee, no revenue share on consultations you close.
Two ready apps: Legal Advisor for clients and Legal Advisor Advocate for advocates, built and tested together as one system.
Full ownership: The source code is yours to rebrand, extend, and run on your own infrastructure.
A booking engine that already handles the hard part: Case-first booking, accept/reject logic, and payment-on-acceptance timing — the exact mechanics this guide just walked through.
Room to specialize: Rebrand it for a single practice area, a regional bar association, or a specific country’s KYC and payment requirements.
None of this is theoretical. It’s the same booking flow described screen by screen above, already shipped and running against real advocates and real payments.
If you’re scoping a legal appointment app and want to see this booking flow running in a live product before committing engineering budget, reach out to our team.
For the operational side — case tracking, billing, and client portals once a firm is up and running — see our guide to law firm management software.
Frequently Asked Questions
Why charge on acceptance instead of at booking?
Charging at the moment of booking means charging clients for cases advocates later reject — that creates refund friction and erodes trust fast.
Charging on acceptance means money only moves once both sides have committed, which is why Legal Advisor triggers Razorpay payment only after the advocate accepts.
How does the app prevent double-booking an advocate’s time slot?
The weekly availability scheduler marks a slot unavailable the moment an advocate accepts a case tied to it, so the same slot can’t be requested twice.
Rejected or expired requests release the slot automatically, keeping the calendar accurate without any manual admin intervention.
Can consultations be scheduled for later instead of immediate?
Yes. Clients can request a specific slot from the advocate’s published weekly availability, rather than needing the advocate free right now.
Either way — scheduled or immediate — the same accept, pay, chat-unlock sequence applies before the call begins.
What happens if an advocate rejects a case after payment?
In the Legal Advisor flow, payment only triggers after acceptance — so a rejection can’t happen post-payment by design.
That ordering is deliberate. It removes the refund scenario entirely instead of building a process to manage it afterward.
Written by
Aditi
Building software at PRS India.