Payroll in Russia: getting started for a small company
The path in the app has five steps: company → people → month → payout → report. Below is what the app determines itself at each step, what it asks you to confirm and why it needs the data. Unfamiliar words are explained in “Words of the Russian Payroll section”: in the app, each such word has an ⓘ icon next to it.
What you need to start#
- An account on cenaly.ru: the Russian payroll contour runs there, and Russian employees’ data is stored in a Russian cloud.
- Access to the Payroll section: the owner has it, employees are granted it separately. By default the owner approves payouts.
- An employer company with the country “Russia” and employees on employment or civil (GPH) contracts.
- At hand: an extract from the company register (EGRYuL, or EGRIP for a sole proprietor), the tax office and Social Fund registration notices, employees’ documents.
What the app does itself and what it asks you to confirm#
| The app determines | It asks you to confirm or enter |
|---|---|
| The insurance contribution rate and the codes for the report — from the company details | The main activity code (OKVED), the entry in the small and medium business register with the check date, income by activity — when the rate depends on them |
| Taxpayer status and insured person category — from residency and citizenship | Surname, first name and patronymic separately, citizenship, document, the employee’s INN and SNILS |
| Income tax on every payment and its transfer deadlines | The actual date of each payment |
| Report deadlines, moved off weekends and holidays by the production calendar | Company details: OKTMO, tax office code, Social Fund registration number |
| The minimum wage by place of work (federal or regional) | The region where people work, if the address does not make it clear |
The app does not turn the unknown into zero or into “eligible”: an empty field is shown as “missing”, and a benefit that cannot be confirmed is shown as “not confirmed” — the calculation provisionally follows the standard rules.
1. The employer company#
“Payroll” → “Settings” → “Companies (employers)”. Add the company, set the country to “Russia” and the form: organisation or sole proprietor (IP). Reports are filed by the company, so forms and deadlines follow the company’s country, not the country of your locations.
- INN, KPP and OGRN (OGRNIP for a sole proprietor, who has no KPP) — in the main company form.
- “Details for the tax office and Social Fund” for a Russian company: OKTMO, tax office code, Social Fund registration number, main OKVED, who signs the reports, separate divisions with their own KPP and OKTMO. Details are saved with a “Valid from” date: a report uses the details valid in its period.
- Tax office code — from the list: start typing the code or part of the tax office name in Russian (“7705”, “Москва 5”) and pick a row — the tax office name for printing fills in by itself. The Federal Tax Service list of tax offices updates automatically; its release date is shown at the bottom of the list. If the code is not in the list, a warning appears under the field: check the code against the tax registration notice — the notice takes precedence over the list.
- Where to get them: the register extract, the tax registration notice, the Social Fund registration notice; OKTMO — the tax service “Determine tax office details” by address.
If a detail is missing, the report says which one, and a button opens the edit window right there.
Contribution rate#
A Russian company in the employer list has a line “Contributions: …” and a “How contributions are calculated” button. The window shows the result: which rate applies, how a payment is split (for example, up to 1.5 minimum wages and above), the injury insurance rate and why.
- The app derives the rate from facts: the main OKVED, the small and medium business register entry, income by activity. The app does not check the SME register itself: you mark “yes / no / don’t know” and the date of the check.
- While something is missing, the benefit is not confirmed and the calculation provisionally uses the standard rate. Headcount alone does not make you eligible.
- For a new company (no rate marked before and no approved months from that date), the program applies a confirmed rate itself when you save the details. Otherwise a decision is applied only explicitly: “See what changes” → “Apply from …”. Approved months do not change.
- Injury insurance — the rate from the Social Fund notice. It depends on the type of activity, not on company size; without a rate the app does not substitute “some” value.
- Rare cases are in the collapsed “For the accountant” block: a manual decision with a reason, special status (IT, non-profits, special economic zones and other reduced rates), report codes, decision history.
Which taxes and contributions the company pays#
- NDFL is the employee’s income tax. The company withholds it from every payment and transfers it on the employee’s behalf: in this role it is a tax agent.
- Insurance contributions (pension, medical and social insurance) are paid by the company on top, from its own money — they do not reduce the employee’s pay.
- Injury insurance contributions — separately, at the rate from the Social Fund notice.
- NDFL and insurance contributions are paid as one payment (ENP) to the single tax account; to let the tax office allocate the money, notices of calculated amounts are filed by the deadlines. The “Deadline calendar” shows the dates.
2. People#
Employees are created in the Staff section. For Russian reports the employee card has the block “Data for reports to the tax office and Social Fund”:
- surname, first name and patronymic separately, date of birth, sex;
- citizenship and document code;
- the employee’s INN and SNILS — the numbers are validated by their check digits.
Taxpayer status (resident or not) and the insured person category are determined automatically by default. Residency is based on days in Russia (183 days within 12 consecutive months), not on citizenship. Rare fields are in the “For the accountant” section.
Child and other deductions and income from a previous employer this year have their own fields; a tax office notice of the right to a deduction is entered with its date.
Social Fund reports on hiring, transfer and dismissal need the order number and date and the occupation code (OKZ). The fields appear in the HR event window; for an event already recorded, the employment history has an “Order” button. A civil (GPH) contract needs its number and dates.
If you start mid-year: opening data#
Tax and thresholds are counted from the start of the year, so the app needs the months calculated before the switch: “Payroll” → “Settings” → “Opening data”. Months for the contributions report are entered by accrual month, for the income tax report — by payment date. An empty field is not zero: mark “no payments” if there really were none. Table import is available, including from 1C reports.
3. The month#
“Monthly calculation” collects hours, salaries and rates, bonuses, sick pay, vacation pay and dismissal payments into a draft. The app warns you if:
- pay for the full working time is below the minimum wage at the place of work — see “Minimum wage”;
- a calculation rule has not yet been confirmed by the primary source — a yellow “check with your accountant” mark next to the affected line;
- data for reports is missing.
A warning does not block approval: it tells you what to check.
Approving is not paying#
- “Approve the calculation” locks the month’s amounts. Payouts and reports are calculated from them from then on. No money moves.
- A payout is recorded separately, with the actual date. An approved month can be corrected: the previous amounts and payouts stay in the history, and re-approval takes only the difference into account.
4. The payout#
For income tax, the date of income is the day of actual payment. So every payment — advance, salary, vacation pay, final settlement — is a separate event with its own date, withheld tax and transfer deadline.
- Tax withheld from payments made on the 1st–22nd is transferred by the 28th of the same month; from the 23rd to the last day — by the 5th of the next month; for 23–31 December — by the last working day of the year. A deadline that falls on a day off moves to the next working day.
- A planned payment date is only a draft with a warning: the exact tax deadline comes from the actual date.
- The advance is calculated for the working days actually worked from the 1st to the 15th: recorded leave, sick leave and absences are subtracted, as in 1C:ZUP. An absence that has not been recorded yet is invisible — record it before paying. If an absence is recorded after the advance and the advance exceeds the month’s earnings, an overpayment item appears in “Needs attention”: the program withholds nothing by itself; the difference may be recovered by a withholding order within a month if the employee does not object, and no more than 20 % of a payment (Labour Code of Russia, art. 137–138).
- The app does not transfer money to the bank. A payment list for the bank is a list, not a transfer.
5. The report#
“Payroll” → “Government” → “Reports”: the “What to file” block shows the month’s or quarter’s reports with deadlines and status. Generate the form, review the remarks, download the file and send it through an e-filing (EDO) operator or the online account. Details — in “Five payroll reports”.
For the accountant#
The short path covers the usual case. Everything rare — a manual rate, special status, non-standard categories and codes, exemptions from a regional agreement — sits in collapsed “For the accountant” blocks. Collapsed data is not erased; if it contains something that changes the calculation, the block opens by itself and says why.
Limitations#
- The app does not send reports to the tax office or the Social Fund and does not sign them with an electronic signature.
- It does not check the SME register for you and does not determine the region from an address without your confirmation.
- It does not top pay up to the minimum wage itself: it warns, the decision is yours.
- It does not change approved months retroactively: changes go as a difference in the current period or as a corrected form.
- It does not transfer money to the bank.
Troubleshooting#
| What you see | What to do |
|---|---|
| “Generate” says details are missing | Click “Fill in” next to the remark: the edit window opens in place. Company details — in “Details for the tax office and Social Fund”, a person’s data — in their card |
| Contributions use the standard rate although the company is small | Open “How contributions are calculated”: it says which detail is missing (OKVED, the SME register mark with a date, income) |
| A yellow “check with your accountant” mark in the monthly calculation | The rule for this line is not yet confirmed by the primary source. You can approve; show the line to your accountant |
| The contributions or income tax report says “no payroll for months…” | Approve those months or enter opening data by month |
FAQ#
Do I need to know rate codes and insured categories? No. The app derives them from the company and employee details; the accountant sees the codes in the “For the accountant” section.
Can I pay salary before approving the calculation? Record the payout after approval: amounts are locked first, then the money is recorded. An advance is recorded as its own payout.
The employee is a citizen of another country. Does it change income tax? The income tax rate depends on tax residency (days in Russia), not citizenship; some categories of foreigners have special rules — they are in the employee card and in the words article.
Related sections#
- Words of the Russian Payroll section — the meaning of every term
- Five payroll reports — what to file, when and how
- Minimum wage: federal and regional
- Staff and shifts