FinchXP Data Intelligence Platform Getting Started

Welcome to FinchXP

FinchXP is a powerful data intelligence solution used by leading financial services and institutions across Australia.

Our AIML platform provides market leading transactional intelligence to support personalisation for digital banking, affordability, personal finance, rewards and more. You can use this platform to access all our solutions including, Personal Finance, Affordability, Rewards, as well as our Analytics series.

The FinchXP API is built around the REST architecture and uses predictable, resource-oriented URLs. Requests are made with HTTP methods and returns JSON-encoded responses.

Base URL
https://api.finchxp.com
Schemes: https

API Overview

Data Sourcing

The FinchXP Data Intelligence platform is equipped to handle card or bank data (up to 10million transactions) from a range of data sources including:

  • Scheme providers (Amex, Eftpos, Mastercard, Visa)
  • Banks (+55 Australian banks)
  • Data aggregators (Basiq, Moneytree, Proviso/Illion, and more)
  • Open banking platforms

While we currently don’t connect directly with a Data Aggregator or Open Banking API (“Data Providers”), please contact us for our data mapping guides for each Data Provider to ensure easy integration.


Real Time vs Standard Service


Real Time Service

Real Time Service API processes up to 100 transactions per request (JSON) in less than 2 seconds. This is commonly used in cases of real-time spending/card notifications, transaction identification, and on-demand lending.

For more information on our Real Time Service, please view the Solutions and API Endpoints sections of this documentation.


alt text


Standard Service

Standard Service API processes up to 10 million transactions/1 million end-users per job request (JSON, XML, CSV etc.) as a scheduled overnight service, between 1-5am AEST. This is commonly used in digital banking, fintech startups, and in retail analytics.

For more information on our Standard Service, please view the Solutions and API Endpoints sections of this documentation.


alt text



Integration Tips


Data Retrieval

Before sending transaction data via our Data Intelligence APIs, you should first establish a connection with your Data Provider and confirm they have successfully retrieved the transaction data from the bank or financial institutions.

Data Providers will typically provide a status endpoint to confirm this step e.g. Basiq GET /users/{user.id}/jobs, will generate a “retrieve-transactions” update as either “pending” “in-progress”, “success”, or “failed”.

  • Failure to do so may lead to incomplete data intelligence, sub-optimal accuracy and integration response errors

Data Formatting

For reliable and accurate Data Intelligence, please ensure all data fields are formatted and mapped to the FinchXP APIs as described in the API Endpoints section.

  • Failure to do so may lead to incomplete data intelligence, sub-optimal accuracy and integration response errors

If you are using a Data Provider (Data Aggregator or Open Banking API) to source your data, please contact us to receive our Data Mapping Guides.

  • For your convenience, we return the original transaction ID, account ID, and user ID (as provided by your Data Provider) in our API responses if you wish to continue using these fields

Standard Service File Formatting

When uploading a transaction file for Standard Service, please ensure that your file meets the following requirements:

  • File type is specified in the “Create a job” endpoint
  • Header names in your file, match exactly to header names in the template
  • Columns in your file, match the exact order of columns in the template (CSV only)
  • All required values are present
  • All input values are entered in the correct format

Common formatting errors include:

  • JSON is not following Newline delimited JSON text format.
  • “Date” and “postDate” fields are not in the required ISO 8601 format
  • Required fields are missing or invalid
  • Sequence of the columns in your file does not match the exact order (CSV only)

Note: FinchXP validates the file after the import. If the file doesn’t meet the criteria or you have exceeded your limits, you will receive the status “failed”. If your file fails, please see Troubleshooting section here.


Access Tokens

Access tokens are valid for 1 hour (3600 seconds).

This is typically more than enough time to generate 100,000s requests in any one session. Therefore, we recommend storing these tokens and reusing them during future calls until it expires.

How you store access tokens will depend on the characteristics of your application: for monolithic applications, you can store it in cache (e.g. redis/memcache); for microservices, a typical solution is storing in databases.

Once it expires, you will receive 401 Unauthorised response code and you will need to request a new one.

For more detailed information on Authentication, please read the Authentication section.


Throttling

To ensure service stability, the FinchXP API validates request rate limits on a per API Key basis.

For optimal performance when sending the requests concurrently, we recommend setting the limit of 20 requests per second.

To evenly distribute requests and avoid receiving errors, please implement a throttling process by:

Controlling the number of serverless functions working concurrently:
  • Configure a queue with a limit of maximum number of serverless functions that can work concurrently
  • Calculate the number of invocations per second and limit the number of functions that can work concurrently
  • For example, if you are an AWS client, you can configure Amazon Simple Queue Service (SQS) with a limit of maximum number of lambdas that can work concurrently
Batch send:
  • When setting up a send logic, implement a batch send of requests with a limit of 20, and queue the send to be every second
Internal counter:
  • Implement an internal counter in a database table to calculate the number of sent requests per second. When the count exceeds 20 per second, please retry again in the next second.

Note: While we recommend clients to limit requests to 20 requests / second, the FinchXP API will respond with a “HTTP 429 Too Many Requests” response code once you hit our internal limit. To avoid overwhelming the server, we suggest that you schedule the retry after one second and limit the number of retries to 5 times.


Product Plan Limits

For optimal security and performance, limits apply to all Product plans. These limits include:

  • Historical data: up to 6 months
  • Accounts: 25 per user

If you exceed these limits, you will receive a 402 - Request failed error. If you have any questions regarding these limits, please submit a ticket to FinchXP Help Desk .


Updating Existing Customer Data

When retrieving the latest financial data for your existing customers, you can set up the enrichment based on your internal processes with the selected Data Aggregator. Most clients usually schedule the refreshment 3-4 times a day during non-peak hours.

For performance and stability, it’s recommended that you only enrich new financial data for your existing customers when using the Real Time Service and Connections API, as larger volumes of data may lead to throttling errors.

If you’d like to schedule an overnight update of the historical data for your whole customer base, please contact sales@finchxp.com to discuss adding Standard Service to your product plan. Unlike Real Time Service, Standard Service enables you to send up to 10 million transactions/1 million end-users per job request (JSON, XML, CSV etc.).


Authentication

To get FinchXP API access, we need to authenticate your account using your API credentials, which you can create, view and manage in your developer console.

All requests are authenticated with an API key and Access Token through the request headers such as X-API-KEY: <apiKey> and Authorization: bearer <accessToken>. All API requests must be made over HTTPS. Requests made over plain HTTP will fail. API requests without authentication will also fail.


API Key

API Key is used as a unique identifier to authenticate and authorise access to your account. Retrieve your API Key from the developer console and enter it into the request header as X-API-KEY: <apiKey>.


Client Keys

Your Client ID/Client Secret Key is the unique identifier to your back-end application: 32-character hexadecimal strings both generated by a cryptographically-secure library. API access to our platform and your account is restricted to your unique Client ID/Secret Keys.

It is highly recommended you keep your Client ID/Secret Keys secret and safe i.e. do not share them in public areas, use them in client-side code, or in any way that could compromise their security.

If at any time you feel their security could have been compromised, please contact FinchXP and generate a new Client ID/Secret Key in your developer console.


Access Tokens

Every request you send to our API from your account requires your API Key and a signed JSON Web Token (Access Token) to be granted access.

To create an Access Token, you need to send a request to the /auth/token endpoint with your X-API-Key, clientId, and clientSecret as your digital ‘signature’.

FinchXP Access Tokens can’t be intercepted (can only be sent on HTTPS TLS 1.2 or higher), are valid for a limited time (3600 seconds), and can only be created by your unique, cryptographically generated API credentials i.e. your API Key, Client ID, and Secret Key.

Once an Access Token has expired, the FinchXP API will respond with a HTTP 401 Unauthorised response code, and you will need to request a new one.

Note: AWS generates a maximum of 5 access tokens per second. We recommend that you reuse access tokens, to avoid exceeding this limit.


Multi-factor authentication

Once in production, access to your developer console will require multi-factor authentication. This will restrict access to the email address and Australian mobile number associated with your account.


IP Whitelisting

For all production and some development accounts, we require a list of all IP addresses to be assigned to your account. API access to our platform and your account will be restricted to these IP addresses only, preventing unauthorised access.

Note, as the API credentials grant full access to your account, make sure that you store it securely and that it is not shared publicly. If your credentials are compromised, please notify the FinchXP team as soon as possible and revoke your credentials in the developer console.


See our Quickstart Guide for instructions to authenticate requests with FinchXP.

HTTP Authentication and Authorization Status Codes
Code Description
401 Possible reasons include missing Authorization: Bearer {accessToken} HTTP header, missing X-API-KEY: {apiKey} HTTP header, and expired access token.

Quickstart Guide

To get started, simply follow the instructions below on how to:

  1. Create an Account
  2. Choose a Product Plan
  3. Get API Access
  4. Select an API Testing Environment
  5. Start Testing

For easy testing and integration, we support both Swagger UI and Postman.


Step 1: Create an Account

To create an account, simply sign up to our developer console and verify your email address.

Sign up is free and we’ll immediately send you an email with an account verification link. Once you've received this email, simply click on the link and sign-in.

Please note that once in Production, sign-in will require multi-factor authentication (MFA).


Step 2: Choose a Product Plan

To select one of our data intelligence APIs, simply visit the Solution Pages within the developer console and look for the "Start testing" button to subscribe to our "Testing" plan.

“Testing” plans are free and are available for both Lending and Personal Finance productType. Test data and limits are provided in Step 5.

Note: if you want to subscribe to a "Production" plan, you will need to be approved by the FinchXP team, before it is enabled on your account. To request access, please contact us here.


Step 3: Get API Access

Simply follow the instructions below to get API access:

  1. Create an API client: in the API Credentials page within the developer console to generate a unique clientId and clientSecret
  2. Generate an Access Token: use your X-API-Key, clientId, and clientSecret to request an Access Token from the /auth/token endpoint. Retrieve the accessToken from the response body

See our Authentication section for more information on any of the above.


Step 4: Select an API Testing environment

For easy integration, we have published Swagger and Postman collections that provide examples for all the FinchXP API endpoints.


Test using Swagger UI

To get started in Swagger UI, simply go to the Swagger UI Page in the developer console.

What is Swagger?
Swagger is an API testing tool allowing developers to execute their functional, security, and performance testing right from the OpenAPI Specifications (OAS).


Test using Postman

To get started on Postman, simply import the FinchXP Postman collection by clicking on the button below:

Run in Postman


What is Postman?
Postman is a free, powerful tool for performing integration testing with your API. It allows for repeatable, reliable tests that can be automated and used in a variety of environments.

New to Postman? Get started by following the instructions below:

  1. Download Postman.
  2. Import the FinchXP Postman collection, by clicking on the orange button above.
  3. Add the following variables to the collection by selecting the collection on the left of the Postman app, opening the View more actions (...) menu, and clicking Edit.
Variable Initial Value Current Value
productType Your_productType
X-API-Key Your_API_Key
clientID Your_clientSecret
clientSecret Your_clientSecret
  1. Generate an Access Token by calling GET token endpoint. The accessToken will automatically be added to your global environment.

If successful, you are now able to begin testing in Postman using the Real-time Service endpoint.

For more infromation on how to start testing with Postman, please watch the video below:



Step 5: Start testing

Testing the FinchXP APIs is simple and you can use either your own real data or our test data.


Test data and limits

The FinchXP Test data consists of 100 real, sample transactions with accounts at the Big 4 banks. The non-sensitive data is publicly available from our github repository.

You are welcome to test using your own real data although testing (both sample and real data) is limited to 1000 transactions, 100 users, or 90 days: whichever is first. For security and performance reasons, we have set limits of 100 transactions per request and 3 requests per user (per day).

If you would like to test with your own data, please contact us and we’ll provide you with a list of financial institutions/banks that we support for testing.

If you would like to test with test banks from your Data Provider, please contact the FinchXP team first.

To see a full list of all financial institutions/banks we support in production, check out /api/providers


Data intelligence and formats

Data intelligence is a process that keeps evolving over time. While we maintain the highest service level guarantees of data intelligence accuracy, note that we continually analyse both national and individual spending trends, along with your user preferences, to constantly improve and maintain our algorithms and machine learning intelligence.

Therefore, you may see data intelligence we send through change overnight as our platform becomes smarter around your user’s spending habits - improving in both categorisation and transaction insight as it gathers more information.

Our APIs support multiple data formats (JSON, CSV, XML etc.) and all data channels i.e. Bank-direct, Open Banking, or via data aggregators (Basiq, Moneytree, Proviso, and Yodlee).


Parameters

To start testing, use our Real Time Service /api/finchxp endpoint specifying the productType (LENDING or PERSONAL_FINANCE) and parameters (see below) in the request body.

ExternalUser
Name Type Description
externalUserId string The unique ID used to identify your customer and their data on FinchXP. This must be defined by you.
AccountEntity
Name Type Description
providerId string The bank or financial institution of the end-user. See GET /api/providers for a list of providers and their providerIDs
externalAccountId string The account number as provided by the bank or financial institution
accountType string The type of financial account as defined by the bank or financial institution, e.g. checking, savings, loan etc
providerName string The full name of the bank or financial institution of the end-user as provided by Data aggregator. See the guide below or use GET /api/providers endpoint
accountStatus string Indicates the account status
currentBalance number Amount of funds in the account right now - excluding any pending transactions
availableBalance number Amount of funds that is available to an account holder for withdrawal or other use
ProcessTransactionEntity
Name Type Description
externalTransactionId string The unique transaction number as defined by you, the bank or financial institution. Each transaction belongs to only one account
externalAccountId string The account number as provided by the bank or financial institution
type enum A transaction type represents a money movement in or out of an account. CREDIT is money in, income etc.; DEBIT is money out, expense
description string The original description of the transaction as provided by the institution i.e. as it appears in the original bank statement
postDate string The posted date of the transaction as provided by the institution. Dates and times are always given in ISO 8601 format
date string The original date of the transaction as provided by the institution. Dates and times are always given in ISO 8601 format
amount number The original amount of the transaction as provided by the institution
currency string (optional) The currency of the transaction as provided by the institution, default AUD
status string (optional) The status of the transaction can be POSTED or PENDING
externalCategoryCode string Category code provided by your Data Aggregator
externalCategory string Category provided by your Data Aggregator
source string Category source ie. Basiq, Yodlee, MCC
metadata object Metadata that can be included for each transaction. It must be a valid json and supports up to 3 fields

Error Handling

FinchXP uses conventional HTTP response codes to indicate the success or failure of a request, with supplementary error messaging as needed within response bodies.

If you encounter an error, please refer to the Common Errors section in our Troubleshooting guide.

Code Status Description
200 OK Your request was successful.
400 Bad Request Body Request failed. Please check the request body for required parameters that need to be filled or changed.
401 Unauthorised Access unauthorised. Possible reasons include missing or expired Authorization: bearer {accessToken} HTTP header, and missing X-API-KEY: {apiKey} HTTP header.
402 Request Failed The parameters were valid but the request failed. Possible reasons include usage plan limits exceeded.
403 Forbidden Access forbidden. You do not have permission to perform this request. Please check that you are subscribed to the correct usage plan.
404 Resource Not Found The requested resource doesn't exist.
429 Too Many Requests You've exceeded your throttling limits. Please limit this to 5 requests per second to avoid errors.
500 502 503 504 Server Errors An error happened in one of Finch's servers. You can check the “GET/health” endpoint to see if the server is down.
HTTP Response Codes
Code Description
2xx Status codes indicating successful requests.
4xx The data sent from the client was not sent in a way the Finch servers expects.
5xx An error happened in one of Finch's servers.

Troubleshooting

Experiencing an issue or an error? Below you will find a troubleshooting guide that should help you identify and resolve the issue before requesting additional support from the FinchXP team.

The troubleshooting guide will include:

  • Most Common Errors
  • Integration
  • API Performance
  • How to report issues

Most Common Errors


400 - Bad Request Errors


1. Are any of the required parameters missing or in incorrect format (string/enum/number)?

To validate whether the variable is required or optional, please see schema definitions here. Common problems include unspecified or invalid product_type, incorrect header/parameter name and improper date formats (see International format here).


401 - Unauthorised


1. Are the client credentials and API key valid and in the required format?

Please check for formatting errors including extra spaces, typos and follow the below requirements for the HTTP headers:

  • X-API-KEY: <apiKey>
  • Authorization: bearer <accessToken>.
2. Is the access token missing or expired?

All access tokens are valid for 3600 seconds (1 hour). Please validate that the token hasn’t expired by requesting a new token.


403 - Forbidden


1. Are you subscribed to a Test Plan or a Usage Plan?

To access the platform, you have to be subscribed to a Usage Plan. To sign up to one of our Test Plans, please check a relevant product page in the console. For more information on Usage Plans, see our documentation.

2. Are you exceeding the throttling limit for access tokens?

Access tokens are valid for 1 hour (3600 seconds). Please reuse the stored tokens to avoid exceeding the limit.

How you store access tokens will depend on the characteristics of your application: for monolithic applications, you can store it in cache (e.g. redis/memcache); for microservices, a typical solution is storing in databases.

3. Are you attempting to perform a request outside of your permissions or usage plan limit?

If you require extended access or would like to increase your usage plan limits, please submit a ticket to FinchXP Help Desk .

4. Are you attempting to perform requests or activities that are breaching our Firewall rules?

Unauthorised attempts and unusual activity may trigger our Web Application Firewall. If you require extended access, please submit a ticket to FinchXP Help Desk.

If you’ve mistakenly created a deadloop by retrying the same request, it may trigger a WAF block. To avoid creating deadloops, please ensure that you limit the number of automatic retries for failed requests


429 - Too Many Requests


1. Are you sending too many requests?

For optimal performance, please limit requests to 20 per second to avoid sending concurrent requests. For recommendations on how to implement a throttling process please visit “Integration Tips: Rate limiting section.”

2. Are you generating access tokens too often?

For security and performance, AWS limits the number of access tokens per second. We recommend that you reuse access tokens, to avoid exceeding this limit.

3. Are you sending historical data that is over 6 months old?

FinchXP does not process data beyond 6 months days. If you’d like to enrich historical data, please contact sales@finchxp.com for more information.

4. Are you sending duplicate data?

For optimal performance, please do not send duplicate data for enrichment.


500 - Server Error


1. Is the FinchXP server down?

Please call “GET/health” endpoint to check whether our server is down.

2. Are you sending multiple bad requests?

For transactions with bad requests, you may experience a 500 timeout error.


Errors caused by deadloops

Deadloops are caused when your code automatically retries the request without properly handling the error. To avoid recurring errors, please limit the number of times your code automatically retries the request.

For example, if you are using AWS lambdas to send the requests, you can set up a limit for the number of retries until SQS automatically moves the request to a dead-letter queue. This way, you can also easily review the list of failed requests instead of looking into the logs.


API Integration


1. Are you using the correct product type or would you like to switch to a different product?

Please enter the product type that you’ve subscribed to. If you’d like to switch, please submit a ticket to FinchXP Help Desk

2. Are you sending data from unsupported providers (banks)?

If the provider is currently not supported on the FinchXP platform, please enter the original data aggregator providerID as a placeholder and submit a ticket to FinchXP Help Desk . Note: Transactions from unsupported banks will be included in the enrichment process, however, results may vary.

3. Are you using test banks / test accounts?

If you’d like to test with test banks from your Data Provider, please submit a ticket to FinchXP Help Desk .


API Performance:


1. Did the API call return data within the expected latency?

For optimal performance, please:

  • Do not send multiple requests at the same time to avoid concurrent API processing
  • Limit requests to 20 per second
  • Re-use your access tokens which are valid for 1 hour (3600 seconds).
  • Make sure you have a strong internet connection
  • Check that the request body matches the requirements. Errors will affect latency.
2. Are you sending data from unsupported providers (banks)?

When an error occurs, FinchXP returns a JSON-formatted response that contains a human-readable error message and an error code. Ensure that your code can handle all the errors that may be returned, as well as unexpected items. See the full list of errors here.


How to Report Issues


1. Would you like to report an unidentified or misidentified transaction?

Please submit a ticket to FinchXP Help Desk following the structure below:

  • Problem description: please provide as much information as you can to help us quickly identify the problem.
  • Transaction id
  • Transaction description
  • Current result: what do you currently see?
  • Desired result: what would you like to see?
2. Would you like to report a bug?

Please submit a ticket to FinchXP Help Deskfollowing the structure below:

  • Error code and message (if applicable)
  • Current result: what do you currently see?
  • Desired result: what would you like to see?
3. Would you like to request a new provider?

Please submit a ticket to FinchXP Help Desk specifying the provider’s name, website, bank code from your Data Provider (if applicable) and 10 transaction examples.

4. Would you like to request a new category?

Please submit a ticket to FinchXP Help Desk specifying the desired parentCategory name, Category name and 10 merchant examples.

Affordability

Our Affordability Solution lets you retrieve real-time categorisation, income and expense details to reliably verify a customer’s financial position to help lenders make fast, informed lending decisions. It is supported by all data channels i.e. Bank-direct, Open Banking, or via data aggregators (Basiq, Proviso, and Yodlee).

Due to our real-time accuracy and reliability, a common use-case is to minimise the risk of non-compliance with the responsible lending guidelines provided in RG 209 by ASIC.

There are over 240+ expense categories including 32 income categories carefully selected to identify income sources, liabilities and high risk spending behaviours. You can retrieve the list using the Categories endpoint.


Responsible Lending (beta)

To assist lenders and brokers in verifying information about the customer’s financial situation and in identifying areas for further enquiry, we also return the following:

Adjustability: flags spending behaviours and lifestyle activities that could help reduce their current expenditure to afford the repayments of a loan

RF Activity: flags higher risk activities (as defined in RG 209 as ‘red flags’) which may require further enquiry e.g. credit-related debts, ‘buy now, pay later’, delinquencies etc.


Specifying your product type

Once enabled on your account, you will need to specify productType: LENDING in any request. Note: Our Lending API is currently only available in real-time. For larger institutions looking for a Standard Service and overnight processing, please contact us.

Response Content-Type: application/json
Response Example
{
    "externalUserId": "{externalUserId}",
    "accounts": [
        {
            "externalAccountId": "347c17f6-f234-4d51-8f81-928067d257eb",
            "providerId": "NATA",
            "accountType": "bank",
            "accountStatus": "AVAILABLE",
            "providerName": "NABInternet",
            "availableBalance": 2467.16,
            "currentBalance": 2467.16
        }
    ],
    "transactions": [
        {
            "externalAccountId": "347c17f6-f234-4d51-8f81-928067d257eb",
            "externalTransactionId": "f0e001c5-2424-47f0-b5f6-e0df9531832f",
            "type": "DEBIT",
            "description": "2008259-55399128 CREDIT CORP",
            "postDate": "2021-02-02",
            "status": "PENDING",
            "date": "2021-02-02",
            "amount": -173.6,
            "currency": "AUD",
            "enrichedInfo": {
                "location": {},
                "category": {
                "parentCategory": "Loans & Repayments",
                "category": "Personal Loans"
                },
                "type": {
                "isAtm": false,
                "isExpense": true,
                "isBillPayment": true,
                "isOnline": true,
                "isTransfer": false,
                "isInternalTransfer": false,
                "isInternational": false
                }
            }
        }
    ]
}

Personal Finance

Our Personal Finance Solution lets you retrieve accurate information around a customer’s transactions to better understand their financial activities and overall position.

A common use-case is to provide customers with real-time spending and saving insights, with the goal to promote positive financial habits and help them reach their financial goals.

In addition to over 240+ categories including 32 income categories, we provide over 25,000 logos, along with merchant name, location, category and website.


Specifying your product type

Once enabled on your account, you will need to specify productType: PERSONAL_FINANCE in any request.

Response Content-Type: application/json
Response Example
{
    "externalUserId": "{externalUserId}",
    "accounts": [
        {
            "externalAccountId": "7fb50159-fba2-4166-97ec-5c1063624ea6",
            "providerId": "CTBA",
            "accountType": "bank",
            "accountStatus": "AVAILABLE",
            "providerName": "Commonwealth Bank of Australia",
            "availableBalance": 754.87,
            "currentBalance": 754.87
        }
    ],
    "transactions": [
        {
            "externalAccountId": "7fb50159-fba2-4166-97ec-5c1063624ea6",
            "externalTransactionId": "9ab5ae5e-c1b3-4823-879c-1e28169676a7",
            "type": "DEBIT",
            "description": "YP FITNESS PTY LTD MERMAID BEACH QL AUS Card xx1618 Value Date: 20/01/2021",
            "postDate": "2021-01-01",
            "status": "POSTED",
            "date": "2021-01-01",
            "amount": -20,
            "currency": "AUD",
            "enrichedInfo": {
                "name": "Jetts fitness",
                "location": {
                    "suburb": "Mermaid Beach",
                    "state": "QLD",
                    "postcode": "4218"
                },
                "category": {
                    "parentCategory": "Fitness & Wellbeing",
                    "category": "Gyms & Fitness"
                },
                "type": {
                    "isAtm": false,
                    "isExpense": true,
                    "isBillPayment": false,
                    "isOnline": false,
                    "isTransfer": false,
                    "isInternalTransfer": false,
                    "isInternational": false
                },
                "website": "www.jetts.com.au/",
                "logoUrl": "https://content.finchxp.com/2rp369HVFe4ZUWaqsAVcs9/logos/mJPNBVom7BUpMFkoydjXUD.png"
            }
        }
    ]
}

Rewards

Our Rewards Solution lets you retrieve accurate merchant identification, store address and categorisation around a customer’s spending to enable real-time personalised offers.

Businesses and reward programs leveraging bank-linked loyalty, can now receive real-time and overnight identification of eligible in-store and online purchases, regardless of card, bank or scheme provider. No POS integration or terminal ID required. Allow retail partners to create dynamic commissions based on time, store, location.

To learn more about our Rewards Solution contact sales team at sales@finchxp.com

Basiq Connections

The Basiq Connections API (Real-time Service) allows Clients to pass through data to the FinchXP platform in the same response and format (JSON) received from Basiq, reducing the effort and simplifying integration.

The API processes up to 100 Basiq transactions per request in real-time speed (<2 sec) and comes in 3 data intelligence levels or “products” depending on the subscribed product type e.g. Lending, Personal Finance, and Loyalty.


Workflow of Connections API

In the past, customers would need to connect to both Basiq and FinchXP platforms independently, with two separate and unrelated integrations.

The new Basiq “Connections” API Request is designed to ingest Basiq’s “Accounts” and “Transactions” API Response with no additional data formatting, development effort, or cost - making it effortless for new and existing Basiq and FinchXP customers to connect to both platforms.

STEP 1: Retrieve Accounts and Transactions Object

STEP 2: Pass through to Connections API

  • Generate FinchXP access token using POST /auth/token endpoint.
  • Using the data inputs from step 1 send the request to the Connections API specifying your product type and using POST /api/finchxp/basiq/transactions/user/{basiqUserId} endpoint

alt text

Pre-requisites

  • Basiq Account setup
    • A valid Basiq Access Token
    • Job success confirmation
  • FinchXP Account setup
    • A valid FinchXP Access Token
    • /api/finchxp/basiq/transactions/user/basiqUserId

Basiq Enrichment API Reference (Real-time Service)

Request

POST

/api/finchxp/basiq/transactions/user/{basiqUserId}


Request Body

Combine the response body from GET/list-all-accounts and GET/list-all-transactions received from your Data Aggregator (Basiq), specifying your productType.

Each request can contain up to 100 transactions.


Request Parameter

  • externalUserId: string

The unique ID used to identify and track your customer and their data from Yodlee through to FinchXP. For your convenience, we recommend that you use the externalUserId from your Data Aggregator.


Response Body

Data Intelligence and information provided in your response will vary depending on your productType and specific plan. For your convenience, we return the original transaction ID, account ID, and user ID (as provided by your aggregator) in our API responses if you wish to continue using these fields.


Basiq Connections Integration Guide

Basiq Provider Mapping

FinchXP currently supports 75+ major Australian bank data providers. Below you will find a guide on how to map provider (institution) ids between Basiq and FinchXP.

If the provider is currently not supported on the FinchXP platform, please enter the original data aggregator as a placeholder.

Note, transactions from unsupported banks will still go through the ingestion and enrichment process, however the results might not be as accurate.

Request

GET

/api/finchxp/providers/basiq


Basiq Schema Definitions

Below you can find the data fields for our Basiq Connection API.


Basiq Field Type Required/Optional Description
ExternalUser
Users string required Unique User ID as provided by Basiq.
BasiqAccountEntity
type string optional Default value is “account” provided by Basiq
id string required Unique id that identifies the account, provided by Basiq
accountNo string optional Full account number, provided by Basiq
name string optional Account name as defined by institution or user
currency string required The currency of the transaction as provided by the bank or financial institution, default AUD
balance string required Amount of funds in the account excluding any pending transactions
availableFunds string required Amount of funds that are available for withdrawal or other user
lastUpdated string optional Timestamp of when the account was last updated
class
type string required The type of financial account as defined by the bank or financial institution, e.g. checking, savings, loan etc
product string optional The product of the financial account as defined by the bank or financial institution
transactionIntervals
from string optional An array of date intervals indicating the coverage of the data relating to the account
to string optional An array of date intervals indicating the coverage of the data relating to the account
status string optional Indicates the account status
institution string required The id of the institution resource the account originated from, provided by Basiq
accountHolder string optional The name of the account holder as returned by the institution
connection string optional The latest id of the connection resource that was used to retrieve the account
links object optional A links object containing self, transactions, connection and institution from Basiq
BasiqTransactionEntity
type string optional Default value is “transaction”, provided by Basiq
id string required Unique id that identifies the transaction, provided by Basiq
status string required The status of the transaction can be POSTED or PENDING
description string required The original description of the transaction as provided by the bank or financial institution i.e. as it appears in the original bank statement or raw transaction description
postDate string optional The posted date of the transaction as provided by the bank or financial institution
transactionDate string required The original date of the transaction as provided by the bank or financial institution
amount number required The original amount of the transaction as provided by the bank or financial institution
balance string optional Value of the account balance at the time the transaction was completed
account string required The id of the account the transaction belongs to, defined by Basiq
institution string required The id of the institution resource the account originated from, defined by Basiq
connection string optional The id of the connection, defined by Basiq
direction string required The type of transaction in or out of an account i.e. CREDIT is money into an account (income) whereas DEBIT is money out of an account (expense)
class string required Describes the class (type) of transaction, defined by Basiq
subClass: title, code object required Describes the subclass (category) of transaction, defined by Basiq
links object optional A links object containing self, account, institution and connection, defined by Basiq
metadata object optional A metadata object containing arbitrary information unique to the transaction that will be returned as part of the response if included. This object can contain up to 10M characters
ProductType
productType string required API Product associated with your FinchXP account. Please enter PERSONAL_FINANCE

Request Content-Type: application/json
Request Example
{
    "accounts": [
        {
            "id": "A001",
            "type": "account",
            "class": {
                "type": "bank",
                "product": "Everyday Spending"
            },
            "balance": "1000.0",
            "availableFunds": "1000.0",
            "status": "AVAILABLE",
            "institution": "AU00601",
            "currency": "AUD",
            "name": "My spending account",
            "lastUpdated": "2020-10-03T00:00:00Z",
            "transactionIntervals": [
                {
                    "from": "2019-10-01",
                    "to": "2020-10-01"
                }
            ],
            "accountHolder": "John Smith",
            "connection": "123456",
            "links": {
                "self": "https://au-api.basiq.io/users/u001/accounts/A001",
                "transactions": "https://au-api.basiq.io/users/u001/transactions?filter=account.id.eq('A001')",
                "connection": null,
                "institution": "https://au-api.basiq.io/institutions/AU00601"
            }
        }
    ],
    "transactions": [
        {
            "type": "transaction",
            "account": "A001",
            "id": "T001",
            "description": "VISA DEBIT PURCHASE CARD 5077 KMART 3315 GOONDIWINDI",
            "amount": "-39.4",
            "balance": "1000.0",
            "status": "POSTED",
            "metadata": null,
            "currency": "AUD",
            "direction": "DEBIT",
            "conection": "C001",
            "class": null,
            "institution": "AU00601",
            "transactionDate": "2021-01-15",
            "postDate": "2021-01-15",
            "subclass": {
                "code": "100",
                "title": "Other"
            },
            "links": {
                "self": "https://au-api.basiq.io/users/u001/transactions/T001",
                "accounts": "https://au-api.basiq.io/users/u001/accounts/A001",
                "connection": null,
                "institution": "https://au-api.basiq.io/institutions/AU00601"
            }
        }
    ],
    "productType": "PERSONAL_FINANCE"
}
Response Content-Type: application/json
Response Example
{
    "externalUserId": "{externalUserId}",
    "accounts": [
        {
            "externalAccountId": "A001",
            "accountType": "bank",
            "providerId": "ANZB",
            "currentBalance": 1000,
            "availableBalance": 1000,
            "accountStatus": "AVAILABLE"
        }
    ],
    "transactions": [
        {
            "externalAccountId": "A001",
            "externalTransactionId": "T001",
            "type": "DEBIT",
            "description": "VISA DEBIT PURCHASE CARD 0000 KMART 3315 GOONDIWINDI",
            "postDate": "2021-01-15",
            "status": "POSTED",
            "date": "2021-01-15",
            "amount": -39.4,
            "currency": "AUD",
            "enrichedInfo": {
                "name": "Kmart",
                "location": {
                    "suburb": "Goondiwindi",
                    "state": "QLD",
                    "postcode": "4390"
                },
                "category": {
                    "parentCategory": "Shopping",
                    "category": "Department Stores"
                },
                "type": {
                    "isAtm": false,
                    "isExpense": true,
                    "isBillPayment": false,
                    "isOnline": false,
                    "isTransfer": false,
                    "isInternalTransfer": false,
                    "isInternational": false
                },
                "logoUrl": "https://content.finchxp.com/9XJ4y4aCDkubuCrTJ6ifK2/logos/9PCC7BNaUNQHUKUR3bahhp.svg",
                "logoUrlAPI": "https://content.finchxp.com/9XJ4y4aCDkubuCrTJ6ifK2/logos/ccE8oHhs9TfTXsrbkueYDT.svg"
            },
            "metadata": null
        }
    ]
}
Response Content-Type: application/json
Response Example
{
    "providers": [
        {
            "providerId": "AMX",
            "providerName": "American Express",
            "connectionId": "AU01201"
        },
        {
            "providerId": "AMP",
            "providerName": "AMP Bank Ltd",
            "connectionId": "AU00501"
        },
        {
            "providerId": "ARA",
            "providerName": "Arab Bank Australia Limited",
            "connectionId": "AU02201"
        },
        {
            "providerId": "ASBB",
            "providerName": "ASB Bank",
            "connectionId": "NZ00301"
        },
        {
            "providerId": "ANZB",
            "providerName": "Australia and New Zealand Banking Group Limited",
            "connectionId": "AU00601"
        },
        {
            "providerId": "ANZB",
            "providerName": "Australia and New Zealand Banking Group Limited",
            "connectionId": "NZ00101"
        },
        {
            "providerId": "AUML",
            "providerName": "Australian Military Bank Ltd",
            "connectionId": "AU02501"
        },
        {
            "providerId": "AUSY",
            "providerName": "Australian Super",
            "connectionId": "AU15001"
        },
        {
            "providerId": "BOM",
            "providerName": "Bank of Melbourne (a subsidiary of Westpac)",
            "connectionId": "AU03001"
        },
        {
            "providerId": "BKNZ",
            "providerName": "Bank of New Zealand",
            "connectionId": "NZ00201"
        },
        {
            "providerId": "BOQ",
            "providerName": "Bank of Queensland Limited",
            "connectionId": "AU00701"
        },
        {
            "providerId": "LBA",
            "providerName": "Bank of Sydney Ltd",
            "connectionId": "AU03101"
        },
        {
            "providerId": "BSA",
            "providerName": "BankSA (a subsidiary of Westpac)",
            "connectionId": "AU03201"
        },
        {
            "providerId": "BASIQ",
            "providerName": "Basiq Bank",
            "connectionId": "AU00001"
        },
        {
            "providerId": "BEND",
            "providerName": "Bendigo and Adelaide Bank Limited",
            "connectionId": "AU00101"
        },
        {
            "providerId": "CITI",
            "providerName": "Citibank",
            "connectionId": "AU00801"
        },
        {
            "providerId": "CTBA",
            "providerName": "Commonwealth Bank Australia",
            "connectionId": "AU04301"
        }
    ]
}

Open Banking

Finch’s Open Banking solution allows Clients to pass through data to the FinchXP platform in the same response and format (JSON) received from their Open Banking platform or data aggregator, reducing the effort and simplifying integration.

Depending on the level of intelligence required, our AIML powered platform delivers transaction categorisation, data enrichment and customer insights to power personalisation for digital banking, personal finance, insurance, lending and more.

Outsourced Service Provider (OSP)

Finch is audited annually to ensure compliance with Schedule 2 information security controls, as set out per CDR Rules Privacy Safeguard 12, enabling us to provide our services as a trusted Outsourced Service Provider.

Our ASAE-3150 assurance report covers all of the Schedule 2 security requirements, including over 24 prescribed security controls under CDR such as multi-factor authentication, firewalls, protections against malware and data leakage, and related business processes around user access and systems monitoring.

Bills Analyser

Bills Analyser is part of the FinchXP Analytics API series, providing customers with an estimate of non-discretionary spending from over 25,000 Billers in our Biller database.

For PFM and Affordability, it can automatically detect and analyse:

  • Fixed and variable bills
  • Bill activity by Biller Name, amount, frequency and date
  • Bill summary and totals by frequency and volume
  • Historical bill analysis to predict the amount and frequency of upcoming bills

Bills Analyser Feature

  1. Bill identification: If a transaction appears in your Bills Analyser response it has been identified as a bill. In order to identify a bill, the Bills Analyser needs to see at least 3x transactions within a given date range.

  2. Bill predictions: If the identified Bill is determined (subject to Finch’s proprietary algorithms, database, and number of transactions received) as recurring within the next 30 days, the “Upcoming Bill” section of your response will be populated with estimated date, frequency, and amount.

All Analytics APIs are available as add-on features, and can be used with any Product Plan with a valid API Key. To request a demo, please get in touch here.


Request

GET

/api/analytics/bill-payments/{externalUserId}?dateFrom=[YYYY-MM-DD]&dateTo=[YYYY-MM-DD]


Parameters

  • externalUserId - id of user
  • dateFrom - query string parameter. Date from which to start search for Bills
  • dateTo - query string parameter. Date at which to end search for Bills

Notes

  • range of dateFrom/dateTo is maximum 180 days
  • If no dateFrom/dateTo is specified, it will default to 90 days ending at the current date

Bills Schema Definitions

Below you can find the data fields for our Bills API.

ExternalUser
Field Type Description
Summary
periodEnd string End date of requested time period for number of bill transactions. Dates and times are always given in ISO 8601 format.
periodStart string Start date of requested time period for number of bill transactions. Dates and times are always given in ISO 8601 format.
transactionsTotal number Total number of bill transactions returned within time period
amountTotal number Total value amount of bill transactions returned within time period
amountMonthAvg number Average monthly value amount for this biller
billersTotal number Total number of biller (merchants) returned within time period
Biller Entity
billName string Full name of the biller
parentCategory string Top level category
category string Sub category
logoUrl string URL for biller logo
Biller Entity Summary
periodEnd string Date of the last bill for this biller
periodStart string Date of the first bill for this biller
transactionsTotal number Total number of transactions returned for this biller
amountTotal number Total value amount for this biller
amountMonthAvg number Average monthly value amount for this biller
Bill Entity (Past Transactions)
providerId string The full name of the bank or financial institution of the end-user as provided by Data aggregator. See the guide below or use GET /api/providers endpoint.
externalAccountId string The account number as provided by the bank or financial institution
accountType string The type of financial account as defined by Data aggregator e.g. transaction, savings, loan etc
externalTransactionId string The unique transaction number as defined by you, the bank or financial institution. Each transaction belongs to only one account
transactionType string A transaction type represents a money movement in or out of an account. CREDIT is money in, income etc.; DEBIT is money out, expense
description string The original description of the transaction as provided by the institution i.e. as it appears in the original bank statement
status string The status of the transaction can be POSTED or PENDING
date string The status of the transaction can be POSTED or PENDING
amount number The original amount of the transaction as provided by the institution
Upcoming Bills
estimDate string Estimated date of upcoming bill
estimAmount number Estimated amount for upcoming bill
estimFrequency string Estimated frequency of upcoming bill, eg monthly, fortnightly, quarterly, annually
Response Content-Type: application/json
Response Example
{
    "summary": {
        "periodEnd": "2020-12-01",
        "periodStart": "2020-09-01",
        "transactionsTotal": 6,
        "amountTotal": 400.47,
        "amountMonthAvg": 131.32,
        "billersTotal": 3
    },
    "bills": [
        {
            "billName": "Telstra",
            "parentCategory": "Utilities",
            "category": "Internet & Mobile",
            "logoUrl": "http://logo.finchxp.com/telstra.png",
            "summary": {
                "periodEnd": "2020-11-28",
                "periodStart": "2020-09-28",
                "transactionsTotal": 3,
                "amountTotal": 90.0,
                "amountMonthAvg": 30.0
            },
            "pastTransactions": [
                {
                    "providerId": "CTBA",
                    "externalAccountId": "11001100-aaaa-1122-3344-a2a2a2a2a2a2",
                    "accountType": "Transaction",
                    "externalTransactionId": "a1a1a1a1-3333-4444-5555-1a1a1a1a1a1a",
                    "transactionType": "DEBIT",
                    "description": "Telstra Direct Debit Aust 9988776655",
                    "status": "Posted",
                    "date": "2020-09-28",
                    "amount": 30.0
                },
                {
                    "providerId": "CTBA",
                    "externalAccountId": "11001100-aaaa-1122-3344-a2a2a2a2a2a2",
                    "accountType": "Transaction",
                    "externalTransactionId": "a1a1a1a1-6666-7777-8888-3b3b3b3b3b3b",
                    "transactionType": "DEBIT",
                    "description": "Telstra Direct Debit Aust 8877665544",
                    "status": "Posted",
                    "date": "2020-10-28",
                    "amount": 30.0
                },
                {
                    "providerId": "CTBA",
                    "externalAccountId": "11001100-aaaa-1122-3344-a2a2a2a2a2a2",
                    "accountType": "Transaction",
                    "externalTransactionId": "a1a1a1a1-9999-aaaa-bbbb-4d4d4d4d4d4d",
                    "transactionType": "DEBIT",
                    "description": "Telstra Direct Debit Aust 5544332211",
                    "status": "Posted",
                    "date": "2020-11-28",
                    "amount": 30.0
                }
            ],
            "upcomingBills": [
                {
                    "estimDate": "2021-12-28",
                    "estimAmount": 30.0,
                    "estimFrequency": "monthly"
                }
            ]
        },
        {
            "billName": "Alinta Energy",
            "parentCategory": "Utilities",
            "category": "Electricity & Gas",
            "logoUrl": "http://logo.finchxp.com/alintaenergy.png",
            "summary": {
                "periodEnd": "2020-12-27",
                "periodStart": "2020-12-27",
                "transactionsTotal": 1,
                "amountTotal": 256.5,
                "amountMonthAvg": 256.5
            },
            "pastTransactions": [
                {
                    "providerId": "CTBA",
                    "externalAccountId": "11001100-aaaa-1122-3344-a2a2a2a2a2a2",
                    "accountType": "Transaction",
                    "externalTransactionId": "11223344-cccc-ffff-eeee-1d1d1d1d1d1d",
                    "transactionType": "DEBIT",
                    "description": "Pmt Alinta Energy 8877665544",
                    "status": "Posted",
                    "date": "2020-12-27",
                    "amount": 256.5
                }
            ],
            "upcomingBills": [
                {
                    "estimDate": "2021-1-27",
                    "estimAmount": 256.5,
                    "estimFrequency": "quarterly"
                }
            ]
        },
        {
            "billName": "Netflix",
            "parentCategory": "Entertainment",
            "category": "Tv, Music & Streaming",
            "logoUrl": "http://logo.finchxp.com/netflix.png",
            "summary": {
                "periodEnd": "2020-11-15",
                "periodStart": "2021-9-15",
                "transactionsTotal": 3,
                "amountTotal": 53.97,
                "amountMonthAvg": 17.99
            },
            "pastTransactions": [
                {
                    "providerId": "CTBA",
                    "externalAccountId": "11001100-aaaa-1122-3344-a2a2a2a2a2a2",
                    "accountType": "Transaction",
                    "externalTransactionId": "33ffccaa-2222-3333-aaaa-cacacaca1212",
                    "transactionType": "DEBIT",
                    "description": "DEBIT CARD PURCHASE NETFLIX COM MELBOURNE AUS        5544332211",
                    "status": "Posted",
                    "date": "2021-09-15",
                    "amount": 17.99
                },
                {
                    "providerId": "CTBA",
                    "externalAccountId": "11001100-aaaa-1122-3344-a2a2a2a2a2a2",
                    "accountType": "Transaction",
                    "externalTransactionId": "33ffccaa-2222-3333-aaaa-cacacaca1212",
                    "transactionType": "DEBIT",
                    "description": "DEBIT CARD PURCHASE NETFLIX COM MELBOURNE AUS 8877665544 ",
                    "status": "Posted",
                    "date": "2020-10-15",
                    "amount": 17.99
                },
                {
                    "providerId": "CTBA",
                    "externalAccountId": "11001100-aaaa-1122-3344-a2a2a2a2a2a2",
                    "accountType": "Transaction",
                    "externalTransactionId": "33ffccaa-2222-3333-aaaa-cacacaca1212",
                    "transactionType": "DEBIT",
                    "description": "DEBIT CARD PURCHASE NETFLIX COM MELBOURNE AUS 0099887766 ",
                    "status": "Posted",
                    "date": "2020-11-15",
                    "amount": 17.99
                }
            ],
            "upcomingBills": [
                {
                    "estimDate": "2020-12-15",
                    "estimAmount": 17.99,
                    "estimFrequency": "monthly"
                }
            ]
        }
    ]
}

Income Assessment

Income Assessment API is part of the FinchXP Analytics API series, providing customers with an estimate of recurring income such as regular salary, wages and multiple income streams.

For a full list of income categories, please see our Categories endpoint.

For PFM and Affordability, it can automatically detect and analyse:

  • Fixed and variable income sources
  • Income activity by Payer Name, frequency and amount
  • Income summary and totals by frequency and volume
  • Income categories such as Salary, Child Support, Microloans and Refunds & Contra expenses
  • Historical income analysis to predict the amount and frequency of upcoming income

All Analytics APIs are available as add-on features, and can be used with your Product Plan and a valid API Key. To request a demo, please get in touch here.

Income Assessment Features

Income Assessment uses machine learning algorithms to analyse recurring transactions within a given date range to detect and predict income.

  1. Income identification: If a transaction appears in your Income Assessment response, it has been identified as an income stream.
  2. Income prediction: If the identified income is determined (subject to Finch’s proprietary algorithms, database, and number of transactions received) as recurring within the next 30 days, the “Upcoming Income” section of your response will be populated with estimated date, frequency, and amount.

Request

GET

/api/analytics/income/{externalUserId}?dateFrom=[YYYY-MM-DD]&dateTo=[YYYY-MM-DD]


Parameters

  • externalUserId - id of user
  • dateFrom - query string parameter. Date from which to start search for Income
  • dateTo - query string parameter. Date at which to end search for Income

Notes

  • range of dateFrom/dateTo is maximum 180 days
  • If no dateFrom/dateTo is specified, it will default to 90 days ending at the current date

Income Assessment Schema Definitions

Below you can find the data fields for our Income Assessment API.

ExternalUser
Field Type Description
Summary
periodEnd string End date of requested time period for number of income transactions.
Dates and times are always given in ISO 8601 format.
periodStart string Start date of requested time period for number of income transactions.
Dates and times are always given in ISO 8601 format.
transactionsTotal number Total number of income transactions returned within time period
amountTotal number Total value amount of income transactions returned within time period
amountMonthAvg number Average monthly value amount for this payer
payersTotal number Total number of payer (merchants) returned within time period
Payer Entity
payerName string Full name of the payer
parentCategory string Top level category
category string Sub category
logoUrl string URL for payer logo
Payer Entity Summary
periodEnd string Date of the last income for this payer
periodStart string Date of the first income for this payer
transactionsTotal number Total number of transactions returned for this payer
amountTotal number Total value amount for this payer
amountMonthAvg number Average monthly value amount for this payer
Payer Entity (Past Transactions)
providerId string The full name of the bank or financial institution of the end-user as provided by Data aggregator. See the guide below or use GET /api/providers endpoint.
externalAccountId string The account number as provided by the bank or financial institution
accountType string The type of financial account as defined by Data aggregator e.g. transaction, savings, loan etc
externalTransactionId string The unique transaction number as defined by you, the bank or financial institution. Each transaction belongs to only one account
transactionType string A transaction type represents a money movement in or out of an account. CREDIT is money in, income etc.; DEBIT is money out, expense
description string The original description of the transaction as provided by the institution i.e. as it appears in the original bank statement.
status string The status of the transaction can be POSTED or PENDING
date string The original date of the transaction as provided by the institution. Dates and times are always given in ISO 8601 format
amount number The original amount of the transaction as provided by the institution.
Upcoming Income
estimDate string Estimated date of upcoming income
estimAmount number Estimated amount for upcoming income
estimFrequency string Estimated frequency of upcoming income, eg X days
confidenceScore number Estimated confidence of upcoming income
Response Content-Type: application/json
Response Example
{
    "summary": {
        "periodEnd": "2021-09-27",
        "periodStart": "2021-02-14",
        "transactionsTotal": 9,
        "amountTotal": 6639.62,
        "amountMonthAvg": 737.74,
        "payersTotal": 3
    },
    "regularIncome": [
        {
            "payerName": "Selected Seeds P 384-salary",
            "parentCategory": "Income",
            "category": "Salary & Wages",
            "logoUrl": "https://content.finchxp.com/gNkcgvrBLibw323jRgkm9V/categoryicons/Income_Salary & Wages.svg",
            "summary": {
                "periodStart": "2021-08-25",
                "periodEnd": "2021-09-22",
                "transactionsTotal": 3,
                "amountTotal": 5319,
                "amountMonthAvg": 1773
            },
            "pastTransactions": [
                {
                    "providerId": "CTBA",
                    "externalAccountId": "68ec4f4f-61a3-4431-809b-5346c9c83ba9",
                    "accountType": "Transaction",
                    "externalTransactionId": "88fc5f5d-f68a-404b-8275-97a22fb0751d",
                    "transactionType": "CREDIT",
                    "description": "Salary SELECTED SEEDS P 384-SALARY",
                    "status": "Posted",
                    "date": "2021-09-22",
                    "amount": 1773
                },
                {
                    "providerId": "CTBA",
                    "externalAccountId": "68ec4f4f-61a3-4431-809b-5346c9c83ba9",
                    "accountType": "Transaction",
                    "externalTransactionId": "6b5e9722-2691-47ef-b2d8-c1567b6c2371",
                    "transactionType": "CREDIT",
                    "description": "Salary SELECTED SEEDS P 384-SALARY",
                    "status": "Posted",
                    "date": "2021-09-08",
                    "amount": 1773
                },
                {
                    "providerId": "CTBA",
                    "externalAccountId": "68ec4f4f-61a3-4431-809b-5346c9c83ba9",
                    "accountType": "Transaction",
                    "externalTransactionId": "7c1741e6-d7b2-4920-aa9a-8666660b1cec",
                    "transactionType": "CREDIT",
                    "description": "Salary SELECTED SEEDS P 384-SALARY",
                    "status": "Posted",
                    "date": "2021-08-25",
                    "amount": 1773
                }
            ],
            "upcomingIncome": [
                {
                    "confidenceScore": 0.99,
                    "estimDate": "2021-10-06",
                    "estimAmount": 1773,
                    "estimFrequency": "14 days"
                }
            ]
        },
        {
            "payerName": "Centrelink",
            "parentCategory": "Income",
            "category": "Centrelink & Gov't Assistance",
            "logoUrl": "https://content.finchxp.com/9XJ4y4aCDkubuCrTJ6ifK2/logos/htLZsjznv15ezg2dQftt8c.png",
            "summary": {
                "periodStart": "2021-08-20",
                "periodEnd": "2021-09-17",
                "transactionsTotal": 3,
                "amountTotal": 340.62,
                "amountMonthAvg": 113.54
            },
            "pastTransactions": [
                {
                    "providerId": "CTBA",
                    "externalAccountId": "68ec4f4f-61a3-4431-809b-5346c9c83ba9",
                    "accountType": "Transaction",
                    "externalTransactionId": "883714dc-0015-42e5-9219-f8dfa5aafdf5",
                    "transactionType": "CREDIT",
                    "description": "Direct Credit 015884 CENTRELINK FB1B0985402566437X",
                    "status": "Posted",
                    "date": "2021-09-17",
                    "amount": 113.54
                },
                {
                    "providerId": "CTBA",
                    "externalAccountId": "68ec4f4f-61a3-4431-809b-5346c9c83ba9",
                    "accountType": "Transaction",
                    "externalTransactionId": "3c5aeff6-cbec-4af8-b873-995a8432ee46",
                    "transactionType": "CREDIT",
                    "description": "Direct Credit 015884 CENTRELINK FB1B0655402566437X",
                    "status": "Posted",
                    "date": "2021-09-03",
                    "amount": 113.54
                },
                {
                    "providerId": "CTBA",
                    "externalAccountId": "68ec4f4f-61a3-4431-809b-5346c9c83ba9",
                    "accountType": "Transaction",
                    "externalTransactionId": "c4a15838-6dd8-4843-b3b3-10ac1f0e24c9",
                    "transactionType": "CREDIT",
                    "description": "Direct Credit 015884 CENTRELINK FB1B0325402566437X",
                    "status": "Posted",
                    "date": "2021-08-20",
                    "amount": 113.54
                }
            ],
            "upcomingIncome": [
                {
                    "confidenceScore": 0.9,
                    "estimDate": "2021-10-01",
                    "estimAmount": 113.5,
                    "estimFrequency": "14 days"
                }
            ]
        },
        {
            "payerName": "Government (Family Allowance)",
            "parentCategory": "Income",
            "category": "Centrelink & Gov't Assistance",
            "logoUrl": null,
            "summary": {
                "periodStart": "2021-08-20",
                "periodEnd": "2021-09-17",
                "transactionsTotal": 3,
                "amountTotal": 980,
                "amountMonthAvg": 326.67
            },
            "pastTransactions": [
                {
                    "providerId": "CTBA",
                    "externalAccountId": "68ec4f4f-61a3-4431-809b-5346c9c83ba9",
                    "accountType": "Transaction",
                    "externalTransactionId": "08c02f9b-8d6c-4bd6-9741-d771d4d26dee",
                    "transactionType": "CREDIT",
                    "description": "Direct Credit 015884 AUS GOV FAMILIES 841B0985402566437X",
                    "status": "Posted",
                    "date": "2021-09-17",
                    "amount": 615.72
                },
                {
                    "providerId": "CTBA",
                    "externalAccountId": "68ec4f4f-61a3-4431-809b-5346c9c83ba9",
                    "accountType": "Transaction",
                    "externalTransactionId": "0c61c7c3-e69d-48ca-8ad2-17b236e83a2f",
                    "transactionType": "CREDIT",
                    "description": "Direct Credit 015884 AUS GOV FAMILIES 841B0655402566437X",
                    "status": "Posted",
                    "date": "2021-09-03",
                    "amount": 182.14
                },
                {
                    "providerId": "CTBA",
                    "externalAccountId": "68ec4f4f-61a3-4431-809b-5346c9c83ba9",
                    "accountType": "Transaction",
                    "externalTransactionId": "8e550aa3-e5d7-43cc-ad2b-dfa67b9c9caa",
                    "transactionType": "CREDIT",
                    "description": "Direct Credit 015884 AUS GOV FAMILIES 841B0325402566437X",
                    "status": "Posted",
                    "date": "2021-08-20",
                    "amount": 182.14
                }
            ],
            "upcomingIncome": [
                {
                    "confidenceScore": 0.8,
                    "estimDate": "2021-10-01",
                    "estimAmount": 615.7,
                    "estimFrequency": "14 days"
                }
            ]
        }
    ]
}

Authentication

Generate access token

POST /auth/token

Every request you send to our API from your account requires your API Key and a signed JSON Web Token (Access Token) to be granted access. To create an Access Token, you need to send a request to the /auth/token endpoint with your API Credentials i.e. your X-API-Key in the HTTP header, with clientId and clientSecret as the parameters. If you provided the correct parameters, you should get a successful response with an accessToken that is valid for a limited time. The API credentials can be found in your developer console.

Enter your clientId and clientSecret into the request body.

Request Content-Types: application/json
Request Example
{
  "clientId": "string",
  "clientSecret": "string"
}
200 Success

Generate the Access token from the response and enter it into the HTTP Authorization header as a bearer <token>.

Response Content-Types: application/json
Response Example (200 Success )
{
  "accessToken": "string"
}

Standard Service

Create a job

POST /api/jobs

This endpoint is for customers in production requiring overnight data intelligence on up to 1 million end-users or 10 million transactions per job e.g. personal finance, retail analytics, and digital banking.

Please specify your productType.

Request Content-Types: application/json
Request Example
{
  "contentType": "text/csv",
  "format": "CSV",
  "processingType": "STANDARD",
  "productType": "PERSONAL_FINANCE",
  "expiresIn": 86400,
  "notifiedWebhook": "https://yourapp.com/hooks/app/?",
  "notifiedEmail": "client@clientemail.com",
  "schema": "finchxp",
  "outputFormat": "CSV",
  "requireMultipart": false
}

You have now created pre-signed URLs to begin uploading your data.

Response Content-Types: application/json
Response Example (200 Success )
{
  "id": "f5c1b6c9-2c6a-4491-9782-ac99aaa16cfa",
  "status": "awaiting_upload",
  "signedPutUrl": "url",
  "productType": "PERSONAL_FINANCE",
  "signedPutUrlExpiresAt": "2021-07-15T04:54:13.030Z",
  "created": "2021-07-14T04:54:13.030Z",
  "modified": "2021-07-14T04:54:13.030Z"
}

Complete upload

POST /api/jobs/completeUpload

Use this endpoint to indicate you have finished uploading all data in your job in order for us to begin running data intelligence.

The unique Job ID returned in the response body when you created the job.

Request Content-Types: application/json
Request Example
{
  "id": "string"
}

Receive your presigned output URL.

Response Content-Types: application/json
Response Example (200 OK)
{
  "id": "b3242fad-c325-4f2d-9416-ec36ed3680f6",
  "status": "imported",
  "schema": "finchxp",
  "productType": "PERSONAL_FINANCE",
  "outputFormat": "CSV",
  "created": "2021-07-14T07:26:02.373Z",
  "noOfInputTransactions": null,
  "noOfProcessedTransactions": null,
  "noOfUniqueUsers": null
}

Job Status

POST /api/jobs/details/:id

This endpoint is for customers in production to track the status of their jobs. Once the job is complete, you will be able to download it using the presigned output URL. You will also receive the email/webhook notification. Standard jobs for data intelligence processing are completed between 1-5am AEST.

For faster processing services, please contact our sales team.

id: string
in path

The unique Job ID returned in the response body when you created the job.

withSignedUrl: boolean
in query

Whether a signed URL for upload/download the job should be included (depending on the job status)

signedUrlExpiry: number
in query

Expiry required for the signed URL in seconds

Details of submitted job

Response Content-Types: application/json
Response Example (200 OK)
{
  "id": "52892a7f-9e75-4a7c-b60c-779f95edecb9",
  "status": "successful",
  "schema": "finchxp",
  "productType": "PERSONAL_FINANCE",
  "outputFormat": "CSV",
  "created": "2021-06-21T07:50:06.598Z",
  "noOfInputTransactions": 10,
  "noOfProcessedTransactions": 10,
  "noOfUniqueUsers": 1,
  "signedGetUrl": "url"
}

Real Time Service

Process transactions by user

POST /api/finchxp/transactions/user/{externalUserId}

This endpoint is for testing and for customers in production requiring advanced data intelligence in real-time e.g. on-demand lending, personal finance alerts/notifications, and more.

externalUserId: string
in path

The unique ID used to identify your customer and their data on FinchXP. This must be defined by you.

Request Content-Types: application/json
Request Example
{
  "accounts": [
    {
      "externalAccountId": "7fb50159-fba2-4166-97ec-5c1063624ea6",
      "accountType": "bank",
      "providerId": "CTBA",
      "providerName": "Commonwealth Bank of Australia",
      "accountStatus": "AVAILABLE",
      "currentBalance": 754.87,
      "availableBalance": 754.87
    }
  ],
  "transactions": [
    {
      "externalAccountId": "7fb50159-fba2-4166-97ec-5c1063624ea6",
      "externalTransactionId": "9ab5ae5e-c1b3-4823-879c-1e28169676a7",
      "externalUserId": "U0001",
      "description": "YP FITNESS PTY LTD MERMAID BEACH QL AUS Card xx1618 Value Date: 20/01/2021",
      "postDate": "2021-01-01",
      "date": "2021-01-01",
      "amount": "-20.00",
      "currency": "AUD",
      "status": "POSTED",
      "externalCategoryCode": 100,
      "externalCategory": "Other",
      "source": "Yodlee",
      "metadata": "Please confirm with Finch",
      "type": "DEBIT"
    }
  ],
  "productType": "LOYALTY"
}

Data Intelligence and information provided in your response will vary depending on your productType and specific plan.

Response Content-Types: application/json
Response Example (200 OK)
{
  "externalUserId": "{externalUserId}",
  "accounts": [
    {
      "externalAccountId": "7fb50159-fba2-4166-97ec-5c1063624ea6",
      "accountType": "bank",
      "providerId": "CTBA",
      "providerName": "Commonwealth Bank of Australia",
      "accountStatus": "AVAILABLE",
      "currentBalance": 754.87,
      "availableBalance": 754.87
    }
  ],
  "transactions": [
    {
      "externalAccountId": "7fb50159-fba2-4166-97ec-5c1063624ea6",
      "externalTransactionId": "9ab5ae5e-c1b3-4823-879c-1e28169676a7",
      "description": "YP FITNESS PTY LTD MERMAID BEACH QL AUS Card xx1618 Value Date: 20/01/2021",
      "postDate": "2021-01-01",
      "date": "2021-01-01",
      "amount": -20,
      "currency": "AUD",
      "status": "POSTED",
      "type": "DEBIT",
      "enrichedInfo": {
        "name": "Jetts fitness",
        "location": {
          "address": "2532 Gold Coast Highway",
          "suburb": "Mermaid Beach",
          "state": "QLD",
          "postcode": "4218",
          "longitude": "153.435",
          "latitude": "-28.0441"
        },
        "category": {
          "parentCategory": "Fitness & Wellbeing",
          "category": "Gyms & Fitness"
        },
        "type": {
          "isAtm": false,
          "isExpense": true,
          "isBillPayment": false,
          "isOnline": false,
          "isTransfer": false,
          "isInternalTransfer": false,
          "isInternational": false
        },
        "website": "www.jetts.com.au/",
        "logoUrl": "https://content.finchxp.com/2rp369HVFe4ZUWaqsAVcs9/logos/mJPNBVom7BUpMFkoydjXUD.png"
      }
    }
  ]
}

Common

List Providers

GET /api/finchxp/providers
200 OK

Complete list of financial institutions and banks that you can upload your data from (either direct or via data aggregators) and we can support with data intelligence services. The providerId is a required paramater when sending an API request. If the provider is currently not on the list, please enter the original data aggregator providerID as a placeholder and notify us via FinchXP Help Desk

Response Content-Types: application/json
Response Example (200 OK)
{
  "providers": [
    {
      "providerId": "CTBA",
      "providerName": "Commonwealth Bank of Australia"
    }
  ]
}

List Categories

GET /api/finchxp/categories

Complete list of our parent categories and 240+ categories including 32 income categories we support in production.

200 OK

Complete list of FinchXP categories.

Response Content-Types: application/json
Response Example (200 OK)
{
  "Categories": [
    {
      "parentCategory": "Fitness & Wellbeing",
      "category": "Gyms & Fitness"
    }
  ]
}

Delete User

DELETE /api/user/delete/{externalUserId}

Delete inactive users and their data on FinchXP. When a user is deleted, the user will be considered inactive in the following month and will not incur a charge.

externalUserId: string
in path

The externalUserId used to send for real-time service or standard service.

200 OK

Status pending means that we are deleting {externalUserId}. Status deleted means that the externalUserId no longer exists.

Response Content-Types: application/json
Response Example (200 OK)
{
  "externalUserId": "U0001",
  "status": "deleted"
}

Get Service Health

GET /api/health

ServiceHealthModel

Response Content-Types: application/json
Response Example (200 OK)
{
  "services": {
    "database": "boolean"
  },
  "isOK": "boolean",
  "serverTimestamp": "number"
}

Schema Definitions

AuthTokenAuthRequest: object

clientId: string
clientSecret: string
Example
{
  "clientId": "string",
  "clientSecret": "string"
}

JwtTokenResponse: object

accessToken: string
Example
{
  "accessToken": "string"
}

AccountEntity: object

externalAccountId: string

The account number of your customer. This can be defined by you or you can pass through the account number provided by the bank or financial institution.

accountType: string

The type of financial account as defined by the bank or financial institution, e.g. checking, savings, loan etc.

providerId: string

The bank or financial institution where this data is from i.e. where your customer holds an account. See GET /api/providers for a list of providers and their providerIDs.

providerName: string

The full name of the bank or financial institution of the end-user as provided by Data aggregator. See the guide below or use GET /api/providers endpoint.

accountStatus: string

Indicates the account status.

currentBalance: number

Amount of funds in the account right now - excluding any pending transactions.

availableBalance: number

Amount of funds that is available to an account holder for withdrawal or other use.

Example
{
  "externalAccountId": "7fb50159-fba2-4166-97ec-5c1063624ea6",
  "accountType": "bank",
  "providerId": "CTBA",
  "providerName": "Commonwealth Bank of Australia",
  "accountStatus": "AVAILABLE",
  "currentBalance": 754.87,
  "availableBalance": 754.87
}

ProcessTransactionEntity: object

externalAccountId: string

The account number of your customer. This can be defined by you or you can pass through the account number provided by the bank or financial institution.

externalTransactionId: string

The unique transaction number of your customer. This can be defined by you or you can pass through the transaction number provided by the bank or financial institution.

externalUserId: string

The unique ID used to identify your customer and their data on FinchXP. This must be defined by you.

description: string

The original description of the transaction as provided by the bank or financial institution i.e. as it appears in the original bank statement or raw transaction description.

postDate: string (date-time)

The posted date of the transaction as provided by the bank or financial institution. Dates and times must always be given in ISO 8601 format.

date: string (date-time)

The original date of the transaction as provided by the bank or financial institution. Dates and times must always be given in ISO 8601 format.

amount: number

The original amount of the transaction as provided by the bank or financial institution.

currency: string

The currency of the transaction as provided by the bank or financial institution, default AUD

status: string POSTED, PENDING

The status of the transaction can be POSTED or PENDING

externalCategoryCode: string

Category code provided by your Data Aggregator

externalCategory: string

Category provided by your Data Aggregator

source: string

Category source

metadata: object

Metadata that can be included for each transaction. It must be a valid json and supports up to 3 fields.

type: string CREDIT, DEBIT

The type of transaction in or out of an account i.e. CREDIT is money in to an account (income) whereas DEBIT is money out of an account (expense).

Example
{
  "externalAccountId": "7fb50159-fba2-4166-97ec-5c1063624ea6",
  "externalTransactionId": "9ab5ae5e-c1b3-4823-879c-1e28169676a7",
  "externalUserId": "U0001",
  "description": "YP FITNESS PTY LTD MERMAID BEACH QL AUS Card xx1618 Value Date: 20/01/2021",
  "postDate": "2021-01-01",
  "date": "2021-01-01",
  "amount": "-20.00",
  "currency": "AUD",
  "status": "POSTED",
  "externalCategoryCode": 100,
  "externalCategory": "Other",
  "source": "Yodlee",
  "metadata": "Please confirm with Finch",
  "type": "DEBIT"
}

ProcessTransactionsContainer: object

accounts: AccountEntity

List of accounts

AccountEntity
transactions: ProcessTransactionEntity

List of transactions to process

ProcessTransactionEntity
productType: string LENDING, PERSONAL_FINANCE, LOYALTY
Example
{
  "accounts": [
    {
      "externalAccountId": "7fb50159-fba2-4166-97ec-5c1063624ea6",
      "accountType": "bank",
      "providerId": "CTBA",
      "providerName": "Commonwealth Bank of Australia",
      "accountStatus": "AVAILABLE",
      "currentBalance": 754.87,
      "availableBalance": 754.87
    }
  ],
  "transactions": [
    {
      "externalAccountId": "7fb50159-fba2-4166-97ec-5c1063624ea6",
      "externalTransactionId": "9ab5ae5e-c1b3-4823-879c-1e28169676a7",
      "externalUserId": "U0001",
      "description": "YP FITNESS PTY LTD MERMAID BEACH QL AUS Card xx1618 Value Date: 20/01/2021",
      "postDate": "2021-01-01",
      "date": "2021-01-01",
      "amount": "-20.00",
      "currency": "AUD",
      "status": "POSTED",
      "externalCategoryCode": 100,
      "externalCategory": "Other",
      "source": "Yodlee",
      "metadata": "Please confirm with Finch",
      "type": "DEBIT"
    }
  ],
  "productType": "LOYALTY"
}

MerchantLocation: object

address: string
suburb: string
state: string
postcode: string
longitude: string
latitude: string
Example
{
  "address": "2532 Gold Coast Highway",
  "suburb": "Mermaid Beach",
  "state": "QLD",
  "postcode": "4218",
  "longitude": "153.435",
  "latitude": "-28.0441"
}

EnrichedInfo: object

name: string
location: MerchantLocation
category: Category
type: ParsedTransactionType
website: string
logoUrl: string
Example
{
  "name": "Jetts fitness",
  "location": {
    "address": "2532 Gold Coast Highway",
    "suburb": "Mermaid Beach",
    "state": "QLD",
    "postcode": "4218",
    "longitude": "153.435",
    "latitude": "-28.0441"
  },
  "category": {
    "parentCategory": "Fitness & Wellbeing",
    "category": "Gyms & Fitness"
  },
  "type": {
    "isAtm": false,
    "isExpense": true,
    "isBillPayment": false,
    "isOnline": false,
    "isTransfer": false,
    "isInternalTransfer": false,
    "isInternational": false
  },
  "website": "www.jetts.com.au/",
  "logoUrl": "https://content.finchxp.com/2rp369HVFe4ZUWaqsAVcs9/logos/mJPNBVom7BUpMFkoydjXUD.png"
}

ProcessedUserTransactionsEntity: object

externalAccountId: string
externalTransactionId: string
description: string
postDate: date
date: date
amount: number
currency: string
status: string
type: string
enrichedInfo: EnrichedInfo
Example
{
  "externalAccountId": "7fb50159-fba2-4166-97ec-5c1063624ea6",
  "externalTransactionId": "9ab5ae5e-c1b3-4823-879c-1e28169676a7",
  "description": "YP FITNESS PTY LTD MERMAID BEACH QL AUS Card xx1618 Value Date: 20/01/2021",
  "postDate": "2021-01-01",
  "date": "2021-01-01",
  "amount": -20,
  "currency": "AUD",
  "status": "POSTED",
  "type": "DEBIT",
  "enrichedInfo": {
    "name": "Jetts fitness",
    "location": {
      "address": "2532 Gold Coast Highway",
      "suburb": "Mermaid Beach",
      "state": "QLD",
      "postcode": "4218",
      "longitude": "153.435",
      "latitude": "-28.0441"
    },
    "category": {
      "parentCategory": "Fitness & Wellbeing",
      "category": "Gyms & Fitness"
    },
    "type": {
      "isAtm": false,
      "isExpense": true,
      "isBillPayment": false,
      "isOnline": false,
      "isTransfer": false,
      "isInternalTransfer": false,
      "isInternational": false
    },
    "website": "www.jetts.com.au/",
    "logoUrl": "https://content.finchxp.com/2rp369HVFe4ZUWaqsAVcs9/logos/mJPNBVom7BUpMFkoydjXUD.png"
  }
}

ProcessedTransactionsResponse: object

externalUserId: string
accounts: AccountEntity
AccountEntity
transactions: ProcessedUserTransactionsEntity

List of processed transactions

ProcessedUserTransactionsEntity
Example
{
  "externalUserId": "{externalUserId}",
  "accounts": [
    {
      "externalAccountId": "7fb50159-fba2-4166-97ec-5c1063624ea6",
      "accountType": "bank",
      "providerId": "CTBA",
      "providerName": "Commonwealth Bank of Australia",
      "accountStatus": "AVAILABLE",
      "currentBalance": 754.87,
      "availableBalance": 754.87
    }
  ],
  "transactions": [
    {
      "externalAccountId": "7fb50159-fba2-4166-97ec-5c1063624ea6",
      "externalTransactionId": "9ab5ae5e-c1b3-4823-879c-1e28169676a7",
      "description": "YP FITNESS PTY LTD MERMAID BEACH QL AUS Card xx1618 Value Date: 20/01/2021",
      "postDate": "2021-01-01",
      "date": "2021-01-01",
      "amount": -20,
      "currency": "AUD",
      "status": "POSTED",
      "type": "DEBIT",
      "enrichedInfo": {
        "name": "Jetts fitness",
        "location": {
          "address": "2532 Gold Coast Highway",
          "suburb": "Mermaid Beach",
          "state": "QLD",
          "postcode": "4218",
          "longitude": "153.435",
          "latitude": "-28.0441"
        },
        "category": {
          "parentCategory": "Fitness & Wellbeing",
          "category": "Gyms & Fitness"
        },
        "type": {
          "isAtm": false,
          "isExpense": true,
          "isBillPayment": false,
          "isOnline": false,
          "isTransfer": false,
          "isInternalTransfer": false,
          "isInternational": false
        },
        "website": "www.jetts.com.au/",
        "logoUrl": "https://content.finchxp.com/2rp369HVFe4ZUWaqsAVcs9/logos/mJPNBVom7BUpMFkoydjXUD.png"
      }
    }
  ]
}

MerchantDetails: object

name: string
location: MerchantLocation
Example
{
  "name": "Charli's Cafe",
  "location": {
    "address": "2532 Gold Coast Highway",
    "suburb": "Mermaid Beach",
    "state": "QLD",
    "postcode": "4218",
    "longitude": "153.435",
    "latitude": "-28.0441"
  }
}

ParsedTransactionType: object

isAtm: boolean
isExpense: boolean
isBillPayment: boolean
isOnline: boolean
isTransfer: boolean
isInternalTransfer: boolean
isInternational: boolean
Example
{
  "isAtm": false,
  "isExpense": true,
  "isBillPayment": false,
  "isOnline": false,
  "isTransfer": false,
  "isInternalTransfer": false,
  "isInternational": false
}

ParsedTransaction: object

externalTransactionId: string
externalUserId: string
description: string
type: string
amount: number
currency: string
enrichedInfo: MerchantDetails
category: string
parentCategory: string
types: ParsedTransactionType
valueDate: string (date-time)
Example
{
  "externalTransactionId": "82394238",
  "externalUserId": "U0001",
  "description": "FRESH AND FAIR PTY L NEWPORT NS AUS Tap and Pay xx1234 Value Date_ 01/05/2020",
  "type": "DEBIT",
  "amount": "150.00",
  "currency": "AUD",
  "enrichedInfo": {
    "name": "Charli's Cafe",
    "location": {
      "address": "2532 Gold Coast Highway",
      "suburb": "Mermaid Beach",
      "state": "QLD",
      "postcode": "4218",
      "longitude": "153.435",
      "latitude": "-28.0441"
    }
  },
  "category": "Cafe & Coffee Shops",
  "parentCategory": "Food & Drink",
  "types": {
    "isAtm": false,
    "isExpense": true,
    "isBillPayment": false,
    "isOnline": false,
    "isTransfer": false,
    "isInternalTransfer": false,
    "isInternational": false
  },
  "valueDate": "2020-05-01"
}

MultipleTransactionParseResponse: object

Example
{
  "transactions": [
    {
      "externalTransactionId": "82394238",
      "externalUserId": "U0001",
      "description": "FRESH AND FAIR PTY L NEWPORT NS AUS Tap and Pay xx1234 Value Date_ 01/05/2020",
      "type": "DEBIT",
      "amount": "150.00",
      "currency": "AUD",
      "enrichedInfo": {
        "name": "Charli's Cafe",
        "location": {
          "address": "2532 Gold Coast Highway",
          "suburb": "Mermaid Beach",
          "state": "QLD",
          "postcode": "4218",
          "longitude": "153.435",
          "latitude": "-28.0441"
        }
      },
      "category": "Cafe & Coffee Shops",
      "parentCategory": "Food & Drink",
      "types": {
        "isAtm": false,
        "isExpense": true,
        "isBillPayment": false,
        "isOnline": false,
        "isTransfer": false,
        "isInternalTransfer": false,
        "isInternational": false
      },
      "valueDate": "2020-05-01"
    }
  ]
}

JobCreateRequestModel: object

contentType: string text/csv, text/tab-separated-values, application/x-lzop, application/json, application/gzip, application/x-snappy-framed
format: string CSV, TSV, JSON, ORC, PARQUET
processingType: string STANDARD, EXPEDITED
productType: string LENDING, PERSONAL_FINANCE, LOYALTY
expiresIn: number
notifiedWebhook: string
notifiedEmail: string
schema: string
outputFormat: string CSV, JSON
requireMultipart: boolean
Example
{
  "contentType": "text/csv",
  "format": "CSV",
  "processingType": "STANDARD",
  "productType": "PERSONAL_FINANCE",
  "expiresIn": 86400,
  "notifiedWebhook": "https://yourapp.com/hooks/app/?",
  "notifiedEmail": "client@clientemail.com",
  "schema": "finchxp",
  "outputFormat": "CSV",
  "requireMultipart": false
}

JobCreateResponseModel: object

id: string
status: string
signedPutUrl: string
productType: string LENDING, PERSONAL_FINANCE, LOYALTY
signedPutUrlExpiresAt: string (date-time)
created: string (date-time)
modified: string (date-time)
Example
{
  "id": "f5c1b6c9-2c6a-4491-9782-ac99aaa16cfa",
  "status": "awaiting_upload",
  "signedPutUrl": "url",
  "productType": "PERSONAL_FINANCE",
  "signedPutUrlExpiresAt": "2021-07-15T04:54:13.030Z",
  "created": "2021-07-14T04:54:13.030Z",
  "modified": "2021-07-14T04:54:13.030Z"
}

JobCompleteUploadModel: object

id: string
Example
{
  "id": "string"
}

JobCompleteUploadResponseModel: object

id: string
status: string
schema: string
productType: string LENDING, PERSONAL_FINANCE, LOYALTY
outputFormat: string CSV, JSON
created: string (date-time)
noOfInputTransactions: number
noOfProcessedTransactions: number
noOfUniqueUsers: number
Example
{
  "id": "b3242fad-c325-4f2d-9416-ec36ed3680f6",
  "status": "imported",
  "schema": "finchxp",
  "productType": "PERSONAL_FINANCE",
  "outputFormat": "CSV",
  "created": "2021-07-14T07:26:02.373Z",
  "noOfInputTransactions": null,
  "noOfProcessedTransactions": null,
  "noOfUniqueUsers": null
}

JobStatusResponseModel: object

id: string
status: string
schema: string
productType: string LENDING, PERSONAL_FINANCE, LOYALTY
outputFormat: string CSV, JSON
created: string (date-time)
noOfInputTransactions: number
noOfProcessedTransactions: number
noOfUniqueUsers: number
signedGetUrl: string
Example
{
  "id": "52892a7f-9e75-4a7c-b60c-779f95edecb9",
  "status": "successful",
  "schema": "finchxp",
  "productType": "PERSONAL_FINANCE",
  "outputFormat": "CSV",
  "created": "2021-06-21T07:50:06.598Z",
  "noOfInputTransactions": 10,
  "noOfProcessedTransactions": 10,
  "noOfUniqueUsers": 1,
  "signedGetUrl": "url"
}

ServicesStatus: object

database: boolean
Example
{
  "database": "boolean"
}

Category: object

parentCategory: string
category: string
Example
{
  "parentCategory": "Fitness & Wellbeing",
  "category": "Gyms & Fitness"
}

Provider: object

providerId: string
providerName: string
Example
{
  "providerId": "CTBA",
  "providerName": "Commonwealth Bank of Australia"
}

Providers: object

providers: Provider
Provider
Example
{
  "providers": [
    {
      "providerId": "CTBA",
      "providerName": "Commonwealth Bank of Australia"
    }
  ]
}

Categories: object

Categories: Category
Category
Example
{
  "Categories": [
    {
      "parentCategory": "Fitness & Wellbeing",
      "category": "Gyms & Fitness"
    }
  ]
}

Delete: object

externalUserId: string

The externalUserId used to send for real-time service or standard service

status: string pending, deleted

Status 'pending' means that we are deleting {externalUserId}, status 'deleted' means that the 'externalUserId' no longer exists

Example
{
  "externalUserId": "U0001",
  "status": "deleted"
}

ServiceHealthModel: object

services: ServicesStatus
isOK: boolean
serverTimestamp: number
Example
{
  "services": {
    "database": "boolean"
  },
  "isOK": "boolean",
  "serverTimestamp": "number"
}