# Income and corporate actions

Dividends with franking and DRP prices, AMIT tax components, corporate actions and official tax FX rates.

## Corporate actions

GET `/v1/corporate-actions` 

 1 credit per instrument 2 credits with fresh=true Operation ID `income.corporateActions`

Splits, consolidations, demergers, mergers, returns of capital, symbol and name changes and delistings. Each action has the detail object its type names. The from and to parameters bound the effective date.

### Query parameters

- `symbols` array of strings Required  
Comma-separated identifiers, up to 100, like ASX:VAS, isin:AU000000VAS1 or ins\_...  
Up to 100 items
- `listedOn` date  
Resolves tickers as the listing that traded on this day, for tickers that have since been reused. A symbol can carry its own day instead, like ASX:CCL@2021-05-10, which overrides this
- `from` date  
First day, YYYY-MM-DD
- `to` date  
Last day, YYYY-MM-DD
- `fresh` boolean  
Skip our cache and get the latest data. Items refreshed this way cost double
- `format` string  
Response format  
One of `json` `csv`  
Defaults to json
- `types` array of strings  
Comma-separated action types, every type when empty

### Response

- `data` array of objects  

  - `actions` array of objects  
  Oldest effective date first

    - `announcedDate` date or null
    - `delisting` object  
      Only on delisting

      - `reason` string or null  
            As the exchange gave it
    - `demerger` object  
      Only on demerger

      - `au` object  
            Only for Australian demergers

        - `costBaseApportionmentPct` number or null  
                    Share of the original cost base that moves to the demerged company, as the ATO sets it
      - `child` string or null  
            The demerged company's symbol, null until it's known
      - `childName` string or null  
            The demerged company
      - `ratio` number or null  
            Demerged shares for every share held
    - `effectiveDate` date  
      The ex-date of splits and demergers, the first day under a new symbol or name, the last trading day before a delisting
    - `merger` object  
      Only on merger

      - `acquirer` string or null  
            Symbol of the company whose shares are paid
      - `cash` number or null  
            Cash for every share held
      - `currency` string or null
      - `ratio` number or null  
            Acquirer shares for every share held
    - `nameChange` object  
      Only on name\_change

      - `new` string or null
      - `old` string or null
    - `returnOfCapital` object  
      Only on return\_of\_capital

      - `amount` number or null  
            Per share
      - `currency` string or null
    - `split` object  
      Only on split and consolidation

      - `new` number or null  
            Shares held after, for every old number of shares
      - `old` number or null  
            Shares held before
    - `status` string  
      One of `announced` `confirmed` `completed` `cancelled`
    - `symbolChange` object  
      Only on symbol\_change

      - `new` string or null
      - `old` string or null
    - `type` string  
      One of `split` `consolidation` `demerger` `merger` `return_of_capital` `symbol_change` `name_change` `delisting`
  - `asOf` timestamp  
  The point in time this data describes. For history and events it's the date of the newest record, or the end of your range when there are none. Live values give when they were observed, and reference data gives when we last confirmed it
  - `instrument` object  
  What the symbol resolved to

    - `country` string
    - `currency` string
    - `id` string
    - `mic` string  
      Left out for instruments that don't trade on an exchange, like tokens
    - `name` string
    - `symbol` string
    - `ticker` string or null  
      The code it's known by, like a listing's ticker, a token's symbol or an unlisted fund's APIR code. Null when it has none
    - `type` string  
      One of `equity` `etf` `fund` `index` `fx` `crypto` `token` `rate` `future` `commodity` `bond` `nft` `option` `warrant`
  - `symbol` string  
  The symbol as sent
- `errors` array of objects  

  - `code` string  
  One of `invalid_symbol` `instrument_not_found` `not_supported` `data_unavailable` `data_pending` `data_failed`
  - `message` string
  - `symbol` string
- `meta` object  

  - `credits` integer  
  Credits this call cost
  - `requestId` string

### Errors

`400` Bad Request`401` Unauthorized`402` Payment Required`403` Forbidden`422` Unprocessable Entity`429` Too Many Requests`500` Internal Server Error`503` Service Unavailable

Every error body is problem+json with a stable `code`. See [errors](https://quova.io/docs/index.md#errors).

```shell
curl "https://api.quova.io/v1/corporate-actions?symbols=ASX:BHP,ASX:ACE&from=2015-01-01&to=2023-12-31" \
  -H "Authorization: Bearer $QUOVA_API_KEY"
```

Response 

 200 OK 

```json
{
  "data": [
    {
      "symbol": "ASX:BHP",
      "instrument": {
        "id": "ins_34VMvft6kZEXThtzFGcAL",
        "symbol": "ASX:BHP",
        "name": "BHP Group Ltd",
        "type": "equity",
        "mic": "XASX",
        "currency": "AUD",
        "country": "AU"
      },
      "asOf": "2015-05-24T00:00:00Z",
      "actions": [
        {
          "type": "demerger",
          "status": "completed",
          "effectiveDate": "2015-05-24",
          "announcedDate": "2014-08-19",
          "demerger": {
            "childName": "South32",
            "child": "ASX:S32",
            "ratio": 1,
            "au": {
              "costBaseApportionmentPct": 7.1
            }
          }
        }
      ]
    },
    {
      "symbol": "ASX:ACE",
      "instrument": {
        "id": "ins_34VN9N07Go23ZrlLllFc9",
        "symbol": "ASX:ACE",
        "name": "ACUSENSUS LIMITED.",
        "type": "equity",
        "mic": "XASX",
        "currency": "AUD",
        "country": "AU"
      },
      "asOf": "2023-07-27T00:00:00Z",
      "actions": [
        {
          "type": "split",
          "status": "completed",
          "effectiveDate": "2023-07-27",
          "announcedDate": "2023-06-23",
          "split": {
            "old": 1,
            "new": 5
          }
        }
      ]
    }
  ],
  "errors": [],
  "meta": {
    "credits": 2,
    "requestId": "req_34VoxwVB3DzylkFGYbJQh"
  }
}
```

## Dividends and distributions

GET `/v1/dividends` 

 1 credit per instrument 2 credits with fresh=true Operation ID `income.dividends`

Every dividend with its dates, the amount as declared and adjusted for later splits, reinvestment plan details and Australian franking. The from and to parameters bound the ex-date. Status firms up from announced to confirmed to paid.

### Query parameters

- `symbols` array of strings Required  
Comma-separated identifiers, up to 100, like ASX:VAS, isin:AU000000VAS1 or ins\_...  
Up to 100 items
- `listedOn` date  
Resolves tickers as the listing that traded on this day, for tickers that have since been reused. A symbol can carry its own day instead, like ASX:CCL@2021-05-10, which overrides this
- `from` date  
First day, YYYY-MM-DD
- `to` date  
Last day, YYYY-MM-DD
- `fresh` boolean  
Skip our cache and get the latest data. Items refreshed this way cost double
- `format` string  
Response format  
One of `json` `csv`  
Defaults to json

### Response

- `data` array of objects  

  - `asOf` timestamp  
  The point in time this data describes. For history and events it's the date of the newest record, or the end of your range when there are none. Live values give when they were observed, and reference data gives when we last confirmed it
  - `dividends` array of objects  
  Oldest ex-date first

    - `adjustedAmount` number  
      Per share today, after every split and consolidation since the ex-date
    - `amount` number  
      Per share as declared
    - `au` object  
      Australian franking, only on Australian dividends

      - `conduitForeignIncome` number or null  
            Per share, in the dividend's currency
      - `frankedPct` number or null  
            Share of the dividend that is franked, 0 to 100
      - `frankingCredit` number or null  
            Per share, in the dividend's currency
      - `taxRatePct` number or null  
            Company tax rate the credit was worked out at
    - `currency` string
    - `declaredDate` date or null
    - `drp` object  
      Dividend reinvestment plan, only when there is one

      - `discountPct` number or null  
            Discount to market the plan gives, 0 to 100
      - `price` number or null  
            Reinvestment price per share, in the dividend's currency
    - `exDate` date
    - `payDate` date or null
    - `recordDate` date or null
    - `status` string  
      One of `announced` `confirmed` `paid` `cancelled`
    - `type` string  
      One of `regular` `interim` `final` `special` `return_of_capital` `capital_gains`
  - `instrument` object  
  What the symbol resolved to

    - `country` string
    - `currency` string
    - `id` string
    - `mic` string  
      Left out for instruments that don't trade on an exchange, like tokens
    - `name` string
    - `symbol` string
    - `ticker` string or null  
      The code it's known by, like a listing's ticker, a token's symbol or an unlisted fund's APIR code. Null when it has none
    - `type` string  
      One of `equity` `etf` `fund` `index` `fx` `crypto` `token` `rate` `future` `commodity` `bond` `nft` `option` `warrant`
  - `symbol` string  
  The symbol as sent
- `errors` array of objects  

  - `code` string  
  One of `invalid_symbol` `instrument_not_found` `not_supported` `data_unavailable` `data_pending` `data_failed`
  - `message` string
  - `symbol` string
- `meta` object  

  - `credits` integer  
  Credits this call cost
  - `requestId` string

### Errors

`400` Bad Request`401` Unauthorized`402` Payment Required`403` Forbidden`422` Unprocessable Entity`429` Too Many Requests`500` Internal Server Error`503` Service Unavailable

Every error body is problem+json with a stable `code`. See [errors](https://quova.io/docs/index.md#errors).

```shell
curl "https://api.quova.io/v1/dividends?symbols=NASDAQ:AAPL,ASX:BHP&from=2026-01-01&to=2026-06-30" \
  -H "Authorization: Bearer $QUOVA_API_KEY"
```

Response 

 200 OK 

```json
{
  "data": [
    {
      "symbol": "NASDAQ:AAPL",
      "instrument": {
        "id": "ins_34VInjBb4l9Qz9gdXnDar",
        "symbol": "NASDAQ:AAPL",
        "name": "Apple Inc.",
        "type": "equity",
        "mic": "XNAS",
        "currency": "USD",
        "country": "US"
      },
      "asOf": "2026-05-11T00:00:00Z",
      "dividends": [
        {
          "exDate": "2026-02-09",
          "type": "regular",
          "status": "paid",
          "declaredDate": "2026-01-29",
          "recordDate": "2026-02-09",
          "payDate": "2026-02-12",
          "amount": 0.26,
          "adjustedAmount": 0.26,
          "currency": "USD"
        },
        {
          "exDate": "2026-05-11",
          "type": "regular",
          "status": "paid",
          "declaredDate": "2026-04-30",
          "recordDate": "2026-05-11",
          "payDate": "2026-05-14",
          "amount": 0.27,
          "adjustedAmount": 0.27,
          "currency": "USD"
        }
      ]
    },
    {
      "symbol": "ASX:BHP",
      "instrument": {
        "id": "ins_34VMvft6kZEXThtzFGcAL",
        "symbol": "ASX:BHP",
        "name": "BHP Group Ltd",
        "type": "equity",
        "mic": "XASX",
        "currency": "AUD",
        "country": "AU"
      },
      "asOf": "2026-03-05T00:00:00Z",
      "dividends": [
        {
          "exDate": "2026-03-05",
          "type": "regular",
          "status": "paid",
          "declaredDate": "2026-02-17",
          "recordDate": "2026-03-06",
          "payDate": "2026-03-26",
          "amount": 0.73,
          "adjustedAmount": 0.73,
          "currency": "USD",
          "drp": {
            "price": 35.247509,
            "discountPct": 0
          },
          "au": {
            "frankedPct": 100,
            "frankingCredit": 0.31285714,
            "taxRatePct": 30,
            "conduitForeignIncome": 0
          }
        }
      ]
    }
  ],
  "errors": [],
  "meta": {
    "credits": 2,
    "requestId": "req_34VoxwXDylnTjWmYpPZZn"
  }
}
```

## Australian trust tax components

GET `/v1/tax/au/components` 

 5 credits per instrument  Growth and up 10 credits with fresh=true Operation ID `tax.auComponents`

AMIT attribution components of every distribution in an Australian financial year, per unit. The basis field is estimate until the issuer publishes its final annual (AMMA) figures. Components the issuer didn't report are null.

### Query parameters

- `symbols` array of strings Required  
Comma-separated identifiers, up to 100, like ASX:VAS, isin:AU000000VAS1 or ins\_...  
Up to 100 items
- `listedOn` date  
Resolves tickers as the listing that traded on this day, for tickers that have since been reused. A symbol can carry its own day instead, like ASX:CCL@2021-05-10, which overrides this
- `fresh` boolean  
Skip our cache and get the latest data. Items refreshed this way cost double
- `format` string  
Response format  
One of `json` `csv`  
Defaults to json
- `financialYear` integer  
Named by the year it ends in, so 2026 runs 1 July 2025 to 30 June 2026\. Defaults to the current one  
From 2000 to 2100

### Response

- `data` array of objects  

  - `asOf` timestamp  
  The point in time this data describes. For history and events it's the date of the newest record, or the end of your range when there are none. Live values give when they were observed, and reference data gives when we last confirmed it
  - `distributions` array of objects  

    - `amitCostBaseDecrease` number or null
    - `amitCostBaseIncrease` number or null
    - `basis` string  
      One of `estimate` `final`
    - `cashDistribution` number or null
    - `cgtConcession` number or null
    - `currency` string
    - `discountedCapitalGainsNtap` number or null  
      On other than taxable Australian property
    - `discountedCapitalGainsTap` number or null  
      On taxable Australian property
    - `exDate` date or null
    - `foreignIncome` number or null  
      Assessable foreign income grossed up for the foreign tax paid on it
    - `foreignIncomeTaxOffset` number or null
    - `frankedDividends` number or null
    - `frankingCredits` number or null
    - `indexedCapitalGains` number or null
    - `interest` number or null
    - `netExemptIncome` number or null
    - `nonAssessableNonExempt` number or null
    - `otherCapitalGainsNtap` number or null
    - `otherCapitalGainsTap` number or null
    - `otherIncome` number or null
    - `otherNonAttributable` number or null
    - `payDate` date
    - `unfrankedCfiDividends` number or null  
      Unfranked dividends that are conduit foreign income
    - `unfrankedDividends` number or null
  - `financialYear` integer
  - `instrument` object  
  What the symbol resolved to

    - `country` string
    - `currency` string
    - `id` string
    - `mic` string  
      Left out for instruments that don't trade on an exchange, like tokens
    - `name` string
    - `symbol` string
    - `ticker` string or null  
      The code it's known by, like a listing's ticker, a token's symbol or an unlisted fund's APIR code. Null when it has none
    - `type` string  
      One of `equity` `etf` `fund` `index` `fx` `crypto` `token` `rate` `future` `commodity` `bond` `nft` `option` `warrant`
  - `symbol` string  
  The symbol as sent
- `errors` array of objects  

  - `code` string  
  One of `invalid_symbol` `instrument_not_found` `not_supported` `data_unavailable` `data_pending` `data_failed`
  - `message` string
  - `symbol` string
- `meta` object  

  - `credits` integer  
  Credits this call cost
  - `requestId` string

### Errors

`400` Bad Request`401` Unauthorized`402` Payment Required`403` Forbidden`422` Unprocessable Entity`429` Too Many Requests`500` Internal Server Error`503` Service Unavailable

Every error body is problem+json with a stable `code`. See [errors](https://quova.io/docs/index.md#errors).

```shell
curl "https://api.quova.io/v1/tax/au/components?symbols=ASX:VAS,ASX:A200&financialYear=2026" \
  -H "Authorization: Bearer $QUOVA_API_KEY"
```

Response 

 200 OK 

```json
{
  "data": [
    {
      "symbol": "ASX:VAS",
      "instrument": {
        "id": "ins_34VIJ0fD9K0jwZzgsJL0u",
        "symbol": "ASX:VAS",
        "name": "Vanguard Australian Shares Index ETF",
        "type": "etf",
        "mic": "XASX",
        "currency": "AUD",
        "country": "AU"
      },
      "asOf": "2026-07-16T00:00:00Z",
      "financialYear": 2026,
      "distributions": [
        {
          "payDate": "2025-10-16",
          "exDate": "2025-10-01",
          "basis": "estimate",
          "currency": "AUD",
          "cashDistribution": 1.0959371,
          "frankedDividends": 0.90737403,
          "frankingCredits": 0.40093034,
          "unfrankedDividends": 0.0095237,
          "unfrankedCfiDividends": 0.13594433,
          "interest": 0.00216493,
          "otherIncome": 0.02816965,
          "discountedCapitalGainsTap": 0,
          "discountedCapitalGainsNtap": 0,
          "indexedCapitalGains": 0,
          "otherCapitalGainsTap": 0,
          "otherCapitalGainsNtap": 0,
          "cgtConcession": 0,
          "foreignIncome": 0.01403794,
          "foreignIncomeTaxOffset": 0.00127748,
          "netExemptIncome": 0,
          "nonAssessableNonExempt": 0,
          "otherNonAttributable": 0,
          "amitCostBaseIncrease": 0,
          "amitCostBaseDecrease": 0
        },
        {
          "payDate": "2026-01-19",
          "exDate": "2026-01-02",
          "basis": "estimate",
          "currency": "AUD",
          "cashDistribution": 0.82082802,
          "frankedDividends": 0.55575154,
          "frankingCredits": 0.24774744,
          "unfrankedDividends": 0.03131386,
          "unfrankedCfiDividends": 0.17099964,
          "interest": 0.01271947,
          "otherIncome": 0.02574962,
          "discountedCapitalGainsTap": 0,
          "discountedCapitalGainsNtap": 0,
          "indexedCapitalGains": 0,
          "otherCapitalGainsTap": 0,
          "otherCapitalGainsNtap": 0,
          "cgtConcession": 0,
          "foreignIncome": 0.03449764,
          "foreignIncomeTaxOffset": 0.01020375,
          "netExemptIncome": 0,
          "nonAssessableNonExempt": 0,
          "otherNonAttributable": 0,
          "amitCostBaseIncrease": 0,
          "amitCostBaseDecrease": 0
        },
        {
          "payDate": "2026-04-20",
          "exDate": "2026-04-01",
          "basis": "estimate",
          "currency": "AUD",
          "cashDistribution": 0.84788042,
          "frankedDividends": 0.69485814,
          "frankingCredits": 0.3080227,
          "unfrankedDividends": 0.0111993,
          "unfrankedCfiDividends": 0.07647555,
          "interest": 0.00531795,
          "otherIncome": 0.04483529,
          "discountedCapitalGainsTap": 0,
          "discountedCapitalGainsNtap": 0,
          "indexedCapitalGains": 0,
          "otherCapitalGainsTap": 0,
          "otherCapitalGainsNtap": 0,
          "cgtConcession": 0,
          "foreignIncome": 0.01519419,
          "foreignIncomeTaxOffset": 0,
          "netExemptIncome": 0,
          "nonAssessableNonExempt": 0,
          "otherNonAttributable": 0,
          "amitCostBaseIncrease": 0,
          "amitCostBaseDecrease": 0
        },
        {
          "payDate": "2026-07-16",
          "exDate": "2026-07-01",
          "basis": "estimate",
          "currency": "AUD",
          "cashDistribution": 0.48829897,
          "frankedDividends": 0.32502221,
          "frankingCredits": 0.15420784,
          "unfrankedDividends": 0.00802112,
          "unfrankedCfiDividends": 0.09505033,
          "interest": 0.02185213,
          "otherIncome": 0.00599419,
          "discountedCapitalGainsTap": 0,
          "discountedCapitalGainsNtap": 0,
          "indexedCapitalGains": 0,
          "otherCapitalGainsTap": 0,
          "otherCapitalGainsNtap": 0,
          "cgtConcession": 0,
          "foreignIncome": 0.02960688,
          "foreignIncomeTaxOffset": 0.00077997,
          "netExemptIncome": 0,
          "nonAssessableNonExempt": 0,
          "otherNonAttributable": 0.00353208,
          "amitCostBaseIncrease": 0,
          "amitCostBaseDecrease": 0.00353208
        }
      ]
    },
    {
      "symbol": "ASX:A200",
      "instrument": {
        "id": "ins_34VN5YvBb93aoYtSyi8ym",
        "symbol": "ASX:A200",
        "name": "BetaShares Australia 200 ETF",
        "type": "etf",
        "mic": "XASX",
        "currency": "AUD",
        "country": "AU"
      },
      "asOf": "2026-07-16T00:00:00Z",
      "financialYear": 2026,
      "distributions": [
        {
          "payDate": "2025-10-16",
          "exDate": "2025-10-01",
          "basis": "estimate",
          "currency": "AUD",
          "cashDistribution": 1.5183796,
          "frankedDividends": 1.06311929,
          "frankingCredits": 0.45820293,
          "unfrankedDividends": 0.01757524,
          "unfrankedCfiDividends": 0.20527733,
          "interest": 0.0212892,
          "otherIncome": 0.03790938,
          "discountedCapitalGainsTap": 0.00848015,
          "discountedCapitalGainsNtap": 0.04029172,
          "indexedCapitalGains": 0,
          "otherCapitalGainsTap": 0,
          "otherCapitalGainsNtap": 0,
          "cgtConcession": 0.04877187,
          "foreignIncome": 0.03864428,
          "foreignIncomeTaxOffset": 0.00696481,
          "netExemptIncome": 0,
          "nonAssessableNonExempt": 0.00000152,
          "otherNonAttributable": 0.04398443,
          "amitCostBaseIncrease": 0,
          "amitCostBaseDecrease": 0.04398443
        },
        {
          "payDate": "2026-01-19",
          "exDate": "2026-01-02",
          "basis": "estimate",
          "currency": "AUD",
          "cashDistribution": 1.15363533,
          "frankedDividends": 0.80773739,
          "frankingCredits": 0.34813369,
          "unfrankedDividends": 0.01335333,
          "unfrankedCfiDividends": 0.15596573,
          "interest": 0.01617512,
          "otherIncome": 0.02880281,
          "discountedCapitalGainsTap": 0.00644305,
          "discountedCapitalGainsNtap": 0.03061287,
          "indexedCapitalGains": 0,
          "otherCapitalGainsTap": 0,
          "otherCapitalGainsNtap": 0,
          "cgtConcession": 0.03705592,
          "foreignIncome": 0.02936117,
          "foreignIncomeTaxOffset": 0.00529173,
          "netExemptIncome": 0,
          "nonAssessableNonExempt": 0.00000115,
          "otherNonAttributable": 0.03341852,
          "amitCostBaseIncrease": 0,
          "amitCostBaseDecrease": 0.03341852
        },
        {
          "payDate": "2026-04-20",
          "exDate": "2026-04-01",
          "basis": "estimate",
          "currency": "AUD",
          "cashDistribution": 1.19596586,
          "frankedDividends": 0.83737583,
          "frankingCredits": 0.36090781,
          "unfrankedDividends": 0.0138433,
          "unfrankedCfiDividends": 0.1616886,
          "interest": 0.01676864,
          "otherIncome": 0.02985968,
          "discountedCapitalGainsTap": 0.00667947,
          "discountedCapitalGainsNtap": 0.03173615,
          "indexedCapitalGains": 0,
          "otherCapitalGainsTap": 0,
          "otherCapitalGainsNtap": 0,
          "cgtConcession": 0.03841562,
          "foreignIncome": 0.03043853,
          "foreignIncomeTaxOffset": 0.0054859,
          "netExemptIncome": 0,
          "nonAssessableNonExempt": 0.0000012,
          "otherNonAttributable": 0.03464474,
          "amitCostBaseIncrease": 0,
          "amitCostBaseDecrease": 0.03464474
        },
        {
          "payDate": "2026-07-16",
          "exDate": "2026-07-01",
          "basis": "estimate",
          "currency": "AUD",
          "cashDistribution": 0.98101972,
          "frankedDividends": 0.68687763,
          "frankingCredits": 0.2960433,
          "unfrankedDividends": 0.0113553,
          "unfrankedCfiDividends": 0.13262896,
          "interest": 0.01375488,
          "otherIncome": 0.02449312,
          "discountedCapitalGainsTap": 0.005479,
          "discountedCapitalGainsNtap": 0.02603234,
          "indexedCapitalGains": 0,
          "otherCapitalGainsTap": 0,
          "otherCapitalGainsNtap": 0,
          "cgtConcession": 0.03151133,
          "foreignIncome": 0.02496793,
          "foreignIncomeTaxOffset": 0.00449994,
          "netExemptIncome": 0,
          "nonAssessableNonExempt": 9.8e-7,
          "otherNonAttributable": 0.02841819,
          "amitCostBaseIncrease": 0,
          "amitCostBaseDecrease": 0.02841819
        }
      ]
    }
  ],
  "errors": [],
  "meta": {
    "credits": 10,
    "requestId": "req_34Voxwmj2RqAQhen05jPr"
  }
}
```

## Read an Australian AMMA tax statement

POST `/v1/tax/au/statements` 

 5 credits per call 10 credits with fresh=true Operation ID `tax.auStatements`

Reads a holder's AMIT member annual (AMMA) statement from any Australian registry and returns its tax return labels and components in dollars. Send the units held at each of the year's distributions too, and the statement helps work out the fund's components per unit: once enough statements with different holdings are in, each distribution is solved exactly and goes final. Only the amounts are kept, never the file or who the holder is.

### Form fields

- `file` file Required  
The statement as the registry sent it  
Sent as application/pdf
- `holdings` array of objects  
Units held at each of the year's distributions, leaving out those not held  
Up to 366 items

  - `date` date Required  
  The distribution's ex date or payment date
  - `units` number Required  
  At least 0
- `symbol` string  
The fund, needed when the statement doesn't print its ASX code

### Response

- `data` object  

  - `amounts` object  
  In dollars, the holder's total for the year

    - `amitCostBaseDecrease` number or null
    - `amitCostBaseIncrease` number or null
    - `cashDistribution` number or null
    - `cgtConcession` number or null
    - `discountedCapitalGainsNtap` number or null  
      On other than taxable Australian property
    - `discountedCapitalGainsTap` number or null  
      On taxable Australian property
    - `foreignIncome` number or null  
      Assessable foreign income grossed up for the foreign tax paid on it
    - `foreignIncomeTaxOffset` number or null
    - `frankedDividends` number or null
    - `frankingCredits` number or null
    - `indexedCapitalGains` number or null
    - `interest` number or null
    - `netExemptIncome` number or null
    - `nonAssessableNonExempt` number or null
    - `otherCapitalGainsNtap` number or null
    - `otherCapitalGainsTap` number or null
    - `otherIncome` number or null
    - `otherNonAttributable` number or null
    - `unfrankedCfiDividends` number or null  
      Unfranked dividends that are conduit foreign income
    - `unfrankedDividends` number or null
  - `contribution` string or null  
  Null without holdings. Conflicting statements can't be fitted with the fund's others and are set aside  
  One of `used` `conflicting`
  - `financialYear` integer
  - `symbol` string
  - `taxReturn` object  
  Tax return (supplementary section) labels, like 13U
- `meta` object  

  - `asOf` timestamp or null  
  The point in time this data describes, like when a filing was published. Null where that doesn't apply, as with account data
  - `credits` integer  
  Credits this call cost
  - `requestId` string

### Errors

`400` Bad Request`401` Unauthorized`402` Payment Required`403` Forbidden`404` Not Found`422` Unprocessable Entity`429` Too Many Requests`500` Internal Server Error`502` Bad Gateway`503` Service Unavailable

Every error body is problem+json with a stable `code`. See [errors](https://quova.io/docs/index.md#errors).

```shell
curl -X POST "https://api.quova.io/v1/tax/au/statements" \
  -H "Authorization: Bearer $QUOVA_API_KEY" \
  -F "file=@a200.pdf"
```

Response 

 200 OK 

```json
{
  "data": {
    "symbol": "ASX:A200",
    "financialYear": 2026,
    "taxReturn": {
      "13A": 0,
      "13C": 508.06,
      "13Q": 152.81,
      "13R": 0,
      "13U": 94.23,
      "18A": 16.29,
      "18H": 32.58,
      "19K": 0,
      "20E": 12.92,
      "20F": 0.29,
      "20M": 12.92,
      "20O": 2.33
    },
    "amounts": {
      "cashDistribution": 507.35,
      "frankedDividends": 355.25,
      "frankingCredits": 153.1,
      "unfrankedDividends": 5.87,
      "unfrankedCfiDividends": 68.59,
      "interest": 7.11,
      "otherIncome": 12.66,
      "discountedCapitalGainsTap": 2.83,
      "discountedCapitalGainsNtap": 13.46,
      "indexedCapitalGains": 0,
      "otherCapitalGainsTap": 0,
      "otherCapitalGainsNtap": 0,
      "cgtConcession": 16.29,
      "foreignIncome": 12.92,
      "foreignIncomeTaxOffset": 2.33,
      "netExemptIncome": 0,
      "nonAssessableNonExempt": 0,
      "otherNonAttributable": 14.7,
      "amitCostBaseIncrease": 0,
      "amitCostBaseDecrease": 14.7
    },
    "contribution": null
  },
  "meta": {
    "credits": 5,
    "requestId": "req_34naZz9D746RL6nWC96fU",
    "asOf": null
  }
}
```

## Official FX rates for tax

GET `/v1/tax/fx` 

 1 credit per pair 2 credits with fresh=true Operation ID `tax.fx`

Rates a tax authority publishes for converting foreign amounts, as distinct from market FX, which lives in prices.daily under FX: symbols. Each rate is dated on the last day of its period. Pairs go in the direction the authority publishes, like AUDUSD for the RBA and USDCAD for the BoC.

### Query parameters

- `authority` string Required  
One of `RBA` `ATO` `ECB` `HMRC` `IRS` `BOC`
- `pairs` array of strings Required  
Comma-separated currency pairs, up to 100  
Up to 100 items
- `period` string  
What each rate stands for, where year\_end is the rate on the last day of the tax year  
One of `daily` `monthly` `yearly` `year_end`  
Defaults to daily
- `from` date  
First day, YYYY-MM-DD
- `to` date  
Last day, YYYY-MM-DD
- `fresh` boolean  
Skip our cache and get the latest data. Items refreshed this way cost double
- `format` string  
Response format  
One of `json` `csv`  
Defaults to json

### Response

- `data` array of objects  

  - `asOf` timestamp  
  The point in time this data describes. For history and events it's the date of the newest record, or the end of your range when there are none. Live values give when they were observed, and reference data gives when we last confirmed it
  - `base` string
  - `pair` string
  - `quote` string
  - `rates` array of objects  

    - `date` date
    - `rate` number  
      Units of quote per unit of base
- `errors` array of objects  

  - `code` string  
  One of `invalid_symbol` `not_supported` `data_unavailable` `data_pending` `data_failed`
  - `message` string
  - `pair` string  
  The pair upper cased, or as sent when it isn't a pair
- `meta` object  

  - `credits` integer  
  Credits this call cost
  - `requestId` string

### Errors

`400` Bad Request`401` Unauthorized`402` Payment Required`403` Forbidden`422` Unprocessable Entity`429` Too Many Requests`500` Internal Server Error`503` Service Unavailable

Every error body is problem+json with a stable `code`. See [errors](https://quova.io/docs/index.md#errors).

```shell
curl "https://api.quova.io/v1/tax/fx?authority=RBA&pairs=AUDUSD,AUDEUR&from=2026-06-01&to=2026-06-30" \
  -H "Authorization: Bearer $QUOVA_API_KEY"
```

Response 

 200 OK 

```json
{
  "data": [
    {
      "pair": "AUDUSD",
      "asOf": "2026-06-30T00:00:00Z",
      "base": "AUD",
      "quote": "USD",
      "rates": [
        {
          "date": "2026-06-01",
          "rate": 0.7188
        },
        {
          "date": "2026-06-02",
          "rate": 0.7163
        },
        {
          "date": "2026-06-03",
          "rate": 0.7164
        },
        {
          "date": "2026-06-04",
          "rate": 0.7131
        },
        {
          "date": "2026-06-05",
          "rate": 0.7121
        },
        {
          "date": "2026-06-09",
          "rate": 0.7058
        },
        {
          "date": "2026-06-10",
          "rate": 0.702
        },
        {
          "date": "2026-06-11",
          "rate": 0.7008
        },
        {
          "date": "2026-06-12",
          "rate": 0.7029
        },
        {
          "date": "2026-06-15",
          "rate": 0.7081
        },
        {
          "date": "2026-06-16",
          "rate": 0.7048
        },
        {
          "date": "2026-06-17",
          "rate": 0.7059
        },
        {
          "date": "2026-06-18",
          "rate": 0.7031
        },
        {
          "date": "2026-06-19",
          "rate": 0.7005
        },
        {
          "date": "2026-06-22",
          "rate": 0.7004
        },
        {
          "date": "2026-06-23",
          "rate": 0.6964
        },
        {
          "date": "2026-06-24",
          "rate": 0.6913
        },
        {
          "date": "2026-06-25",
          "rate": 0.6892
        },
        {
          "date": "2026-06-26",
          "rate": 0.6894
        },
        {
          "date": "2026-06-29",
          "rate": 0.6896
        },
        {
          "date": "2026-06-30",
          "rate": 0.6869
        }
      ]
    },
    {
      "pair": "AUDEUR",
      "asOf": "2026-06-30T00:00:00Z",
      "base": "AUD",
      "quote": "EUR",
      "rates": [
        {
          "date": "2026-06-01",
          "rate": 0.6169
        },
        {
          "date": "2026-06-02",
          "rate": 0.6155
        },
        {
          "date": "2026-06-03",
          "rate": 0.6165
        },
        {
          "date": "2026-06-04",
          "rate": 0.6142
        },
        {
          "date": "2026-06-05",
          "rate": 0.613
        },
        {
          "date": "2026-06-09",
          "rate": 0.6113
        },
        {
          "date": "2026-06-10",
          "rate": 0.6076
        },
        {
          "date": "2026-06-11",
          "rate": 0.6069
        },
        {
          "date": "2026-06-12",
          "rate": 0.6082
        },
        {
          "date": "2026-06-15",
          "rate": 0.6095
        },
        {
          "date": "2026-06-16",
          "rate": 0.6088
        },
        {
          "date": "2026-06-17",
          "rate": 0.6079
        },
        {
          "date": "2026-06-18",
          "rate": 0.6108
        },
        {
          "date": "2026-06-19",
          "rate": 0.6128
        },
        {
          "date": "2026-06-22",
          "rate": 0.6114
        },
        {
          "date": "2026-06-23",
          "rate": 0.6097
        },
        {
          "date": "2026-06-24",
          "rate": 0.6081
        },
        {
          "date": "2026-06-25",
          "rate": 0.6066
        },
        {
          "date": "2026-06-26",
          "rate": 0.6058
        },
        {
          "date": "2026-06-29",
          "rate": 0.6052
        },
        {
          "date": "2026-06-30",
          "rate": 0.6034
        }
      ]
    }
  ],
  "errors": [],
  "meta": {
    "credits": 2,
    "requestId": "req_34VoxwnVNgfyN9KHtNwTb"
  }
}
```
