> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.rebateright.com.au/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.rebateright.com.au/_mcp/server.

# Bulk Bill Processing Report

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

That is the question this endpoint answers, with the changes and exceptions for every
medical event and service in the claim.

Retrieve a processing report for a Bulk Bill claim, detailing processing information (including changes and
exception situations) for each medical event and associated service within the original claim.

## 📑 Response — `status`

| Value              | Meaning                                                                          |
| ------------------ | -------------------------------------------------------------------------------- |
| `COMPLETE`         | Report is available; `claimAssessment` is populated.                             |
| `REPORT_NOT_READY` | Claim located but assessment / payment is not finalised yet. Retry the next day. |
| `REPORT_NOT_FOUND` | No matching claim for this location, provider, and identifiers.                  |
| `REPORT_EXPIRED`   | Lodgement is outside the six-month retrieval window.                             |

The report summarises how the claim was assessed: totals at claim level, and per medical event and service
(assessment codes, benefit and charge amounts, Medicare patient details as held when assessed).

If the patient's Medicare details differ from what was submitted, the corrected values come back here, flagged with a patient `status` code (`8023`–`8028`). Reconcile against those before resubmitting.

## 🕑 When to retrieve

A claim's report becomes available **the day after lodgement**. A report requested on the day you submit
returns `REPORT_NOT_READY`, so schedule a daily retrieval from the following day.

Reports can be retrieved for **six months** from the date the original claim was lodged, as many times as needed.
Only the location that submitted the claim may request its report.

Malformed requests (for example an invalid `correlationId`) receive **HTTP 400** — see the **`400`** response examples.

Reference: https://docs.rebateright.com.au/api-reference/medicare-claiming/bulk-bill-claim/bulk-bill-processing-report

## Authentication

- `x-api-key` header (required) — API Key authentication via header
- `x-minor-id` header (required) — API Key authentication via header

## Servers

- `https://api.rebateright.com.au` (Production, default)
- `https://test-api.rebateright.com.au` (Test)

## Request

### Body (application/json)

This endpoint expects an object.

- `correlationId` (string, required) — Transaction identifier from the successful Bulk Bill claim response; must match exactly what was returned when the claim was accepted. Format is `urn:uuid:` + Minor ID (8 characters) + 16 hexadecimal characters (33 characters total), for example `urn:uuid:MDE00000ee97ff9fd17d4afc`.
- `payeeProvider` (object, required) — Payee provider from the original claim transmission; use the same values as on that claim.
  - `providerNumber` (string, required) — Payee provider number as transmitted on the original claim. Pad with leading zeros if there are between 3 and 7 characters before the check digit.

## Response

### 200

OK

- `status` (enum, required) — Outcome of the report request. | Value | Meaning | |-------|---------| | COMPLETE | Report returned with claim assessment data | | REPORT_NOT_READY | Report not ready yet — retry later | | REPORT_NOT_FOUND | Report not found | | REPORT_EXPIRED | Report has expired |
  - Allowed values: `COMPLETE`, `REPORT_NOT_READY`, `REPORT_NOT_FOUND`, `REPORT_EXPIRED`
- `correlationId` (string, required) — Echo of the `correlationId` sent on the request.
- `claimAssessment` (object, optional) — Present when `status` is `COMPLETE`. Assessment snapshot for the claim; Medicare may include additional properties beyond those listed.
  - `claimId` (string, required) — Unique claim identifier assigned by Medicare on assessment (for example `E7062@`).
  - `benefitPaid` (string, required) — Total Medicare benefit paid across all services in the claim, in cents as a string numeric.
  - `chargeAmount` (string, required) — Total amount charged across all services in the claim, in cents as a string numeric.
  - `serviceProvider` (object, required) — Servicing provider on the assessed claim.
    - `providerNumber` (string, required) — Provider number (stem, location, and check digit).
  - `medicalEvent` (list of object, required) — Assessed medical events for the claim (up to 80 per claim).
    - `id` (string, required) — Medical event identifier within the claim (for example `01`).
    - `eventDate` (string, required) — Date of service for the medical event, as submitted in the original claim (ISO 8601 calendar date).
    - `patient` (object, required) — Patient as held by Medicare when the claim was assessed; structure may include further membership fields.
      - `currentMembership` (object, required)
        - `memberNumber` (string, required) — Patient's Medicare Card Number as recorded with Medicare at the time of the claim.
        - `memberRefNumber` (string, required) — Patient's Medicare Reference Number (IRN) as recorded with Medicare in the original claim.
      - `currentMember` (object, required)
        - `familyName` (string, required) — Patient's family name as identified or corrected at the time of assessment.
        - `givenName` (string, required) — Patient's first given name as recorded with Medicare.
      - `status` (object, optional) — Present when Medicare had to correct or flag the card details supplied on the original claim.
        - `code` (integer, optional) — Code identifying the problem with the Medicare card details supplied. | Code | Meaning | |------|---------| | `8023` | Patient identification amended | | `8024` | Patient Medicare Issue number changed | | `8025` | Patient Medicare Number changed | | `8026` | Patient card used will expire shortly | | `8027` | Patient card expired. Future services may be rejected | | `8028` | Old Medicare issue number for patient. Future services may be rejected |
        - `text` (string, optional) — Human-readable explanation of the `code` — additional information to assist with service assessment.
    - `service` (list of object, required) — Service lines within this medical event (up to 14 per medical event).
      - `id` (string, required) — Service line identifier within the claim (for example `0001`).
      - `itemNumber` (string, required) — MBS item number against which the Medicare benefit was assessed (may be padded).
      - `benefitPaid` (string, required) — Benefit assessed as payable for this service line, in cents as a string numeric.
      - `chargeAmount` (string, required) — Amount charged for this service line, in cents as a string numeric.
      - `assessmentCode` (string, optional) — Medicare assessment reason code for this service line. Use the [Services Australia lookup tool](https://www.servicesaustralia.gov.au/look-up-medicare-reason-code) to map it to a human-readable description.
      - `numberOfPatientsSeen` (string, optional) — Number of patients seen for the service in a group attendance scenario (`1`–`99`).

## Errors

### 400 Bad Request Error

Validation or business-rule failure (HTTP 400). The body is either the Medicare `serviceMessage` envelope or a gateway JSON-schema envelope (`code`, `codeType`, `message`); both include `correlationId` for tracing.

- `object or object`
  - object
    - `highestSeverity` (string, required) — Highest severity across all messages (typically `Error`).
    - `correlationId` (string, required) — Echo of the `correlationId` sent on the request, for support tracing.
    - `serviceMessage` (list of object, required) — One or more validation or business-rule messages from Medicare.
      - `code` (string, required) — Medicare error code.
      - `severity` (string, required) — Severity for this message (e.g. `Error`).
      - `reason` (string, required) — Human-readable explanation.
  - object
    - `code` (integer, required) — Numeric gateway or request-schema error code.
    - `codeType` (string, required) — Gateway error category (for example `DHSEIN` for JSON schema validation).
    - `message` (string, required) — Human-readable validation summary.
    - `correlationId` (string, required) — Echo of the `correlationId` sent on the request when supplied; may be generated for this call when omitted upstream.

## Examples

### Complete

**Request**

```json
{
  "correlationId": "urn:uuid:MDE00000ee97ff9fd17d4afc",
  "payeeProvider": {
    "providerNumber": "2447781L"
  }
}
```

**Response**

```json
{
  "status": "COMPLETE",
  "correlationId": "urn:uuid:MDE00000db6719f59c084530",
  "claimAssessment": {
    "claimId": "E7062@",
    "benefitPaid": "0",
    "chargeAmount": "15075",
    "serviceProvider": {
      "providerNumber": "2447781L"
    },
    "medicalEvent": [
      {
        "id": "01",
        "eventDate": "2025-06-01",
        "patient": {
          "currentMembership": {
            "memberNumber": "4951525561",
            "memberRefNumber": "1"
          },
          "currentMember": {
            "familyName": "SMITH",
            "givenName": "JOHN"
          }
        },
        "service": [
          {
            "id": "0001",
            "itemNumber": "00003",
            "benefitPaid": "0",
            "chargeAmount": "15075",
            "assessmentCode": "250"
          }
        ]
      }
    ]
  }
}
```

**SDK Code**

```python Complete
import requests

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

payload = {
    "correlationId": "urn:uuid:MDE00000ee97ff9fd17d4afc",
    "payeeProvider": { "providerNumber": "2447781L" }
}
headers = {
    "x-api-key": "<apiKey>",
    "Content-Type": "application/json"
}

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

print(response.json())
```

```javascript Complete
const url = 'https://api.rebateright.com.au/Medicare/bulkbillprocessingreport/v1';
const options = {
  method: 'POST',
  headers: {'x-api-key': '<apiKey>', 'Content-Type': 'application/json'},
  body: '{"correlationId":"urn:uuid:MDE00000ee97ff9fd17d4afc","payeeProvider":{"providerNumber":"2447781L"}}'
};

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

```go Complete
package main

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

func main() {

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

	payload := strings.NewReader("{\n  \"correlationId\": \"urn:uuid:MDE00000ee97ff9fd17d4afc\",\n  \"payeeProvider\": {\n    \"providerNumber\": \"2447781L\"\n  }\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 Complete
require 'uri'
require 'net/http'

url = URI("https://api.rebateright.com.au/Medicare/bulkbillprocessingreport/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  \"correlationId\": \"urn:uuid:MDE00000ee97ff9fd17d4afc\",\n  \"payeeProvider\": {\n    \"providerNumber\": \"2447781L\"\n  }\n}"

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

```java Complete
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://api.rebateright.com.au/Medicare/bulkbillprocessingreport/v1")
  .header("x-api-key", "<apiKey>")
  .header("Content-Type", "application/json")
  .body("{\n  \"correlationId\": \"urn:uuid:MDE00000ee97ff9fd17d4afc\",\n  \"payeeProvider\": {\n    \"providerNumber\": \"2447781L\"\n  }\n}")
  .asString();
```

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

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://api.rebateright.com.au/Medicare/bulkbillprocessingreport/v1', [
  'body' => '{
  "correlationId": "urn:uuid:MDE00000ee97ff9fd17d4afc",
  "payeeProvider": {
    "providerNumber": "2447781L"
  }
}',
  'headers' => [
    'Content-Type' => 'application/json',
    'x-api-key' => '<apiKey>',
  ],
]);

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

```csharp Complete
using RestSharp;

var client = new RestClient("https://api.rebateright.com.au/Medicare/bulkbillprocessingreport/v1");
var request = new RestRequest(Method.POST);
request.AddHeader("x-api-key", "<apiKey>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"correlationId\": \"urn:uuid:MDE00000ee97ff9fd17d4afc\",\n  \"payeeProvider\": {\n    \"providerNumber\": \"2447781L\"\n  }\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift Complete
import Foundation

let headers = [
  "x-api-key": "<apiKey>",
  "Content-Type": "application/json"
]
let parameters = [
  "correlationId": "urn:uuid:MDE00000ee97ff9fd17d4afc",
  "payeeProvider": ["providerNumber": "2447781L"]
] as [String : Any]

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

let request = NSMutableURLRequest(url: NSURL(string: "https://api.rebateright.com.au/Medicare/bulkbillprocessingreport/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()
```

### Report Not Ready

**Request**

```json
{
  "correlationId": "urn:uuid:MDE000009bb6cd1c92674e1c",
  "payeeProvider": {
    "providerNumber": "2447781L"
  }
}
```

**Response**

```json
{
  "status": "REPORT_NOT_READY",
  "correlationId": "urn:uuid:MDE000009bb6cd1c92674e1c"
}
```

**SDK Code**

```python Report Not Ready
import requests

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

payload = {
    "correlationId": "urn:uuid:MDE000009bb6cd1c92674e1c",
    "payeeProvider": { "providerNumber": "2447781L" }
}
headers = {
    "x-api-key": "<apiKey>",
    "Content-Type": "application/json"
}

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

print(response.json())
```

```javascript Report Not Ready
const url = 'https://api.rebateright.com.au/Medicare/bulkbillprocessingreport/v1';
const options = {
  method: 'POST',
  headers: {'x-api-key': '<apiKey>', 'Content-Type': 'application/json'},
  body: '{"correlationId":"urn:uuid:MDE000009bb6cd1c92674e1c","payeeProvider":{"providerNumber":"2447781L"}}'
};

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

```go Report Not Ready
package main

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

func main() {

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

	payload := strings.NewReader("{\n  \"correlationId\": \"urn:uuid:MDE000009bb6cd1c92674e1c\",\n  \"payeeProvider\": {\n    \"providerNumber\": \"2447781L\"\n  }\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 Report Not Ready
require 'uri'
require 'net/http'

url = URI("https://api.rebateright.com.au/Medicare/bulkbillprocessingreport/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  \"correlationId\": \"urn:uuid:MDE000009bb6cd1c92674e1c\",\n  \"payeeProvider\": {\n    \"providerNumber\": \"2447781L\"\n  }\n}"

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

```java Report Not Ready
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://api.rebateright.com.au/Medicare/bulkbillprocessingreport/v1")
  .header("x-api-key", "<apiKey>")
  .header("Content-Type", "application/json")
  .body("{\n  \"correlationId\": \"urn:uuid:MDE000009bb6cd1c92674e1c\",\n  \"payeeProvider\": {\n    \"providerNumber\": \"2447781L\"\n  }\n}")
  .asString();
```

```php Report Not Ready
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://api.rebateright.com.au/Medicare/bulkbillprocessingreport/v1', [
  'body' => '{
  "correlationId": "urn:uuid:MDE000009bb6cd1c92674e1c",
  "payeeProvider": {
    "providerNumber": "2447781L"
  }
}',
  'headers' => [
    'Content-Type' => 'application/json',
    'x-api-key' => '<apiKey>',
  ],
]);

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

```csharp Report Not Ready
using RestSharp;

var client = new RestClient("https://api.rebateright.com.au/Medicare/bulkbillprocessingreport/v1");
var request = new RestRequest(Method.POST);
request.AddHeader("x-api-key", "<apiKey>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"correlationId\": \"urn:uuid:MDE000009bb6cd1c92674e1c\",\n  \"payeeProvider\": {\n    \"providerNumber\": \"2447781L\"\n  }\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift Report Not Ready
import Foundation

let headers = [
  "x-api-key": "<apiKey>",
  "Content-Type": "application/json"
]
let parameters = [
  "correlationId": "urn:uuid:MDE000009bb6cd1c92674e1c",
  "payeeProvider": ["providerNumber": "2447781L"]
] as [String : Any]

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

let request = NSMutableURLRequest(url: NSURL(string: "https://api.rebateright.com.au/Medicare/bulkbillprocessingreport/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()
```