Adjudication as a service · Canadian PHSPs & HSAs

Adjudicate claims in seconds, not days.

Built for Canadian PHSPs and health spending accounts. We check every decision against CRA eligible expense rules and provincial practitioner registers, and we attach the full reasoning.

Bloor West RMT Clinic
Toronto ON · June 18, 2026
Massage therapy, 60 min$142.50
Total$142.50
A. Nowak, RMT · CMTO #U2419
Adjudication CS-2213Approved · 3.2s
EligibleYes, METC
CategoryParamedical · massage therapy
Province checkON, RMT regulated (CMTO)
Prescription requiredNo
Duplicate scanClear

Eligible under ITA s.118.2(2)(a). The practitioner is authorized in the province of service.

The problem

Manual review is the bottleneck.

It doesn't scale

Every receipt eats minutes of a trained reviewer's day. Claim volume grows with your book. Your adjudication team can't.

It's inconsistent

The same claim gets a different answer from a different reviewer on a different afternoon. Claimants notice, and so do plan sponsors.

It's your compliance risk

Approve an ineligible expense or an unauthorized practitioner and the problem lands on your plan documents, not on the claimant.

How it works

Every claim, checked against the rules.

1

Send us the claim

Send a receipt image and claimant details through the API or the review dashboard. Batches, webhooks, or one at a time.

2

Extraction, then a deterministic rules check

We read the receipt, then check the METC expense category, prescription and certification requirements, practitioner authorization in the province of service, and duplicates.

3

Decision returned, with its reasoning

We automate clear approvals and denials. Ambiguous claims go to your reviewers with the relevant CRA rule cited and the context already assembled.

Trust & accuracy

A deterministic rules engine, not a black box.

Models handle extraction. Adjudication itself is deterministic. The same claim against the same rules produces the same decision, and every decision names the rule it rests on.

Audit trail · CS-2214Complete
14:02:11Claim received via API
14:02:13Extraction complete, 11 fields, receipt hash stored
14:02:14Checked METC category, AB practitioner register, duplicates
14:02:14Flagged to reviewer queue, ITA s.118.2(2)(a) cited
14:26:02Approved by S. Osei (your team)

Cited reasoning

Every decision names the specific CRA provision and provincial register it checked.

Humans in the loop

Ambiguous claims always go to your reviewers. You hold final authority on every claim.

Full audit trail

We timestamp every extraction, check, and decision. You can export it claim by claim.

Integration

Works alongside your platform.

Nothing to rip out. Keep your portal, your plan documents, and your claimant relationships. ClaimSpring slots in behind them.

Click an option to preview it.

POST /v1/claimscurl
$ curl https://api.claimspring.ca/v1/claims \
  -H "Authorization: Bearer sk_live_…" \
  -d claimant_id=clm_8f3a \
  -d province=ON \
  -d plan_id=plan_hsa_std \
  -F receipt=@receipt.jpg
Response · 3.2s
{
  "decision": "approved",
  "amount_eligible": 142.50,
  "category": "paramedical.massage_therapy",
  "citations": ["ITA s.118.2(2)(a)"],
  "reasoning": "Rendered by an RMT authorized in ON…"
}
Pricing

Pay per claim, not per seat.

Adjudication is a unit cost. Yours should be too.

You pay per adjudicated claim, with volume tiers as your book grows. No platform fees. No seat licences. We price to your claim mix on a call.

Book a demoPilot partners get direct onboarding help and locked pricing.
Questions

Common questions.

What rules do you check?

We check CRA's eligible medical expense rules under ITA s.118.2(2), prescription and certification requirements, each province's authorized practitioner registers, your plan's own limits and riders, and duplicates across the claimant's history.

What happens with ambiguous claims?

They go to your reviewers with the extraction, the rule analysis, and the specific CRA provision already assembled. Most reviews take a minute instead of an afternoon.

Who has final authority?

You do. You can override any automated decision, and your team always decides flagged claims. Claimants only ever see your brand.