> ## Documentation Index
> Fetch the complete documentation index at: https://docs.mygigsters.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Get contribution history

> Retrieves all submitted contributions with filtering and pagination support. Each record represents one fund's payment for one member within a submission, and includes the current payment status, full contribution details, and...

> [!TIP]
>
> **Why it's useful:** Use it to get a status update on every contribution you have submitted.

### Payment Statuses

| `status` | `processingLayer` | What it means |
| - | - | - |
| `SUBMITTED` | `PAYMENT_LAYER` | Contribution submitted, awaiting payment initiation |
| `EMPLOYER_PAYMENT` | `PAYMENT_LAYER` | Payment initiated — the clearing house has acknowledged the contribution and the direct debit is underway |
| `DEBIT_CLEARED` | `PAYMENT_LAYER` | Direct debit successful — money has left the employer's account |
| `FUNDS_IN_TRANSIT` | `PAYMENT_LAYER` | Money has cleared source and is being transferred to the fund |
| `AWAITING_FUND_RESPONSE` | `FUND_LAYER` | Money received by the clearing house; awaiting the fund's processing decision |
| `SETTLED` | `FUND_LAYER` | Fund accepted and applied the contribution |
| `SETTLED_WITH_WARNING` | `FUND_LAYER` | Fund accepted with a warning (e.g. minor data issue noted by fund) |
| `REFUNDED` | `FUND_LAYER` | Fund returned the contribution |
| `DEBIT_FAILED` | `PAYMENT_LAYER` | Direct debit failed — money never left the employer's account |
| `FUND_TRANSFER_FAILED` | `PAYMENT_LAYER` | Fund rejected or failed to receive the transfer |
| `CANCELLED` | any | Payment was cancelled |

### When Statuses Update

Status updates are not real-time. The `status` field is updated automatically by background processes as the payment moves through the clearing house. No action is required from your side.

### Day 0 and the 4pm AEDT banking cut-off

The timeline below is counted in **banking days from Day 0**. Day 0 is set when the clearing house submits the debit request to the bank:

* Submitted **before 4pm AEDT** on a banking day → Day 0 = that same day
* Submitted **at or after 4pm AEDT**, or on a weekend/public holiday → Day 0 = next banking day

For example: submitting on a Friday at 5pm means Day 0 falls on the following Monday, since the 4pm cut-off is missed and the weekend is skipped — effectively pushing the entire timeline out by 3 days.

### Summary Timeline

| Banking day | Event | Status |
| - | - | - |
| Day 0 | Contribution submitted | `SUBMITTED` |
| Day 1 | Clearing house acknowledges payment | `EMPLOYER_PAYMENT` |
| Day 2–3 | Direct debit clears | `DEBIT_CLEARED` → `FUNDS_IN_TRANSIT` |
| Day 4 | Clearing house receives funds | `AWAITING_FUND_RESPONSE` |
| Day 3–7 *(from 1 Jul 2026)* | Fund processes | `SETTLED` / `SETTLED_WITH_WARNING` / `REFUNDED` |
| Day 18–25 *(before 1 Jul 2026)* | Fund processes | `SETTLED` / `SETTLED_WITH_WARNING` / `REFUNDED` |

> **Note:** The SuperStream process assumes all submissions succeed. The clearing house does not give us an exact settlement date, so the day range above — and the `SETTLED` / `SETTLED_WITH_WARNING` status itself — is only indicative. It is based on the super fund not rejecting the contribution within 3 business days of receiving it.

### Field Reference

| Field | Type | Notes | |
| - | - | - | - |
| `id` | string | Internal payment record ID | |
| `transactionId` | string | Clearing house transaction ID — shared across all funds in one submission | |
| `employerId` | string | Employer that made the contribution | |
| `employeeId` | string | Member the contribution is for | |
| `employeeName` | string | Full name resolved at submission time | |
| `employerName` | string | Employer name at time of submission | |
| `employerAbn` | string | Employer ABN at time of submission | |
| `status` | string | Current payment status — see status table above | |
| `processingLayer` | string | `PAYMENT_LAYER` or `FUND_LAYER` | |
| `amount` | object | `{ value, currency }` — member contribution amount for this fund | |
| `invoiceNumber` | string \\ | null | Invoice or reference number from the submission |
| `invoiceAmount` | number \\ | null | Total invoice amount (AUD) |
| `invoiceDate` | ISO 8601 \\ | null | Invoice date |
| `contributionDetails` | object | Nested fund and member details — see below | |
| `fundResponseType` | string \\ | null | Fund response category — populated after fund responds |
| `fundResponseSeverity` | string \\ | null | `INFORMATION`, `WARNING`, or `ERROR` |
| `fundResponseDescription` | string \\ | null | Human-readable reason from the fund |
| `fundResponseDetailedDescription` | string \\ | null | Detailed error description from the fund — populated alongside `fundResponseDescription` |
| `fundResponseReceivedAt` | ISO 8601 \\ | null | When the fund responded |
| `fundRefundPrn` | string \\ | null | Refund payment reference number |
| `fundRefundEmployerAmount` | number \\ | null | Amount refunded to employer (AUD) |
| `fundRefundMemberAmount` | number \\ | null | Amount refunded to member (AUD) — `MEMBER_REFUND` only |
| `fundRefundContributionType` | string \\ | null | Contribution type refunded — `MEMBER_CONTRIBUTION_TYPE_REFUND` only |
| `fundRefundContributionAmount` | number \\ | null | Contribution amount refunded (AUD) — `MEMBER_CONTRIBUTION_TYPE_REFUND` only |
| `statusHistory` | array | Ordered list of all status transitions — see below | |
| `createdAt` | ISO 8601 | When this payment record was created | |
| `updatedAt` | ISO 8601 | When this record was last updated | |

### contributionDetails object

Stored at submission time and does not change.

| Field | Type | Notes |
| - | - | - |
| `contributionDetails.fund.usi` | string | Unique Superannuation Identifier of the fund |
| `contributionDetails.fund.name` | string | Fund name |
| `contributionDetails.fund.abn` | string | Fund ABN |
| `contributionDetails.fund.memberNumber` | string | Member's account number within the fund |
| `contributionDetails.fund.amountForFund` | object | `{ value, currency }` — amount directed to this fund |
| `contributionDetails.member.name` | object | `{ firstName, lastName }` |
| `contributionDetails.member.email` | string | Member email |
| `contributionDetails.member.totalMemberContributionAmount` | object | Total contribution across all funds |
| `contributionDetails.member.superGuaranteeAmount` | object | SGC component |
| `contributionDetails.member.employmentStatus` | string | e.g. `C` (casual), `F` (full-time) |
| `contributionDetails.member.payPeriodStartDate` | string | Pay period start (ISO date) |
| `contributionDetails.member.payPeriodEndDate` | string | Pay period end (ISO date) |

### statusHistory item

| Field | Type | Notes |
| - | - | - |
| `status` | string | Status value at the time of this transition |
| `processingLayer` | string | `PAYMENT_LAYER` or `FUND_LAYER` at the time of this transition |
| `triggeredBy` | string | `payment-polling` or `fund-response-polling` |
| `changedAt` | ISO 8601 | When this transition occurred |

### Recommended UI Labels

| `status` | Display label | Colour |
| - | - | - |
| `SUBMITTED` | Processing | Grey |
| `EMPLOYER_PAYMENT` | Accepted | Grey |
| `DEBIT_CLEARED` | Debit cleared | Blue |
| `FUNDS_IN_TRANSIT` | Funds in transit | Blue |
| `AWAITING_FUND_RESPONSE` | Awaiting fund | Amber |
| `SETTLED` | Settled | Green |
| `SETTLED_WITH_WARNING` | Settled (warning) | Amber |
| `REFUNDED` | Refunded | Orange |
| `FUND_TRANSFER_FAILED` | Fund transfer failed | Red |
| `DEBIT_FAILED` | Debit failed | Red |
| `CANCELLED` | Cancelled | Red |

### Fund Layer Response Fields

When `processingLayer === 'FUND_LAYER'` and the fund has responded, these fields are populated. They are `null` while the payment is in `AWAITING_FUND_RESPONSE`.

| Field | Type | Description | |
| - | - | - | - |
| `fundResponseType` | string | `NON_REFUND` · `MEMBER_REFUND` · `EMPLOYER_REFUND` · `MEMBER_CONTRIBUTION_TYPE_REFUND` | |
| `fundResponseSeverity` | string | `INFORMATION` · `WARNING` · `ERROR` | |
| `fundResponseDescription` | string | Human-readable reason from the fund | |
| `fundResponseDetailedDescription` | string \\ | null | Detailed error description from the fund (`errorDetailedDescription` from the clearing house). Populated alongside `fundResponseDescription`. |
| `fundResponseReceivedAt` | ISO 8601 | When the fund responded | |

Show `fundResponseDescription` and `fundResponseDetailedDescription` whenever any of the following are true:

* `status === 'SETTLED_WITH_WARNING'`
* `status === 'REFUNDED'`
* `fundResponseSeverity === 'WARNING'` or `'ERROR'`

### Refund Fields

Populated when `fundResponseType` is `MEMBER_REFUND`, `EMPLOYER_REFUND`, or `MEMBER_CONTRIBUTION_TYPE_REFUND`. All five fields are `null` for `NON_REFUND` responses (i.e. `SETTLED` and `SETTLED_WITH_WARNING`).

| Field | Type | Present when | |
| - | - | - | - |
| `fundRefundPrn` | string \\ | null | `MEMBER_REFUND`, `EMPLOYER_REFUND`, `MEMBER_CONTRIBUTION_TYPE_REFUND` |
| `fundRefundEmployerAmount` | number \\ | null | Same as above — amount refunded to employer (AUD) |
| `fundRefundMemberAmount` | number \\ | null | `MEMBER_REFUND` only — amount refunded to member (AUD) |
| `fundRefundContributionType` | string \\ | null | `MEMBER_CONTRIBUTION_TYPE_REFUND` only — e.g. `SuperannuationContribution.PersonalContributions.Amount` |
| `fundRefundContributionAmount` | number \\ | null | `MEMBER_CONTRIBUTION_TYPE_REFUND` only — contribution amount refunded (AUD) |

### Determining Completion

A payment record is fully complete (no further changes expected) when `status` is one of: `SETTLED`, `SETTLED_WITH_WARNING`, `REFUNDED`, `FUND_TRANSFER_FAILED`, `DEBIT_FAILED`, or `CANCELLED`.

### Multi-fund submissions

One submission can include contributions to multiple funds. All records for a submission share the same `transactionId`. A submission is fully complete when every payment record for that `transactionId` has a terminal status. Use the `transactionId` query parameter on this endpoint to retrieve all records for a submission and check each one.

### Multi-fund members

A member is fully complete when all their payment records have a terminal status. Filter by `employeeId` to retrieve all records across all funds for that member.

Note: `fundResponseReceivedAt` is only populated for members with an explicit fund response — members settled silently will have `fundResponseReceivedAt === null` even when `status === 'SETTLED'`. Use the status-based check above instead.

### Request Parameters

**transactionId** `string`

Filter to a specific clearing house transaction. Returns all payment records for that submission (one per fund).

**employerId** `string`

Filter contributions by employer ID. When provided, returns contributions only for that employer and verifies the employer belongs to your client. When omitted, returns contributions from all employers belonging to your client.

**employeeId** `string`

Filter contributions by employee/member ID.

**startDate** `string`

Created-at lower bound (ISO 8601). Only contributions submitted on or after this date will be returned.

**endDate** `string`

Created-at upper bound (ISO 8601). Only contributions submitted on or before this date will be returned.

**page** `integer`

Page number (default: 1)

**limit** `integer`

Page size (default: 10, max: 100)

### Responses

| Code | Description |
| - | - |
| `200` | Successfully retrieved contribution history |
| `400` | Bad request - Invalid query parameters or date format. Check that date parameters are in ISO 8601 format and pagination parameters are valid. |
| `401` | Unauthorized - Invalid authentication credentials |
| `500` | Internal server error - An unexpected error occurred. If this persists, contact support with your transaction ID. |

### Response fields

**contributions** `array`

Array of payment records. One record per fund per submission.

**meta** `object`

Pagination metadata

**properties**

**page** `integer`

Current page

**limit** `integer`

Records per page

**total** `number`

Total matching records across all pages

**totalPages** `number`

Total number of pages

**hasNext** `boolean`

Whether a next page exists

**hasPrevious** `boolean`

Whether a previous page exists

> [accordion] Error response fields
>
> **success** `boolean`
>
> Always false for error responses, indicating the operation did not succeed.
>
> **statusCode** `integer`
>
> HTTP status code indicating the type of error. Common values: 400 (Bad Request), 401 (Unauthorized), 404 (Not Found), 500 (Server Error)
>
> **message** `string`
>
> Human-readable error message explaining what went wrong. May include specific details about which field or value caused the error.
>
> **errorCode** `integer`
>
> Superannuation clearing house-specific error code for programmatic error handling. Refer to the error code reference documentation for a complete list of codes.

```bash cURL theme={null}
curl 'https://qa-super.mygigsters.com.au/v1/contributions/submitted/history' \
    -u "apiUsername:apiPassword"
```

```javascript Node.js theme={null}
const response = await fetch("https://qa-super.mygigsters.com.au/v1/contributions/submitted/history", {
  method: "GET",
  headers: {
    Authorization: "Basic " + Buffer.from("apiUsername:apiPassword").toString("base64"),
  },
});

const data = await response.json();
console.log(data);
```

```python Python theme={null}
import requests

response = requests.get(
    "https://qa-super.mygigsters.com.au/v1/contributions/submitted/history",
    auth=("apiUsername", "apiPassword"),
)

print(response.json())
```

```ruby Ruby theme={null}
require "net/http"
require "json"
require "uri"

uri = URI("https://qa-super.mygigsters.com.au/v1/contributions/submitted/history")
request = Net::HTTP::Get.new(uri)
request.basic_auth("apiUsername", "apiPassword")

response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
  http.request(request)
end

puts JSON.parse(response.body)
```

```php PHP theme={null}
<?php

$ch = curl_init("https://qa-super.mygigsters.com.au/v1/contributions/submitted/history");

curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST => "GET",
    CURLOPT_USERPWD => "apiUsername:apiPassword",
]);

$response = curl_exec($ch);
curl_close($ch);

print_r(json_decode($response, true));
```

```java Java theme={null}
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.util.Base64;

public class Example {
    public static void main(String[] args) throws Exception {
        String credentials = Base64.getEncoder()
            .encodeToString("apiUsername:apiPassword".getBytes());

        HttpRequest request = HttpRequest.newBuilder()
            .uri(URI.create("https://qa-super.mygigsters.com.au/v1/contributions/submitted/history"))
            .header("Authorization", "Basic " + credentials)
            .method("GET", HttpRequest.BodyPublishers.noBody())
            .build();

        HttpResponse<String> response = HttpClient.newHttpClient()
            .send(request, HttpResponse.BodyHandlers.ofString());

        System.out.println(response.body());
    }
}
```

```go Go theme={null}
package main

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

func main() {
	req, err := http.NewRequest("GET", "https://qa-super.mygigsters.com.au/v1/contributions/submitted/history", nil)
	if err != nil {
		panic(err)
	}
	req.SetBasicAuth("apiUsername", "apiPassword")

	res, err := http.DefaultClient.Do(req)
	if err != nil {
		panic(err)
	}
	defer res.Body.Close()

	data, _ := io.ReadAll(res.Body)
	fmt.Println(string(data))
}
```

```csharp .NET theme={null}
using System.Net.Http.Headers;
using System.Text;

using var client = new HttpClient();

var request = new HttpRequestMessage(HttpMethod.Get, "https://qa-super.mygigsters.com.au/v1/contributions/submitted/history");
request.Headers.Authorization = new AuthenticationHeaderValue(
    "Basic", Convert.ToBase64String(Encoding.UTF8.GetBytes("apiUsername:apiPassword")));

var response = await client.SendAsync(request);
Console.WriteLine(await response.Content.ReadAsStringAsync());
```

```json 200 theme={null}
{
  "contributions": [
    {
      "id": "6a3bc2e19b211a5b04229bab",
      "transactionId": "txn-72ad1383-7d2e-4511-8713-8bb47c7b5cfe",
      "employerId": "6a3bbfd09b211a5b04229ba9",
      "employeeId": "6a3bbfc19b211a5b04229ba7",
      "employeeName": "Jane Smith",
      "employerName": "MyGigsters Technologies Pty Ltd",
      "employerAbn": "34623710896",
      "status": "AWAITING_FUND_RESPONSE",
      "processingLayer": "FUND_LAYER",
      "amount": {
        "value": 500,
        "currency": "AUD"
      },
      "invoiceNumber": "INV-2026-001",
      "invoiceAmount": 500,
      "invoiceDate": "2026-06-24T00:00:00.000Z",
      "contributionDetails": {
        "fund": {
          "usi": "51739693679001",
          "name": "AustralianSuper",
          "abn": "65714394898",
          "memberNumber": "12345678",
          "amountForFund": {
            "value": 500,
            "currency": "AUD"
          }
        },
        "member": {
          "name": {
            "firstName": "Jane",
            "lastName": "Smith"
          },
          "email": "jane@example.com",
          "totalMemberContributionAmount": {
            "value": 500,
            "currency": "AUD"
          },
          "superGuaranteeAmount": {
            "value": 500,
            "currency": "AUD"
          },
          "employmentStatus": "C",
          "payPeriodStartDate": "2026-06-01",
          "payPeriodEndDate": "2026-06-30"
        }
      },
      "fundResponseType": null,
      "fundResponseSeverity": null,
      "fundResponseDescription": null,
      "fundResponseReceivedAt": null,
      "statusHistory": [
        {
          "status": "EMPLOYER_PAYMENT",
          "processingLayer": "PAYMENT_LAYER",
          "triggeredBy": "payment-polling",
          "changedAt": "2026-06-25T23:00:00.000Z"
        },
        {
          "status": "DEBIT_CLEARED",
          "processingLayer": "PAYMENT_LAYER",
          "triggeredBy": "payment-polling",
          "changedAt": "2026-06-26T23:00:00.000Z"
        },
        {
          "status": "FUNDS_IN_TRANSIT",
          "processingLayer": "PAYMENT_LAYER",
          "triggeredBy": "payment-polling",
          "changedAt": "2026-06-26T23:00:00.000Z"
        },
        {
          "status": "AWAITING_FUND_RESPONSE",
          "processingLayer": "FUND_LAYER",
          "triggeredBy": "payment-polling",
          "changedAt": "2026-06-27T09:00:00.000Z"
        }
      ],
      "createdAt": "2026-06-24T11:35:00.000Z",
      "updatedAt": "2026-06-27T09:00:00.000Z"
    }
  ],
  "meta": {
    "page": 1,
    "limit": 10,
    "total": 42,
    "totalPages": 5,
    "hasNext": true,
    "hasPrevious": false
  }
}
```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.