๐Ÿ› ๏ธ
TradeKhataUser Manual
๐Ÿ  Overview

๐Ÿ  Welcome to TradeKhata

Your complete digital office for small-trade contractors โ€” Painting, Tiles, Plumbing & Rajmistri (Mason) โ€” from quotation to invoice, labor to payment, all in one place.

๐ŸŽฏ What Does TradeKhata Do?

TradeKhata replaces the notebook that every small-trade contractor carries. Everything you calculate, track, and record daily โ€” material quantities, quotations, attendance, advances, client payments, invoices โ€” is now digital, fast, and organized.

๐Ÿงฐ One Platform, Four Trades
TradeKhata started as PaintKhata (painting only) and has grown into a multi-trade platform. Each job belongs to exactly one trade โ€” Painting, Tiles, Plumbing, or Rajmistri (Mason) โ€” and the Smart Estimator, material stock, and labor rates all adapt to that trade automatically. See My Trades in the sidebar to enable additional trades on your account.

FeatureWhat It Does
Smart EstimatorTrade-aware calculator โ€” enter area/items & rates, get a complete material & cost breakdown instantly, in the format that matches the job's trade
Clients & JobsOrganize all your work by client and job, track status at a glance
My TradesEnable Painting, Tiles, Plumbing, and/or Rajmistri on your account (plan-limited)
Materials StockTrack trade-specific inventory (paint, tiles, pipes, cement...); issue to jobs; get low-stock alerts
Labor RatesSave your own per-category labor rates per trade; auto-fill into quotations
AttendanceMark daily field-worker attendance; wages are auto-calculated
Labor AdvancesRecord cash advances; see each worker's wage vs. advance balance
Milestone PaymentsRecord advance, mid-job & final payments from clients
GST InvoiceAuto-numbered professional tax invoices with CGST & SGST
P&L ReportsSee actual profit or loss for every job, plus a trade-wise monthly breakdown
WhatsApp ShareSend quotations & payment reminders directly to clients
๐Ÿงฐ The Four Trades
TradeField Worker LabelEstimator Style
๐ŸŽจ PaintingPainterArea-based โ€” paint/primer/putty litres from wall area & coats
๐Ÿ”ฒ TilesTilerBox-based tile purchase (with wastage), adhesive & grout, optional skirting, itemized labor per work category
๐Ÿ”ง PlumbingPlumberFully itemized materials, plus labor billed per connection point
๐Ÿงฑ Rajmistri (Mason)MasonPlastering / Brickwork / PCC (each volume & area based) or Maintenance (itemized)
โš ๏ธ Rajmistri Is Currently Early-Access
Rajmistri's material yield constants (cement bags per cft, brick counts, etc.) are still being validated with real masons. New accounts won't see it in their own "Enable Trade" list yet โ€” contact your platform administrator if you'd like early access.
๐Ÿ‘ฅ Who Uses Which Role
RoleWhoAccess Level
OwnerThe contractor (you)Full access to everything
SupervisorSite supervisorJobs, attendance, materials
AccountantBookkeeperPayments, invoices, reports
Field WorkerPainter / Tiler / Plumber / Mason on your teamMobile view โ€” own attendance & advance balance only. The label shown depends on your job's trade; the underlying role is the same for all trades.
Platform AdminSaaS operatorManages all contractor accounts & which trades are available
๐Ÿ—บ๏ธ Typical Workflow
1
๐Ÿ”‘
Sign up & log in โ€” create your free trial account (Painting is enabled by default)
2
๐Ÿ‘ฅ
Add a client โ€” name, phone, address
3
๐Ÿ—๏ธ
Create a job โ€” link it to the client and pick the trade (if you have more than one enabled)
4
๐Ÿงฎ
Run the Smart Estimator โ€” the form shown matches the job's trade automatically
5
๐Ÿ“„
Share the quotation โ€” WhatsApp, email, or print PDF
6
๐Ÿ“ฆ
Issue materials โ€” deduct from stock as work begins
7
๐Ÿ“…
Mark daily attendance โ€” wages auto-calculated per worker
8
๐Ÿ’ฐ
Record client payments โ€” advance, mid-job, final
9
๐Ÿงพ
Generate GST invoice โ€” auto-numbered, printable
10
๐Ÿ“ˆ
Check P&L report โ€” see actual profit for the job, and by trade for the month

๐Ÿ”‘ Login & Signup

How to create an account and log in.

๐Ÿ“ Create a New Account

Go to /signup


  1. Full NameYour name โ€” appears on all quotations and invoices.
  2. Email AddressThis becomes your login ID. Cannot be changed later.
  3. Phone(Optional) Your contact number.
  4. Business Namee.g. "Sharma Contractors" โ€” shown on quotations and invoices.
  5. PasswordMinimum 8 characters.
  6. Click "Create Account"A 30-day free trial starts immediately โ€” no card required. The Painting trade is enabled automatically; add more trades anytime from My Trades.
๐Ÿ” Who Logs In Where
WhoURLCredentials
Owner / Contractor/loginEmail + Password
Supervisor / Accountant/loginEmail + Password (created by owner in Settings)
Field Worker (Painter/Tiler/Plumber/Mason)/painter-loginPhone number + one-time code shown on screen (no SMS needed)
Super Admin/platform/loginPlatform admin credentials
๐Ÿ’ก How Field Worker Login Actually Works
There's no separate password for field workers. They enter their registered phone number at /painter-login, and a 4-digit code appears right there on the screen โ€” the owner/supervisor reads it aloud (or shows the phone) so the worker can type it in on their own phone. Zero SMS cost, works even with basic phones nearby.
๐Ÿ” Forgot Your Password?
  1. On the login page, click "Forgot password?"
  2. Enter your registered email address and submit.
  3. A password reset link will be sent to your email.
  4. Click the link and set a new password.

๐Ÿ“Š Dashboard

The first screen after login โ€” a summary of everything at a glance.

๐Ÿ“Œ What You See on the Dashboard
SectionDescription
Trial BannerIf on a free trial, shows how many days are remaining
ClientsTotal number of clients added
Active JobsJobs with status: Quoted, Confirmed, or In Progress
Completed JobsJobs marked as Completed
Total Quoted ValueSum of all quotation totals
Recent JobsYour last 6 jobs with status and quoted amount
๐Ÿ’ก Quick Start
Use the "New Job" button on the dashboard to jump straight into creating a job. If you have no clients yet, add one first from the Clients menu.

๐Ÿ‘ฅ Clients

/clients โ€” Manage all your clients in one place.

โž• Add a New Client

Go to /clients/create or click "Add Client" from the Clients page.


FieldDescriptionRequired?
NameClient's full nameYes
PhoneWhatsApp number โ€” needed for sharing quotations & remindersRecommended
EmailNeeded for emailing invoices & quotationsRecommended
AddressHome or site addressNo
NotesAny additional notes about this clientNo
โš ๏ธ Phone Number Matters
To send quotations and payment reminders via WhatsApp, the client's phone number is essential. Enter a 10-digit Indian mobile number โ€” the system automatically adds +91.
๐Ÿ” Search Clients

Use the search box on the Clients list page to find a client by name or phone number.

๐Ÿ“‹ Client Detail Page

Click any client's name to open their detail page. You can see all their contact info, a list of all jobs for that client, and a "+ Job" button to create a new job directly for them.

โœ๏ธ Edit or Delete a Client

From the client detail page, click "Edit" to update any information. To delete, use the delete option โ€” note that a client cannot be deleted if they have jobs attached to them.

๐Ÿ—๏ธ Jobs

/jobs โ€” Every painting project is tracked as a Job.

โž• Create a New Job
FieldDescription
Trade *Painting / Tiles / Plumbing / Rajmistri โ€” only shown as a dropdown if you have more than one trade enabled. With one trade, it's set automatically.
Client *Select an existing client from the dropdown. If not listed, add them first.
Job Title *e.g. "Mr. Rahul's 2BHK Interior Painting" or "Flat 3B Bathroom Tiling"
Site AddressThe physical location where work will happen
SupervisorAssign a supervisor from your staff (optional)
Start Date / End DatePlanned schedule for the job
StatusInitial status โ€” usually "Quoted"
โš ๏ธ Trade Can't Be Changed Later
Once a job is created, its trade is fixed โ€” this keeps material stock and quotation history from mixing across trades. If you picked the wrong trade, create a new job instead.
๐Ÿท๏ธ Understanding Job Statuses
StatusMeaningWhen to Use
QuotedQuotation sent to clientWhen you create the job
ConfirmedClient has agreedAfter client says yes
In ProgressWork is underwayWhen work starts on site
CompletedWork is doneAfter final handover
CancelledJob was cancelledIf the job does not proceed
๐Ÿ“‹ Job Detail Page โ€” Your Command Center

Click any job to open its detail page. Everything related to that job is here:

SectionWhat You Can Do
Job DetailsSee all info, quoted amount, balance due at a glance
Job PhotosUpload before/during/after site photos
QuotationsAll quotations for this job; create a new one
Materials IssuedSee what materials have been issued; issue more
Quick ButtonsSmart Estimator ยท Payments ยท Attendance ยท Invoice ยท P&L
๐Ÿ”ฝ Filter Jobs by Status

At the top of the Jobs list page, click any status button โ€” All, Quoted, Confirmed, In Progress, Completed, Cancelled โ€” to filter the list instantly.

๐Ÿงฎ Smart Estimator Core Feature

TradeKhata's signature feature โ€” enter a few numbers and get a complete, professional quotation in seconds. The form shown automatically matches the job's trade.

๐Ÿงญ One Estimator, Four Forms
From a Job detail page, click "Smart Estimator" (or go to /jobs/{id}/quote). TradeKhata looks at the job's trade and shows the matching calculator โ€” Painting, Tiles, Plumbing, or Rajmistri. Jump to the relevant section below:
๐ŸŽจ Painting ๐Ÿ”ฒ Tiles ๐Ÿ”ง Plumbing ๐Ÿงฑ Rajmistri

๐ŸŽจ Painting

๐Ÿš€ How to Use the Painting Estimator
  1. Wall Area (sq.ft)Enter the total paintable wall area. Example: 950
  2. Number of CoatsUsually 2. Each coat multiplies paint consumption.
  3. Paint DetailsBrand name (optional for display), coverage in sq.ft per litre, and price per litre.
  4. Primer (tick if needed)Enter coverage (sq.ft/litre) and price per litre.
  5. Wall Putty (tick if needed)Enter coverage (sq.ft/kg) and price per kg.
  6. Labor Rate (โ‚น/sq.ft)Your charge per square foot for labor.
  7. Wastage Buffer (%)Default 10% โ€” adds a safety margin to material quantities to account for spills and uneven surfaces.
  8. Click "Calculate Quotation"The system calculates everything instantly and saves the quotation.
๐Ÿ”ข How the Calculations Work
Paint (litres) = (Area ร— Coats รท Coverage per litre) ร— (1 + Wastage%) Primer (litres) = (Area รท Primer coverage per litre) ร— (1 + Wastage%) [only if Primer is ticked] Putty (kg) = (Area รท Putty coverage per kg) ร— (1 + Wastage%) [only if Putty is ticked] Material Cost = (Paint L ร— Paint price) + (Primer L ร— Primer price) + (Putty kg ร— Putty price) Labor Cost = Area ร— Labor rate per sq.ft โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ TOTAL = Material Cost + Labor Cost
๐Ÿ’ก Example
Area: 800 sq.ft | Coats: 2 | Paint Coverage: 120 sq.ft/L | Paint Price: โ‚น180/L | Labor: โ‚น12/sq.ft | Wastage: 10%

Paint = (800ร—2รท120) ร— 1.10 = 14.67 L โ†’ โ‚น2,640
Labor = 800 ร— 12 = โ‚น9,600
Total Quotation = โ‚น12,240
๐Ÿ“Š Standard Coverage Reference
Product TypeTypical Coverage
Interior Emulsion100โ€“130 sq.ft per litre
Exterior Emulsion80โ€“100 sq.ft per litre
Distemper120โ€“150 sq.ft per litre
Primer (White/Grey)130โ€“160 sq.ft per litre
Wall Putty15โ€“22 sq.ft per kg

๐Ÿ”ฒ Tiles

๐Ÿš€ How to Use the Tiles Estimator
  1. Tile Area (sq.ft)Total area to be tiled.
  2. Box Coverage & PriceSq.ft covered per box, and price per box โ€” tiles are always purchased in whole boxes, rounded up.
  3. Wastage (%)Default 8% โ€” covers cutting and breakage.
  4. Batch / Lot No.Optional โ€” record the tile batch/lot number so you (and future re-orders) can match the exact shade.
  5. Adhesive & GroutCoverage rates and prices โ€” defaults are pre-filled but editable.
  6. Skirting (tick if needed)Running feet and price per running ft.
  7. Labor โ€” per work categoryAdd one line per type of work (Floor laying, Wall dado, Skirting, Stair steps, Old tile removal, etc). Pick a saved category from Labor Rates to auto-fill the rate, or type a custom line.
๐Ÿ’ก Example
Area: 200 sq.ft | Box Coverage: 17.5 sq.ft/box @ โ‚น950/box | Wastage: 8%

Boxes needed = ceil(200 ร— 1.08 รท 17.5) = 13 boxes โ†’ โ‚น12,350
Plus adhesive, grout, and itemized labor lines are added on top.
๐Ÿ”ข How the Calculations Work
Tile Boxes = ceil( (Area ร— (1 + Wastage%)) รท Box Coverage ) Adhesive Bag = ceil( (Area ร— Adhesive kg/sq.ft) รท Bag Weight ) Grout (kg) = Area รท Grout Coverage Material Cost = (Boxes ร— Box Price) + (Adhesive Bags ร— Bag Price) + (Grout kg ร— Grout Price) + Skirting Cost Labor Cost = ฮฃ (Qty ร— Rate) for every labor line added โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ TOTAL = Material Cost + Labor Cost

๐Ÿ”ง Plumbing

๐Ÿš€ How to Use the Plumbing Estimator

Plumbing work doesn't fit an "area" model โ€” it's itemized instead.

  1. Add Material LinesOne row per item โ€” pipe, fitting, valve, tap, etc. โ€” with quantity, unit, and rate. Add as many rows as needed.
  2. Number of PointsCount of water inlet/outlet connections in the job.
  3. Rate per PointYour labor charge per connection point.
๐Ÿ’ก Example
10 ร— CPVC pipe @ โ‚น180 + 20 ร— elbow @ โ‚น25 = โ‚น2,300 material
8 points ร— โ‚น450/point = โ‚น3,600 labor
Total Quotation = โ‚น5,900
๐Ÿ”ข How the Calculation Works
Material Cost = ฮฃ (Item Qty ร— Item Rate) for every material line Labor Cost = Number of Points ร— Rate per Point โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ TOTAL = Material Cost + Labor Cost

๐Ÿงฑ Rajmistri (Mason)

๐Ÿš€ Pick a Work Type First

Rajmistri covers several different kinds of work, each with its own calculation. Pick the Work Type dropdown first โ€” the matching fields appear below it.

Work TypeModelKey Inputs
PlasteringArea-basedArea, thickness (mm), cement:sand ratio, wastage%
BrickworkWall volumeLength, height, thickness of wall, bricks/cft, cement & sand ratios
PCC (concrete flooring base)VolumeLength, width, thickness (in), mix ratio (e.g. 1:2:4)
Maintenance / RepairItemizedFree-form material lines + labor days or a flat charge โ€” same style as Plumbing
๐Ÿšซ RCC (Slab / Beam / Column) Is Not Auto-Calculated
Reinforcement steel quantity depends on structural design load calculations โ€” this is an engineer's call, not a contractor thumb-rule, and a wrong estimate here is a safety risk, not just a billing mistake. To quote RCC work, use Maintenance and enter your own quantities from the structural drawing.
โš ๏ธ Verify Rates for Your Region
Cement bags/cft, bricks/cft, and similar yield constants vary by regional brick size and mix practice. The defaults shown are starting points โ€” always double-check with your own experience before quoting a client.
๐Ÿ”ข How the Calculations Work
Plastering: Mortar Volume (cft) = Area ร— (Thickness mm รท 304.8) ร— Dry Volume Factor ร— (1 + Wastage%) Cement Bags = ceil(Mortar Volume ร— Cement Share รท Bag Volume) Labor Cost = Area ร— Labor Rate per sq.ft Brickwork: Wall Volume (cft) = Length ร— Height ร— Thickness Bricks Needed = ceil(Wall Volume ร— Bricks/cft ร— (1 + Wastage%)) Labor Cost = Wall Volume ร— Labor Rate per cft PCC: Volume (cft) = Length ร— Width ร— (Thickness in รท 12) Labor Cost = Volume ร— Labor Rate per cft Maintenance: Material Cost = ฮฃ (Item Qty ร— Item Rate) Labor Cost = (Days ร— Rate/day) + Flat Charge

๐Ÿ“„ Quotations โ€” Share, Print & Email

After generating a quotation, send it to your client in multiple ways.

๐Ÿ‘€ View a Quotation

After submitting the Smart Estimator, you land on the quotation result page (/quotations/{id}). You'll see the full materials breakdown, cost summary, and action buttons.

๐Ÿ–จ๏ธ Print or Save as PDF
  1. On the quotation page, click "Print / PDF".
  2. A clean, professional print layout opens โ€” company name, client details, materials table, and total.
  3. Press Ctrl+P (Windows) or Cmd+P (Mac), or click the "Print / Save as PDF" button.
  4. Choose your printer, or set destination to "Save as PDF" to create a PDF file.
๐Ÿ’ก Best PDF Quality in Chrome
Print โ†’ Destination: "Save as PDF" โ†’ Margins: None โ†’ enable "Background graphics" โ†’ Save.
๐Ÿ’ฌ Share via WhatsApp
  1. On the quotation page, click "Share via WhatsApp".
  2. The system sends a formatted WhatsApp message to the client's phone number with job title, area, and total cost.
  3. In dev/mock mode (no API key set), messages are logged to storage/logs/whatsapp.log. See WhatsApp setup to go live.
โš ๏ธ Client Phone Required
The client must have a phone number saved. If the "Share via WhatsApp" button doesn't appear, edit the client and add their phone number.
๐Ÿ“ง Email the Quotation
  1. Click "Email to Client" on the quotation page.
  2. The system sends a professional HTML email with the full quotation breakdown to the client's email address.
  3. In dev/mock mode, emails are logged to storage/logs/email.log. See Email setup to go live.
๐Ÿ“ Multiple Quotations per Job

You can run the Smart Estimator multiple times for the same job โ€” useful if the client wants to compare options (e.g. different paint brands, or tile sizes). All quotations are listed on the Job detail page. The most recent one sets the job's "Quoted Amount".

๐Ÿ“ฆ Materials Stock Phase 2

/materials โ€” Track your trade-specific inventory. Each item belongs to one trade, so a Painting job never sees Tile adhesive and vice versa.

โž• Add a Material Item
FieldDescription
TradeWhich trade this item belongs to โ€” only shown as a dropdown if you have more than one trade enabled
Item Namee.g. "Asian Paints Tractor White", "600ร—600 Vitrified Tile", "CPVC Pipe 3/4""
UnitLitre / Kilogram / Piece / Bag / Box / Sq.ft / Running ft
Opening QuantityHow much you currently have in stock
Low Stock Alert ThresholdWhen stock falls to or below this level, the row turns red
Batch / Lot No. TilesOptional โ€” record the tile batch/lot so you can match the exact shade on repeat orders
๐Ÿงฐ Filter by Trade
If you have multiple trades enabled, the Materials list has a trade filter at the top so you can quickly switch between, say, your Painting stock and your Tiles stock.
๐Ÿ”ด Low Stock Alert

On the Materials Stock page, any item whose quantity is at or below the threshold is highlighted in red with a "Low" badge. This is your signal to restock before starting the next job.

โœ… Restocking
When you purchase new stock, go to Materials โ†’ Edit for that item and update the "Quantity In Hand" to the new total.
๐Ÿ“ค Issue Materials to a Job
  1. Open a Job detail page and find the "Materials Issued" section.
  2. Click "Issue Material" (the yellow button).
  3. Select the material from the dropdown โ€” only items matching this job's trade are shown โ€” and enter the quantity to issue.
  4. Submit โ€” the stock quantity decreases automatically.
โ†ฉ๏ธ Made a Mistake? Undo It
In the Materials Issued table, click the โ†ฉ (undo) button next to any row to reverse the issue and return the quantity to stock.

๐Ÿ“… Attendance Phase 2

/jobs/{id}/attendance โ€” Mark daily field-worker attendance and auto-calculate wages.

โœ… How to Mark Attendance
  1. From the Job detail page, click "Attendance".
  2. Select the date โ€” today's date is pre-filled.
  3. For each worker, choose a status:

    Present โ€” full daily wage
    Half Day โ€” half daily wage
    Absent โ€” no wage
  4. Click "Save Attendance" โ€” all workers are saved in one go.
๐Ÿ’ก How Wages Are Calculated
Each worker has a Daily Wage set in Settings โ†’ Staff Logins. The system uses this to calculate:
Present = Daily Wage ร— 1.0  |  Half Day = Daily Wage ร— 0.5  |  Absent = โ‚น0
๐Ÿ“‹ Attendance History

The right side of the attendance page shows all past records for this job โ€” date, worker name, status, and wage. To correct an entry, click the ๐Ÿ—‘๏ธ button to delete it and re-mark it.

โš ๏ธ No Workers Showing?

If no one appears on the attendance page, you need to add them first. Go to Settings โ†’ Staff Logins and add a staff member with the field-worker role. The page label shown (Painter/Tiler/Plumber/Mason) matches this job's trade.

๐Ÿ’ธ Labor Advances Phase 2

/advances โ€” Record cash advances given to field workers and track balances.

โž• Record an Advance
FieldDescription
Worker *Which field worker received the advance
Amount *How much cash was given (โ‚น)
DateWhen the advance was given (defaults to today)
Link to JobOptionally link this advance to a specific job
NotesAny additional notes
๐Ÿ“Š Worker Balance Summary

At the top of the Advances page, a summary table shows each worker's running balance:

ColumnMeaning
Total Wages EarnedAll wages earned through attendance (Present + Half Day)
Total Advances GivenTotal cash advances recorded
Net Balance (+) payableWages > Advances โ€” you still owe this amount to the worker
Net Balance (-) advance pendingAdvances > Wages โ€” the worker has taken more than earned; this is deducted at settlement

๐Ÿ“ท Job Photos Phase 2

Document your work with before, during, and after photos โ€” proof of quality for every job.

๐Ÿ“ธ Upload Photos
  1. Open a Job detail page and find the "Job Photos" section on the left panel.
  2. Select the stage: Before / During / After
  3. Click the file input and select one or more photos (JPG, PNG, WebP supported; max 5MB each).
  4. Click "Upload" โ€” photos appear immediately in the gallery below.
๐Ÿ“Œ Why Document with Photos?
Before/after photos demonstrate the quality of your work and help resolve any client disputes about completed work. They also serve as a portfolio for future clients.
๐Ÿ”’ Photo Security

Photos are stored securely outside the public web folder. They can only be viewed by logged-in users โ€” not accessible via a direct URL by outsiders.

๐Ÿ—‘๏ธ Delete a Photo

Hover over any photo in the gallery and click the โœ• red button in the top-right corner to delete it permanently.

๐Ÿ’ฐ Milestone Payments Phase 3

/jobs/{id}/payments โ€” Track every payment received from a client.

๐Ÿ“Š Payment Summary

At the top of the Payments page, three tiles show the financial position of the job:

TileMeaning
Quoted AmountThe total from the job's latest quotation
Total Received greenSum of all payments recorded so far
Balance Due redQuoted Amount minus Total Received โ€” what's still owed
โž• Record a Payment
FieldDescription
MilestoneAdvance (before work) / Mid-Job / Final Payment / Other
Amount (โ‚น) *How much was received
ModeCash / UPI / Bank Transfer / Other
UPI ReferenceTransaction ID from the UPI app (appears when UPI/Bank is selected)
Date ReceivedWhen the payment was received (defaults to today)
NotesAny remarks
๐Ÿ’ฌ Send a Payment Reminder via WhatsApp

If there's a balance due and the client has a phone number, the "Send Reminder" button appears. Tap it to send the client a WhatsApp message showing their outstanding balance.

๐Ÿงพ GST Invoice Phase 3

Generate professional, auto-numbered GST tax invoices with one click.

๐Ÿงพ Generate an Invoice
  1. Set up GST first โ€” go to Settings โ†’ GST & Invoice and configure your GSTIN, rates, and invoice prefix.
  2. Open the job and click the "Invoice" button, or go to /jobs/{id}/invoice.
  3. The first time you visit, an invoice is automatically generated โ€” invoice number, CGST, SGST, and total are all calculated.
  4. A professional print layout opens. Click "Print / Save as PDF".
โš ๏ธ One Invoice Per Job
Each job has one invoice. The second time you visit the invoice page, the same invoice is shown โ€” it is not regenerated. This keeps your invoice numbers sequential and consistent.
๐Ÿ’ฐ GST Calculation
Subtotal = Job's Quoted Amount (from Smart Estimator) CGST = Subtotal ร— CGST Rate (default 9%) SGST = Subtotal ร— SGST Rate (default 9%) โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ Invoice Total = Subtotal + CGST + SGST
๐Ÿ’ก Not GST Registered?
Keep the "GST Registered Business" toggle off in GST Settings. Your invoice will only show the subtotal โ€” no tax lines.
๐Ÿ“ง Email the Invoice

On the invoice page, click "Email Invoice" to send the invoice to the client's email address. The client must have an email saved. In mock mode, the email is logged to storage/logs/email.log.

๐Ÿ”ข Invoice Numbering

Invoices are numbered automatically using the format you set in GST Settings:

Prefix: INV โ†’ INV-2025-0001, INV-2025-0002, INV-2025-0003 ...

You can change the prefix (e.g. to your initials like "SP") at any time. The sequence number increments with each new invoice.

๐Ÿ“ˆ P&L Reports

/reports โ€” Know the profit or loss on every job.

๐Ÿ“Š Overview Report

The overview page shows all your jobs in one table with:

ColumnMeaning
ReceivedTotal payments collected from the client
MaterialMaterial cost from the quotation
LaborActual wages paid via attendance records
Profit / Loss +โˆ’Received minus all costs

Total rows at the bottom give you an all-business summary.

๐Ÿงฐ This Month โ€” By Trade

If you have more than one trade enabled, the Overview report also shows a small table breaking down jobs created and revenue received by trade for the current month โ€” useful for seeing which trade is actually paying the bills.

๐Ÿ” Job-Level P&L Detail

Click "Detail" on any job row, or click "P&L" from the Job detail page (/reports/jobs/{id}).

The detail page shows a full breakdown:

  • Every payment received โ€” date, milestone type, amount
  • Material cost from the quotation
  • Per-painter wage breakdown โ€” days present, half days, total earned
  • All advances recorded for this job
  • Net Profit (green) or Net Loss (red)
๐Ÿ’ก P&L Formula
Net = Total Received โˆ’ Material Cost โˆ’ Actual Labor Wages โˆ’ Labor Advances
โš ๏ธ Why Might the Numbers Look Off?
IssueReason
Material cost shows โ‚น0No quotation created for this job yet
Labor wages show โ‚น0No attendance records for this job
Revenue shows โ‚น0No payments recorded yet

๐Ÿ‘ค Staff Logins

/settings/staff โ€” Add supervisors, accountants, and field workers to your account.

โž• Add a Staff Login
RoleNeeds Email + Password?What They Can Access
SupervisorYesJobs, attendance, materials
AccountantYesPayments, invoices, reports
Field WorkerNo โ€” phone + on-screen OTP onlyMobile view only โ€” their own attendance & advance balance

When adding a Field Worker:

  • The email/password fields are hidden automatically
  • Enter a Daily Wage (โ‚น) โ€” used for auto-calculating wages in attendance
  • The role is labeled "Painter" in the dropdown, but this same role is used for Tiler, Plumber, and Mason too โ€” the label shown elsewhere in the app follows whichever trade the worker is assigned jobs in
  • Workers log in at /painter-login with their phone number and an on-screen one-time code โ€” see Login & Signup for details
โš ๏ธ Staff Login Limit

Your subscription plan limits how many staff logins you can have active at once:

PlanStaff Login LimitTrade Limit
Solo1 staff login1 trade
Team5 staff logins2 trades
CrewUnlimitedUnlimited

If you hit either limit, upgrade your plan from the Billing page, or deactivate an unused login first. See My Trades for how the trade limit works.

๐Ÿ”„ Deactivate / Reactivate Staff

On the Staff Logins page, click "Deactivate" to block a staff member from logging in (they are not deleted โ€” all their records are preserved). Click "Reactivate" to restore access.

๐Ÿงฐ My Trades

/settings/trades โ€” Enable and manage which trades your account can create jobs for.

๐Ÿ“‹ Enabled Trades

This page shows every trade you currently have enabled. Painting is enabled automatically when you sign up. Each enabled trade shows the label used for its field workers (Painter/Tiler/Plumber/Mason).

โž• Enable Another Trade
  1. Go to My Trades in the sidebar.
  2. Pick a trade from the "Enable Another Trade" dropdown.
  3. Click "Enable Trade" โ€” it's immediately available when creating a new job.
๐Ÿท๏ธ Labor Categories Seeded Automatically
Enabling Tiles pre-fills standard labor categories (Floor laying, Wall dado, Skirting, Stair steps, Old tile removal...) at โ‚น0 in Labor Rates โ€” go set your own regional rates there.
โš ๏ธ Plan Trade Limit

Solo allows 1 trade, Team allows 2, Crew is unlimited. If you're at your limit, the page shows an upgrade prompt instead of the dropdown.

๐Ÿ”’ Some Trades Are Early Access

Not every trade is available to enable yourself right away. New trades sometimes launch in a limited early-access phase while material-quantity defaults are being validated โ€” Rajmistri is currently in this state. If a trade you want isn't in your dropdown, contact your platform administrator; they can grant it to your account directly (see Super Admin โ†’ Trade Verticals).

๐Ÿšซ What You Can't Do

You can't disable a trade you've already used โ€” jobs, quotations, and materials tied to it stay intact permanently, so historical data is never orphaned.

๐Ÿท๏ธ Labor Rates

/settings/labor-rates โ€” Save your own default labor rates per work category, per trade.

๐ŸŽฏ Why This Exists

Trades like Tiles bill labor per work category (floor laying, wall dado, skirting, stair steps...) rather than one flat rate. Instead of retyping rates on every quotation, save them once here โ€” the Smart Estimator's labor line picker then auto-fills the rate (still editable per quotation).

โœ๏ธ Managing Rates
  1. Switch between your enabled trades using the tabs at the top.
  2. Edit the Label, Unit, or Default Rate for any existing category.
  3. Tick Remove next to a category to delete it, or add a brand-new custom category at the bottom.
  4. Click "Save Labor Rates".

๐Ÿ›๏ธ GST & Invoice Settings

/settings/gst โ€” Configure your GST details and invoice numbering.

โš™๏ธ Settings Explained
SettingDescription
GST Registered BusinessToggle ON to add CGST + SGST lines to all invoices
GSTINYour 15-character GST Identification Number
CGST Rate (%)Central GST rate โ€” default 9%
SGST Rate (%)State GST rate โ€” default 9%
State NameYour state โ€” shown on the invoice for SGST reference
Invoice PrefixLetters at the start of invoice numbers. e.g. "INV" โ†’ INV-2025-0001
Current SequenceRead-only; auto-increments with each invoice generated
๐Ÿ’ก Not GST Registered?
Leave the toggle off. Invoices will simply show the quoted amount as total โ€” no tax breakdown.

โš™๏ธ Business Profile

/settings/profile โ€” Update your business information.

๐Ÿ“‹ What You Can Update
FieldDescription
Your NameOwner's name โ€” shown on quotations and invoices
PhoneYour contact number
Business NameCompany name shown on all documents
UPI IDYour UPI address โ€” shown on invoices for client payments (e.g. yourname@upi)
๐Ÿ’ก Email Cannot Be Changed Here
Your login email is permanent. If you need to change it, contact the platform administrator.

๐Ÿ’ณ Subscription & Billing

/billing โ€” View your plan and renew your subscription.

๐Ÿ“‹ Available Plans
PlanMonthlyYearlyStaff LoginsBest For
Soloโ‚น199/moโ‚น1,999/yr1Solo contractor
Teamโ‚น399/moโ‚น3,999/yr5Small team
Crewโ‚น699/moโ‚น6,999/yrUnlimitedLarger operations
๐Ÿ’ก Yearly Saves You ~17%
Choose yearly billing to save approximately 2 months of fees compared to monthly.
๐Ÿ’ธ How to Pay
  1. Go to /billing/choose-plan and select your plan and billing cycle.
  2. You'll see the platform's UPI ID. Make the payment from your UPI app (GPay, PhonePe, Paytm, etc.).
  3. Enter the UPI Transaction ID from your payment confirmation and submit.
  4. The platform admin will verify and confirm your payment โ€” your subscription activates automatically once confirmed.
โณ Subscription Statuses
StatusMeaningAction Needed
TrialFree 30-day trial is activeNone โ€” enjoy all features
ActivePaid subscription is runningNone
ExpiredTrial or subscription has endedChoose a plan and pay
SuspendedAccount suspended by adminContact platform support

๐Ÿ“ฑ Field Worker Mobile View

/painter/dashboard โ€” A lightweight mobile interface designed for Painters, Tilers, Plumbers & Masons on site.

๐Ÿ“ฒ What Field Workers See
ScreenURLContents
Home/painter/dashboardThis month's attendance summary, total wages earned, total advances taken, net balance, last 10 attendance records
Attendance/painter/attendanceFull attendance history filtered by month, with monthly wage total
Advances/painter/advancesAll advances received, total amount
๐Ÿ’ก How a Field Worker Logs In
The owner adds the worker in Settings โ†’ Staff Logins (the role is labeled "Painter" but works the same for every trade) with their phone number and daily wage โ€” no password needed. The worker opens /painter-login on their phone, enters that phone number, and a 4-digit code appears on screen (owner/supervisor reads it out or shows the screen). They type the code in and land straight in the mobile view.
๐Ÿ“Š Understanding the Net Balance
ScenarioDisplayed AsMeaning
Wages > Advances+โ‚นX payableThe owner still owes this amount to the worker
Advances > Wagesโˆ’โ‚นX advance pendingThe worker has taken more advance than earned; this will be recovered

๐Ÿ’ฌ WhatsApp Integration

Send quotations and payment reminders directly to clients on WhatsApp.

๐Ÿ”ง Default: Mock Mode

Out of the box, no WhatsApp messages are actually sent. Instead, all messages are written to storage/logs/whatsapp.log so you can see exactly what would be sent. This is perfect for testing.

๐Ÿš€ Go Live with Gupshup BSP
  1. Create a Gupshup account at gupshup.io and set up a WhatsApp Business API app.
  2. Verify your WhatsApp Business number inside the Gupshup dashboard.
  3. Copy your API key from Gupshup โ†’ Apps.
  4. Update your .env file:
    WHATSAPP_API_KEY=your_gupshup_api_key WHATSAPP_BSP=gupshup WHATSAPP_FROM_NUMBER=919876543210
  5. That's it โ€” WhatsApp messages are now live.
๐Ÿ“จ What Messages Are Sent
TriggerRecipientMessage Contains
"Share via WhatsApp" on a quotationClientJob title and total cost (area line only shown for area-based trades like Painting)
"Send Reminder" on the Payments pageClientJob title, outstanding balance
Job Confirmation (programmatic)ClientJob title, expected start date

Every message signs off with your business's APP_NAME setting โ€” no hardcoded branding.

๐Ÿ“ง Email (SMTP) Setup

Enable email delivery to send quotations and invoices directly to clients.

๐Ÿ”ง Default: Mock Mode

When SMTP_HOST is blank in your .env file, no emails are sent. All email content is logged to storage/logs/email.log instead.

๐Ÿš€ Go Live with Gmail
  1. Enable 2-Step Verification on your Google account (required for App Passwords).
  2. Create an App Password: Google Account โ†’ Security โ†’ App Passwords โ†’ select "Mail" โ†’ generate & copy the 16-character password.
  3. Update your .env file:
    SMTP_HOST=smtp.gmail.com SMTP_PORT=587 SMTP_USER=youremail@gmail.com SMTP_PASS=your_16char_app_password MAIL_FROM_ADDRESS=youremail@gmail.com MAIL_FROM_NAME=Sharma Contractors
๐Ÿ’ก Better: Use Your Domain Email
If your hosting provider gives you a business email (e.g. info@yourdomain.com), use that instead โ€” it looks more professional and avoids Gmail's sending limits.
SMTP_HOST=mail.yourdomain.com SMTP_PORT=587 SMTP_USER=info@yourdomain.com SMTP_PASS=your_email_password MAIL_FROM_ADDRESS=info@yourdomain.com MAIL_FROM_NAME=Your Business Name
๐Ÿ“จ What Emails Are Sent
TriggerRecipientEmail Contains
"Email to Client" on a quotationClientMaterial breakdown, total cost
"Email Invoice" on an invoiceClientInvoice number, GST breakdown, balance due
Payment reminderClientOutstanding balance

๐Ÿ›ก๏ธ Super Admin โ€” Platform Management

/platform/login โ€” For the SaaS operator to manage all contractor accounts.

๐Ÿ–ฅ๏ธ Platform Dashboard

Log in at /platform/login (separate from contractor login). The dashboard shows:

  • Total contractors registered
  • Breakdown by subscription status (trial / active / expired)
  • Pending payment confirmations count
  • Trade adoption โ€” how many owners have each trade enabled, with a shortcut to Trade Verticals
๐Ÿ‘ค Managing Contractor Accounts
ActionHow
View all contractorsPlatform โ†’ Contractors โ€” filter by trial/active/expired
Create a contractorPlatform โ†’ Contractors โ†’ Create Contractor โ€” sets up the account and assigns trial or plan
Suspend an accountContractor detail page โ†’ Suspend โ€” immediately blocks all logins
Reactivate an accountContractor detail page โ†’ Reactivate
View a contractor's jobs countContractor detail page shows client count, job count, staff count
Grant an early-access tradeContractor detail page โ†’ Trades card โ†’ pick a trade โ†’ "Grant" โ€” bypasses both the plan's trade limit and any self-service gate
๐Ÿ’ณ Confirming Subscription Payments
  1. Go to Platform โ†’ Payments โ€” all pending payment submissions are listed.
  2. Cross-check the UPI transaction ID against your UPI app history.
  3. Click "Confirm" โ€” the contractor's subscription activates automatically for the correct period.
  4. If the payment is invalid, click "Reject" with a note.
๐Ÿ“‹ Managing Plans

Go to Platform โ†’ Plans to:

  • Create new plans with custom pricing, staff login limits, and trade limits
  • Edit existing plan prices or limits
  • Deactivate plans you no longer offer (existing subscribers are unaffected)

๐Ÿงฐ Trade Verticals

/platform/trades โ€” Manage which trades exist on the platform, and whether contractors can self-enable them.

๐Ÿ“Š Trade Verticals List

Shows every trade with its worker label, estimator class, how many owners have it enabled, how many jobs use it, and two independent toggles:

ToggleMeaning When OnMeaning When Off
Active / DeactivateTrade exists on the platform normallyHidden from every job-creation and "Enable Trade" list โ€” existing owners keep using it, data untouched
Open / GateAny owner can self-enable it from My TradesOnly the Super Admin can grant it to a specific owner (Contractor detail page โ†’ Trades โ†’ Grant)
๐Ÿ’ก Why Two Separate Toggles?
A trade can be Active + Gated at the same time โ€” this is the soft-launch state. The trade fully works for whoever has it, but new owners can't pick it up on their own until you flip it to "Open". This is exactly Rajmistri's current state, pending mason validation of its material yield constants.
๐ŸŽ Granting Early Access
  1. Go to Platform โ†’ Owners and open the contractor's detail page.
  2. In the Trades card, pick the gated trade from the dropdown.
  3. Click "Grant" โ€” this bypasses both the self-service gate and the owner's plan trade limit.

The owner can immediately create jobs and quotations for that trade, without needing to upgrade their plan.

๐Ÿš€ Releasing a Trade Generally

Once validated, go to Platform โ†’ Trades and click "Open Up" on that trade's row. It immediately appears in every owner's "Enable Trade" dropdown, subject to their plan's trade limit as usual โ€” no code changes needed.

โ“ Troubleshooting

Quick solutions for the most common issues.

๐Ÿ”ด Can't Log In
  • Double-check your email and password โ€” they are case-sensitive.
  • If you're a staff member, confirm the owner has not deactivated your login.
  • If your subscription has expired, go to /billing to renew.
  • Use "Forgot Password?" to reset your password.
  • Make sure you're using the right login URL โ€” field workers use /painter-login (phone + on-screen code), everyone else uses /login, super admin uses /platform/login.
๐Ÿ“ธ Photos Won't Upload
  • File size must be under 5 MB per photo.
  • Accepted formats: JPG, JPEG, PNG, GIF, WebP.
  • If no photos upload at all, ask your admin to check that storage/uploads/job_photos/ has write permission (755).
๐Ÿ“ง Emails Are Not Sending
  • If SMTP_HOST is blank in .env, emails go to the log file โ€” this is expected in dev/mock mode.
  • For Gmail, you must use an App Password โ€” your regular Google password won't work.
  • If using cPanel email, try port 465 if port 587 is blocked.
  • Check that the client has an email address saved on their profile.
  • Check storage/logs/email.log for error details.
๐Ÿ’ฌ WhatsApp Messages Not Going Through
  • If WHATSAPP_API_KEY is blank, messages are logged only โ€” expected in mock mode.
  • Client must have a phone number saved. Without it, the button won't appear.
  • Your Gupshup WhatsApp Business number must be verified and approved.
  • Check storage/logs/whatsapp.log for error details.
๐Ÿ“Š P&L Numbers Look Wrong
  • Material cost = โ‚น0 โ€” create a quotation for this job using the Smart Estimator.
  • Labor wages = โ‚น0 โ€” mark attendance for the painters working on this job.
  • Revenue = โ‚น0 โ€” record client payments in the Payments section.
๐Ÿ‘ท No Field Workers on Attendance Page

Go to Settings โ†’ Staff Logins and add staff with the field-worker role (labeled "Painter" in the dropdown, but works for every trade). Once added and active, they appear on all job attendance pages for jobs in the matching trade.

๐Ÿงฐ A Trade Isn't Showing in "Enable Trade"
  • You may already be at your plan's trade limit โ€” check Settings โ†’ My Trades for an upgrade prompt.
  • The trade may be in an early-access/gated phase (e.g. Rajmistri) โ€” contact your platform administrator, who can grant it directly to your account.
๐Ÿงพ Invoice Number Seems Wrong

Invoice numbers are auto-generated sequentially based on your prefix setting. If you need to change the prefix, go to Settings โ†’ GST & Invoice and update the Invoice Prefix field. Future invoices will use the new prefix.

๐Ÿ“ž Need More Help?

Check the log files in storage/logs/ โ€” every error and event is recorded there.

Log FileWhat It Records
email.logAll email send attempts โ€” success, failure, mock
whatsapp.logAll WhatsApp message attempts
password_resets.logPassword reset links (mock mode)

Contact your platform administrator if you are unable to resolve the issue.