List all available API to get and create Score and Analysis for businesses.

Server
https://api.algoan.com
Server Variables

Each requests must be set with an Authorization header using a Bearer JSON Web Token after authenticating with your client credentials.

Authentication

Algoan provides JSON Web Tokens based on the OAuth2 protocol to authenticate your organization. When you create a new project, you will need to use the service account shared by Algoan containing a client_id and a client_secret.

NOTE: this is the only API where request's parameters are formatted as snake case.

Create a new access token

Generates a new access token to use Algoan's APIs

Auth
Request Body

OAuth2 request body with two grant types - client_credentials and refresh_token

objectobject

Auth request body to generate a new access token

client_idstring

Your client ID

client_secretuuid

Your client secret

grant_typestring

Specify the type of grant access

Enum: client_credentials

POST /v1/oauth/token
Copy
Responses
201

Access Token instance

objectobject
access_tokenstring

The access token required for each API.

expires_innumber

Number of seconds until the access token expires

refresh_expires_innumber

Number of seconds until the refresh token expires

refresh_tokenstring

Refresh token used to generate a new access token

token_typestring

Type of access token (will always be set to bearer)

Response
Copy

Business

represents a business able to connect/aggregate their bank accounts. It is unique per organization, project and custom identifier.

Get a list of all the buisnesses

Get a list of buisnesses

Auth
Query String
limitstring

Limit the number of returned buisnesses

pagestring

Indicates the query offset

filterstring

Filter buisnesses

GET /v2/businesses
Copy
Responses
200

Buisnesse response

400

Bad request

401

Unauthorized, please make sure you are properly authenticated

403

Forbidden, please make sure you are allowed to use this route

Response
Copy

Create a business

Creates a new business instance

Auth
Request Body

New business to create

objectobject

Information about a business and its journey through Algoan.

customIdentifierstring

A custom identifier that will be attached to your business. This can be used to identify a business based on your internal reference.

aggregationDetailsobject

Information about the AIS provider used for this report

callbackUrlstring

Callback URL set for a business. Used to redirect the business back to your user journey if you are using the aggregation in REDIRECT mode.

tokenstring

Temporary access token set for Algoan's UI to communicate with the aggregator's API

redirectUrlstring

Redirect URL used for the end-user. Specific to REDIRECT mode

apiUrlstring

URL used to call API using API mode

iframeUrlstring

Iframe URL used for the end-user. Specific to IFRAME mode

userIdstring

Aggregator user identifier

If the value is reset, it means the user access has been revoked.

clientIdstring

Aggregator client ID used to authenticate a user with your organization

businessDetailsobject

Information about the business

POST /v2/businesses
Copy
Responses
201

New buisness created

400

Bad request

401

Unauthorized, please make sure you are properly authenticated

403

Forbidden, please make sure you are allowed to use this route

422

Unprocessable Entity

Response
Copy

Get a single Business

Returns a business based on a single ID

Auth
Path Params
idstring

ID of the business to fetch

GET /v2/businesses/{id}
Copy
Responses
200

Business response

400

Bad request

401

Unauthorized, please make sure you are properly authenticated

403

Forbidden, please make sure you are allowed to use this route

404

Business not found

Response
Copy

Delete a single Business

Deletes all data related to the business (accounts and transactions included)

Auth
Path Params
idstring

ID of the business to fetch

DELETE /v2/businesses/{id}
Copy
Responses
204

Empty response

No response body
400

Bad request

401

Unauthorized, please make sure you are properly authenticated

403

Forbidden, please make sure you are allowed to use this route

404

Business not found

Response
Copy

Update a Business

Update a single business based on a single ID

Auth
Path Params
idstring

ID of the business to fetch

Request Body

Aggregator details set by a connector

objectobject

Aggregator details set by a connector

aggregationDetailsobject

Information about the AIS provider used for this report

callbackUrlstring

Callback URL set for a business. Used to redirect the business back to your user journey if you are using the aggregation in REDIRECT mode.

tokenstring

Temporary access token set for Algoan's UI to communicate with the aggregator's API

redirectUrlstring

Redirect URL used for the end-user. Specific to REDIRECT mode

apiUrlstring

URL used to call API using API mode

iframeUrlstring

Iframe URL used for the end-user. Specific to IFRAME mode

userIdstring

Aggregator user identifier

If the value is reset, it means the user access has been revoked.

clientIdstring

Aggregator client ID used to authenticate a user with your organization

PATCH /v2/businesses/{id}
Copy
Responses
200

Business response

400

Bad request

401

Unauthorized, please make sure you are properly authenticated

403

Forbidden, please make sure you are allowed to use this route

404

Business not found

Response
Copy

Analysis

An analysis is a snapshot of a business's financial situation based on the connected bank accounts. It contains results from both products Score and Credit Insights.

NOTE: To get Credit Insights results or a Score, the analysis need to contain at least one CHECKING Account with a minimum of 1 transactions.

Create a new analysis

Creates a new analysis for a given business. There are several possible scenarios depending on the number of created analyses for a business.

First analysis

If you create for the first time an analysis for the business, there are three possible scenarios:

  • You are able to fetch accounts and transactions from an AISP and send them to Algoan. In this case, the Score and Credit Insights analysis will automatically be launched as soon as the analysis instance is created.
  • If you are using a connector, you should first create an analysis with no accounts and no transactions. An automatic event will then be sent to your hosted connector so it can automatically fetch data from the AISP. The analysis will be computed right after.
  • If you are not using a connector and no accounts and no transactions are provided in the request body, a 403 HTTP error will be returned.

Next analyses

If you are trying to create a new analysis for a business that already has at least one analysis, here is a list of possible scenarios:

  • As soon as you create an analysis with new accounts and transactions, the new analysis result will be based on all accounts and transactions that belong to the business (including those used in previous analyses).
  • If you are using a connector, you should first create an analysis with no accounts and no transactions. An automatic event will then be sent to your hosted connector so it can automatically fetch the latest transactions of the previously connected bank accounts. The analysis will be computed right after. This new analysis result will be based on all accounts and transactions that belong to the business (including those used in previous analyses).
  • If you are not using a connector and create a new analysis with no accounts no transactions in the request body, a 403 HTTP error will be returned.

Upload Budget Insight Open Banking data

If you have integrated Budget Insight on your side, you can create an analysis with Budget Insight raw data. To do this, choose BUDGET_INSIGHT_V2_0 format and upload users' connections.

If you use Budget Insight's webhooks, listen to the CONNECTION_SYNCED event. If you don't, you need to retrieve:

Upload Linxo Connect Open Banking data

If you have integrated Linxo Connect on your side, you can create an analysis with Linxo Connect Direct Account API raw data. To do this, choose LINXO_CONNECT_DIRECT_ACCOUNT_API_V3 format and upload users' accounts.

We also support the Account API mode. Select the LINXO_CONNECT_ACCOUNT_API_V2 format if you have integrated Linxo Connect Account API.

Upload Tink Open Banking data

Choose the TINK_V2 format if you have already integrated Tink on your side.

Upload Mastercard Open Banking Enterprise data

Choose the MASTERCARD_OPEN_BANKING_ENTERPRISE_V2 format if you have already integrated Mastercard Open Banking Enterprise (formerly Aiia) on your side.

Upload Mastercard Open Banking data

Choose the MASTERCARD_OPEN_BANKING format if you have already integrated MASTERCARD_OPEN_BAKING on your side.

Auth
Request Body

New analysis to create

POST /v2/businesses/{id}/analyses
Responses
202

Analysis in progress

400

Bad request

401

Unauthorized, please make sure you are properly authenticated

403

Forbidden, please make sure you are allowed to use this route

404

Business not found

Response
Copy

Get all analyses

Get a list of all the business's Analysis

Auth
GET /v2/businesses/{id}/analyses
Copy
Responses
200

List of analyses

400

Bad request

401

Unauthorized, please make sure you are properly authenticated

403

Forbidden, please make sure you are allowed to use this route

404

Business not found

Response
Copy

Get an analysis

Get a unique analysis

Auth
GET /v2/businesses/{id}/analyses/{analysisId}
Copy
Responses
200

Analysis instance

400

Bad request

401

Unauthorized, please make sure you are properly authenticated

403

Forbidden, please make sure you are allowed to use this route

404

Analysis not found

Response
Copy

Update an analysis

Update an analysis.

  • If the payload contains field error, the analysis' error will be updated, the analysis' status will be set to ERROR and the updating process terminates immediately.
  • If the payload contains field accounts, only when the analysis has currently no account, the payload's accounts will be added to the analysis and then an analysis process will be launched.
  • If the payload contains field trigger, the analysis will be updated with the accounts and transactions but the trigger will be disabled. The analysis will not be computed until the trigger is enabled. You will be able to add accounts and transactions multiple times before triggering the analysis computation with or without different sources. If the sources are different, each call need to specify the format it uses, also the analysis format will be set to HYBRID.

Auth
Request Body

The update payload

PATCH /v2/businesses/{id}/analyses/{analysisId}
Responses
200

Analysis in progress

400

Bad request

401

Unauthorized, please make sure you are properly authenticated

403

Forbidden, please make sure you are allowed to use this route

404

Analysis not found

Response
Copy

Trigger the analysis computation

Trigger the analysis computation.

This endpoint allows you to create an analysis from multiple sources (aggregators, e.g. Powens and Mastercard Open Banking). It will need to be done in 3 steps:

  1. Create an empty analysis: POST /analyses without any accounts
  2. Update the analysis with the accounts and transactions but disable the trigger: PATCH /analyses/{analysisId} for each source { format: MASTERCARD_OPEN_BANKING_ENTERPRISE_V2, trigger: false }
  3. After all the sources have been fetched, trigger the analysis computation: POST /analyses/{analysisId}/trigger

This endpoint also allows you to initiate an analysis at your discretion. You have the flexibility to include the accounts in several PATCH /analyses/:id requests, and then initiate the analysis once all the accounts have been successfully patched.

Alternatively, if you have created an analysis with the parameters disableScores and disableCreditInsights set to true, you can trigger the analysis computation switching the same parameters to false.

Auth
Request Body

The trigger payload

objectobject
disableScoresboolean

Set to true if you only want to launch a Credit Insights analysis

By default, it will be set to the value set in the POST /analyses request

disableCreditInsightsboolean

Set to true if you only want to launch the Score

By default, it will be set to the value set in the POST /analyses request

POST /v2/businesses/{id}/analyses/{analysisId}/trigger
Copy
Responses
200

Analysis in progress

400

Bad request

401

Unauthorized, please make sure you are properly authenticated

403

Forbidden, please make sure you are allowed to use this route

404

Analysis not found

Response
Copy

Get the daily balances of the analysis

Get the sum of daily balances for all aggregated accounts in the analysis.

Auth
GET /v2/businesses/{id}/analyses/{analysisId}/balances
Copy
Responses
200

List of balances

objectobject
resourcesarray[object]
balancenumber

Account balance at a specific date

datedate-time

Date of the account balance (format ISO)

paginationobject

details about the pagination of returned resources

nextstring

Next page

previousstring

Previous page

firststring

First page

laststring

Last page

totalPagesnumber

Total number of pages

totalResourcesnumber

total number of resources

401

Unauthorized, please make sure you are properly authenticated

403

Forbidden, please make sure you are allowed to use this route

404

Business/Analysis not found

Response
Copy

Score

Score attached to the analysis

Get scores

Returns the analysis score

Auth
Path Params
idstring

ID of the business to fetch

analysisIdstring

ID of the analysis to fetch

GET /v2/businesses/{id}/analyses/{analysisId}/scores
Copy
Responses
200

Score response

objectobject

Scores assessing the probability of default Depending on your Score configuration you can have one or many scores computed. Each score will be billed independently.

creditScoreobject

default score with a 12-month horizon

versionstring

Score's version

valuenumber

Between 0 and 1000. 0 is risky, 1000 is safe. This number is a transformation of the probability of default that is usually set between 0 and 1 (where 0 is safe and 1 is risky)

maximum: 1000

minimum: 0

indicatorsobject

Indicators about credit score behavior. These values reflect the behavior of the score in a way that is comprehensible for the human eye. Each of them is like an axis where the value varies from -5 to 5. The combination of these numbers is correlated to the score value. A negative value means the axis impacts the score value in a bad way where a positive value can inflate the score value. This representation is a mirror of Algoan Score. Its objective is to provide keys to an understanding of Score for a specific business.

paymentScoreobject

default score with a 4-month horizon

versionstring

Score's version

valuenumber

Between 1 and 10. 1 is risky, 10 is safe. This number represents the interval of risk. It's based on a transformation of the probability of default

maximum: 10

minimum: 1

202

Score computation is still in progress

401

Unauthorized, please make sure you are properly authenticated

403

Forbidden, please make sure you are allowed to use this route

404

Business/Analysis not found

422

Unprocessable Entity, please make sure the product is not disabled on the project

Response
Copy

Get all accounts

Get a list of businesses's accounts used for the analysis

Auth
GET /v2/businesses/{id}/analyses/{analysisId}/accounts
Copy
Responses
200

List of accounts

401

Unauthorized, please make sure you are properly authenticated

403

Forbidden, please make sure you are allowed to use this route

404

Business/Analysis not found

Get the daily balances

Get the daily balances for one account used for the analysis

Auth
GET /v2/businesses/{id}/analyses/{analysisId}/accounts/{accountId}/balances
Copy
Responses
200

List of balances

objectobject
resourcesarray[object]
balancenumber

Account balance at a specific date

datedate-time

Date of the account balance (format ISO)

paginationobject

details about the pagination of returned resources

nextstring

Next page

previousstring

Previous page

firststring

First page

laststring

Last page

totalPagesnumber

Total number of pages

totalResourcesnumber

total number of resources

401

Unauthorized, please make sure you are properly authenticated

403

Forbidden, please make sure you are allowed to use this route

404

Business/Analysis not found

Response
Copy

Get all transactions

Get all business's transactions used for the analysis

Auth
GET /v2/businesses/{id}/analyses/{analysisId}/transactions
Copy
Responses
200

List of transactions

401

Unauthorized, please make sure you are properly authenticated

403

Forbidden, please make sure you are allowed to use this route

404

Business/Analysis not found

Response
Copy

Get all account's transactions

Get a list of business's transactions for one account used for the analysis

Auth
GET /v2/businesses/{id}/analyses/{analysisId}/accounts/{accountId}/transactions
Copy
Responses
200

List of transactions

401

Unauthorized, please make sure you are properly authenticated

403

Forbidden, please make sure you are allowed to use this route

404

Business/Analysis not found

Response
Copy

Get list of webhook subscriptions

Get the list of event subscriptions.

Auth
Query String
filterstring

Stringified query to filter the subscriptions list

GET /v1/subscriptions
Copy
Responses
200

Successful operation

arrayarray[object]
idstring

Unique subscription identifier

eventNamestring

The name of the event. Details can be found in the Events section

Enum: aggregator_link_required,bank_details_required,bank_details_fetched,analysis_completed,analysis_failed,report_completed,report_failed

secretstring

Secret shared between the Algoan Platform and the webhook owner

targetstring

The url of the webhook that will be called when an event is emitted by the Algoan platform

statusstring

Whether the webhook is active or not. ACTIVE at the creation.

Enum: ACTIVE,INACTIVE,DEACTIVATE

Default: ACTIVE

401

Unauthorized, please make sure you are properly authenticated

403

Forbidden, please make sure you are allowed to use this route

Response
Copy

Create a new webhook subscription

Create a new subscription. Allow you to subscribe your webhook to an event.

Auth
Request Body
objectobject
targetstring

The url of the webhook that will be called when an event is emitted by the Algoan platform

eventNamestring

The name of the event. Details can be found in the Events section

Enum: aggregator_link_required,bank_details_required,bank_details_fetched,analysis_completed,analysis_failed,report_completed,report_failed

secretstring

Secret shared between the Algoan Platform and the webhook owner

POST /v1/subscriptions
Copy
Responses
201

Successful operation

objectobject

Webhook's subscription

idstring

Unique subscription identifier

eventNamestring

The name of the event. Details can be found in the Events section

Enum: aggregator_link_required,bank_details_required,bank_details_fetched,analysis_completed,analysis_failed,report_completed,report_failed

secretstring

Secret shared between the Algoan Platform and the webhook owner

targetstring

The url of the webhook that will be called when an event is emitted by the Algoan platform

statusstring

Whether the webhook is active or not. ACTIVE at the creation.

Enum: ACTIVE,INACTIVE,DEACTIVATE

Default: ACTIVE

400

Bad request

401

Unauthorized, please make sure you are properly authenticated

403

Forbidden, please make sure you are allowed to use this route

Response
Copy

Update a subscription

Update a webhook subscription if your webhook has been disabled.

Auth
Path Params
subscriptionIdstring

The id of the subscription.

Request Body
objectobject
statusstring

Whether the webhook is active or not. ACTIVE at the creation.

Enum: ACTIVE,INACTIVE,DEACTIVATE

Default: ACTIVE

PATCH /v1/subscriptions/{subscriptionId}
Copy
Responses
200

Successful operation

objectobject

Webhook's subscription

idstring

Unique subscription identifier

eventNamestring

The name of the event. Details can be found in the Events section

Enum: aggregator_link_required,bank_details_required,bank_details_fetched,analysis_completed,analysis_failed,report_completed,report_failed

secretstring

Secret shared between the Algoan Platform and the webhook owner

targetstring

The url of the webhook that will be called when an event is emitted by the Algoan platform

statusstring

Whether the webhook is active or not. ACTIVE at the creation.

Enum: ACTIVE,INACTIVE,DEACTIVATE

Default: ACTIVE

400

Bad request

401

Unauthorized, please make sure you are properly authenticated

403

Forbidden, please make sure you are allowed to use this route

404

Subscription not found

Response
Copy

Get a subscription

Get a given subscription

Auth
Path Params
subscriptionIdstring

The id of the subscription.

GET /v1/subscriptions/{subscriptionId}
Copy
Responses
200

Successful operation

objectobject

Webhook's subscription

idstring

Unique subscription identifier

eventNamestring

The name of the event. Details can be found in the Events section

Enum: aggregator_link_required,bank_details_required,bank_details_fetched,analysis_completed,analysis_failed,report_completed,report_failed

secretstring

Secret shared between the Algoan Platform and the webhook owner

targetstring

The url of the webhook that will be called when an event is emitted by the Algoan platform

statusstring

Whether the webhook is active or not. ACTIVE at the creation.

Enum: ACTIVE,INACTIVE,DEACTIVATE

Default: ACTIVE

400

Bad request

401

Unauthorized, please make sure you are properly authenticated

403

Forbidden, please make sure you are allowed to use this route

404

Subscription not found

Response
Copy

Delete the subscription

Delete the subscription

Auth
Path Params
subscriptionIdstring

The id of the subscription.

DELETE /v1/subscriptions/{subscriptionId}
Copy
Responses
200

Successful operation

objectobject

Webhook's subscription

idstring

Unique subscription identifier

eventNamestring

The name of the event. Details can be found in the Events section

Enum: aggregator_link_required,bank_details_required,bank_details_fetched,analysis_completed,analysis_failed,report_completed,report_failed

secretstring

Secret shared between the Algoan Platform and the webhook owner

targetstring

The url of the webhook that will be called when an event is emitted by the Algoan platform

statusstring

Whether the webhook is active or not. ACTIVE at the creation.

Enum: ACTIVE,INACTIVE,DEACTIVATE

Default: ACTIVE

400

Bad request

401

Unauthorized, please make sure you are properly authenticated

403

Forbidden, please make sure you are allowed to use this route

404

Subscription not found

Response
Copy

Get a list of events

Get a list of events that have been sent for a given subscription.

Auth
Path Params
subscriptionIdstring

The id of the created subscription.

Query String
businessIdstring

The id of the business concerned by the event

lowIndexnumber

The index from events are requested

highIndexnumber

The index to which events are requested

GET /v1/subscriptions/{subscriptionId}/events
Copy
Responses
200

Successful

400

Bad request

401

Unauthorized, please make sure you are properly authenticated

403

Forbidden, please make sure you are allowed to use this route

404

Subscription not found

Response
Copy

Update an event

Update the status of an event to notify Algoan if everything went fine or not

Auth
Path Params
subscriptionIdstring

The id of the created subscription.

eventIdstring

The id of the event to update.

Request Body
objectobject
statusstring

Name of the status:

  • IN_PROGRESS: Algoan has just created the event and is about to call the webhook
  • ACK: The connector has acknowledged the request
  • PROCESSED: Notifies Algoan that the process has been fully completed
  • FAILED: Warns Algoan that an error occurred during the process
  • ERROR: The API did not acknowledge the request
  • WARNING: A warning email has been sent to the organization's contact
  • CRITICAL: A critical email has been sent to the organization's contact

Enum: IN_PROGRESS,ACK,PROCESSED,FAILED,ERROR,WARNING,CRITICAL

PATCH /v1/subscriptions/{subscriptionId}/events/{eventId}
Copy
Responses
200

Successful

400

Bad request

401

Unauthorized, please make sure you are properly authenticated

403

Forbidden, please make sure you are allowed to use this route

404

Subscription/Event not found

Response
Copy

Transaction Data

endpoints attached to our Transaction Data Product. Transaction Data is a product that enables your prospects to easily share their Open Banking Data.

Register a business

Register a business for Transaction Data. If no business already exists for the given customIdentifier, a new business is created. Otherwise, the existing business is returned.

Auth
Request Body
objectobject
customIdentifierstring

A custom identifier that will be attached to your business. This can be used to identify a business based on your internal reference.

POST /v2/register
Copy
Responses
201

A business has been registered.

401

Unauthorized, please make sure you are properly authenticated

403

The user is not authorized to register a business. Please make sure you are using the right credentials.

Response
Copy

Create a session

Create a Transaction Data session for the given business.

Auth
Request Body
objectobject
businessIdstring

The unique identifier of the business

POST /v2/sessions
Copy
Responses
201

A business has been registered.

objectobject

Information about a session.

idstring

Algoan unique identifier

businessIdstring

Algoan unique identifier of the business

codestring

Code used to authenticate the session on Transaction Data

statusstring

Status of the session

Enum: IN_PROGRESS,COMPLETED,EXPIRED

createdAtdate-time

Business date of creation

updatedAtdate-time

Latest update of the business

400

The businessId provided doesn't belong to any business.

401

Unauthorized, please make sure you are properly authenticated

403

The user is not authorized to create a session. Please make sure you are using the right credentials.

Response
Copy

Get the session data

Get the given session's data.

Auth
Path Params
sessionIdstring

ID of the session

GET /v2/sessions/{sessionId}/session-data
Copy
Responses
201

A session's data has been retrieved.

objectobject

Data of the session.

statestring

Information about the session of your Transaction Data user.

Enum: IN_PROGRESS,SUCCESS,ERROR,EXIT,EXPIRED

stateErrorsarray[object]
codestring

Generic code about the error

Enum: USER_CANCELLATION,NO_CHECKING_ACCOUNT,CURRENCY_NOT_SUPPORTED,UNKNOWN,CERTICODE_BLOCKED,CERTICODE_NOT_ACTIVE,CUSTOMER_SPACE_BLOCKED,DEVICE_NOT_ENROLLED,SCA_DISABLED,SCA_EXPIRATION

messagestring

Message describing the error

401

Unauthorized, please make sure you are properly authenticated

403

Forbidden, please make sure you are allowed to use this route

404

Session not found

Response
Copy