{"openapi":"3.1.0","info":{"title":"South Africa VAT Threshold Watch API","version":"0.1.0","description":"South Africa VAT Threshold Watch answers the question a growing South African small business keeps asking: is my taxable turnover about to pass the VAT registration line, and how much room is left? check_vat_registration_status compares 12-month taxable turnover with the R2,300,000 compulsory and R120,000 voluntary thresholds SARS states from 1 April 2026 (and the R1 million and R50,000 amounts...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://za-vat-threshold.connectorbay.com/mcp.\n\nDisclaimer: General information only, not legal, tax, accounting or payment advice. South Africa VAT Threshold Watch is an independent tool: it is not affiliated with, endorsed by or operated by any government body, central bank, standards body or scheme operator. Rates, thresholds and rules change; check the cited official source and confirm with a qualified professional before you rely on a result.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/za-vat-threshold/docs"},"termsOfService":"https://connectorbay.com/za-vat-threshold/terms"},"servers":[{"url":"https://za-vat-threshold.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/za-vat-threshold/docs"},"security":[{},{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/check_vat_registration_status":{"post":{"operationId":"check_vat_registration_status","summary":"Classify 12-month taxable turnover as below the voluntary threshold, in the voluntary band (R120,000 to R2.3 million) or","description":"Classify 12-month taxable turnover as below the voluntary threshold, in the voluntary band (R120,000 to R2.3 million) or over the compulsory threshold, with headroom. Use for \"My taxable sales for the last 12 months were R1.95 million: where do I stand against the South African VAT thresholds?\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"taxable_turnover_12m":{"description":"Taxable supplies (turnover) of the last 12 consecutive months in rand, as a plain decimal string such as 1950000.00 (no spaces, commas or R sign).","title":"Taxable Turnover 12M","type":"string"},"on_date":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Date of the check, YYYY-MM-DD; selects the threshold row in force on that date. Defaults to today (UTC). Dates before 2026-01-01 are refused.","title":"On Date"}},"required":["taxable_turnover_12m"],"title":"check_vat_registration_statusArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/project_threshold_crossing":{"post":{"operationId":"project_threshold_crossing","summary":"Find the first month-end at which the rolling 12-month total went over R2.3 million, or project the month it would under","description":"Find the first month-end at which the rolling 12-month total went over R2.3 million, or project the month it would under a growth assumption, with months of headroom. Use for \"I sell about R150,000 a month and grow 3% a month: in which month does my rolling 12-month turnover pass the VAT threshold?\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"monthly_turnover":{"description":"Monthly taxable turnover in rand, oldest first, 12 to 120 consecutive months with no gaps (0 for a month without taxable sales). Each item: {\"month\": \"YYYY-MM\", \"taxable_turnover\": \"rand amount as a plain decimal string\"}.","items":{"additionalProperties":true,"type":"object"},"title":"Monthly Turnover","type":"array"},"monthly_growth_percent":{"default":"0","description":"Assumed month-on-month growth of taxable turnover in percent, compounding (for example 3 for 3 percent; may be negative). Default 0.","title":"Monthly Growth Percent","type":"string"},"base_monthly_turnover":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Monthly turnover in rand from which the growth starts. Defaults to the average of the last 3 supplied months.","title":"Base Monthly Turnover"},"horizon_months":{"default":24,"description":"Future months to project, 1 to 36. Default 24.","maximum":36,"minimum":1,"title":"Horizon Months","type":"integer"},"on_date":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Date of the check, YYYY-MM-DD; selects the threshold row in force on that date. Defaults to today (UTC). Dates before 2026-01-01 are refused.","title":"On Date"}},"required":["monthly_turnover"],"title":"project_threshold_crossingArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/weekly_threshold_alert":{"post":{"operationId":"weekly_threshold_alert","summary":"Return a short alert payload for a weekly scheduled check: alert true when the rolling 12-month turnover is over the thr","description":"Return a short alert payload for a weekly scheduled check: alert true when the rolling 12-month turnover is over the threshold or headroom is below your watch level. Use for \"Every Monday tell me if my 12-month taxable turnover is within 20% of the VAT registration threshold\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"taxable_turnover_12m":{"description":"Taxable supplies (turnover) of the last 12 consecutive months in rand, as a plain decimal string such as 1950000.00 (no spaces, commas or R sign).","title":"Taxable Turnover 12M","type":"string"},"alert_headroom_percent":{"default":"20","description":"Headroom to the compulsory threshold, as a percent of the threshold, below which an alert is raised (a watch level you choose, not a legal test). Default 20.","title":"Alert Headroom Percent","type":"string"},"on_date":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Date of the check, YYYY-MM-DD; selects the threshold row in force on that date. Defaults to today (UTC). Dates before 2026-01-01 are refused.","title":"On Date"}},"required":["taxable_turnover_12m"],"title":"weekly_threshold_alertArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/compare_vat_and_turnover_tax_limits":{"post":{"operationId":"compare_vat_and_turnover_tax_limits","summary":"Compare one turnover figure with the VAT thresholds and the R2.3 million turnover tax limit, which both changed on 1 Apr","description":"Compare one turnover figure with the VAT thresholds and the R2.3 million turnover tax limit, which both changed on 1 April 2026. Use for \"My turnover is R2 million: is that inside the turnover tax limit and under the VAT compulsory threshold since 1 April 2026?\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"annual_turnover":{"description":"Annual turnover in rand as a plain decimal string such as 2000000.00; the same figure is compared with the VAT thresholds and the turnover tax limit.","title":"Annual Turnover","type":"string"},"on_date":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Date of the check, YYYY-MM-DD; selects the threshold row in force on that date. Defaults to today (UTC). Dates before 2026-01-01 are refused.","title":"On Date"}},"required":["annual_turnover"],"title":"compare_vat_and_turnover_tax_limitsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/vat_thresholds_reference":{"post":{"operationId":"vat_thresholds_reference","summary":"Return the VAT standard rate and both registration thresholds held here, with effective dates, the SARS wording, source ","description":"Return the VAT standard rate and both registration thresholds held here, with effective dates, the SARS wording, source URLs, retrieval date and a verification label. Use for \"What is the South African VAT rate and registration threshold now, when did it change and where can I cite it?\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"on_date":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Date of the check, YYYY-MM-DD; selects the threshold row in force on that date. Defaults to today (UTC). Dates before 2026-01-01 are refused.","title":"On Date"}},"title":"vat_thresholds_referenceArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}