Taxzi is an estimate assistance tool, not a registered tax practitioner. You review every line. Nothing files with SARS. This calculator is an estimate for an individual taxpayer, not a SARS assessment, and nothing is filed. Confirm figures on sars.gov.za or with a registered tax practitioner before you rely on them.
When to call it
Use this when someone needs a rand estimate of South African individual income tax: salary, freelance income, PAYE already paid, a retirement annuity contribution, medical aid members, or a home office measured in square metres. Do not use it for company tax, trusts, VAT, or to file a return.
Uploading a bank statement and anything saved against an account stays behind login. Do not send an ID number, a statement, or a password to these endpoints.
Estimate
POST /api/public/tax-estimate or the same path with GET query parameters. Default year is 2026/27. CORS is open. There is a simple in-memory limit of 60 requests a minute per client, and inputs are not written to a log or a database.
curl -s https://taxzi.co.za/api/public/tax-estimate \
-H 'content-type: application/json' \
-d '{ "taxYear": "2026/27", "age": 35, "annualSalary": 245100, "freelanceIncome": 0, "payePaid": 30000, "raContributions": 0, "medicalAidMembers": 1, "homeOffice": { "officeM2": 12, "homeM2": 80, "monthlyRent": 9000, "months": 12 }}'The JSON comes back with taxable income, tax before and after rebates, medical credits, the section 11F deduction, the home office deduction, a refund or an amount owing, the marginal and effective rates, assumptions, a disclaimer, and a link to taxzi.co.za.
Shorter questions
POST /api/public/ra-saving— how much tax comes back on a contribution. Body:contribution,annualIncome, optionalageandtaxYear. The cap is 27.5% of income, or the year table (R430,000 for 2026/2027, R350,000 for 2025/2026).POST /api/public/home-office—officeM2,homeM2,monthlyRent,months.POST /api/public/marginal-rate—taxableIncome.GET /api/public/brackets— the brackets, rebates, and caps.POST /api/public/provisional-tax— IRP6 first and second payments, with the 20% underestimation warning.POST /api/public/cgt— crypto or investment gain. R50,000 exclusion for 2026/27, then 40%.POST /api/public/two-pot— savings withdrawal at marginal rates (3926).POST /api/public/paye-check— monthly salary versus PAYE deducted.POST /api/public/medical-credits— section 6A and the additional credit.POST /api/public/donations— section 18A, 10% cap, code 4011.POST /api/public/travel-allowance— logbook at the SARS rate per kilometre.POST /api/public/ra-optimiser— contribution that maximises the refund, before 28 February.
MCP
Public calculators are Streamable HTTP at https://taxzi.co.za/api/mcp. Tools include calculate_sa_tax, provisional_tax, crypto_cgt, two_pot_withdrawal, payslip_paye_check, medical_tax_credits, section_18a_donations, travel_allowance, ra_refund_optimiser, ra_tax_saving, home_office_deduction, and sa_tax_brackets. No API key. Every calculator result links back to a statement review. Account tools live at https://taxzi.co.za/api/mcp/account. The server card is at /api/mcp/server-card.
curl -s https://taxzi.co.za/api/mcp \
-H 'content-type: application/json' \
-H 'accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'Connect an account
ChatGPT and Claude connect at https://taxzi.co.za/api/mcp/account. That endpoint returns 401 and WWW-Authenticate on initialize, which is what starts “Connect Taxzi”. Resource metadata is at /.well-known/oauth-protected-resource and /.well-known/oauth-protected-resource/api/mcp/account. The server speaks OAuth 2.1 with PKCE (S256) and dynamic client registration. Public calculator calls on /api/mcp stay unauthenticated. upload_statement takes a base64 PDF or CSV up to 3MB so the JSON body stays under Vercel's 4.5MB limit. get_tax_report and get_filing_pack_summary use the same figures as the dashboard.
- /.well-known/oauth-protected-resource
- /.well-known/oauth-authorization-server
POST /api/oauth/register— public clients usetoken_endpoint_auth_method: noneGET /oauth/authorize— existing Taxzi login, then a consent screenPOST /api/oauth/token— access tokens last 15 minutes. Refresh tokens rotate.POST /api/oauth/revoke— revokes the access token and its refresh token- /connections — the user revokes an assistant
A new statement spends one analysis credit, the same rule as the website. Uploading the same period again is free. get_tax_report uses the amounts on that user's statements and does not annualise them. The consent screen includes a POPIA note: Taxzi is the responsible party, the assistant is separate, and only the listed data is shared.
Discovery
- /llms.txt — short overview and when to use Taxzi
- /llms-full.txt — brackets and rules
- /openapi.json — OpenAPI 3.1
- /.well-known/api-catalog
- Browser calculator
Questions about the product: david.sampson@superstack.co.za.