← Back to blog
May 15, 2026 · 11 min read · By DRP-OS Team

GST + Mixed Payments: How DRP-OS Handles Cash, UPI, Card & Partial Payments

Real clinic billing is messy: consultation is GST-exempt, medicines aren't. Patients pay part in cash, part on UPI, sometimes finish next visit. Here's how a proper system handles it.

Generating a clean bill for an Indian clinic visit is harder than it looks. Why?

  • Doctor consultation is GST-exempt (SAC 9993)
  • Medicines dispensed are GST-taxable (5%, 12%, or 18% depending on category)
  • Courier charges may be separately billed
  • The patient might pay ₹500 in cash + ₹500 via UPI
  • Or they pay ₹500 today, promise to pay the rest next visit

Most clinic software handles one or two of these. None handle all of them naturally. DRP-OS does. Here's how.

The visit-based billing model

In DRP-OS, every interaction with a patient is a visit. A visit has multiple components, billed and tracked separately:

  • counter_service — quick walk-in service (medicine pickup, dressing, injection) without full consultation
  • counter_price — flat fee for that counter service
  • clinic_visit_items — itemized medicines and services with quantities and costs
  • subtotal — sum of medicine costs
  • extra_medication_charges — additional medication costs added manually
  • courier_charges — delivery charges if medicine is being couriered
  • grand_total — final amount due
  • amount_paid — amount actually paid so far
  • payment_status — unpaid / partial / paid / refunded

Each visit can have multiple clinic_visit_payments entries — meaning multiple payment events tracked separately.

GST handling — the right way

India's GST law for medical services is specific:

  • Doctor consultation (SAC 9993) — GST-exempt
  • Medicines dispensed — 5%, 12%, or 18% depending on the specific medicine
  • Cosmetic procedures, hair transplant — 18% GST
  • Hospital rooms above ₹5,000/day — 5% GST

DRP-OS handles this:

  • Consultation/counter service charges flow through as exempt
  • Each medicine in clinic_products has its own GST percentage
  • The bill auto-splits CGST + SGST (if same-state) or IGST (if interstate)
  • The PDF invoice shows the breakup with HSN codes
  • Your GSTIN is configured once in clinic_settings and appears on every invoice

You don't calculate GST math by hand. The system does it correctly the first time.

Mixed payment methods

The payment method enum supports:

  • cash — physical cash
  • upi — PhonePe, GPay, BHIM, Paytm UPI
  • card — debit or credit card
  • bank_transfer — NEFT/IMPS/RTGS
  • cheque — for older patients who still write cheques
  • other — vouchers, insurance reimbursement, anything else

A single visit can have multiple payment entries. For example:

  1. Patient owes ₹1,200 grand total
  2. Payment #1: ₹500 cash (recorded at visit)
  3. Payment #2: ₹700 UPI (recorded same day, on PhonePe transfer confirmation)
  4. System sees amount_paid = 1200, sets payment_status = paid

Or, the patient pays partially:

  1. Patient owes ₹1,200
  2. Payment #1: ₹500 cash today (recorded)
  3. amount_paid = 500, payment_status = partial
  4. 2 weeks later, patient returns for follow-up
  5. Payment #2: ₹700 UPI (cleared)
  6. amount_paid = 1200, payment_status = paid

The system tracks who recorded each payment (recorded_by) and when (paid_at). For dispute resolution, you have a clean audit trail.

Why partial payments matter in India

In tier-2 and tier-3 cities, payment flexibility is essential:

  • Daily-wage earners may not have full payment on day of visit
  • Elderly patients on pensions pay around the 1st of the month
  • Family members handle payment separately
  • Insurance reimbursements clear days/weeks later

A rigid "pay full or no service" model loses these patients. A proper partial-payment model keeps them — with clear tracking so you don't forget who owes what.

Counter service for walk-ins

Sometimes a patient walks in without an appointment:

  • Dressing change after surgery
  • Injection (B12, vitamin D, etc.)
  • Quick medicine pickup
  • BP / sugar check

You don't need a full visit form for these. DRP-OS supports counter service:

  • Patient walks in, you mark counter_service = 1
  • Charge a flat counter price (configured per clinic in settings)
  • Skip diagnosis / prescription fields if not needed
  • Track payment in the same payment system

This means your "quick services" don't get lost in the books. Every rupee is tracked, every patient interaction has a record.

What the invoice PDF shows

The final invoice PDF includes:

  • Clinic name, address, GSTIN, contact
  • Invoice number (sequential, no gaps)
  • Patient name and basic details
  • Date of service
  • Itemized list of medicines/services with HSN codes
  • Subtotal
  • CGST + SGST split (same-state) or IGST (interstate)
  • Courier charges (if applicable)
  • Grand total
  • Amount in words
  • Payment history with methods and dates
  • Balance due (if any)
  • Your digital signature

This format meets all 14 mandatory GST invoice requirements. You can print it directly or share via WhatsApp. The patient gets a tax-compliant bill they can use for insurance reimbursement or company medical claims.

Courier delivery built in

If your clinic delivers medicine to patients (common in metro cities), DRP-OS handles courier billing:

  • Default courier charges configured in clinic_settings.courier_default_charges
  • Add courier charge as a line item per visit
  • Track delivery status separately from payment status

Try it

Full visit-based billing with GST, mixed payments, partial payments, counter service, and courier — all included in DRP-OS Clinic from the starter plan.

Start your 24-hour free trial. WhatsApp +91 9560793054 for questions.

Try DRP-OS Clinic free for 24 hours

Built for Indian solo doctors. GST invoices, Hindi prescriptions, patient records. ₹1,499/month. No credit card.

Start free trial →

Related articles

May 15, 2026 · 10 min

A Patient Portal Where Patients Actually See Their Records

Patients shouldn't have to WhatsApp your receptionist to ask "what did the doctor prescribe last time?" Here's a patien…

May 15, 2026 · 11 min

Followups That Actually Happen: Cut No-Shows, Increase Repeat Visits

You see a diabetic patient on May 15 and tell them "come back in 3 months." They don't. The next time you see them, the…

May 15, 2026 · 12 min

Patient Lifetime Value: Know Your Best Patients (And Get More Like Them)

A patient who spends ₹50,000 with you over 5 years is worth more than 30 walk-ins. But most clinic software treats them…