VCB-AI
Deterministic · AI free

The engine that makes
labour and tax law computable.

Every answer cites the section, is reproducible, and is computed without a language model.

New The Income Tax Act, computed
POST /v1/call pure function
// one dispatch for every rule
curl -X POST https://logic.toolkit.zone/v1/call \
  -H "x-api-key: $KEY" \
  -d '{"fn":"resolve","args":["lac_notice_of_appeal",{"trigger_date":"2026-03-02"}]}'

// response
{"ok": true, "deadline": "2026-03-16",
 "rule": "LAC Rule 5(1)(b)", "assurance": "audit_register"}
Precision instruments over printed legislation
58 rulesCCMA to ConCourt
616 testsall passing
3 statutesCatala audit PDFs
New · Income Tax Act 58 of 1962

South African tax, computed from the Act.

Allowances, withholding, foreign companies, turnover tax and the company computation itself. Every figure is worked out again in whole cents and tied to the section that requires it. The same facts give the same rand, every time.

12tax areas computed today
15more in build now
0rands in floating point. Whole cents only
1rule for judgement calls: flag them, never guess

The coverage map

Section by section, in the open.

Green is computed today. Brass is being built now, one module at a time, each checked against the Act before it ships. Nothing on this map is described as done before it is.

  • s 9D · s 10B

    Foreign companies and foreign dividends

    Net income inclusions for controlled foreign companies, the high-tax exclusion and the foreign dividend exemption, tier by tier.

    Computed today
  • s 11(e) · s 23H

    Wear-and-tear and prepaid expenditure

    Every monthly allowance worked out again from cost and write-off period, with the six-month prepaid limit applied.

    Computed today
  • s 12B

    Renewable energy allowance

    Asset by asset from first use, part-year apportionment, and recoupment under s 8(4)(a) when an asset is sold.

    Computed today
  • s 8(1)

    Travel and subsistence allowances

    Each allowance checked against the statutory rules, and the taxable part separated from the business part.

    Computed today
  • s 24J

    Interest accrual

    Accrual worked out again for every period. The holder's inclusion must equal the issuer's deduction.

    Computed today
  • Part VIII

    Dividends tax

    20 percent, or a treaty rate only when a valid declaration and undertaking were on file before payment.

    Computed today
  • ss 50A–50H · Part IVA

    Non-resident withholding

    Withholding on interest, royalties and entertainer fees, rated from the payee's status and paid over on time.

    Computed today
  • Sixth Schedule

    Turnover tax for micro businesses

    TT02 interims and the TT03 annual return, worked out again from amounts received and the bands in force.

    Computed today
  • s 11F · UIF · SDL

    Payroll deductions

    Retirement, medical, UIF and SDL proved employee by employee, inside every ceiling and remittance deadline.

    Computed today
  • ITR14

    Company tax computation

    From accounting profit, through add-backs and allowances, to normal tax, with every row traced to its source.

    Computed today
  • IT3(b)

    Third-party returns

    Every reportable payee reassembled, tested against the box threshold, and tied to what was actually issued.

    Computed today
  • Transfer Duty Act

    Transfer duty on settlement

    Duty and settlement figures tied out unit by unit before the transfer is lodged.

    Computed today
  • s 22

    Trading stock

    Opening plus purchases minus closing equals cost of sales, to the cent, with recoupment on disposal.

    In build
  • s 20

    Assessed losses

    Balances carried forward and set off against income, never below zero, with sequestration and compromise rules.

    In build
  • s 11

    General deductions

    The deduction rules from (a) onwards, with the capital or revenue question handed to a person.

    In build
  • s 12C · 12D · 12H · 12N

    Capital allowances

    Manufacturing plant at 40, 20, 20 and 20 percent, pipelines, learnerships and improvements on leased land.

    In build
  • s 10(1)

    Exempt income

    More than twenty-seven categories of exemption, each with its own conditions.

    In build
  • s 8

    Employment income, in full

    Everything an employee receives beyond allowances, brought into income on the right basis.

    In build
  • s 24I

    Foreign exchange

    Exchange gains and losses on foreign currency items, realised and unrealised.

    In build
  • s 24J · official rate

    Deemed interest

    Low-interest loans, with the official rate taken from SARS and never assumed.

    In build
  • s 8C · s 8B

    Share schemes

    Vesting gains on equity instruments and the broad-based employee share plan exemption.

    In build
  • s 25B

    Trust income

    Income that vests in beneficiaries, and income that stays taxed in the trust.

    In build
  • s 18A

    Donations to PBOs

    Capped at 10 percent of taxable income, and only against a PBO approval that was in force on the day.

    In build
  • Eighth Schedule

    Capital gains tax

    Proceeds, base cost, exclusions and inclusion rate, including time-apportionment for pre-2001 assets.

    In build
  • ss 80A–80L

    Anti-avoidance warning signs

    Flags the hallmarks of an impermissible avoidance arrangement for review. It never applies the rule itself.

    In build
  • s 7(2)–(5)

    Income between spouses

    Income shifted to a spouse or minor child, attributed back to the person the Act names.

    In build
  • s 11D

    Research and development

    The 150 percent deduction, only for projects approved before the spend.

    In build

What exact looks like

The rule, the facts, the rand.

Part VIII · dividends taxIllustrative figures
Dividend paid to a non-resident
R250,000.00
Treaty rate claimed
10%
Declaration and undertaking on file before payment
No
Rate the Act allows
20%
Tax that should have been withheld
R50,000.00
Under-withheld, flagged before the return
R25,000.00
s 24J · interest accrualIllustrative figures
Adjusted initial amount
R1,000,000.00
Yield for the period
11.00%
Days in the accrual period
181 of 365
Holder includes in income
R54,547.95
Issuer deducts
R54,547.95
Difference the engine allows
R0.00
A brass vault door, open a crack, with ledger-ruled gears inside

Where the Act asks for judgement

The engine stops, and says why.

Some words in the Act are not arithmetic. A model would guess them. Certus Logic hands them to your tax specialist, with the section and the facts it holds.

  • s 22(1)A “just and reasonable” write-down of trading stock
  • s 11Whether spending is capital or revenue
  • s 8CThe market value of shares in a private company
  • s 24IWhether an exchange item arose in the course of trade
  • s 80AThe “sole or main purpose” of an arrangement
  • s 24JThe official rate, which must come from SARS

What it does

The corpus says what the law says. This answers what to file, by when, on which form, in what amount. No model guards the number.

Rules as data

One legal value is one flat entry. A gazette change is an append with a citation, never a silent edit. Past cases stay correctly computable.

data/amendments.js · resolveAsOf()
A brass balance resting level across a ruled ledger

Pure functions

No database, no network, no random. Same inputs give same bytes, stamped with engine version and pack hash.

Audit by construction

Catala prints as the audit document: paragraph on the left, executable rule on the right, worked examples below.

catala latex --wrap → PDFs · 19/19 + 18/18
Computes
  • CCMA, LC, LAC and ConCourt deadlines with holidays and recess
  • Severance, notice, leave, UIF, SDL and NMW in integer cents
  • Forms, checklists and affidavit routing
Declines explicitly
  • SCA and High Court work returns out of scope, never a guess
  • Unsupported is never served, provenance gate enforced at build
  • Two assurance tiers: audit register and researched live

For banks

Lend against real payroll. Verify the payslip claim before the credit decision, price the retrenchment before the referral lands.

Affordability and payroll verification

Recompute UIF to R17,712, SDL 1 percent, PAYE brackets and net pay from gross and period. Flag mismatch early.

Retrenchment exposure

Price 200 person exits: severance under BCEA s41, notice under s37, leave payout and PILON. Versioned by trigger date so 2025 and 2026 rates do not bleed.

Business banking compliance

Offer SME clients a check they can show a union: NMW R30.23, BCEA s35 weekly calc and foreign national facts with citations.

Example

Severance exposure

calculateSeverancePay · 4 year · R4,500 weekly · operational requirements

R18,000 per person · R3.6m for 200

Stone columns of an old banking hall in low light

For companies

Every payslip and termination hits a statute. Make that statute executable and give finance the same proof your auditor reads.

Payroll and tax

UIF 1 percent plus 1 percent to ceiling, SDL 1 percent, PAYE and ETI in integer cents. Rates are versioned inputs, not constants.

HR and terminations

Notice under BCEA s37, severance under s41, annual and sick and family responsibility leave, with collective agreement overrides.

Finance and audit

Provision the retrenchment, accrue leave, close the month. Every figure carries engine version and pack hash.

A line of workers walking towards a mine headgear at sunrise
Example

CCMA referral deadline

ccmaReferralDeadline · dismissal 2026-02-10 → 2026-03-12 · 30 days · LRA s191

PayrollUIF, SDL, PAYE
HRleave, notice
Financeprovisions

Integrate once

One endpoint for every rule. The engine returns a structured ok or error shape, the HTTP layer only forwards it. Add a rule by adding one flat data entry.

# API keys, one per app
CERTUS_LOGIC_API_KEYS='{"payroll":"…","lending":"…"}' node api/server.js

# health
curl http://localhost:8787/health
# → {"service":"certus-logic","rulesKnown":58}

# any function, same shape
curl -X POST -H "x-api-key: payroll" \
  -H "Content-Type: application/json" \
  -d '{"fn":"calculateNoticePeriod","args":[{"years_service":"1 year 3 months"}]}' \
  http://localhost:8787/v1/call
What you get
  • 58 rules from CCMA to ConCourt, plus BCEA, LRA, EEA and NMWA
  • 616 tests, every calculator and deadline pinned
  • Per app rate limit with Retry-After and /v1/stats
  • Ships as HTTP service or single file dist/tinman-brain.js with zero dependencies

No AI in the path. The engine is pure functions. A model, if you use one, reads computed facts and never computes them.

The full architecture, including the frozen date engine and provenance gates, is on the How it works page.

Put the Act in the build.

For South African banks, payroll platforms, HR suites and finance teams. One engine, every labour and tax figure, citable to the gazette. Certus Law is the toolkit that runs on it.