Eligibility Check

View as Markdown
Verifies the patient with Medicare and works out what they can claim, for up to 50 MBS items in one call. ## What you get back ``` PatientVerification Was the patient known? Rebates[] One per item you sent ├─ ItemNumber ├─ IsEligible ├─ Reason ├─ ReasonCode ├─ Benefit ├─ ItemScheduleFee └─ Checks[] One per check run on it ├─ Title ├─ IsEligible ├─ Reason └─ ReasonCode ``` <Card title="See a full result, rendered" href="https://rebateright.com.au/eligibility-check-result"> This response laid out as a screen — the answer on each item, the benefit, and the checks — for the front desk as much as the developer. </Card> Each item in `Rebates` holds: | Field | What it holds | |---|---| | `ItemNumber` | The item you asked about, echoed back. `"104"` | | `IsEligible` | Can the patient claim it. `true`, `false`, or `null` | | `Reason` | Why, in one sentence you can show as it is. | | `ReasonCode` | A code for that reason, for analytics only. | | `Benefit` | What Medicare pays, in dollars. `"88.36"`, never cents | | `ItemScheduleFee` | The MBS fee for the item. `"103.95"` | | `Checks` | One entry per check that ran on this item, detailed below. | Each entry in `Checks` holds: | Field | What it holds | |---|---| | `Title` | What it checked. `"Patient age"`, `"Frequency of service"` | | `IsEligible` | What this one check found. `true`, `false`, or `null` | | `Reason` | Why, in one sentence you can show as it is. | | `ReasonCode` | A code for that reason, for analytics only. | So `IsEligible` / `Reason` / `ReasonCode` answer the question at both levels: the item gives you the answer, and its checks show the working. A full response is in the example panel alongside this page. ## `IsEligible`: `true`, `false`, or `null` `IsEligible` is not a yes/no flag. Handle all three values: | `IsEligible` | Result | Meaning | What to do | |---|---|---|---| | `true` | **`eligible`** | The patient is eligible to claim this item. | Proceed with the claim. | | `false` | **`not eligible`** | The patient is not eligible. | Show `Reason`. A claim would not be paid. | | `null` | **`cannot determine`** | The item couldn't be checked for this patient. | Show `Reason`, and see below. | ## When `IsEligible` is `null` Something a check needed was missing or unavailable. A `null` is never a quiet `false` — only `false` says the patient can't claim. The causes include: | Cause | What to do | |---|---| | No referrer sent, on an item that requires one | Send `ReferrerProviderNumber` and check again. See [Provider Atlas](/provider-atlas). | | Medicare doesn't verify this item online, and it has a claim-frequency limit we can't see | Nothing is missing: every other check passed. Decide using the patient's history. See [coverage](/eligibility-coverage). | | The details you hold don't match Medicare's current record | Correct the details and check again. `PatientVerification` says what was wrong, and `Checks` shows what could still be checked. | To see which check it was, find the entry in `Checks` with `IsEligible: null`. ## How to use each field | Field | Use it for | Don't | |---|---|---| | `IsEligible` | Branching your logic. | Treating it as a boolean. | | `Reason` | Showing the outcome to staff or patients. | Parsing it. The wording changes. | | `ReasonCode` | Analytics, grouping, and reporting. | Branching your logic. | <Note> **`ReasonCode` is for analytics, not decisions.** The set of codes grows as RebateRight covers more checks, so new ones appear over time and are not a breaking change. Anything you branch on should come from `IsEligible`, which is stable. </Note> ## The checks Every check that ran on an item appears as an entry in its `Checks`. Together they cover the MBS rules (patient age, referrer eligibility, in-hospital status, and similar) and the live Services Australia assessment: how often the item has been claimed, items that conflict on the same day, the servicing provider, and its other rules. Each check's `Title` names what it looked at, and stays stable. New checks appear as RebateRight's coverage grows, so handle unfamiliar titles gracefully. Medicare doesn't verify every item online. Where it can't, RebateRight's own rules decide and the answer is **indicative**: a clear answer from our checks rather than a live confirmation from Services Australia. The [coverage guide](/eligibility-coverage) lists which items fall where. The example responses below show every outcome in full. To see one rendered as a screen — the answer, the benefit and the checks, laid out for the front desk — see [What an eligibility check looks like](https://rebateright.com.au/eligibility-check-result). <Warning icon='gavel'> **Display `Reason` exactly as supplied.** It is a requirement by Services Australia that its messages are displayed to the end user exactly as supplied in the response, not truncated, transformed, or changed in any way. The wording may be updated at any time, so never parse `Reason` for logic. This applies at both levels, the item's `Reason` and each check's. </Warning>

Authentication

x-api-keystring
API Key authentication via header
x-minor-idstring
API Key authentication via header

Request

This endpoint expects an object.
PatientDateOfBirthdateRequired

Patient date of birth (YYYY-MM-DD). Cannot be a future date or more than 130 years in the past.

PatientFamilyNamestringRequired
Patient family name as it appears on the Medicare card.
PatientGivenNamestringRequired
Patient first given name as it appears on the Medicare card.
PatientSexenumRequired
Patient sex (Services Australia coding). | Code | Meaning | |---|---| | `1` | Male | | `2` | Female | | `3` | Other | | `9` | Not stated / inadequately described | On a sex-restricted item, `9` returns `IsEligible: null`, since the restriction can't be checked without a recorded sex.
Allowed values:
PatientMedicareNumberstringRequired

Patient’s 10-digit Medicare card number.

PatientMedicareRefNumberstringRequired

Individual Reference Number (IRN) from the patient’s Medicare card, a single digit identifying the family member.

ServicingProviderNumberstringRequired
Provider number of the health professional who performs the service.
PrincipalProviderNumberstringRequired

Provider number of the practice / principal provider the service is billed under. Often the same as ServicingProviderNumber.

MedicareItemslist of objectsRequired

MBS items to evaluate. Up to 50 items total, grouped into up to 16 medical events (via MedicalEventId) with up to 14 items per event.

DateOfServicedateOptional

Date the service was / will be performed (YYYY-MM-DD). Defaults to today when omitted. Cannot be in the future or more than 2 years in the past.

InHospitalTreatmentbooleanOptional

Whether the service is provided to an in-hospital patient. Drives the in-hospital vs out-of-hospital rebate percentage and several MBS restriction rules. Defaults to false when omitted — the service is treated as out-of-hospital.

BulkBilledbooleanOptional

Optional. Indicates the service will be bulk-billed. Used only by rules that differ between bulk-bill and non-bulk-bill scenarios. Defaults to false when omitted — benefits are quoted at the not-bulk-billed rate, so an item carrying the bulk-billing incentive quotes 85% rather than 95% of the Schedule Fee unless you set it.

ReferrerProviderNumberstringOptional
Referring provider's Medicare provider number. Required when any requested item has a referrer restriction. Omit it and those items return `IsEligible: null` (**`cannot determine`**); supply a referrer Medicare doesn't recognise for the item and they return `IsEligible: false` with a plain-language reason. See the [Provider Atlas](/provider-atlas) for who may refer what.

Response

OK
PatientVerificationobject

Did Medicare recognise this patient? Always present. Same outcome as the Patient Verification endpoint, which documents the corrections in full.

Rebateslist of objects

One entry per item you sent, on every response. Match entries by ItemNumber rather than by position, since rules that weigh items against each other (such as coning) can reorder them. If you sent the same item twice, the duplicates keep their relative order.

Reasonstring

Legacy summary field, kept for backward compatibility. New integrations can ignore it and read PatientVerification and Rebates instead.