ForHosting KIT · Finance & money

Overtime and regular pay calculator

At 20 an hour, 40 regular hours and 5 overtime hours at time and a half give 800 regular pay, 150 overtime pay and 950 gross, with overtime paid at 30 an hour. Both lines stay separate. Free in your browser.

  • Free
  • Runs in your browser
  • No sign-up
  • Your data stays on your device
Use it from WebAPIEmailTelegramApp soon
If you enter
Hourly rate
20
Regular hours
40
Overtime hours
5
Overtime multiplier
1.5
You get
Ot hourly rate
30
Regular pay
800
Overtime pay
150
Gross pay
950

Separating regular pay from overtime pay before deductions should not require a spreadsheet template or a napkin full of rate-times-hours arithmetic. This overtime and regular pay calculator takes four everyday payroll inputs—the base hourly rate, the number of regular (straight-time) hours, the number of overtime hours, and the overtime multiplier such as one point five for time-and-a-half—and returns the regular pay line, the overtime pay line, the effective overtime hourly rate, and the combined gross pay for that period, all rounded cleanly to two decimal places. A negative hourly rate is rejected with a clear invalid input error, because a negative wage does not describe a valid gross-pay calculation.

How regular pay, overtime pay, and gross pay are computed

The core formulas are the ones people already use by hand on a timesheet or weekly estimate. Regular pay equals hourly rate times regular hours. Overtime pay equals hourly rate times overtime multiplier times overtime hours.

Gross pay is the sum of those two lines, so regular and overtime earnings stay visible as separate components instead of collapsing into a single opaque total. Intermediate products use ordinary floating-point arithmetic, then every money field is rounded half-up to two decimal places so results look like currency on a payslip rather than long binary fractions that confuse cashiers and auditors.

Example: a rate of twenty, forty regular hours, five overtime hours, and a multiplier of one point five yields eight hundred in regular pay, one hundred fifty in overtime pay, an effective OT rate of thirty, and a gross of nine hundred fifty after rounding. Equal math for every jurisdiction is intentional product scope: daily overtime thresholds, seventh-day rules, and tax withholding would be different search intents and different contracts.

Everyday uses and practical limits

Call the free in-browser overtime and regular pay calculator for weekly estimates, side-gig invoices, classroom payroll exercises, and quick manager checks without installing another app or spreadsheet template. Keep rates and hours within ordinary commercial ranges; extreme values are rejected so isolate math stays bounded and responses remain easy to reason about. The product promise is gross pay from a base rate, a regular and overtime hour split you already chose, and an explicit multiplier—not automatic legal classification of overtime, multi-rate shift differentials, or local statutory OT tables.

Those belong in specialized tools with different SEO intent and different regulatory content. Start with the documented example inputs, then expand to double-time multipliers and zero-overtime weeks to cover the edge cases your users actually hit.

Weekly employee pay estimates

Workers and managers enter base rate, straight-time hours, OT hours, and the company multiplier to see regular, overtime, and gross pay before deductions.

Freelance and contractor invoices

Contractors who bill premium hours at a stated multiple of their base rate compute a transparent gross line for invoices and client estimates.

What happens if the hourly rate is negative?

Negative wages are not a valid gross-pay input and are not charged.

Does this decide which hours count as overtime?

No. You supply the regular versus overtime hour split under your local rules. The calculator multiplies the hours you send by the rate and multiplier.

Is the overtime and regular pay calculator free?

The browser tool runs free on your device.

How do I calculate double-time pay?

Set the overtime multiplier to 2. Each overtime hour is then paid at twice the base rate, and the overtime line and gross pay are recalculated, while regular pay stays the same.

Does the gross pay include taxes or deductions?

No. The result is gross pay before deductions: regular pay plus overtime pay. Tax withholding, daily overtime thresholds and seventh-day rules are outside its scope and belong in specialized tools.

Everything on this page is available programmatically. This section is for teams who want to wire it into their own systems; everyone else can just use the tool above.

POSThttps://api.kit.forhosting.com/finance/overtime-pay

Prefer to automate it? One authenticated POST creates the task; the result comes back by webhook or a signed link. The same capability also runs here on the web, by email and from Telegram — and soon from our app too.

curl -X POST https://api.kit.forhosting.com/finance/overtime-pay \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"hourly_rate":20,"regular_hours":40,"overtime_hours":5,"overtime_multiplier":1.5}'
{
  "hourly_rate": 20,
  "regular_hours": 40,
  "overtime_hours": 5,
  "overtime_multiplier": 1.5
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "finance.overtime_pay",
  "status": "queued",
  "_links": {
    "result": "/tasks/tsk_…/result"
  }
}

The API is asynchronous: the call returns a task_id immediately and the result arrives by webhook. Polling is capped at 1 req/s per task.

Per request$0.002

Published price — no tokens, no invented credits. A failed task is never charged.

HTTPCodeMeaning
401unauthorizedMissing or invalid API key.
402insufficient_balanceYour balance doesn't cover the task price.
404unknown_typeThat task type doesn't exist.
429rate_limitedToo many requests. Use the webhook instead of polling.

Inputs: hourly rate, regular hours, overtime hours, and multiplier

Negative hour counts and negative multipliers are also rejected so accidental sign flips fail loudly instead of inventing absurd negatives on a payslip. All validation happens before any money math, so bad requests never produce half-filled pay rows that a UI might misread as success. You already decide which hours are regular versus overtime under your local rules or company policy; this calculator multiplies what you send rather than inventing a forty-hour week threshold or a daily overtime table. That separation keeps the search intent clear: people who already know their regular and OT split want the money lines, not a jurisdiction engine. Send a JSON body with four required fields that describe a single pay period. Hourly rate is the base wage per hour as a non-negative finite number or numeric string; aliases rate, wage, hourly, and pay_rate are accepted when your client already names the field differently. Regular hours are the straight-time hours paid at that base rate; aliases hours, straight_hours, regular, and straight_time map to the same value so form builders can keep familiar labels without rewriting payloads. Overtime hours are the premium hours for the same pay period; aliases ot_hours, overtime, and ot are supported so timesheet exports can map columns with minimal glue code. Overtime multiplier is the premium expressed as a multiple of the base rate—for example one point five means time-and-a-half and two means double time—not a percentage of the wage; aliases multiplier, ot_multiplier, ot_rate, and premium map to the same field. Negative hourly rates fail validation with invalid_input because they do not describe a normal paycheck. Extremely large rates, hour totals, or multipliers are capped so Worker isolate math stays bounded and predictable under load. Missing any of the four fields fails with invalid_input naming the missing key. Document the four fields once in your SDK and reuse the same shapes for demos, bots, and integration tests.

How regular pay, overtime pay, and gross pay are computed

The response also returns ot_hourly_rate as hourly rate times the multiplier so UIs can show the effective overtime wage next to the base rate without recomputing it client-side. The response echoes the normalized hourly rate, regular hours, overtime hours, and overtime multiplier, then returns ot_hourly_rate, regular_pay, overtime_pay, and gross_pay, plus currency_decimals equal to two and method equal to overtime_gross for stable client branching across versions. Use regular_pay alone when you only need the straight-time line; use overtime_pay when a report needs the premium line; use gross_pay when a contractor invoice or weekly estimate needs the combined amount.

API usage, pricing, workflows, and practical limits

Use the prepaid API when an HR bot, freelancing dashboard, staffing portal, or timesheet helper needs a stable KIT contract at $0.002 per successful item; validation failures never consume balance after the engine rejects the request. Pair this endpoint with tax or deduction tools only if you already know net-pay rules separately—this capability does not withhold taxes, apply benefits, convert currencies, or invent shift differentials. Authors shipping SDKs can map regular_pay, overtime_pay, and gross_pay directly into payslip UIs, estimate messages, and export columns without reinventing half-up money rounding. When you cite the API price in product copy, use the catalog placeholder $0.002 so published pages stay aligned with the live price floor after catalog updates.

HR bots and timesheet apps

Bots and mini-apps call a stable prepaid endpoint instead of reimplementing OT gross math and negative-rate guards in every language.

How do I calculate overtime pay and regular pay?

Send JSON with hourly_rate, regular_hours, overtime_hours, and overtime_multiplier (for example 1.5). The response includes regular_pay, overtime_pay, ot_hourly_rate, and gross_pay rounded to two decimals.

Is overtime_multiplier a percentage or a multiple of the wage?

It is a multiple of the base hourly rate. Use 1.5 for time-and-a-half and 2 for double time, not 150 or 50 percent.

Read the full KIT documentation →