OHIP response codes,
explained

When you validate an Ontario health card, the Ministry of Health returns a response code. This page explains what each code and code band means — whether the card is valid, whether the patient is eligible, and what to do next.

00–49

Card not valid, cardholder not eligible

Something is wrong with the card or the number itself, and the ministry is not confirming eligibility. These are the codes you want to catch before the patient leaves.

What to do

Re-read the card. Check the health number and the two-letter version code against the physical card, then re-validate. If the card itself is the problem, the patient needs to contact ServiceOntario.

05

Card or number problem — not valid, cardholder not eligible.

#
10

Card or number problem — not valid, cardholder not eligible.

#
15

Card or number problem — not valid, cardholder not eligible.

#
20

Card or number problem — not valid, cardholder not eligible.

#
25

Card or number problem — not valid, cardholder not eligible.

#
50–59

Card passed validation — cardholder eligible

The health card passed validation and the ministry considers the cardholder eligible for insured services on that day. This is the outcome you are looking for.

What to do

Proceed with the visit. Eligibility on the day is confirmed; the claim itself remains subject to adjudication by the ministry.

50

Card passed validation, cardholder eligible.

#
51

Card passed validation, cardholder eligible — patient is on an active roster.

#
52

Card passed validation, cardholder eligible.

#
53

Card passed validation, cardholder eligible.

#
54

Card passed validation, cardholder eligible.

#
55

Card passed validation, cardholder eligible.

#
60–89

Card not valid — but the cardholder is still eligible

The most misread band. The physical card has a problem — reported stolen, cancelled, expired, damaged, returned mail, or the version code does not match — but the person in front of you is still an eligible Ontario resident.

What to do

Provide the service. Then tell the patient their card needs replacing through ServiceOntario, and record the response so your billing has the context. A card problem is not the same as an ineligible patient, and treating it as one is how practices turn a paperwork issue into a refused visit.

65

Card not valid; cardholder may still be eligible.

#
70

Card not valid; cardholder may still be eligible.

#
75

Card not valid; cardholder may still be eligible.

#
80

Card not valid; cardholder may still be eligible.

#
83

Card not valid; cardholder may still be eligible.

#
90+

System and authorization codes

These are not answers about the patient. They are the ministry's HCV system telling you something about the request, the system's state, or your authorization to use it.

What to do

Do not treat these as an eligibility decision. Codes in the 9A–9M range mean the HCV user is not authorized — check the ministry credentials being used. For 90 and 99, retry and check your validation log; if it persists, the issue is upstream rather than with the card.

90

HCV system information.

#
99

HCV system information.

#
9A–9M

Unauthorized HCV user — the credentials used are not permitted to perform this validation.

#

You don't have to memorise the bands

The Dr. Tools OHIP Validation API derives a plain verdict from the official code ranges and returns it alongside the ministry's own wording.

One result, trimmed
 {
  "response_code": "51",
  "response_id": "IS_ON_ACTIVE_ROSTER",
  "response_description": "Health card passed validation",
  "response_action": "You will receive payment for billable services rendered on this day.",
  "status": { "card": "valid", "eligible": true },
  "response_audit_id": "..."
} 

status is derived by Dr. Tools from the official response-code ranges. response_description and response_action are the ministry's own text, passed through untouched — as is response_audit_id, the ministry's audit identifier for the transaction.

Branching
 // Branch on the derived verdict, not the numeric band.
if (result.status.eligible) {
  proceedWithVisit();
} else if (result.status.card === 'invalid') {
  // Cardholder may still be eligible — check status.eligible before turning
  // anyone away. See the 60-89 band below.
  flagCardForReplacement();
} 

The trap worth guarding against in code is the 60–89 band: card not valid, cardholder still eligible. Reading only status.card is how a paperwork problem turns into a refused visit.

Validate cards from your own software

One HTTPS POST returns all of this — the code, the ministry's wording, the derived verdict and the cardholder's registered demographics. $49 CAD a month.

OHIP Validation API

Common questions

What does OHIP response code 51 mean?

Code 51 falls in the 50–59 band: the health card passed validation and the cardholder is eligible. In the Dr. Tools API it is returned with the response id IS_ON_ACTIVE_ROSTER, indicating the patient is on an active roster. The derived status object reports card valid and eligible true, so you can branch on that rather than on the code itself.

The card is not valid but the patient is eligible — what do I do?

That is the 60–89 band, and it is the one most often misread. Provide the service: the person is an eligible Ontario resident. The card itself needs replacing through ServiceOntario — it may be expired, damaged, cancelled, reported stolen, associated with returned mail, or carrying a version code that no longer matches.

What does a 9A to 9M response code mean?

It means the HCV user is not authorized. This is a credentials problem on the requesting side, not a statement about the patient. Check the Ministry of Health EBS credentials being used for the request and the authorizations attached to them.

Does the API return the ministry's own wording?

Yes. Every result carries the ministry's response_description and its response_action — the recommended action in the ministry's own words — alongside the code, plus response_audit_id, the ministry's audit identifier for the transaction, which is what you want on hand for a dispute.

Do I have to memorise the code bands?

No. The Dr. Tools API derives a status object from the official code ranges, so your code can read status.eligible and status.card instead of matching on numeric bands. The bands are documented here for the times you are reading a log or explaining a result to a colleague.

About this reference

The code bands and their meanings above are taken from the response vocabulary the Ministry of Health returns through the Health Card Validation service, as observed by our own integration. Every validation response also carries the ministry's own description and recommended action for that specific code — where those differ from the band summary here, the ministry's wording is authoritative.

Dr. Tools is an independent company and is not affiliated with, endorsed by or certified by the Ontario Ministry of Health. A validation reports what the ministry says about eligibility on the day of the request; it is not a guarantee of payment, and claims remain subject to adjudication by the ministry. Spotted something that looks wrong? Tell us at support@drtools.ca — we would rather fix it than leave it.

Validate cards by API $49 CAD / month
Learn more