How we calculate payroll

Last updated: 2026-11-07

This page is for accountants: for each calculation it shows what Vecto does, the formula, an example, the law it relies on and where Vecto applies its own interpretation.

General information, not legal or tax advice. The calculations are not certified by any authority. Check the results with your accountant or lawyer before filing and paying.

Gross → net salary (monthly, RON)

What Vecto does

For employees paid monthly in RON, Vecto starts from the month's gross salary and calculates CAS, CASS, the personal deduction and income tax. Default rates are CAS 25%, CASS 10% and income tax 10%; the company sees them in Settings and each payslip stores the rates used.

Formula

  • CAS = 25% × (gross − minimum-wage untaxed amount, if any)
  • CASS = 10% × the same base
  • Basic personal deduction (art. 77) = percent × the month's minimum wage. When gross ≤ minimum wage the percent is 20% / 25% / 30% / 35% / 45% for 0 / 1 / 2 / 3 / 4+ dependants. Above the minimum wage it drops 0.5 points for every started 50 RON band. Above minimum wage + 2,000 RON the deduction is 0.
  • Supplementary deduction (art. 77(10)–(13)): 15% × minimum wage for an employee under 26 for the whole month (if gross ≤ minimum wage + 2,000 RON) and 100 RON per child under 18 enrolled in school, only when the company holds the documents.
  • Taxable income = gross − untaxed amount − CAS − CASS − personal deduction (minimum 0)
  • Income tax = 10% × taxable income
  • Net = gross − CAS − CASS − income tax
  • Minimum wage used: 4,050 RON until 2026-06-30, 4,325 RON from 2026-07-01.

Worked example

July 2026, gross 5,500 RON, 0 dependants, no supplementary deduction:

CAS = 25% × 5,500 = 1,375.00 RON; CASS = 10% × 5,500 = 550.00 RON

Gross is 1,175 RON above the minimum → 24 bands of 50 RON → 20% − 12 points = 8% × 4,325 = 346.00 RON deduction

Taxable income = 5,500 − 1,375 − 550 − 346 = 3,229 RON; tax = 322.90 → 323 RON (whole RON)

Net = 5,500 − 1,375 − 550 − 323 = 3,252.00 RON

Legal basis

  • Romanian Fiscal Code (Law 227/2015) — art. 77(2) — basic personal deduction (form in force since 2023-01-01) (official text). checked on 2026-10-21
  • Romanian Fiscal Code (Law 227/2015) — art. 77(10)–(13) — supplementary personal deduction (official text). checked on 2026-10-22
  • Romanian Fiscal Code (Law 227/2015) — art. 138 lit. a) — CAS 25%; art. 156 — CASS 10% (official text). checked on 2026-10-23
  • Romanian Fiscal Code (Law 227/2015) — art. 78(2)(a) — 10% income tax on gross salary minus mandatory contributions and the personal deduction (official text). checked on 2026-10-23
  • Government Decisions (HG) 1506/2024 and 146/2026 — national gross minimum wage (4,050 RON; 4,325 RON from 2026-07-01). default rate in the app; the exact article is not quoted here

Limits and interpretations

  • Vecto assumes the salary is from the employee's main job ("funcția de bază") (Vecto interpretation — check with your specialist.).
  • Age for the supplementary deduction is checked from the birth date; the number of children in school is entered by the company.
  • The company can change the rates in Settings; each payslip keeps the rates used.
  • Payslips generated before 2026-10-21 used the old deduction grid and are not recalculated.

Minimum-wage untaxed amount (2026)

What Vecto does

For employees whose base salary equals the minimum wage, Vecto subtracts a fixed amount from the CAS, CASS and income-tax bases. The amount is not paid separately and not deducted from net; it shows on the payslip as an information line.

Formula

  • 300 RON/month for income of January–June 2026; 200 RON/month for July–December 2026. Outside 2026: 0.
  • Conditions (all): individual employment contract, full-time; contractual base salary = the month's minimum wage (4,050 / 4,325 RON); monthly gross salary income without vouchers ≤ 4,300 RON (January–June) or ≤ 4,600 RON (July–December).
  • Effect: no income tax and no CAS/CASS (and CAM) on this amount.
  • The personal deduction is still computed on the full gross.

Worked example

July 2026, gross 4,325 RON, 0 dependants (published worked example, rounded to whole RON):

CAS/CASS base = 4,325 − 200 = 4,125 RON; CAS 1,031 RON; CASS 413 RON

Personal deduction 865 RON; taxable income 1,816 RON; tax 182 RON

Net 2,699 RON

Legal basis

  • Emergency Ordinance (OUG) 89/2025 (Official Gazette 1203/24.12.2025) — art. III — monthly untaxed amount for the minimum wage (official text). checked on 2026-10-22

Limits and interpretations

  • Part month (hire during the month): the act gives no formula. Vecto uses amount × covered working days / working days of the month, rounded to whole RON (Vecto interpretation — check with your specialist.).
  • The termination month is not prorated: the termination date is not a structured date, so the full amount is granted.
  • The main-job condition is assumed; losing the right after a 2026 base-salary reduction (para. 2) is not checked automatically.
  • The 4,300 / 4,600 RON cap is checked on salary income (worked days + annual-leave indemnity), excluding sick-leave indemnity. The amount applies only to salary income, not to indemnities: a month with indemnities only gets 0 (Vecto interpretation — check with your specialist.).
  • Full-time = at least 8 hours/day or the contract work norm; when unknown, the amount is not granted.
  • Computing the personal deduction on the full gross follows published calculations (secondary source).
  • Corrections of old payslips (versions v1–v3) use the employee's current data; the review screen shows a note.

CAS/CASS minimum base (difference paid by the company)

What Vecto does

For monthly RON payslips calculated from now on, Vecto checks whether the employee's CAS and CASS base is below the month's minimum wage (in proportion to the contract days). If it is, the company pays the CAS and CASS difference up to the minimum base. The employee's net salary and income tax do not change.

Formula

  • Minimum base = (the month's minimum wage − GEO 89/2025 untaxed amount) × counted days / working days of the month, rounded to whole RON (ANAF formula in the D112 instructions)
  • Amount subtracted: 300 RON/month for January–June 2026, 200 RON/month for July–December 2026; outside 2026: 0.
  • Counted days = days worked + annual leave + days off paid by the company + sick-leave (CM) days. Not counted: unpaid leave, unexcused absences, paternity leave and professional-training leave (contract suspended, Labour Code art. 51(1)(c)–(d)).
  • CAS on the minimum base = minimum base × 25%, rounded to whole RON; CASS = minimum base × 10%, rounded to whole RON.
  • CAS difference = max(0, CAS on the minimum base − CAS withheld); the same for CASS.
  • The differences show on the payslip as information lines and in the "D112 data" export; they are not deducted from net.
  • Not applied when the employee has a valid exception in the month: pupil/student up to 26, apprentice up to 18, person with disabilities, old-age pensioner, several contracts that together reach the minimum.

Worked example

July 2026, part time 4 hours/day, gross 2,500 RON, full month, no exception:

Minimum base = 4,325 − 200 = 4,125 RON

CAS withheld = 625 RON; CAS on the minimum base = 1,031 RON → difference paid by the company 406 RON

CASS withheld = 250 RON; CASS on the minimum base = 413 RON → difference paid by the company 163 RON

Employee net unchanged: 1,549 RON

Legal basis

  • Fiscal Code (Law 227/2015), as amended by GO 16/2022 — art. 146(5^6)–(5^9) — CAS at the minimum wage level; difference borne by the employer; exceptions (official text). checked on 2026-10-31
  • Fiscal Code (Law 227/2015), as amended by GO 16/2022 — art. 168(6^1) — the same rule for CASS (official text). checked on 2026-10-31
  • Emergency Ordinance (OUG) 89/2025 (Official Gazette 1203/24.12.2025) — art. III(5)–(6) — the minimum wage used is reduced by the untaxed amount (2026) (official text). checked on 2026-10-31
  • D112 instructions (ANAF) — rows for the CAS and CASS minimum base (official text). default rate in the app; the exact article is not quoted here

Limits and interpretations

  • The subtracted amount is split by days, as in the ANAF formula (minimum − amount) / working days × days; sick-leave days are counted (Vecto interpretation — check with your specialist.).
  • Unpaid leave is not counted, following the ANAF formula (days worked + CM days); the law speaks of days "in which the contract was active", so this point must be confirmed by an accountant.
  • Exceptions are entered by the company in the employee record, with the supporting document; age-based exceptions stop automatically at 26 / 18 when the birth date is stored.
  • The exact D112 row codes for the differences must be confirmed by an accountant. Vecto does not file D112.
  • Payslips calculated before this rule are not recalculated; correcting one applies the rule and shows a note.
  • Monthly payslips of posted workers (monthly close) do not use this rule yet.

Annual leave

What Vecto does

Vecto calculates the indemnity for annual-leave days in the payslip month and includes it in the month's gross. Paid days off for family events are paid the same way.

Formula

  • Indemnity = leave days × daily rate
  • Daily rate = the higher of the 3-month daily average and the daily base salary
  • Daily average = gross salary rights of the 3 months before the leave month / working days in those months
  • Daily base salary = contractual monthly salary / working days of the payroll month
  • The indemnity is salary income: CAS, CASS and income tax apply.
  • Rounding (from 2026-10-30): pay for worked days and leave at the contract rate are rounded once, together, so a full month gives exactly the contract salary; only the part above the contract rate is rounded separately.

Worked example

Base salary 5,000 RON; the payroll month has 22 working days → 227.27 RON/day.

Last 3 months: 15,600 RON gross over 65 working days → 240.00 RON/day.

The higher value, 240.00 RON/day, is used; 5 leave days → 1,200.00 RON.

Legal basis

  • Romanian Labour Code (Law 53/2003) — art. 145 (at least 20 working days/year), art. 146(3), art. 150(1) (indemnity), art. 152 (family events) (official text). checked on 2026-10-22

Limits and interpretations

  • How the average is computed (gross rights / working days of the 3 months) is a Vecto interpretation — check with your specialist.
  • With less than 3 months of history the available months are used; with no history, the daily base salary.
  • Only approved or paid monthly RON payslips of the same company count; the stored sick-leave indemnity is subtracted from their gross.
  • Cash compensation for unused leave at termination (art. 146(3)) is not calculated automatically.

Sick leave

What Vecto does

Vecto calculates the sick-leave indemnity from the medical certificate data (code, dates, days, hospitalisation, national programme) and shows it on the payslip, split between the employer-paid part and the FNUASS part.

Formula

  • Insurance record (stagiu): at least 6 insured months in the 12 months before the month the episode starts. When Vecto finds less (for example a new hire), the month is not generated until you confirm, in the generate dialog, that the employee has the record from another employer (certificate from that employer). The confirmation shows on the payslip as a 0 RON line. No record needed: codes 05, 06, 12, 14 (art. 9), 07 quarantine (art. 9) and 15 maternal risk (art. 31(3)).
  • Daily base = average gross income of the last 6 months / working days in those months (from approved payslips); each month counts at most 12 × the gross minimum wage
  • Code 01 (ordinary illness or accident outside work), certificates issued from 2025-08-01: 55% (episode ≤ 7 days), 65% (8–14 days), 75% (15 days or more), by total episode length
  • Fixed rates: 100% for 05, 06, 12, 14; 75% for 13 (cardiovascular); 100% for 07 (quarantine/isolation); 85% for 08, 09; 75% for 15 (maternal risk)
  • One-day reduction: for certificates issued 2026-02-01 to 2027-12-31 the first working day of the episode is unpaid, once per episode whatever the number of certificates. It does not apply to 08 (maternity), 15 (maternal risk), nor when the initial certificate has "hospitalisation" or "national health programme" ticked. Code 09 (sick-child care) is reduced.
  • Who pays: the employer pays days 1–5 of the episode (days 2–6 when the first day is reduced), FNUASS from the next day. Codes 07, 08, 09, 15 are paid entirely from FNUASS, from day 1 (from day 2 when the first day is reduced).
  • Indemnity = daily base × rate × paid working days
  • Regularisation (from payroll month July 2026): when a code-01 episode continues from the previous month and crosses the 7- or 14-day threshold, the difference (new rate − paid rate) × daily base × days already paid shows in the current month as a separate line "Regularisation of the previous month's sick-leave indemnity". The previous month's approved payslip is not changed.
  • Contributions: CAS 25% on every indemnity; CASS 10% only for codes 01, 07, 10; income tax 10%, except codes 08 (maternity), 09 (sick-child care), 15 (maternal risk), which are non-taxable income. A regularisation follows the code of the original line.
  • Codes 02, 03, 04 (work accidents and occupational diseases): until the pension office or public health directorate (DSP) confirms them, they can be paid as ordinary illness (code 01) once you confirm when generating pay (Norms to GEO 158/2005 art. 67). Once you enter the confirmation number and date on the initial certificate, Vecto calculates under Law 346/2002: 80% (100% for a medical-surgical emergency or severe burns) of the average gross income of the last 6 months at this employer (fewer months if not available; otherwise the contract salary), with no cap and no contribution period. The employer pays the first 3 calendar days (the working days among them), then the work-accident budget (BAS), recovered from the territorial pension office. No CAS and no CASS; income tax is withheld. Days paid earlier as ordinary illness get a difference in a later month, without changing old payslips. For posted workers: manual calculation.
  • Code 10 (working time reduced by 1/4, GEO 158/2005 art. 19), without an accident confirmation: Vecto calculates it only with the number and date of the medical expert's opinion (aviz) on the certificate. Indemnity = the monthly base (average of the last 6 months, capped) for the certificate's working days in the month minus the salary earned on the reduced schedule (3/4 of the contract salary for those days), at most 25% of the base (Norms to GEO 158/2005 art. 63). It is paid entirely from FNUASS, needs an insurance record, and CAS, CASS and income tax are withheld; no CAM on it. One day is taken off once per episode. Over 90 days in 12 months a warning appears. Rows marked "Check with your accountant" show the prudent choices. Code 10 with an accident confirmation (Law 346/2002) stays manual: the month cannot be generated.
  • Code 11 (temporary transfer to other work, Law 346/2002 art. 39–41): Vecto calculates it only with the number and date of the medical expert's opinion (aviz) on the certificate. The certificate days are worked in the new job and paid as salary. The transfer is a temporary change of workplace at the same employer (Norms art. 56; Labour Code art. 48), and the base counts only the income from this employer (art. 19(1)). Base = the average gross income of the 6 months before the month the condition was detected, i.e. the month of the first certificate for the same accident or disease (the initial 02/03/04 certificate of the chain or an earlier 02/03/04 certificate with the same confirmation number; otherwise the month of the code 11 certificate) (art. 39(2)). With 1–5 months of income the available months are averaged, and with a contribution period under one month the base is the contract gross salary (Norms art. 58(2)–(3)). Indemnity = the base for the certificate's working days in the month minus the gross salary of the new job on those days, at most 25% of the base (art. 41(2)), never below 0. Important: record the new job salary as a new salary period (in “Salary history”, “New salary valid from” = the transfer date); otherwise the indemnity is calculated against the current contract salary. It is paid entirely from the work-accident budget (BAS), with no employer days and no insurance record needed, and is recovered from the territorial pension office. No CAS and no CAM; CASS and income tax are withheld. The indemnity is paid for at most 90 calendar days in a year, counted in order from 1 January across all code 11 certificates (art. 41(1)); working days after the 90th day get only the new job salary, and the payslip shows the date the limit was reached. For posted workers: manual calculation.

Worked example

Code 01, certificate issued 2026-08-03, 5-day episode (Monday–Friday), daily base 200.00 RON, insurance record met:

Day 1 is unpaid; days 2–5 = 4 days paid by the employer; episode ≤ 7 days → 55%

Indemnity = 200.00 × 55% × 4 = 440.00 RON; CAS, CASS and income tax are due (code 01)

Legal basis

  • Emergency Ordinance (OUG) 158/2005 (consolidated as of 2026-07-01) — art. 7 (insurance record), art. 9 (no record needed), art. 10(1) (base and 12 minimum-wage cap), art. 12 (who pays), art. 17(1), (1^1), (1^2), (2) (rates and regularisation), art. 19 (reduced working time, code 10) (official text). checked on 2026-10-23
  • OUG 91/2025, art. II (as amended by Law 64/2026) — one-day reduction for certificates issued 2026-02-01 to 2027-12-31, once per episode; exceptions in paras. (4)–(5) (quoted in the consolidated OUG 158/2005) (official text). checked on 2026-10-23
  • Law 141/2025 (CNAS note) — 55% / 65% / 75% rates for certificates from 2025-08-01 (official text). checked on 2026-10-22
  • Law 346/2002 — art. 19, 33, 34, 35 — confirmed work accidents and occupational diseases (codes 02, 03, 04). default rate in the app; the exact article is not quoted here
  • Romanian Fiscal Code (Law 227/2015) — art. 139(1)(o) (CAS), art. 155(1)(i) (CASS), art. 62(c) (non-taxable income) (official text). checked on 2026-10-22

Limits and interpretations

  • The rates and full FNUASS payment for 07 (100%), 08 and 09 (85%), 15 (75%) come from the official OUG 158/2005 text (art. 25, 26, 30, 31 and the quarantine indemnity), checked on 2026-10-23.
  • Episode of exactly 15 days: the law says "over 15 days"; Vecto applies 75% from 15 days, following the CNAS note (Vecto interpretation — check with your specialist.).
  • The reduced day is the first working day of the episode (Norms to GEO 158/2005 art. 78^4(4), ANAF D112 "reduction by 1 working day"). When the episode starts on a Saturday, Sunday or public holiday, Vecto leaves the first working day unpaid and adds a "Check with your accountant" line to the payslip. The employer window stays calendar days 2–6. Payslips calculated earlier used calendar day 1 and stay unchanged. The tick on the initial certificate counts; a tick only on a continuation changes nothing (Vecto interpretation — check with your specialist.).
  • The 12 minimum-wage cap uses the minimum wage of the month the episode starts (Vecto interpretation — check with your specialist.).
  • Insurance record: a month counts when the employee was hired in the company by its last day or has an approved payslip for it; the record from other employers is confirmed by you. Maternity (08) requires the record; quarantine (07) and maternal risk (15) do not (Vecto interpretation — check with your specialist.).
  • Regularisation is made only against approved or paid payslips of earlier months. When the earlier month has two separate episodes with the same code, Vecto asks for a manual calculation. Base differences between versions v5 and v6 (the cap) and corrections of the earlier month are not regularised automatically.
  • Oncology-patient care has no code in Vecto's list, so it is not covered.
  • The same rules apply to posted workers (insured in Romania with an A1). A certificate issued abroad must be sent to the Romanian health insurance house within the deadline (Reg. (EC) 987/2009 art. 27); Vecto shows a note, without blocking.

Unpaid leave

What Vecto does

Unpaid leave days are not paid. The month's salary is calculated only for worked days; annual-leave and sick-leave days are paid separately.

Formula

  • Worked days = working days of the month − annual leave − sick leave − unpaid leave
  • Salary for worked days = monthly salary × worked days / working days of the month (rounded to bani)
  • First or last month of the contract (payslips calculated from 2026-10-30): monthly salary × working days with an active contract / working days of the month (rounded to bani); days before hiring or after termination are not paid

Worked example

Salary 5,000 RON, 22 working days, 2 unpaid days:

5,000 × 20 / 22 = 4,545.45 RON

Legal basis

  • Romanian Labour Code (Law 53/2003) — art. 153 (unpaid leave) (official text). checked on 2026-10-22

Limits and interpretations

  • CASS minimum-base rules for months with unpaid leave are not implemented (the list of exceptions was not analysed) — check with your specialist.
  • Vecto limits requests to 30 days per year; this is an internal setting, not a legal limit.

Posted workers and per diem

What Vecto does

For workers posted within the EU, Vecto keeps the remuneration paid during the posting separate from the Romanian taxable salary. The posting per diem is tax-free up to a ceiling; the part above the ceiling becomes salary income.

Formula

  • Z = calendar days of posting in the month (each day once)
  • A = sum over the days of the host country's daily ceiling (2.5 × the legal per diem in the HG 518/1995 annex), converted from EUR to RON at the BNR rate stored in the proposal
  • B = 3 × monthly base salary / working days of the month × Z
  • Tax-free per diem = the lowest of the recorded per diem, A and B; the rest is salary income (CAS, CASS, CAM, income tax). No carry-over between months.
  • Fixed weekly or hourly payslips show the agreed net amounts; they do not run the Romanian gross → net calculation.
  • Leave (calculation v2.7): annual, sick and unpaid leave days leave the earned salary; annual leave is paid under Labour Code art. 150 on the Romanian base (base salary + permanent allowances from the employment contract), without per diem; if the daily average of the Romanian salary on approved posted payslips of the last 3 months is higher, the average is used (art. 150(2)). A whole month of leave is calculated even without weekly statements
  • Annual leave days inside the posting are paid at least the host-country minimum: hourly minimum wage × normal hours of those days, converted from EUR to RON at the month's BNR rate. The difference appears on the line “Leave top-up to host-country minimum” and enters gross, CAS, CASS and income tax
  • For Czechia, Hungary and Poland (minimum in koruna, forint, złoty), the leave top-up is checked at two BNR rates: the end-of-month rate and the rate of the banking day before the payment, and for each leave day the higher of the two is taken. The comparison is made in euro and the top-up is converted to lei once, at the rate of the banking day before the payment. Prudent practice; the law does not set the date of the rate (Directive 96/71 art. 3(7); Law 16/2017 art. 11; EC Practical Guide: the amount actually paid counts). If the rate of the day before the payment is missing, “Prepare payment” stops and asks to update the rates or choose another payment date
  • Leave days are not days of activity abroad: they are left out of Z, so per diem for them is taxable
  • Reimbursed expenses (calculation v2.9): travel and accommodation paid against documents are recorded on the timesheet in EUR, separately from the per diem. They are not taxed and stay outside the CAS, CASS and CAM bases, with no ceiling, and do not use the per diem ceiling; they are converted at the month's BNR rate and added to the non-taxable amounts and the final balance. They are not counted toward the host-country minimum wage. Meals stay in the per diem
  • Payment in lei: the contract rate may stay in euro, but a resident's salary (domicile in Romania, as on the identity document) is paid in lei only (BNR Regulation 4/2005 art. 3 para. (1^1)). Lodging abroad during the posting does not change the domicile. On the payment day, “Prepare payment” recalculates the payslip in lei with the BNR rate communicated on the banking day before the payment date (Fiscal Code art. 9: the rate of the payment day; on the payment day the rate of the previous banking day applies, by analogy with the Methodological Norms point 35 at art. 290): on Monday the Friday rate is used. The payslip shows the rate, its date and the payment date; the lei bank file, the payslip and the D112 use the same amounts, without a second conversion. If the payment moves, it is prepared again (a new revision, with history). After payment the amounts are locked and the payslip shows “Amount paid in lei”. Months up to October 2026 stay on the month-close rate (“rate at month close”). Payment of the per diem and of reimbursed expenses is a separate topic, on which Vecto makes no official claim

Worked example

14 days in the Netherlands (legal per diem 35 EUR → ceiling 87.50 EUR/day), illustrative rate 5.0000 RON/EUR:

A = 14 × 87.50 = 1,225 EUR = 6,125.00 RON

B = 3 × 4,325 / 22 × 14 = 8,256.82 RON

Recorded per diem 7,000 RON → tax-free 6,125.00 RON; 875.00 RON becomes salary income

Leave: salary 4,500 RON, 22 working days, 1 annual leave day in NL (minimum 14.99 EUR/hour, 8 hours), rate 5.0000:

Art. 150: 4,500 / 22 = 204.55 RON; NL minimum: 14.99 × 8 = 119.92 EUR = 599.60 RON; top-up 395.05 RON

Legal basis

  • Romanian Fiscal Code (Law 227/2015) — art. 76(2)(k) (as amended by OUG 115/2023) — tax-free per diem ceiling (official text). default rate in the app; the exact article is not quoted here
  • Government Decision (HG) 518/1995 annex (replaced by HG 582/2015, Official Gazette 558/27.07.2015) — legal per diem per country (official text). checked on 2026-10-17
  • BNR Regulation no. 4/2005 (foreign-exchange regime) — art. 3 para. (1^1), annex 1 point 4.2 — salary between residents paid in lei (official text). checked on 2026-11-08
  • Fiscal Code (Law 227/2015) and Methodological Norms — art. 9 para. (3) lit. b) and (4) — the BNR rate at the payment date; Norms point 35 at art. 290 (rate of the previous banking day, by analogy) (official text). checked on 2026-11-08
  • Law 16/2017 — art. 8(b) (minimum duration of paid annual leave), art. 11 (posting-specific allowance) (official text). checked on 2026-10-27
  • Romanian Labour Code (Law 53/2003) — art. 150 (annual leave pay) (official text). checked on 2026-10-27
  • CJEU, case C-396/13 (Sähköalojen ammattiliitto) — minimum holiday pay of a posted worker (official text). checked on 2026-10-27
  • Romanian Fiscal Code (Law 227/2015) — art. 76(2)(k), art. 139(1)(j), art. 157(1)(m) — per diem only for days of activity (official text). checked on 2026-10-27
  • Romanian Fiscal Code (Law 227/2015) — art. 76(2)(k) and (4)(h), art. 142(g), art. 157(2), art. 220^4(2) — reimbursed travel and accommodation are not salary income (official text). checked on 2026-11-01
  • Directive 96/71/EC (as amended by Directive 2018/957) — art. 3(7) — reimbursement of travel, board and lodging expenses is not part of remuneration (official text). checked on 2026-11-01
  • Regulation (EC) 987/2009 — art. 27 (certificate of incapacity issued in another state) (official text). checked on 2026-10-27

Limits and interpretations

  • Without recorded posting periods, days come from the timesheet and the proposal asks for an accountant check.
  • A country without a value in the annex (for example Liechtenstein) leaves the ceiling not evaluated; the proposal asks for a check.
  • A missing base salary leaves the 3-salary limit unchecked.
  • The host country's holiday allowance (e.g. NL: 8% vakantiegeld) and collective-agreement bonuses are not calculated automatically; Vecto shows a check before approval (business.gov.nl for NL).
  • Host country without a known minimum wage in Vecto: the leave top-up is not calculated; the proposal asks for a check.

Night work and work on public holidays

What Vecto does

From the December 2026 payroll, for monthly payslips in lei (monthly salary, employees not posted abroad), Vecto calculates the night premium from the start and end times in the timesheet and keeps work on public holidays in a separate ledger: time off within 30 days or pay with a premium. Payroll up to November 2026 does not change.

Formula

  • Night hours per day = the part of the start–end interval between 22:00 and 06:00 (a shift may cross midnight), at most the hours worked that day
  • Night-work day = at least 3 night hours
  • Hourly rate = monthly base salary / (hours per day × working days of the month) — the same as for overtime (hours per day: from the contract, otherwise the company setting, otherwise 8)
  • Night premium = hourly rate × night hours of days with at least 3 night hours × the percentage from Settings (at least 25%); part of gross, CAS, CASS and income tax
  • Option “schedule reduced by one hour”: no premium; the payslip only shows a 0-lei information row
  • Public holiday: hours worked on the holiday go to the ledger (time-off deadline: date + 30 days) and are no longer counted as overtime
  • If no time off is given: pay = hours × hourly rate × (1 + the percentage from Settings, at least 100%), on the payslip of the chosen month

Worked example

Salary 5,040 lei, 8 hours per day, December 2026 with 21 working days: hourly rate = 5,040 / 168 = 30 lei/hour.

A 22:00–06:00 shift (8 night hours), 25% premium: 8 × 30 × 25% = 60.00 lei.

8 hours worked on 25.12.2026, paid with a 100% premium: 8 × 30 = 240.00 lei + premium 240.00 lei = 480.00 lei (200%). The time-off deadline was 24.01.2027.

Legal basis

  • Labour Code (Law 53/2003) — art. 125 (night work 22:00–06:00) and art. 126 (schedule reduced by one hour or a 25% premium for at least 3 night hours) (official text). checked on 2026-10-28
  • Labour Code (Law 53/2003) — art. 139 (public holidays) and art. 142 (time off within the next 30 days, otherwise a premium of at least 100%) (official text). checked on 2026-10-28

Limits and interpretations

  • The night premium is proportional: only the night hours of days with at least 3 night hours. Reason: art. 126 b) grants the premium "for work performed during the night", i.e. for the hours worked at night; Vecto pays the hourly rate × night hours on days with at least 3 night hours.
  • The break is not subtracted from the night hours because its time is unknown; this favours the employee. Reason: the law allows the employer to grant more than the legal minimum.
  • For public holidays, a shift that crosses midnight is split at 00:00: for example 24.12 22:00–25.12 06:00 means 6 hours worked on the holiday, on 25.12. The break is not subtracted and the hours cannot exceed the hours worked that day. Reason: public holidays are reported on calendar days (art. 139 and 142).
  • Only holiday hours inside the timesheet's month count. Hours that run into the next month (for example 31.12 22:00–01.01 06:00) stay ordinary hours in this month's timesheet.
  • Public-holiday work is calculated automatically only for monthly timesheets of employees paid in lei (RON) who are not posted abroad.
  • Days without a start and end time, or monthly timesheets without hours per day, get no night premium; Vecto shows a warning when the timesheet is approved.
  • The night premium of a shift that crosses midnight is counted on the day the shift starts, like the hours worked (for example 31.01 22:00–01.02 06:00 belongs to January). Reason: art. 125(2)(a) speaks of the employee's "daily working time"; a shift is one working day, recorded on the day it starts (art. 119: daily record with start and end times).
  • When the timesheet is approved, Vecto shows a warning when the employee is a night worker (at least 3 night hours in a day or at least 30% of the month’s hours at night, art. 125(2)): free medical exam (art. 127) and informing the labour inspectorate (ITM) if the company uses night work often (art. 125(6)). The 30% threshold does not change pay: the premium is paid only for days with at least 3 night hours (art. 126).
  • For an employee under 18 with night hours, Vecto shows a warning: young people under 18 may not work at night (art. 128(1)).
  • Weekly payslips and posted workers do not get these rows automatically.
  • Approved or paid payslips are never recalculated; a payslip with a night premium or public-holiday pay does not store the full calculation basis.

Rounding

What Vecto does

Payslips calculated from 2026-10-30 (for any month) have CAS, CASS and income tax rounded to whole RON, as in the D112 return. Payslips calculated earlier keep bani and are not recalculated.

Formula

  • Payslips calculated before 2026-10-30 for months up to November 2026: CAS, CASS, income tax in RON with bani (they stay so)
  • Payslips calculated from 2026-10-30: CAS and CASS to whole RON (0.50 and above rounds up); a contribution under 1 RON becomes 1 RON; income-tax base to whole RON (up to 0.50 inclusive rounds down, above 0.50 up); income tax to whole RON (0.50 and above rounds up); net = gross − CAS − CASS − income tax
  • Posted workers: payslips calculated from 2026-10-30 (any month, version v2.8) have CAS, CASS, CAM and income tax in whole RON under the same rule; salary, per diem and EUR → RON conversion stay in bani
  • Personal deduction: exact in bani; a half ban is rounded up
  • Minimum-wage untaxed amount: whole RON
  • Annual-leave indemnity, salary for worked days, EUR → RON conversion of the per diem ceiling: rounded to bani (half up)

Worked example

The legal example for the untaxed amount: CAS 1,031 RON, CASS 413 RON, income tax 182 RON, net 2,699 RON — the same in Vecto for a payslip calculated now.

Gross 4,050 RON: CAS 1,012.50 → 1,013 RON; CASS 405 RON.

Every amount stored on a new payslip (net, totals) has at most 2 decimals.

Legal basis

  • ANAF — D112 structure A7.2.6 (from 01/2026) — contributions are rounded arithmetically to whole lei; sub-unit values become 1 leu; all values are integers (official text). checked on 2026-10-28
  • Fiscal Code implementing rules (HG 1/2016) — Title IV point 4 (art. 64) — the income-tax base is rounded to whole RON: fractions up to 50 bani inclusive are dropped, above 50 bani rounded up (official text). checked on 2026-10-28

Limits and interpretations

  • The rounding used when filing is decided by the company's accountant — check with your specialist.

Calculation versions and approved payslips

What Vecto does

Each monthly RON payslip stores the calculation version and the data used (rates, dependants, supplementary deduction, untaxed amount). When a rule changes, the version goes up.

Formula

  • monthly-v1 (2026-10-10): old personal deduction grid
  • monthly-v2 (2026-10-21): personal deduction per art. 77
  • monthly-v3 (2026-10-22): supplementary deduction art. 77(10)–(13)
  • monthly-v4 (2026-10-22): minimum-wage untaxed amount (OUG 89/2025)
  • monthly-v5 (2026-10-22): leave (annual leave, sick leave by certificate code)
  • monthly-v6 (2026-10-23): sick leave — 12 minimum-wage cap, insurance record, regularisation in the current month, exceptions to the one-day reduction
  • monthly-v7 (2026-10-28): CAS, CASS and income tax rounded to whole RON (D112); from 2026-10-30 for every newly calculated payslip, whatever the month
  • Rule for the sick-leave calculation base, applied from 2026-11-02: the unpaid day is the first working day of the initial certificate (if it has only non-working days, no day is reduced); the daily base (income ÷ working days) is calculated once, on the 6 months before the month of the initial certificate, and kept for continuation certificates
  • Approved, locked or paid payslips are not recalculated when a new rule arrives; a correction creates a new revision with history (reason, old and new gross).

Worked example

A July 2026 payslip approved with version v3 keeps its amounts even though v4 adds the untaxed amount. The difference is handled through a correction with history.

Limits and interpretations

  • For months with leave or overtime, the payslip stores the calculated lines but not the full calculation basis.
  • The calculation details of a payslip are visible in the app, in the payslip's "Calculation details" section.

What Vecto does NOT do

What Vecto does

Vecto prepares calculations and documents; filing obligations stay with the company and its accountant.

Formula

  • It does not file the D112 return and does not send payroll data to ANAF.
  • It does not pay salaries.
  • It does not calculate sick-leave code 10 with an accident confirmation, nor codes 10 and 11 without the medical expert's opinion (the month cannot be generated until they are calculated manually), codes 02, 03, 04 for posted workers, nor compensation for unused leave at termination.
  • It does not give legal or tax advice.

Privacy Policy · Terms and conditions · GDPR rights · DPA Agreement · How we calculate (for accountants) ·