Cache Platform API Documentation API Reference

Introduction

Cache is a white-label fund manager that launches and operates digital investment products for partner companies.

When a Fund has been established, partner companies use Cache’s API to provide instructions relating to the Fund in real time.

Cache API services

Cache provides four core API services that you can use to operate your Fund:

Investors manages the records relating to your investors including creating, updating and retrieving investor details and verifying an investor for KYC purposes.

Fund retrieves the information relating to your Fund including the available investment options and latest unit prices.

Instructions manages the transaction instructions that you provide to us including applications (including recurring applications), redemption requests and switch requests.

Transactions manages the transactions relating to your Fund.

Structure

The Cache’s REST APIs have resource-oriented URLs and use HTTP response codes to indicate API errors.

Cache supports cross-origin resource sharing, allowing you to interact securely with our API from a client-side web application.

API Endpoint
https://api.sandbox.cacheinvest.net.au/
Terms of Service: https://cacheinvest.com.au/
Schemes: https
Version: 1.0

Authentication

jwt_token

The API has been designed from the ground up with security in mind including access control, API security best practices including industry and widely accepted standards for authentication.

The security implementation within the API is part of a larger Cache security environment and is enhanced by additional security measures at the network infrastructure and back-office system layers.

Cache APIs support token-based authorization via the Authorization request header. The Authentication endpoint is used to retrieve an access token. After the access token is obtained, it must be inserted into the Authorization header for all requests.

Example:

Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c 
type
apiKey
name
Authorization
in
header

Authorization

When working with Cache’s APIs, you will need to complete the authentication process before you can login or use any other API.

Login

POST /api/auth/client/login

You will need to login before you can use any other API.

The login process is fairly straightforward, and simply requires you to exchange your API key for a token. Once you obtain the token, you can call any of the available API services by including the token in the Authorization header of each request.

Your API keys carry many privileges, so be sure to keep them secret! Do not share your API keys in publicly accessible areas such as GitHub, client-side code, etc.

Tokens have a short lifespan and should not be stored permanently. Once a token has expired you will need to refresh the token or login again.

Pre-requisites

Prior to logging in, you will need to retrieve an API key through the authentication process.

Request Content-Types: application/json
Request Example
{
  "apiKey": "string",
  "apiSecret": "string"
}
200 OK

jwt token

type
object
201 Created

Created

401 Unauthorized

Unauthorized

403 Forbidden

Forbidden

404 Not Found

Not Found

Response Content-Types: */*
Response Example (200 OK)
{
  "access_token": "string"
}

Refresh token

GET /api/auth/client/refresh_token

Access tokens expire after 5 minutes, but can be refreshed within 30 minutes of issue.

200 OK

jwt token

type
object
401 Unauthorized

Unauthorized

403 Forbidden

Forbidden

404 Not Found

Not Found

Response Content-Types: */*
Response Example (200 OK)
{
  "access_token": "string"
}

Investors

The Investor object represents an investor in your Fund (being the person who appears on the unit registry as the legal owner of units in the Fund).

This object contains all the details relating to that investor, excluding their instructions and transactions in and out of the Fund (which are stored separately).

Create an Investor

POST /api/investors

Upon creation, the investor’s details will be entered into the fund’s unit register with a ‘zero’ balance.

In response, you will be provided an investor ID for that investor to be used in later API calls for that investor.

createAccountRequest

Request Content-Types: application/json
Request Example
{
  "external_account_id": "string",
  "first_name": "string",
  "middle_name": "string",
  "last_name": "string",
  "date_of_birth": "2000-01-01",
  "email": "string",
  "mobile_number": "string",
  "street_name": "string",
  "street_number": "string",
  "street_type": "string",
  "post_code": "string",
  "state": "NSW",
  "sub_premise": "string",
  "suburb": "string",
  "tfn": "string",
  "is_foreign_tax_resident": "boolean",
  "datetime_of_register": "2000-01-01 01:01:01"
}
201 Created

Created

401 Unauthorized

Unauthorized

403 Forbidden

Forbidden

404 Not Found

Not Found

Response Content-Types: */*
Response Example (200 OK)
{
  "investor_id": "integer (int64)",
  "registry_account_id": "string"
}

List all Investors

GET /api/investors

Returns a paginated collection of accessible Investors.

The API may be configured to limit the resulting Investor Collection to ensure that only minimal relevant data is exposed and only when required.

pageNumber: integer (int32)
in query

Pagination Page Number, numbering starts from zero

pageSize: integer (int32)
in query

Pagination Page Size

OK

401 Unauthorized

Unauthorized

403 Forbidden

Forbidden

404 Not Found

Not Found

Response Content-Types: */*
Response Example (200 OK)
[
  {
    "investor_id": "integer (int64)",
    "registry_account_id": "string",
    "external_account_id": "string",
    "first_name": "string",
    "middle_name": "string",
    "last_name": "string",
    "date_of_birth": "2000-01-01",
    "email": "string",
    "mobile_number": "string",
    "street_name": "string",
    "street_number": "string",
    "street_type": "string",
    "post_code": "string",
    "state": "NSW",
    "sub_premise": "string",
    "suburb": "string",
    "tfn": "string",
    "datetime_of_register": "2000-01-01 01:01:01",
    "verification": {
      "status": "string",
      "verified_at": "2000-01-01 01:01:01",
      "politically_exposed": "boolean",
      "pep_details": "string"
    }
  }
]

Retrieve an Investor by Investor ID

GET /api/investors/{investorId}

Retrieves the details of an existing investor.

investorId: integer (int64)
in path

investorId

OK

401 Unauthorized

Unauthorized

403 Forbidden

Forbidden

404 Not Found

Not Found

Response Content-Types: */*
Response Example (200 OK)
{
  "investor_id": "integer (int64)",
  "registry_account_id": "string",
  "external_account_id": "string",
  "first_name": "string",
  "middle_name": "string",
  "last_name": "string",
  "date_of_birth": "2000-01-01",
  "email": "string",
  "mobile_number": "string",
  "street_name": "string",
  "street_number": "string",
  "street_type": "string",
  "post_code": "string",
  "state": "NSW",
  "sub_premise": "string",
  "suburb": "string",
  "tfn": "string",
  "datetime_of_register": "2000-01-01 01:01:01",
  "verification": {
    "status": "string",
    "verified_at": "2000-01-01 01:01:01",
    "politically_exposed": "boolean",
    "pep_details": "string"
  }
}

Update an Investor by Investor ID

PUT /api/investors/{investorId}

Updates the details of an existing investor. Any attributes not provided will be left unchanged.

Once an investor has passed ID verification, some attributes may not be changed (for example: First Name, Last Name, Middle Name, Date of Birth and Tax File Number if previously provided). If you would like to change these details, we can process this manually after the new identity has also passed verification.

If you provide the same details that we already have (ie there are no changes), the API will return a HTTP 200 status.

updateAccountRequest

investorId: integer (int64)
in path

investorId

Request Content-Types: application/json
Request Example
{
  "first_name": "string",
  "middle_name": "string",
  "last_name": "string",
  "date_of_birth": "2000-01-01",
  "email": "string",
  "mobile_number": "string",
  "street_name": "string",
  "street_number": "string",
  "street_type": "string",
  "post_code": "string",
  "state": "NSW",
  "sub_premise": "string",
  "suburb": "string",
  "tfn": "string"
}
200 OK

OK

201 Created

Created

401 Unauthorized

Unauthorized

403 Forbidden

Forbidden

404 Not Found

Not Found

Response Content-Types: */*

Create Banking Details for Investor

POST /api/investors/{investorId}/banking

Creates a ‘linked bank account’ for an existing investor.

All direct debit requests and withdrawal payments may only be made to a linked bank account stored for the relevant investor.

At this time, each investor may only create one linked bank account.

bankingDetails

investorId: integer (int64)
in path

investorId

Request Content-Types: application/json
Request Example
{
  "bank_account_name": "string",
  "bank_account_number": "string",
  "bank_bsb": "string"
}
200 OK

OK

201 Created

Created

400 Bad Request

Banking details already was created

401 Unauthorized

Unauthorized

403 Forbidden

Forbidden

404 Not Found

Not Found

Response Content-Types: */*

Retrieve Banking Details for Investor

GET /api/investors/{investorId}/banking

Retrieves the banking details for an existing investor.

investorId: integer (int64)
in path

investorId

OK

401 Unauthorized

Unauthorized

403 Forbidden

Forbidden

404 Not Found

Not Found

Response Content-Types: */*
Response Example (200 OK)
[
  {
    "bank_account_name": "string",
    "bank_account_number": "string",
    "bank_bsb": "string"
  }
]

Verify Investor by Investor ID

PUT /api/investors/{investorId}/verify

Triggers the ID verification of an existing investor.

Our flows automatically trigger ID verification on new customers. We can configure our platform so ID verification occurs upon Create Investor, when we have received the investor’s first investment instruction or when we have received the cash to pay for the investor’s first investment instruction (however successful ID verification must occur before we may accept an investment instruction for that investor).

This endpoint is intended to be used to re-verify an investor after their details have been updated.

The API will return a result confirming whether ID verification was passed and further details.

investorId: integer (int64)
in path

investorId

201 Created

Created

401 Unauthorized

Unauthorized

403 Forbidden

Forbidden

404 Not Found

Not Found

Response Content-Types: */*
Response Example (200 OK)
{
  "status": "string",
  "verified_at": "2000-01-01 01:01:01",
  "politically_exposed": "boolean",
  "pep_details": "string"
}

Fund

Retrieves the information relating to your Fund including the available investment options and latest unit prices.

List all Investment Options

GET /api/fund

Returns a list of investment options available within the Fund.

401 Unauthorized

Unauthorized

403 Forbidden

Forbidden

404 Not Found

Not Found

Response Content-Types: */*
Response Example (200 OK)
[
  {
    "investment_option_id": "integer (int64)",
    "investment_option_name": "string",
    "investment_option_description": "string"
  }
]

Retrieve Unit Price by Investment Option

GET /api/fund/{investmentOptionId}/unit-price

Retrieves the most recent recorded unit price for an investment option.

investmentOptionId: integer (int64)
in path

investmentOptionId

OK

401 Unauthorized

Unauthorized

403 Forbidden

Forbidden

404 Not Found

Not Found

Response Content-Types: */*
Response Example (200 OK)
{
  "investment_option_id": "integer (int64)",
  "unit_price": "number (double)",
  "unit_price_buy": "number (double)",
  "unit_price_sell": "number (double)"
}

Retrieve Historical Unit Prices by Investment Option

GET /api/fund/{investmentOptionId}/unit-price/historical

Retrieves recorded historical unit prices for an investment option by date period.

fromDate: string (date)
in query

fromDate

investmentOptionId: integer (int64)
in path

investmentOptionId

toDate: string (date)
in query

toDate

401 Unauthorized

Unauthorized

403 Forbidden

Forbidden

404 Not Found

Not Found

Response Content-Types: */*
Response Example (200 OK)
[
  {
    "investment_option_id": "integer (int64)",
    "unit_price": "number (double)",
    "unit_price_buy": "number (double)",
    "unit_price_sell": "number (double)",
    "latest_price_date": "string"
  }
]

Instructions

Manages the transaction instructions that you provide to us including applications (including recurring applications), redemption requests and switch requests.

Create a new application

POST /api/investors/{investorId}/instructions/application

Creates a new ‘application’ transaction instruction, being a request by the investor to invest in the Fund.

Application transaction instructions may apply to more than 1 investment option and may be set to recur weekly, fortnightly or monthly. Recurring transactions may be set to recur a specified number of iterations, until a particular date has passed or until cancelled.

applicationRequest

investorId: integer (int64)
in path

investorId

Request Content-Types: application/json
Request Example
{
  "funding_source": "string",
  "investment_options": [
    {
      "investment_option_id": "integer (int64)",
      "amount": "number (double)"
    }
  ],
  "recurring_options": {
    "start_date": "string",
    "end_date": "string",
    "cancellation_type": "string",
    "iterations_number": "integer (int64)",
    "interval": "string"
  },
  "idempotency_key": "string"
}
201 Created

Created

401 Unauthorized

Unauthorized

403 Forbidden

Forbidden

404 Not Found

Not Found

Response Content-Types: */*
Response Example (200 OK)
{
  "instruction_id": "integer (int64)"
}

Create a new redemption

POST /api/investors/{investorId}/instructions/redemption

Creates a new ‘redemption’ transaction instruction, being a request by the investor to withdraw money from the Fund.

Each redemption transaction instruction applies to 1 investment option.

redemptionRequest

investorId: integer (int64)
in path

investorId

Request Content-Types: application/json
Request Example
{
  "full_redemption": "boolean",
  "units": "number",
  "amount": "number (double)",
  "investment_option_id": "integer (int64)",
  "idempotency_key": "string"
}
201 Created

Created

401 Unauthorized

Unauthorized

403 Forbidden

Forbidden

404 Not Found

Not Found

Response Content-Types: */*
Response Example (200 OK)
{
  "instruction_id": "integer (int64)"
}

Create a new switch

POST /api/investors/{investorId}/instructions/switch

Creates a new ‘switch’ transaction instruction, being a request by the investor to move money from one investment option to another.

switchInvestmentOptionRequest

investorId: integer (int64)
in path

investorId

Request Content-Types: application/json
Request Example
{
  "from_investment_option_id": "integer (int64)",
  "to_investment_option_id": "integer (int64)",
  "amount": "number (double)",
  "idempotency_key": "string"
}
201 Created

Created

401 Unauthorized

Unauthorized

403 Forbidden

Forbidden

404 Not Found

Not Found

Response Content-Types: */*
Response Example (200 OK)
{
  "instruction_id": "integer (int64)"
}

List all instructions by Investor ID

GET /api/investors/{investorId}/instructions

Returns a list of all transaction instructions for an existing investor.

You may request a filtered list by ‘date’, ‘instruction type’ or ‘transaction type’ to reduce the volume of data returned.

investorId: integer (int64)
in path

investorId

fromDate: string (date)
in query

fromDate

toDate: string (date)
in query

toDate

instructionType: string ONE_OFF, RECURRING
in query

instructionType

transactionType: string APPLICATION, REDEMPTION, SWITCH
in query

transactionType

401 Unauthorized

Unauthorized

403 Forbidden

Forbidden

404 Not Found

Not Found

Response Content-Types: */*
Response Example (200 OK)
[
  {
    "instruction_id": "integer (int64)",
    "instruction_type": "string",
    "transaction_type": "string",
    "funding_source": "string",
    "instruction_status": "string",
    "instruction_date_created": "2000-01-01 01:01:01",
    "options": [
      {
        "investment_option_id": "integer (int64)",
        "investment_option_name": "string",
        "amount": "number (double)"
      }
    ],
    "recurring_details": {
      "start_date": "2000-01-01",
      "end_date": "2000-01-01",
      "iterations_number": "integer (int64)",
      "interval": "string",
      "cancellation_type": "string",
      "status": "string",
      "ended_at": "2000-01-01 01:01:01"
    }
  }
]

Retrieve an instruction by Instruction ID

GET /api/investors/{investorId}/instructions/{instructionId}

Retrieves the details of an instruction, including a list of the transactions that have been created by it.

instructionId: integer (int64)
in path

instructionId

investorId: integer (int64)
in path

investorId

401 Unauthorized

Unauthorized

403 Forbidden

Forbidden

404 Not Found

Not Found

Response Content-Types: */*
Response Example (200 OK)
{
  "instruction_id": "integer (int64)",
  "instruction_type": "string",
  "transaction_type": "string",
  "funding_source": "string",
  "instruction_status": "string",
  "instruction_date_created": "2000-01-01 01:01:01",
  "options": [
    {
      "investment_option_id": "integer (int64)",
      "investment_option_name": "string",
      "amount": "number (double)"
    }
  ],
  "transactions": [
    {
      "transaction_id": "integer (int64)",
      "transaction_date": "2000-01-01 01:01:01",
      "payment_status": "string"
    }
  ],
  "recurring_details": {
    "start_date": "2000-01-01",
    "end_date": "2000-01-01",
    "iterations_number": "integer (int64)",
    "interval": "string",
    "cancellation_type": "string",
    "status": "string",
    "ended_at": "2000-01-01 01:01:01"
  }
}

Cancel recurring instruction by Instruction ID

POST /api/investors/{investorId}/instructions/{instructionId}/cancel

Cancels a recurring application instruction.

instructionId: integer (int64)
in path

instructionId

investorId: integer (int64)
in path

investorId

200 OK

OK

201 Created

Created

400 Bad Request

Instruction is not recurring. Instruction is not belong to investor. Instruction recurring already cancelled

401 Unauthorized

Unauthorized

403 Forbidden

Forbidden

404 Not Found

Not Found

Response Content-Types: */*

Transactions

Manages the transactions relating to your Fund.

Retrieve holding information by Investor ID

GET /api/investors/{investorId}/holdings

Provides a snapshot of the investments currently held by an existing investor.

investorId: integer (int64)
in path

investorId

OK

401 Unauthorized

Unauthorized

403 Forbidden

Forbidden

404 Not Found

Not Found

Response Content-Types: */*
Response Example (200 OK)
[
  {
    "investment_option": {
      "investment_option_id": "integer (int64)",
      "investment_option_name": "string",
      "investment_option_description": "string"
    },
    "cleared_units": "number (double)",
    "cleared_value": "number (double)",
    "total_units": "number (double)",
    "total_value": "number (double)",
    "latest_price": "number (double)"
  }
]

List all transactions by Investor ID

GET /api/investors/{investorId}/transactions

Returns a list of all transactions for an existing investor. This is a historic record of the actual transactions that have been processed on behalf of an investor, and will not include cancelled or rejected transaction instructions.

You may request a filtered list by ‘application’, ‘redemption’ or ‘switch’.

investorId: integer (int64)
in path

investorId

fromDate: string (date)
in query

fromDate

toDate: string (date)
in query

toDate

instructionType: string ONE_OFF, RECURRING
in query

instructionType

transactionType: string APPLICATION, REDEMPTION, SWITCH
in query

transactionType

401 Unauthorized

Unauthorized

403 Forbidden

Forbidden

404 Not Found

Not Found

Response Content-Types: */*
Response Example (200 OK)
[
  {
    "transaction_id": "integer (int64)",
    "instruction_id": "integer (int64)",
    "options": [
      {
        "investment_option_id": "integer (int64)",
        "investment_option_name": "string",
        "amount": "number (double)",
        "fee": "number (double)"
      }
    ],
    "transaction_type": "string",
    "transaction_date": "2000-01-01 01:01:01",
    "is_recurring": "boolean",
    "funding_source": "string"
  }
]

Retrieve a transaction by Transaction ID

GET /api/investors/{investorId}/transactions/{transactionId}

Retrieves the details of a particular transaction.

investorId: integer (int64)
in path

investorId

transactionId: integer (int64)
in path

transactionId

401 Unauthorized

Unauthorized

403 Forbidden

Forbidden

404 Not Found

Not Found

Response Content-Types: */*
Response Example (200 OK)
{
  "transaction_id": "integer (int64)",
  "instruction_id": "integer (int64)",
  "options": [
    {
      "investment_option_id": "integer (int64)",
      "investment_option_name": "string",
      "amount": "number (double)",
      "units": "number (double)",
      "fee": "number (double)"
    }
  ],
  "transaction_status": "string",
  "funding_status": "string",
  "transaction_type": "string",
  "transaction_date": "2000-01-01 01:01:01",
  "is_recurring": "boolean",
  "funding_source": "string",
  "payment_status": "string",
  "payment_failure_reason": "string",
  "settlement_date": "2000-01-01 01:01:01"
}

Fee calculator

Fee calculator

POST /api/fee-calculator/calculate

Use this API to retrieve the transaction fees that will apply to a transaction instruction.

For an application investment instruction (which may relate to multiple investment options), you can provide an array of investment options with investment amounts.

For a redemption (which only apply to a single investment option), you may provide an array of 1 investment option.

For a switch, you may provide an array of 1 investment option which relates to the option you are switching into (do not include the details of the investment option you are switching out of).

You can also provide amounts ‘inclusive’ of the transaction fee (ie the ‘gross amount’) or ‘exclusive’ of the transaction fee (ie the ‘net amount’) by selecting the appropriate ‘fee type’. Please note: this only applies to Application transaction types.

Redemption and switch transactions are always fee inclusive (fee_type parameter will be ignored for these operations).

Request Content-Types: application/json
Request Example
{
  "fee_type": "string",
  "investment_options": [
    {
      "investment_option_id": "integer (int64)",
      "amount": "number (double)",
      "unit": "number"
    }
  ],
  "transaction_type": "string"
}
201 Created

Created

401 Unauthorized

Unauthorized

403 Forbidden

Forbidden

404 Not Found

Not Found

Response Content-Types: */*
Response Example (200 OK)
[
  {
    "investment_option_id": "integer (int64)",
    "investment_amount": "number (double)",
    "payment_amount": "number (double)",
    "fee_percent": "number (double)",
    "fee_amount": "number (double)"
  }
]

Schema Definitions

ClientCredentials: object

apiKey: string
apiSecret: string
Example
{
  "apiKey": "string",
  "apiSecret": "string"
}

AccountResponse: object

investor_id: integer (int64)
registry_account_id: string
external_account_id: string
first_name: string
middle_name: string
last_name: string
date_of_birth: string

pattern = 'yyyy-MM-dd'

email: string
mobile_number: string
street_name: string
street_number: string
street_type: string
post_code: string
state: string NSW, VIC, QLD, TAS, ACT, WA, SA, NT
sub_premise: string
suburb: string
tfn: string
datetime_of_register: string

pattern = 'yyyy-MM-dd HH:mm:ss'

verification: VerificationResponse
Example
{
  "investor_id": "integer (int64)",
  "registry_account_id": "string",
  "external_account_id": "string",
  "first_name": "string",
  "middle_name": "string",
  "last_name": "string",
  "date_of_birth": "2000-01-01",
  "email": "string",
  "mobile_number": "string",
  "street_name": "string",
  "street_number": "string",
  "street_type": "string",
  "post_code": "string",
  "state": "NSW",
  "sub_premise": "string",
  "suburb": "string",
  "tfn": "string",
  "datetime_of_register": "2000-01-01 01:01:01",
  "verification": {
    "status": "string",
    "verified_at": "2000-01-01 01:01:01",
    "politically_exposed": "boolean",
    "pep_details": "string"
  }
}

ApplicationRequest: object

funding_source: string MANUAL, DIRECT_DEBIT
investment_options: InvestmentOptionRequest
InvestmentOptionRequest
recurring_options: RecurringOptions
idempotency_key: string
Example
{
  "funding_source": "string",
  "investment_options": [
    {
      "investment_option_id": "integer (int64)",
      "amount": "number (double)"
    }
  ],
  "recurring_options": {
    "start_date": "string",
    "end_date": "string",
    "cancellation_type": "string",
    "iterations_number": "integer (int64)",
    "interval": "string"
  },
  "idempotency_key": "string"
}

BankingDetails: object

bank_account_name: string
bank_account_number: string
bank_bsb: string
Example
{
  "bank_account_name": "string",
  "bank_account_number": "string",
  "bank_bsb": "string"
}

CreateAccountRequest: object

external_account_id: string
first_name: string
middle_name: string
last_name: string
date_of_birth: string

pattern = 'yyyy-MM-dd'

email: string
mobile_number: string
street_name: string
street_number: string
street_type: string
post_code: string
state: string NSW, VIC, QLD, TAS, ACT, WA, SA, NT
sub_premise: string
suburb: string
tfn: string
is_foreign_tax_resident: boolean
datetime_of_register: string

pattern = 'yyyy-MM-dd HH:mm:ss'

Example
{
  "external_account_id": "string",
  "first_name": "string",
  "middle_name": "string",
  "last_name": "string",
  "date_of_birth": "2000-01-01",
  "email": "string",
  "mobile_number": "string",
  "street_name": "string",
  "street_number": "string",
  "street_type": "string",
  "post_code": "string",
  "state": "NSW",
  "sub_premise": "string",
  "suburb": "string",
  "tfn": "string",
  "is_foreign_tax_resident": "boolean",
  "datetime_of_register": "2000-01-01 01:01:01"
}

CreateInvestorResponse: object

investor_id: integer (int64)
registry_account_id: string
Example
{
  "investor_id": "integer (int64)",
  "registry_account_id": "string"
}

FeeCalculationInvestmentOption: object

investment_option_id: integer (int64)
amount: number (double)
unit: number
Example
{
  "investment_option_id": "integer (int64)",
  "amount": "number (double)",
  "unit": "number"
}

FeeCalculationRequest: object

fee_type: string INCLUSIVE, EXCLUSIVE
investment_options: FeeCalculationInvestmentOption
FeeCalculationInvestmentOption
transaction_type: string APPLICATION, REDEMPTION, SWITCH
Example
{
  "fee_type": "string",
  "investment_options": [
    {
      "investment_option_id": "integer (int64)",
      "amount": "number (double)",
      "unit": "number"
    }
  ],
  "transaction_type": "string"
}

FeeCalculationResponse: object

investment_option_id: integer (int64)
investment_amount: number (double)
payment_amount: number (double)
fee_percent: number (double)
fee_amount: number (double)
Example
{
  "investment_option_id": "integer (int64)",
  "investment_amount": "number (double)",
  "payment_amount": "number (double)",
  "fee_percent": "number (double)",
  "fee_amount": "number (double)"
}

HistoricalUnitPriceResponse: object

investment_option_id: integer (int64)
unit_price: number (double)
unit_price_buy: number (double)
unit_price_sell: number (double)
latest_price_date: string
Example
{
  "investment_option_id": "integer (int64)",
  "unit_price": "number (double)",
  "unit_price_buy": "number (double)",
  "unit_price_sell": "number (double)",
  "latest_price_date": "string"
}

HoldingResponse: object

investment_option: InvestmentOptionResponse
cleared_units: number (double)
cleared_value: number (double)
total_units: number (double)
total_value: number (double)
latest_price: number (double)
Example
{
  "investment_option": {
    "investment_option_id": "integer (int64)",
    "investment_option_name": "string",
    "investment_option_description": "string"
  },
  "cleared_units": "number (double)",
  "cleared_value": "number (double)",
  "total_units": "number (double)",
  "total_value": "number (double)",
  "latest_price": "number (double)"
}

InstructionDetailOptionResponse: object

investment_option_id: integer (int64)
investment_option_name: string
amount: number (double)
Example
{
  "investment_option_id": "integer (int64)",
  "investment_option_name": "string",
  "amount": "number (double)"
}

InstructionDetailResponse: object

instruction_id: integer (int64)
instruction_type: string ONE_OFF, RECURRING
transaction_type: string APPLICATION, REDEMPTION, SWITCH
funding_source: string MANUAL, DIRECT_DEBIT
instruction_status: string NEW, SUCCESS, FAILED
instruction_date_created: string

pattern = 'yyyy-MM-dd HH:mm:ss'

options: InstructionDetailOptionResponse
InstructionDetailOptionResponse
transactions: InstructionDetailTransactionResponse
InstructionDetailTransactionResponse
recurring_details: RecurringDetailsResponse
Example
{
  "instruction_id": "integer (int64)",
  "instruction_type": "string",
  "transaction_type": "string",
  "funding_source": "string",
  "instruction_status": "string",
  "instruction_date_created": "2000-01-01 01:01:01",
  "options": [
    {
      "investment_option_id": "integer (int64)",
      "investment_option_name": "string",
      "amount": "number (double)"
    }
  ],
  "transactions": [
    {
      "transaction_id": "integer (int64)",
      "transaction_date": "2000-01-01 01:01:01",
      "payment_status": "string"
    }
  ],
  "recurring_details": {
    "start_date": "2000-01-01",
    "end_date": "2000-01-01",
    "iterations_number": "integer (int64)",
    "interval": "string",
    "cancellation_type": "string",
    "status": "string",
    "ended_at": "2000-01-01 01:01:01"
  }
}

InstructionDetailTransactionResponse: object

transaction_id: integer (int64)
transaction_date: string

pattern = 'yyyy-MM-dd HH:mm:ss'

payment_status: string
Example
{
  "transaction_id": "integer (int64)",
  "transaction_date": "2000-01-01 01:01:01",
  "payment_status": "string"
}

InstructionInfoResponse: object

instruction_id: integer (int64)
Example
{
  "instruction_id": "integer (int64)"
}

InstructionResponse: object

instruction_id: integer (int64)
instruction_type: string ONE_OFF, RECURRING
transaction_type: string APPLICATION, REDEMPTION, SWITCH
funding_source: string MANUAL, DIRECT_DEBIT
instruction_status: string NEW, SUCCESS, FAILED
instruction_date_created: string

pattern = 'yyyy-MM-dd HH:mm:ss'

options: InstructionDetailOptionResponse
InstructionDetailOptionResponse
recurring_details: RecurringDetailsResponse
Example
{
  "instruction_id": "integer (int64)",
  "instruction_type": "string",
  "transaction_type": "string",
  "funding_source": "string",
  "instruction_status": "string",
  "instruction_date_created": "2000-01-01 01:01:01",
  "options": [
    {
      "investment_option_id": "integer (int64)",
      "investment_option_name": "string",
      "amount": "number (double)"
    }
  ],
  "recurring_details": {
    "start_date": "2000-01-01",
    "end_date": "2000-01-01",
    "iterations_number": "integer (int64)",
    "interval": "string",
    "cancellation_type": "string",
    "status": "string",
    "ended_at": "2000-01-01 01:01:01"
  }
}

InvestmentOptionRequest: object

investment_option_id: integer (int64)
amount: number (double)
Example
{
  "investment_option_id": "integer (int64)",
  "amount": "number (double)"
}

InvestmentOptionResponse: object

investment_option_id: integer (int64)
investment_option_name: string
investment_option_description: string
Example
{
  "investment_option_id": "integer (int64)",
  "investment_option_name": "string",
  "investment_option_description": "string"
}

RecurringDetailsResponse: object

start_date: string

pattern = 'yyyy-MM-dd'

end_date: string

pattern = 'yyyy-MM-dd'

iterations_number: integer (int64)
interval: string WEEKLY, FORTNIGHTLY, MONTHLY
cancellation_type: string MANUAL, AFTER, ON_DATE
status: string IN_PROGRESS, REJECTED, FINISHED, CANCELED, EXPIRED
ended_at: string

pattern = 'yyyy-MM-dd HH:mm:ss'

Example
{
  "start_date": "2000-01-01",
  "end_date": "2000-01-01",
  "iterations_number": "integer (int64)",
  "interval": "string",
  "cancellation_type": "string",
  "status": "string",
  "ended_at": "2000-01-01 01:01:01"
}

RecurringOptions: object

start_date: string

pattern = 'yyyy-MM-dd'

end_date: string

End Date should be specified if cancellationType = 'ON_DATE', pattern = 'yyyy-MM-dd'

cancellation_type: string MANUAL, AFTER, ON_DATE

MANUAL - recurring transaction will run until cancelled AFTER - recurring transaction will end after X iterations ON_DATE - recurring transactions will end on date specified in “end_date”

iterations_number: integer (int64)

Iterations Number should be specified if cancellationType = 'AFTER'

interval: string WEEKLY, FORTNIGHTLY, MONTHLY
Example
{
  "start_date": "string",
  "end_date": "string",
  "cancellation_type": "string",
  "iterations_number": "integer (int64)",
  "interval": "string"
}

RedemptionRequest: object

full_redemption: boolean

false

units: number
amount: number (double)
investment_option_id: integer (int64)
idempotency_key: string
Example
{
  "full_redemption": "boolean",
  "units": "number",
  "amount": "number (double)",
  "investment_option_id": "integer (int64)",
  "idempotency_key": "string"
}

SwitchInvestmentOptionRequest: object

from_investment_option_id: integer (int64)
to_investment_option_id: integer (int64)
amount: number (double)
idempotency_key: string
Example
{
  "from_investment_option_id": "integer (int64)",
  "to_investment_option_id": "integer (int64)",
  "amount": "number (double)",
  "idempotency_key": "string"
}

TransactionDetailOptionResponse: object

investment_option_id: integer (int64)
investment_option_name: string
amount: number (double)
units: number (double)
fee: number (double)
Example
{
  "investment_option_id": "integer (int64)",
  "investment_option_name": "string",
  "amount": "number (double)",
  "units": "number (double)",
  "fee": "number (double)"
}

TransactionDetailResponse: object

transaction_id: integer (int64)
instruction_id: integer (int64)
options: TransactionDetailOptionResponse
TransactionDetailOptionResponse
transaction_status: string
funding_status: string
transaction_type: string APPLICATION, REDEMPTION, SWITCH
transaction_date: string

pattern = 'yyyy-MM-dd HH:mm:ss'

is_recurring: boolean
funding_source: string MANUAL, DIRECT_DEBIT
payment_status: string PENDING, SUCCESS, FAILED
payment_failure_reason: string
settlement_date: string

pattern = 'yyyy-MM-dd HH:mm:ss'

Example
{
  "transaction_id": "integer (int64)",
  "instruction_id": "integer (int64)",
  "options": [
    {
      "investment_option_id": "integer (int64)",
      "investment_option_name": "string",
      "amount": "number (double)",
      "units": "number (double)",
      "fee": "number (double)"
    }
  ],
  "transaction_status": "string",
  "funding_status": "string",
  "transaction_type": "string",
  "transaction_date": "2000-01-01 01:01:01",
  "is_recurring": "boolean",
  "funding_source": "string",
  "payment_status": "string",
  "payment_failure_reason": "string",
  "settlement_date": "2000-01-01 01:01:01"
}

TransactionOptionResponse: object

investment_option_id: integer (int64)
investment_option_name: string
amount: number (double)
fee: number (double)
Example
{
  "investment_option_id": "integer (int64)",
  "investment_option_name": "string",
  "amount": "number (double)",
  "fee": "number (double)"
}

TransactionResponse: object

transaction_id: integer (int64)
instruction_id: integer (int64)
options: TransactionOptionResponse
TransactionOptionResponse
transaction_type: string APPLICATION, REDEMPTION, SWITCH
transaction_date: string

pattern = 'yyyy-MM-dd HH:mm:ss'

is_recurring: boolean
funding_source: string MANUAL, DIRECT_DEBIT
Example
{
  "transaction_id": "integer (int64)",
  "instruction_id": "integer (int64)",
  "options": [
    {
      "investment_option_id": "integer (int64)",
      "investment_option_name": "string",
      "amount": "number (double)",
      "fee": "number (double)"
    }
  ],
  "transaction_type": "string",
  "transaction_date": "2000-01-01 01:01:01",
  "is_recurring": "boolean",
  "funding_source": "string"
}

UnitPriceResponse: object

investment_option_id: integer (int64)
unit_price: number (double)
unit_price_buy: number (double)
unit_price_sell: number (double)
Example
{
  "investment_option_id": "integer (int64)",
  "unit_price": "number (double)",
  "unit_price_buy": "number (double)",
  "unit_price_sell": "number (double)"
}

UpdateAccountRequest: object

first_name: string
middle_name: string
last_name: string
date_of_birth: string

pattern = 'yyyy-MM-dd'

email: string
mobile_number: string
street_name: string
street_number: string
street_type: string
post_code: string
state: string NSW, VIC, QLD, TAS, ACT, WA, SA, NT
sub_premise: string
suburb: string
tfn: string
Example
{
  "first_name": "string",
  "middle_name": "string",
  "last_name": "string",
  "date_of_birth": "2000-01-01",
  "email": "string",
  "mobile_number": "string",
  "street_name": "string",
  "street_number": "string",
  "street_type": "string",
  "post_code": "string",
  "state": "NSW",
  "sub_premise": "string",
  "suburb": "string",
  "tfn": "string"
}

VerificationResponse: object

status: string UNVERIFIED, VERIFIED, VERIFICATION_FAILED
verified_at: string

pattern = 'yyyy-MM-dd HH:mm:ss'

politically_exposed: boolean
pep_details: string
Example
{
  "status": "string",
  "verified_at": "2000-01-01 01:01:01",
  "politically_exposed": "boolean",
  "pep_details": "string"
}