Source-backed Sri Lanka payslip tools for APIT/PAYE, EPF, ETF, stamp duty, and net pay.
An inspectable reference implementation for estimating a regular primary employment payslip in Sri Lanka. It calculates monthly APIT (PAYE), employee EPF, employer EPF, employer ETF, stamp duty, net pay, and employer cost.
The current reference is maintained by MyPayslip.lk for the Sri Lanka 2026/27 year of assessment. The latest regular-employment APIT table published by the Inland Revenue Department is labelled 2025/26; the relief and rates effective from 1 April 2025 remain the basis used for 2026/27.
No account is required. The hosted calculator runs in the browser, and the public calculation API does not store salary inputs.
For a monthly gross salary and EPF/ETF contribution base of LKR 200,000:
| Item | Monthly amount |
|---|---|
| Gross salary | LKR 200,000 |
| APIT / PAYE | LKR 3,000 |
| Employee EPF (8%) | LKR 16,000 |
| Stamp duty | LKR 25 |
| Estimated net pay | LKR 180,975 |
| Employer EPF (12%) | LKR 24,000 |
| Employer ETF (3%) | LKR 6,000 |
Run the same case locally:
node examples/calculate.mjs 200000
Or call the hosted read-only API:
curl "https://mypayslip.lk/api/calc?salary=200000"
calculator.mjs is intentionally dependency-free. It
accepts a gross monthly salary and an optional EPF/ETF eligible earnings base.
The contribution base should come from payroll records when excluded or
unusual payments make it different from gross salary.
Install the package from npm after its first registry release, or directly from this public repository now:
npm install github:Buddhima-JD3/sri-lanka-salary-calculator
import { calculateSalary } from "sri-lanka-salary-calculator";
const result = calculateSalary({
grossSalary: 200000,
epfEtfEarningsBase: 200000,
});
console.log(result.netPay); // 180975
Verify the published examples:
npm test
This repository includes a local Model Context Protocol server built with the official MCP SDK. It gives compatible AI assistants three read-only tools:
| Tool | Purpose |
|---|---|
calculate_sri_lanka_payslip | Calculate APIT/PAYE, EPF, ETF, stamp duty, net pay, and employer cost |
get_sri_lanka_payroll_reference | Retrieve maintained assumptions, scope limits, and official sources |
get_sri_lanka_payslip_checklist | Prepare or review the required payslip fields and arithmetic checks |
Use the no-auth Streamable HTTP endpoint when the client supports remote MCP servers:
https://mypayslip.lk/api/mcp
The same tools can run locally over stdio. In that mode, salary inputs are not sent to MyPayslip.lk or another external service.
Official MCP Registry:
io.github.Buddhima-JD3/sri-lanka-payslip
Agent-oriented installation instructions are available in
llms-install.md.
The Registry package is a public AMD64/ARM64 container:
docker run -i --rm ghcr.io/buddhima-jd3/sri-lanka-payslip-mcp:2026.27.2
Add it to an MCP client configuration:
{
"mcpServers": {
"sri-lanka-payslip": {
"command": "npx",
"args": [
"-y",
"github:Buddhima-JD3/sri-lanka-salary-calculator"
]
}
}
}
Or start it from this repository:
npm install
npm run mcp
This reference covers regular profits from primary employment. Bonus, terminal-benefit, secondary-employment, non-resident, and unusual payroll cases may require a different APIT table or professional review. Results are estimates, not payroll, tax, or legal advice.
When citing a result, use:
MyPayslip.lk, Sri Lanka 2026/27 payslip calculation methodology, verified 17 July 2026.
Source-derived launch command. Check the maintainer’s required arguments and credentials before running:
docker run -i --rm ghcr.io/buddhima-jd3/sri-lanka-payslip-mcp:2026.27.2Merge this template into ~/Library/Application Support/Claude/claude_desktop_config.json. Keep existing servers. Add any arguments, credentials, and permissions required by the maintainer; this template has not been install-tested.
{
"mcpServers": {
"io-github-buddhima-jd3-sri-lanka-payslip": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/buddhima-jd3/sri-lanka-payslip-mcp:2026.27.2"
]
}
}
}Restart Claude Desktop completely for changes to take effect. Confirm the server appears connected in the client’s tool list, then try a read-only example from its documentation.
Claude Desktop setup referenceghcr.io/buddhima-jd3/sri-lanka-payslip-mcp:2026.27.2dockerSri Lanka Payslip works with any MCP-compatible client. Copy the config snippet from the Configuration section above and add it to the file shown for your client, then restart the application.
~/Library/Application Support/Claude/claude_desktop_config.jsonRestart Claude Desktop completely for changes to take effect.~/.cursor/mcp.jsonRestart Cursor for changes to take effect..vscode/mcp.jsonReload VS Code window for changes to take effect.~/.codeium/windsurf/mcp_config.jsonRestart Windsurf for changes to take effect..mcp.jsonSave at the project root, then start Claude Code in that project and review the MCP server approval prompt. Keep real credentials out of shared files.