Free agents + LAUNCH30: 30% off paid agents until 31 Dec 2026 (one-time purchases only) See free agents
Oarsman AI Sign in

Payslip & Offer Letter Pro for India / Docs

Payslip & Offer Letter Pro for India: setup guide

One salary sheet becomes a Word and Markdown payslip per employee, a payroll register with employer PF and ESI, a bank transfer file, a PF/ESI summary and a check report; offers become letters with an Annexure A CTC break-up.

Who it is for: Owner, office manager or outside accountant of an Indian business with 3-50 employees who makes payslips in Excel or Word every month.

Format: Claude skill pack · Version: 1.0.0 · Tested on: Python 3.13.5 (standard library only)

What it does

Fixed earnings are paid for paid days out of the month's days. PF wages are basic + DA + retaining allowance. Employee PF is 12% of PF wages up to the ceiling for the month: Rs 15,000 before September 2026, Rs 15,000 for 1-16 Sep and Rs 25,000 for 17-30 Sep 2026, then Rs 25,000. Use pf_on=actual for PF on full basic. The employer's 12% splits into EPS (8.33% of capped wages, none at 58 or over, or with eps_member=no) and EPF. ESI applies when monthly gross is Rs 21,000 or less (or when you mark it): 0.75% employee and 3.25% employer, rounded up, with no employee share at Rs 176 a day or less. Professional tax comes from your slab file by state (and gender if your slabs use it), with a February amount. The 50% wage test adds up the allowances outside wages; if they pass half of pay, the excess is flagged, or added to PF wages with --fifty-rule apply. Amounts you type in the sheet are kept, and differences are flagged. TDS is taken as given. Offer letters split CTC into basic (50% by default), HRA, employer PF, optional gratuity and a special allowance balance.

What you need

  • Claude.ai with code execution switched on (or Claude Code, or just Python 3.10+)
  • Your salary sheet for the month
  • Your state's current professional tax slabs, if you deduct PT

5-minute setup

  1. Claude.ai: open Settings → Capabilities → Skills, click Upload skill and pick claude-ai-upload/payslip-offer-letter-pro.zip.
  2. Claude Code: copy the folder skills/payslip-offer-letter-pro into ~/.claude/skills/.
  3. Start a new chat. Attach your file and say: "Use payslip-offer-letter-pro. Make October 2026 payslips from this salary sheet with PF, ESI and Karnataka PT, and check the 50% wage rule".
  4. Claude runs the script and gives you the files listed under Outputs. Check them before you act on them.

Try it with the sample

Run the sample (six fictional employees of a Bengaluru firm, October 2026, plus two offers):

python3 skills/payslip-offer-letter-pro/scripts/core.py --salary samples/salary-oct-2026.csv --month 2026-10 --company "Lakeside Ledger Services Pvt Ltd" --address "2nd Floor, 14 Residency Road, Bengaluru 560025" --pt-slabs samples/pt-slabs-sample.csv --offers samples/offers.csv --signatory "Meera Joshi, Director" --out out

You should see 6 payslips with gross Rs 3,33,909.67 and net Rs 2,96,299.67. Employer PF is Rs 15,747 and employer ESI Rs 1,136. One employee fails the 50% wage test, and there are 2 offer letters. The sample PT slabs are illustrative; use your state's current slabs.

Settings you can change

Option Default What it is
--salary (required for payslips) Salary sheet CSV: emp_id, name, basic, and any of da, hra, conveyance, special_allowance, other_allowance, earn_, overtime, incentive, bonus, arrears, paid_days or lop_days, pf, esi, pt, tds, lwf, advance, other_deduction, ded_, pf_applicable, pf_on, esi_applicable, eps_member, date_of_birth, gender, state, pan, uan, esic_no, bank_name, bank_account, ifsc
--month (required) Pay month, e.g. 2026-10
--pt-slabs (optional) state, gender (optional), min_gross, max_gross, amount, feb_amount
--fifty-rule flag flag the Labour Codes 50% wage test, or apply it to PF wages
--no-auto (off) Use only the PF, ESI and PT amounts typed in the sheet
--offers (optional) name, designation, ctc_annual, joining_date, department, location, basic_pct, hra_pct, include_gratuity, pf_on, reporting_to, probation_months, notice_days, offer_valid_until, candidate_address
--template (built-in) Your own offer letter text with {placeholders}
--company / --address / --signatory `` Printed on payslips and letters
--out out Output folder

What goes in and what comes out

Inputs: Salary sheet CSV for the month: emp_id, name, basic, allowances, paid or loss-of-pay days, TDS, recoveries, PF/ESI settings, PAN, UAN, bank details; Professional tax slabs for your states (optional); Offers CSV and, optionally, your own letter template

Outputs: payslips/-.docx and .md; payroll-register.csv with employer EPF, EPS and ESI; bank-transfer.csv (account, IFSC, net pay); pf-esi-summary.csv (UAN, PF wages, shares, ESI); offer-letters/-offer.docx and .md; payroll-check.md

AI disclosure and limits

This product does not call an AI model at run time. It was built by Oarsman AI's AI agents and checked by the automated tests shipped with it.

Limits: - India only. TDS (income tax) is not calculated; type the amount. - Professional tax and labour welfare fund come only from the slabs or amounts you give. - The PF/ESI summary is a working sheet, not an EPFO ECR or ESIC upload file. - No leave, attendance, arrears or full-and-final logic beyond the columns you give. - Payroll preparation only, not tax or legal advice; offer letters are a starting draft to review.

Not tested by us: - opening the .docx in Microsoft Word itself (checked in LibreOffice) - every state's professional tax rules - EPFO ECR upload (the PF/ESI summary is not an ECR file)

Files

  • oarsman-payslip-offer-letter-pro-v1.0.0.zip
  • CHANGELOG.md
  • QA-REPORT.json
  • README.md
  • SPEC.md
  • SUPPORT.md
  • TROUBLESHOOTING.md
  • VERSION
  • VIDEO-SCRIPT.md
  • claude-ai-upload
  • diagram.mmd
  • diagram.png
  • preview.png
  • samples
  • skills
  • tests

Help

Self-serve: see TROUBLESHOOTING.md (fixes and FAQ). There is no call, chat or email support. Fixes ship as new versions at your download link. Refund: 14 days, works as described, through the checkout platform.