For clean Markdown of any page, append .md to the page URL. For a complete documentation index, see https://docs.rebateright.com.au/api-reference/concession/llms.txt. For full documentation content, see https://docs.rebateright.com.au/api-reference/concession/llms-full.txt.

# Concession Verification

POST https://api.rebateright.com.au/Medicare/concessionverification/v1
Content-Type: application/json

> 🚧 **Coming Soon** — This endpoint is not yet available.
> RebateRight is completing Medicare certification. Availability will be announced when certification is complete.

Verifies whether a Medicare patient holds a current concession entitlement.

RebateRight runs a Medicare identity check first. If the patient is found (including a partial match), a concession check is performed. If the Medicare check fails, only a Medicare error is returned — no concession check is attempted.

#### Medicare Status Codes

| Code | Meaning |
|---|---|
| `0` | Patient matched on Medicare |
| `9633` | New Medicare card issued — details differ from records |
| `9202` | Field-level validation failure — see `serviceMessage` for detail |

#### Concession Status Codes

| Code | Meaning |
|---|---|
| `0` | Patient is eligible for concession |
| `9685` | No concession entitlement found |


Reference: https://docs.rebateright.com.au/api-reference/concession/concession-verification

## OpenAPI Specification

```yaml
openapi: 3.1.0
info:
  title: collection
  version: 1.0.0
paths:
  /Medicare/concessionverification/v1:
    post:
      operationId: concession-verification
      summary: Concession Verification
      description: >
        > 🚧 **Coming Soon** — This endpoint is not yet available.

        > RebateRight is completing Medicare certification. Availability will be
        announced when certification is complete.


        Verifies whether a Medicare patient holds a current concession
        entitlement.


        RebateRight runs a Medicare identity check first. If the patient is
        found (including a partial match), a concession check is performed. If
        the Medicare check fails, only a Medicare error is returned — no
        concession check is attempted.


        #### Medicare Status Codes


        | Code | Meaning |

        |---|---|

        | `0` | Patient matched on Medicare |

        | `9633` | New Medicare card issued — details differ from records |

        | `9202` | Field-level validation failure — see `serviceMessage` for
        detail |


        #### Concession Status Codes


        | Code | Meaning |

        |---|---|

        | `0` | Patient is eligible for concession |

        | `9685` | No concession entitlement found |
      tags:
        - subpackage_concession
      parameters:
        - name: x-api-key
          in: header
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/Concession_Concession
                  Verification_Response_200
        '400':
          description: >-
            Validation or business-rule failure; body includes `serviceMessage`
            entries and `correlationId`.
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/PostMedicareConcessionverificationV1RequestBadRequestError
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                dateOfService:
                  type: string
                  format: date
                  description: >-
                    Date the service is being provided. Defaults to today if not
                    supplied. Cannot be in the future or more than 2 years in
                    the past.
                patient:
                  $ref: >-
                    #/components/schemas/MedicareConcessionverificationV1PostRequestBodyContentApplicationJsonSchemaPatient
              required:
                - patient
servers:
  - url: https://api.rebateright.com.au
  - url: https://test-api.rebateright.com.au
components:
  schemas:
    MedicareConcessionverificationV1PostRequestBodyContentApplicationJsonSchemaPatientIdentity:
      type: object
      properties:
        dateOfBirth:
          type: string
          format: date
          description: Cannot be in the future or more than 130 years in the past.
        familyName:
          type: string
          description: >-
            1–40 characters. Alpha, numeric, space, apostrophe and hyphen only.
            If the patient has only one name, supply it here and use `Onlyname`
            as the given name.
        givenName:
          type: string
          description: >-
            1–40 characters. Alpha, numeric, space, apostrophe and hyphen only.
            If the patient has only one name, supply `Onlyname` here and their
            name in `familyName`.
      required:
        - dateOfBirth
        - familyName
        - givenName
      title: >-
        MedicareConcessionverificationV1PostRequestBodyContentApplicationJsonSchemaPatientIdentity
    MedicareConcessionverificationV1PostRequestBodyContentApplicationJsonSchemaPatientMedicare:
      type: object
      properties:
        memberNumber:
          type: string
          description: >-
            10-digit Medicare card number. Must pass the Medicare check digit
            routine. The 10th digit must not be `0`.
        memberRefNumber:
          type: string
          description: >-
            Individual reference number (IRN) — the digit to the left of the
            patient's name on the card. Must be `1`–`9`.
      required:
        - memberNumber
        - memberRefNumber
      title: >-
        MedicareConcessionverificationV1PostRequestBodyContentApplicationJsonSchemaPatientMedicare
    MedicareConcessionverificationV1PostRequestBodyContentApplicationJsonSchemaPatient:
      type: object
      properties:
        identity:
          $ref: >-
            #/components/schemas/MedicareConcessionverificationV1PostRequestBodyContentApplicationJsonSchemaPatientIdentity
        medicare:
          $ref: >-
            #/components/schemas/MedicareConcessionverificationV1PostRequestBodyContentApplicationJsonSchemaPatientMedicare
      required:
        - identity
        - medicare
      title: >-
        MedicareConcessionverificationV1PostRequestBodyContentApplicationJsonSchemaPatient
    MedicareConcessionverificationV1PostResponsesContentApplicationJsonSchemaMedicareStatusStatus:
      type: object
      properties:
        code:
          type: integer
        text:
          type: string
      required:
        - code
        - text
      title: >-
        MedicareConcessionverificationV1PostResponsesContentApplicationJsonSchemaMedicareStatusStatus
    MedicareConcessionverificationV1PostResponsesContentApplicationJsonSchemaMedicareStatusCurrentMembership:
      type: object
      properties:
        memberNumber:
          type: string
        memberRefNumber:
          type: string
      description: >-
        Present when the patient's Medicare card details differ from what was
        submitted.
      title: >-
        MedicareConcessionverificationV1PostResponsesContentApplicationJsonSchemaMedicareStatusCurrentMembership
    MedicareConcessionverificationV1PostResponsesContentApplicationJsonSchemaMedicareStatusCurrentMember:
      type: object
      properties:
        givenName:
          type: string
      description: >-
        Present when the patient's name on Medicare differs from what was
        submitted.
      title: >-
        MedicareConcessionverificationV1PostResponsesContentApplicationJsonSchemaMedicareStatusCurrentMember
    MedicareConcessionverificationV1PostResponsesContentApplicationJsonSchemaMedicareStatus:
      type: object
      properties:
        status:
          $ref: >-
            #/components/schemas/MedicareConcessionverificationV1PostResponsesContentApplicationJsonSchemaMedicareStatusStatus
        currentMembership:
          $ref: >-
            #/components/schemas/MedicareConcessionverificationV1PostResponsesContentApplicationJsonSchemaMedicareStatusCurrentMembership
          description: >-
            Present when the patient's Medicare card details differ from what
            was submitted.
        currentMember:
          $ref: >-
            #/components/schemas/MedicareConcessionverificationV1PostResponsesContentApplicationJsonSchemaMedicareStatusCurrentMember
          description: >-
            Present when the patient's name on Medicare differs from what was
            submitted.
      title: >-
        MedicareConcessionverificationV1PostResponsesContentApplicationJsonSchemaMedicareStatus
    MedicareConcessionverificationV1PostResponsesContentApplicationJsonSchemaConcessionStatusStatus:
      type: object
      properties:
        code:
          type: integer
        text:
          type: string
      required:
        - code
        - text
      title: >-
        MedicareConcessionverificationV1PostResponsesContentApplicationJsonSchemaConcessionStatusStatus
    MedicareConcessionverificationV1PostResponsesContentApplicationJsonSchemaConcessionStatus:
      type: object
      properties:
        status:
          $ref: >-
            #/components/schemas/MedicareConcessionverificationV1PostResponsesContentApplicationJsonSchemaConcessionStatusStatus
      title: >-
        MedicareConcessionverificationV1PostResponsesContentApplicationJsonSchemaConcessionStatus
    MedicareConcessionverificationV1PostResponsesContentApplicationJsonSchemaServiceMessageItems:
      type: object
      properties:
        code:
          type: string
        severity:
          type: string
        reason:
          type: string
      title: >-
        MedicareConcessionverificationV1PostResponsesContentApplicationJsonSchemaServiceMessageItems
    Concession_Concession Verification_Response_200:
      type: object
      properties:
        correlationId:
          type: string
          description: Unique identifier for this transaction. Use for tracing and support.
        medicareStatus:
          $ref: >-
            #/components/schemas/MedicareConcessionverificationV1PostResponsesContentApplicationJsonSchemaMedicareStatus
        concessionStatus:
          $ref: >-
            #/components/schemas/MedicareConcessionverificationV1PostResponsesContentApplicationJsonSchemaConcessionStatus
        highestSeverity:
          type: string
          description: Present on validation errors. Value is `Error`.
        serviceMessage:
          type: array
          items:
            $ref: >-
              #/components/schemas/MedicareConcessionverificationV1PostResponsesContentApplicationJsonSchemaServiceMessageItems
          description: Present on validation errors. Each entry describes one failure.
      required:
        - correlationId
      title: Concession_Concession Verification_Response_200
    PostMedicareConcessionverificationV1RequestBadRequestError:
      type: object
      properties:
        highestSeverity:
          type: string
        serviceMessage:
          type: array
          items:
            $ref: >-
              #/components/schemas/MedicareConcessionverificationV1PostResponsesContentApplicationJsonSchemaServiceMessageItems
        correlationId:
          type: string
      required:
        - highestSeverity
        - serviceMessage
        - correlationId
      title: PostMedicareConcessionverificationV1RequestBadRequestError
  securitySchemes:
    apiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
    minorId:
      type: apiKey
      in: header
      name: x-minor-id

```

## SDK Code Examples

```python Concession Eligible
import requests

url = "https://api.rebateright.com.au/Medicare/concessionverification/v1"

payload = {
    "patient": {
        "identity": {
            "dateOfBirth": "1958-02-10",
            "familyName": "Leonard",
            "givenName": "Bobby"
        },
        "medicare": {
            "memberNumber": "2293653285",
            "memberRefNumber": "1"
        }
    },
    "dateOfService": "2026-04-09"
}
headers = {
    "x-api-key": "<apiKey>",
    "Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
```

```javascript Concession Eligible
const url = 'https://api.rebateright.com.au/Medicare/concessionverification/v1';
const options = {
  method: 'POST',
  headers: {'x-api-key': '<apiKey>', 'Content-Type': 'application/json'},
  body: '{"patient":{"identity":{"dateOfBirth":"1958-02-10","familyName":"Leonard","givenName":"Bobby"},"medicare":{"memberNumber":"2293653285","memberRefNumber":"1"}},"dateOfService":"2026-04-09"}'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go Concession Eligible
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://api.rebateright.com.au/Medicare/concessionverification/v1"

	payload := strings.NewReader("{\n  \"patient\": {\n    \"identity\": {\n      \"dateOfBirth\": \"1958-02-10\",\n      \"familyName\": \"Leonard\",\n      \"givenName\": \"Bobby\"\n    },\n    \"medicare\": {\n      \"memberNumber\": \"2293653285\",\n      \"memberRefNumber\": \"1\"\n    }\n  },\n  \"dateOfService\": \"2026-04-09\"\n}")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("x-api-key", "<apiKey>")
	req.Header.Add("Content-Type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby Concession Eligible
require 'uri'
require 'net/http'

url = URI("https://api.rebateright.com.au/Medicare/concessionverification/v1")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<apiKey>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"patient\": {\n    \"identity\": {\n      \"dateOfBirth\": \"1958-02-10\",\n      \"familyName\": \"Leonard\",\n      \"givenName\": \"Bobby\"\n    },\n    \"medicare\": {\n      \"memberNumber\": \"2293653285\",\n      \"memberRefNumber\": \"1\"\n    }\n  },\n  \"dateOfService\": \"2026-04-09\"\n}"

response = http.request(request)
puts response.read_body
```

```java Concession Eligible
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://api.rebateright.com.au/Medicare/concessionverification/v1")
  .header("x-api-key", "<apiKey>")
  .header("Content-Type", "application/json")
  .body("{\n  \"patient\": {\n    \"identity\": {\n      \"dateOfBirth\": \"1958-02-10\",\n      \"familyName\": \"Leonard\",\n      \"givenName\": \"Bobby\"\n    },\n    \"medicare\": {\n      \"memberNumber\": \"2293653285\",\n      \"memberRefNumber\": \"1\"\n    }\n  },\n  \"dateOfService\": \"2026-04-09\"\n}")
  .asString();
```

```php Concession Eligible
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://api.rebateright.com.au/Medicare/concessionverification/v1', [
  'body' => '{
  "patient": {
    "identity": {
      "dateOfBirth": "1958-02-10",
      "familyName": "Leonard",
      "givenName": "Bobby"
    },
    "medicare": {
      "memberNumber": "2293653285",
      "memberRefNumber": "1"
    }
  },
  "dateOfService": "2026-04-09"
}',
  'headers' => [
    'Content-Type' => 'application/json',
    'x-api-key' => '<apiKey>',
  ],
]);

echo $response->getBody();
```

```csharp Concession Eligible
using RestSharp;

var client = new RestClient("https://api.rebateright.com.au/Medicare/concessionverification/v1");
var request = new RestRequest(Method.POST);
request.AddHeader("x-api-key", "<apiKey>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"patient\": {\n    \"identity\": {\n      \"dateOfBirth\": \"1958-02-10\",\n      \"familyName\": \"Leonard\",\n      \"givenName\": \"Bobby\"\n    },\n    \"medicare\": {\n      \"memberNumber\": \"2293653285\",\n      \"memberRefNumber\": \"1\"\n    }\n  },\n  \"dateOfService\": \"2026-04-09\"\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift Concession Eligible
import Foundation

let headers = [
  "x-api-key": "<apiKey>",
  "Content-Type": "application/json"
]
let parameters = [
  "patient": [
    "identity": [
      "dateOfBirth": "1958-02-10",
      "familyName": "Leonard",
      "givenName": "Bobby"
    ],
    "medicare": [
      "memberNumber": "2293653285",
      "memberRefNumber": "1"
    ]
  ],
  "dateOfService": "2026-04-09"
] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://api.rebateright.com.au/Medicare/concessionverification/v1")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```

```python No Concession Entitlement
import requests

url = "https://api.rebateright.com.au/Medicare/concessionverification/v1"

payload = {
    "patient": {
        "identity": {
            "dateOfBirth": "1960-01-01",
            "familyName": "Thompson",
            "givenName": "Terri"
        },
        "medicare": {
            "memberNumber": "5500053244",
            "memberRefNumber": "1"
        }
    },
    "dateOfService": "2026-04-09"
}
headers = {
    "x-api-key": "<apiKey>",
    "Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
```

```javascript No Concession Entitlement
const url = 'https://api.rebateright.com.au/Medicare/concessionverification/v1';
const options = {
  method: 'POST',
  headers: {'x-api-key': '<apiKey>', 'Content-Type': 'application/json'},
  body: '{"patient":{"identity":{"dateOfBirth":"1960-01-01","familyName":"Thompson","givenName":"Terri"},"medicare":{"memberNumber":"5500053244","memberRefNumber":"1"}},"dateOfService":"2026-04-09"}'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go No Concession Entitlement
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://api.rebateright.com.au/Medicare/concessionverification/v1"

	payload := strings.NewReader("{\n  \"patient\": {\n    \"identity\": {\n      \"dateOfBirth\": \"1960-01-01\",\n      \"familyName\": \"Thompson\",\n      \"givenName\": \"Terri\"\n    },\n    \"medicare\": {\n      \"memberNumber\": \"5500053244\",\n      \"memberRefNumber\": \"1\"\n    }\n  },\n  \"dateOfService\": \"2026-04-09\"\n}")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("x-api-key", "<apiKey>")
	req.Header.Add("Content-Type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby No Concession Entitlement
require 'uri'
require 'net/http'

url = URI("https://api.rebateright.com.au/Medicare/concessionverification/v1")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<apiKey>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"patient\": {\n    \"identity\": {\n      \"dateOfBirth\": \"1960-01-01\",\n      \"familyName\": \"Thompson\",\n      \"givenName\": \"Terri\"\n    },\n    \"medicare\": {\n      \"memberNumber\": \"5500053244\",\n      \"memberRefNumber\": \"1\"\n    }\n  },\n  \"dateOfService\": \"2026-04-09\"\n}"

response = http.request(request)
puts response.read_body
```

```java No Concession Entitlement
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://api.rebateright.com.au/Medicare/concessionverification/v1")
  .header("x-api-key", "<apiKey>")
  .header("Content-Type", "application/json")
  .body("{\n  \"patient\": {\n    \"identity\": {\n      \"dateOfBirth\": \"1960-01-01\",\n      \"familyName\": \"Thompson\",\n      \"givenName\": \"Terri\"\n    },\n    \"medicare\": {\n      \"memberNumber\": \"5500053244\",\n      \"memberRefNumber\": \"1\"\n    }\n  },\n  \"dateOfService\": \"2026-04-09\"\n}")
  .asString();
```

```php No Concession Entitlement
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://api.rebateright.com.au/Medicare/concessionverification/v1', [
  'body' => '{
  "patient": {
    "identity": {
      "dateOfBirth": "1960-01-01",
      "familyName": "Thompson",
      "givenName": "Terri"
    },
    "medicare": {
      "memberNumber": "5500053244",
      "memberRefNumber": "1"
    }
  },
  "dateOfService": "2026-04-09"
}',
  'headers' => [
    'Content-Type' => 'application/json',
    'x-api-key' => '<apiKey>',
  ],
]);

echo $response->getBody();
```

```csharp No Concession Entitlement
using RestSharp;

var client = new RestClient("https://api.rebateright.com.au/Medicare/concessionverification/v1");
var request = new RestRequest(Method.POST);
request.AddHeader("x-api-key", "<apiKey>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"patient\": {\n    \"identity\": {\n      \"dateOfBirth\": \"1960-01-01\",\n      \"familyName\": \"Thompson\",\n      \"givenName\": \"Terri\"\n    },\n    \"medicare\": {\n      \"memberNumber\": \"5500053244\",\n      \"memberRefNumber\": \"1\"\n    }\n  },\n  \"dateOfService\": \"2026-04-09\"\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift No Concession Entitlement
import Foundation

let headers = [
  "x-api-key": "<apiKey>",
  "Content-Type": "application/json"
]
let parameters = [
  "patient": [
    "identity": [
      "dateOfBirth": "1960-01-01",
      "familyName": "Thompson",
      "givenName": "Terri"
    ],
    "medicare": [
      "memberNumber": "5500053244",
      "memberRefNumber": "1"
    ]
  ],
  "dateOfService": "2026-04-09"
] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://api.rebateright.com.au/Medicare/concessionverification/v1")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```