asicapidocs

Company annual returns and financial reports

List a company's historical ASIC annual returns and lodged financial reports by ACN, with balance dates, due dates, AGM dates and Form 388 documents.

Company annual returns and financial reports

Until 30 June 2003 every Australian company had to lodge an annual return with ASIC each year, confirming its details and, for public companies, the date of its annual general meeting. That regime was replaced by the annual company statement and review fee, but the annual return history remains on the register and is included in historical extracts. Separately, companies that must report (public companies, large proprietary companies, disclosing entities and registered schemes) lodge financial reports, usually on Form 388, and ASIC tracks each report's balance date, due dates, AGM dates and whether it is outstanding. These two endpoints return those records as structured lists. Both sections come from a historical company extract you have already purchased with POST /v1/companies/{id}/extracts and are read back for free, as described in the purchasing guide.

GEThttps://api.asicapi.dev/v1/companies/{id}/annual-returns
GEThttps://api.asicapi.dev/v1/companies/{id}/financial-reports

Path parameters

Prop

Type

Query parameters

Prop

Type

Neither endpoint takes any other parameters. Annual returns and financial reports are only present in a historical extract; a current extract does not satisfy either endpoint.

Annual returns

Example request

Request
curl https://api.asicapi.dev/v1/companies/004085616/annual-returns \
  -H "Authorization: Bearer $ASICAPI_KEY"

Example response

Response
{
  "object": "list",
  "data": [
    {
      "object": "annualReturn",
      "year": "2002",
      "outstanding": false,
      "dueDate": "2003-01-31",
      "extendedDueDate": null,
      "agmDueDate": null,
      "extendedAgmDueDate": null,
      "agmHeldDate": null,
      "document": {
        "documentNumber": "7E1234599",
        "qualifier": "AR 2002"
      }
    },
    {
      "object": "annualReturn",
      "year": "2001",
      "outstanding": false,
      "dueDate": "2002-01-31",
      "extendedDueDate": "2002-03-31",
      "agmDueDate": null,
      "extendedAgmDueDate": null,
      "agmHeldDate": null,
      "document": {
        "documentNumber": "7E1234567",
        "qualifier": "AR 2001"
      }
    },
    {
      "object": "annualReturn",
      "year": "2000",
      "outstanding": true,
      "dueDate": "2001-01-31",
      "extendedDueDate": null,
      "agmDueDate": null,
      "extendedAgmDueDate": null,
      "agmHeldDate": null,
      "document": null
    }
  ],
  "hasMore": false,
  "nextCursor": null,
  "totalCount": null,
  "extract": {
    "id": "ext_01J9AC5D8R3YN7",
    "type": "historical",
    "purchasedAt": "2026-09-04T03:13:30Z",
    "asOf": "2026-09-04T03:13:27Z"
  },
  "meta": { "billable": false, "product": null, "requestId": "req_01J8ZKF5G6H7J8K" }
}

Response fields

FieldTypeDescription
objectstringAlways list.
data[]annualReturn[]One record per annual return year, most recent year first.
data[].objectstringAlways annualReturn.
data[].yearstringThe annual return year, for example 2002.
data[].outstandingbooleantrue when ASIC never received the return for that year.
data[].dueDatedate or nullDate the return was due.
data[].extendedDueDatedate or nullExtended due date where ASIC granted an extension.
data[].agmDueDatedate or nullFor public companies, the date by which the annual general meeting had to be held.
data[].extendedAgmDueDatedate or nullExtended AGM due date where an extension was granted.
data[].agmHeldDatedate or nullDate the AGM was actually held, as reported on the return.
data[].documentobject or nullReference to the lodged annual return document, with documentNumber and the AR qualifier, when asicapi can match it in the extract's document list. null for outstanding returns.
hasMorebooleanAlways false.
nextCursorstring or nullAlways null.
totalCountinteger or nullnull.
extractobjectThe historical extract the data was read from: id, type (always historical), purchasedAt and asOf.
meta.billablebooleanAlways false. Reading an extract you hold is free.
meta.productstring or nullAlways null.
meta.requestIdstringRequest identifier.

Financial reports

Example request

Request
curl https://api.asicapi.dev/v1/companies/001000004/financial-reports \
  -H "Authorization: Bearer $ASICAPI_KEY"

Example response

Response
{
  "object": "list",
  "data": [
    {
      "object": "financialReport",
      "balanceDate": "2025-06-30",
      "dueDate": "2025-10-31",
      "agmDueDate": "2025-11-30",
      "extendedAgmDueDate": null,
      "agmHeldDate": null,
      "outstanding": "Y",
      "document": null
    },
    {
      "object": "financialReport",
      "balanceDate": "2024-06-30",
      "dueDate": "2024-10-31",
      "agmDueDate": "2024-11-30",
      "extendedAgmDueDate": null,
      "agmHeldDate": "2024-11-21",
      "outstanding": "N",
      "document": {
        "object": "document",
        "documentNumber": "1E5566778",
        "formCode": "388",
        "formDescription": "Copy of financial statements and reports",
        "subForms": [
          { "code": "388B", "description": "Public company or disclosing entity" }
        ],
        "receivedAt": "2024-09-27",
        "processedAt": "2024-09-30",
        "effectiveAt": "2024-06-30",
        "qualifier": "FR 2024",
        "pageCount": 68,
        "imaged": true,
        "underRequisition": false,
        "xbrlAvailable": true,
        "xbrlDocumentNumber": "1E5566779",
        "status": null,
        "priced": true
      }
    },
    {
      "object": "financialReport",
      "balanceDate": "2023-06-30",
      "dueDate": "2023-10-31",
      "agmDueDate": "2023-11-30",
      "extendedAgmDueDate": "2024-01-31",
      "agmHeldDate": "2024-01-18",
      "outstanding": "N",
      "document": {
        "object": "document",
        "documentNumber": "0E8877665",
        "formCode": "388",
        "formDescription": "Copy of financial statements and reports",
        "subForms": [
          { "code": "388B", "description": "Public company or disclosing entity" }
        ],
        "receivedAt": "2023-10-27",
        "processedAt": "2023-10-30",
        "effectiveAt": "2023-06-30",
        "qualifier": "FR 2023",
        "pageCount": 64,
        "imaged": true,
        "underRequisition": false,
        "xbrlAvailable": false,
        "xbrlDocumentNumber": null,
        "status": null,
        "priced": true
      }
    }
  ],
  "hasMore": false,
  "nextCursor": null,
  "totalCount": null,
  "extract": {
    "id": "ext_01J9AG1M6Y4EV2",
    "type": "historical",
    "purchasedAt": "2026-09-04T03:21:05Z",
    "asOf": "2026-09-04T03:21:02Z"
  },
  "meta": { "billable": false, "product": null, "requestId": "req_01J8ZKG9H0J1K2L" }
}

Response fields

FieldTypeDescription
objectstringAlways list.
data[]financialReport[]One record per reporting period, most recent balance date first.
data[].objectstringAlways financialReport.
data[].balanceDatedateEnd of the financial year the report covers.
data[].dueDatedate or nullDate the report was due to be lodged with ASIC.
data[].agmDueDatedate or nullFor public companies, the date by which the AGM must be held (within five months of the balance date).
data[].extendedAgmDueDatedate or nullExtended AGM due date where ASIC granted an extension.
data[].agmHeldDatedate or nullDate the AGM was held, once notified.
data[].outstandingstringASIC's outstanding indicator, passed through as recorded. Y means the report has not been received, N means it has. ASIC stores this as a short text value rather than a strict flag, so tolerate other values.
data[].documentdocument or nullThe lodged financial report document (usually Form 388), in the same shape as the company documents list. null while outstanding.
data[].document.xbrlAvailablebooleantrue when the report was lodged with XBRL financial data.
data[].document.xbrlDocumentNumberstring or nullDocument number of the XBRL data.
hasMorebooleanAlways false.
nextCursorstring or nullAlways null.
totalCountinteger or nullnull.
extractobjectThe historical extract the data was read from: id, type (always historical), purchasedAt and asOf. A report lodged after asOf is not reflected.
meta.billablebooleanAlways false. Reading an extract you hold is free.
meta.productstring or nullAlways null.
meta.requestIdstringRequest identifier.

Errors

Both endpoints return the same errors.

CodeHTTPWhen it occurs
extract_required402You hold no unexpired historical extract for this company. Holding only a current extract also returns this error, with error.details.purchase.body set to { "type": "historical" }, because neither section is part of a current extract.
extract_not_found404The extract id does not exist on your account.
extract_expired410The extract id refers to an extract older than 12 months.
extract_owner_mismatch403The extract id belongs to a different account, or is not an extract of this company.
acn_invalid400The number fails the ASIC check digit test.
company_not_found404No organisation with this identifier.
abn_invalid400The ABN fails its check digit test.
abn_not_acn_based400The ABN does not embed an ACN.
abn_not_found404No company matches the ACN embedded in the ABN.
extract_unavailable_for_type422ASIC does not issue extracts for this organisation type.
unauthorized401Missing or invalid API key.
rate_limited429Rate limit exceeded.
asic_unavailable503The ASIC register is offline.

Notes from the ASIC register

  • Historical extract only. ASIC populates annual return and financial report details only in historical extracts. Both endpoints therefore need a historical extract; the free document list still shows the lodged Form 388 documents themselves without one.
  • Snapshot. The lists reflect the register at extract.asOf. A financial report lodged after that date shows as outstanding until you purchase a new historical extract.
  • Annual returns ended in 2003. The annual return regime ended on 30 June 2003, so no company has an annual return year after 2003 and companies registered after that date return an empty list.
  • Annual statements are not annual returns. Since 2003 ASIC issues an annual company statement on the review date and the company pays a review fee; no document is lodged unless details change, so there is nothing to list. The reviewDate on the company record tells you when the next statement is due.
  • Who lodges financial reports. Public companies, large proprietary companies, disclosing entities, registered managed investment schemes and some foreign companies must lodge financial reports under Chapter 2M of the Corporations Act. Small proprietary companies generally do not, so their financial report list is empty. That is not an error.
  • Balance dates and due dates. Disclosing entities and registered schemes must lodge within three months of the balance date and other companies within four months. Public companies must hold their AGM within five months of the balance date; extendedAgmDueDate reflects an ASIC-granted extension.
  • Form 388 and XBRL. Financial reports are lodged on Form 388 with a sub-form indicating the entity category. Reports lodged with XBRL data have xbrlAvailable: true and a companion xbrlDocumentNumber; the XBRL document is not listed separately in the document list.
  • Qualifiers. Wherever an annual return or financial report is the source document for another record (an address, an office holder), the sourceDocument.qualifier on that record is AR yyyy or FR yyyy, matching the year or balance year here.
  • Outstanding indicator. ASIC records outstanding for financial reports as text rather than a strict Y/N flag. Values other than Y and N are rare and passed through unchanged.

On this page