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.
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.
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:
- Create an Account
- Choose a Product Plan
- Get API Access
- Select an API Testing Environment
- 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:
- Create an API client: in the API Credentials page within the developer console to generate a unique
clientId
andclientSecret
- Generate an Access Token: use your
X-API-Key
,clientId
, andclientSecret
to request an Access Token from the/auth/token
endpoint. Retrieve theaccessToken
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:
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:
- Download Postman.
- Import the FinchXP Postman collection, by clicking on the orange button above.
- 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 |
- 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
- Once you’ve successfully retrieved data from your Basiq, retrieve and combine the response bodies of GET/list-all-accounts and GET/list-all-transactions endpoints.
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
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
-
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.
-
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.
- Income identification: If a transaction appears in your Income Assessment response, it has been identified as an income stream.
- 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
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"
}
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
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
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
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.
The unique Job ID returned in the response body when you created the job.
Whether a signed URL for upload/download the job should be included (depending on the job status)
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
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.
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
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
Complete list of our parent categories and 240+ categories including 32 income categories we support in production.
Complete list of FinchXP categories.
Response Content-Types: application/json
Response Example (200 OK)
{
"Categories": [
{
"parentCategory": "Fitness & Wellbeing",
"category": "Gyms & Fitness"
}
]
}
Delete User
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.
The externalUserId
used to send for real-time service or standard service.
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
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"
}
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
- transactions: ParsedTransaction
-
ParsedTransaction
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"
}
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"
}
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"
}
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"
}