<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Chandmal Dhakar</title>
    <description>The latest articles on DEV Community by Chandmal Dhakar (@chandmal_dhakar_9a0881c83).</description>
    <link>https://dev.to/chandmal_dhakar_9a0881c83</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4220027%2F007a2498-62d7-4981-930f-174695cc8389.png</url>
      <title>DEV Community: Chandmal Dhakar</title>
      <link>https://dev.to/chandmal_dhakar_9a0881c83</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/chandmal_dhakar_9a0881c83"/>
    <language>en</language>
    <item>
      <title>How to calculate a domestic helper's monthly salary with leave, half-days and advances</title>
      <dc:creator>Chandmal Dhakar</dc:creator>
      <pubDate>Mon, 02 Nov 2026 12:26:10 +0000</pubDate>
      <link>https://dev.to/chandmal_dhakar_9a0881c83/how-to-calculate-a-domestic-helpers-monthly-salary-with-leave-half-days-and-advances-1964</link>
      <guid>https://dev.to/chandmal_dhakar_9a0881c83/how-to-calculate-a-domestic-helpers-monthly-salary-with-leave-half-days-and-advances-1964</guid>
      <description>&lt;p&gt;It is the last day of the month. Your maid says she worked 26 days, you think it was 22, and somewhere in between there were two half-days, a festival holiday and a ₹2,000 advance she took for her son's school fees. Nobody is trying to cheat anyone. The two of you are just doing the sums differently.&lt;/p&gt;

&lt;p&gt;This post sets the calculation out step by step, with a worked example in rupees and a small JavaScript function you can reuse. The point is a method that both sides can check. It is not about cutting pay.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1: Agree the basis before the month starts
&lt;/h2&gt;

&lt;p&gt;Most arguments start here. To get a per-day rate, you divide the monthly salary by some number of days, and there are three common choices:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Calendar days&lt;/strong&gt;: 30 in November, 31 in December. The rate changes a little each month.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A fixed 30&lt;/strong&gt;: simple, and the same every month.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Working days only&lt;/strong&gt;: calendar days minus weekly offs, for example 26.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All three are fine. Mixing them is not. If you divide by 26 and she expects 30, every absence costs her more than she expected. Pick one, say it out loud, and write it down.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2: Sort every day into a type
&lt;/h2&gt;

&lt;p&gt;At month-end, each day of the month should fall into exactly one bucket:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Day type&lt;/th&gt;
&lt;th&gt;Paid?&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Present&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Weekly off&lt;/td&gt;
&lt;td&gt;Yes, it is part of the agreed salary&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Holiday (festival, agreed in advance)&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Paid leave, within the agreed allowance&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Leave beyond the allowance&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Absent without leave&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Half-day&lt;/td&gt;
&lt;td&gt;Half paid&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The bucket counts should add up to the number of days in the month. If they don't, a day was missed or counted twice. That simple check catches most disagreements.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3: Count unpaid days, not paid days
&lt;/h2&gt;

&lt;p&gt;It is easier, and kinder, to start from the full salary and take off only what was unpaid:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;unpaid days = absent + leave beyond allowance + (half-days x 0.5)
earned      = monthly salary - (unpaid days x per-day rate)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Starting from the full amount makes it clear that a normal month pays in full. The deductions are the exception, and each one can be pointed to on the calendar.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 4: Take off advances last
&lt;/h2&gt;

&lt;p&gt;An advance is money already paid, not a deduction for absence. Keep it separate:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;payable = earned - advances given this month
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If the advance is bigger than what she earned, don't take her to zero. Agree how much comes off each month and carry the rest forward as a balance you both know about.&lt;/p&gt;

&lt;h2&gt;
  
  
  A worked example
&lt;/h2&gt;

&lt;p&gt;Sunita works as a cook for ₹12,000 a month. The household uses a fixed 30-day basis and allows 1 day of paid leave a month. In November (30 days) her calendar shows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Present: 21 days&lt;/li&gt;
&lt;li&gt;Weekly offs (Sundays): 4&lt;/li&gt;
&lt;li&gt;Half-days: 2&lt;/li&gt;
&lt;li&gt;Leave: 2 days (1 within the allowance, 1 beyond it)&lt;/li&gt;
&lt;li&gt;Absent without leave: 1&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Check: 21 + 4 + 2 + 2 + 1 = 30. Every day is accounted for.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Per-day rate: 12,000 / 30 = ₹400&lt;/li&gt;
&lt;li&gt;Unpaid days: 1 absent + 1 extra leave + (2 x 0.5) = 3&lt;/li&gt;
&lt;li&gt;Earned: 12,000 - (3 x 400) = ₹10,800&lt;/li&gt;
&lt;li&gt;Advance on 10 November: ₹2,000&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Payable on 30 November: ₹8,800&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now suppose the household divides by working days instead (30 - 4 Sundays = 26). The rate becomes about ₹461.54, the same 3 unpaid days cost ₹1,384.62, and she earns ₹10,615. That ₹185 gap is exactly the kind of difference that turns into a month-end argument. Neither number is wrong, but only one of them was agreed.&lt;/p&gt;

&lt;h2&gt;
  
  
  The same thing in JavaScript
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;helperSalary&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;monthly&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;basisDays&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;days&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;paidLeaveAllowed&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;advances&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;perDay&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;monthly&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="nx"&gt;basisDays&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;extraLeave&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;max&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;days&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;leave&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="nx"&gt;paidLeaveAllowed&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;unpaidDays&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;days&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;absent&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;extraLeave&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;days&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;halfDay&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mf"&gt;0.5&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;earned&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;round&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;monthly&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="nx"&gt;unpaidDays&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nx"&gt;perDay&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;advanceTotal&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;advances&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;reduce&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;sum&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;sum&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;amount&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;perDay&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;unpaidDays&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;earned&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;advanceTotal&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;payable&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;earned&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="nx"&gt;advanceTotal&lt;/span&gt; &lt;span class="p"&gt;};&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;helperSalary&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;monthly&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;12000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;basisDays&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;paidLeaveAllowed&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;days&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;present&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;21&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;weeklyOff&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;halfDay&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;leave&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;absent&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="na"&gt;advances&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[{&lt;/span&gt; &lt;span class="na"&gt;date&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;2026-11-10&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;amount&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;2000&lt;/span&gt; &lt;span class="p"&gt;}],&lt;/span&gt;
&lt;span class="p"&gt;}));&lt;/span&gt;
&lt;span class="c1"&gt;// { perDay: 400, unpaidDays: 3, earned: 10800, advanceTotal: 2000, payable: 8800 }&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A few things are left out on purpose. Present days and weekly offs don't appear in the sum, because they are already inside the full salary. Rounding happens once, on the earned amount, so paise don't pile up. If you want the bucket check from Step 2, add the day counts and compare the total with the number of days in the month before you return anything.&lt;/p&gt;

&lt;h2&gt;
  
  
  Keeping the record honest
&lt;/h2&gt;

&lt;p&gt;The maths is the easy part. The hard part is having a daily record you both trust, so that "26 days or 22" is settled by looking, not by memory. A paper diary on the fridge works if someone fills it in every day. I work on Apna Staff (&lt;a href="https://apnastaff.tailwebs.com/?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=how-to-calculate-a-domestic-helper-s-monthly-salary-with-lea" rel="noopener noreferrer"&gt;https://apnastaff.tailwebs.com/?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=how-to-calculate-a-domestic-helper-s-monthly-salary-with-lea&lt;/a&gt;), a free app from our team at Tailwebs. You mark each day as present, absent, half-day, holiday, paid leave or weekly off in one tap, and at month-end it works out the prorated salary with advances deducted and shares a salary slip on WhatsApp. It works offline with no sign-up, and the staff data stays on your phone. Whichever you use, the habit that matters is the same: mark the day on the day.&lt;/p&gt;

&lt;h2&gt;
  
  
  A short checklist for month-end
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Confirm the basis (calendar, fixed 30 or working days) is the one you agreed.&lt;/li&gt;
&lt;li&gt;Check that the day counts add up to the days in the month.&lt;/li&gt;
&lt;li&gt;Count unpaid days only, and halve the half-days.&lt;/li&gt;
&lt;li&gt;Take advances off last, and agree a plan for any balance.&lt;/li&gt;
&lt;li&gt;Show your helper the breakdown, not just the final number.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That last step does the most for trust. When she can see the same calendar and the same sums, there is very little left to argue about.&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>beginners</category>
      <category>tutorial</category>
      <category>india</category>
    </item>
  </channel>
</rss>
