Introduction
The FinWise API is organized around REST. Our API has predictable resource-oriented URLs, accepts JSON request bodies, returns JSON-encoded responses, and uses standard HTTP response codes, authentication, and verbs.
The FinWise API supports bulk operations, such as bulk updates and deletions allowing you to efficiently process and manage large amounts of data in a single request.
Authentication
The FinWise API uses API keys to authenticate requests. You can view and manage your API keys in the FinWise Dashboard from Settings > API Keys.
To authenticate an API request, specify your API key in the Authorization
header.
Your API keys carry many privileges, so be sure to keep them secure. Do not share your API keys in publicly accessible areas such as GitHub, client-side code, and so on.
You can revoke or roll your API keys from the FinWise Dashboard from Settings > API Keys.
All API requests must be made over HTTPS. Calls made over plain HTTP will fail. API requests without authentication will also fail.
Errors
FinWise uses conventional HTTP response codes to indicate the success or failure of an API request.
Codes in the 2xx range indicate success. Codes in the 4xx range indicate an error that failed given the information provided (e.g., a required parameter was omitted, etc.). Codes in the 5xx range indicate an error with FinWise`s servers (these are rare).
Response Body Attributes
nameenumThe type of error returned. One of BadRequestError , UnauthenticatedError , ForbiddenError , NotFoundError , ConflictError | ||||
messagestringA human-readable message providing more details about the error. | ||||
errorsarray of objectsAn array of objects containing individual field-level error details.
|
200 | OK | Everything worked as expected. |
400 | Bad Request | The request was unacceptable, often due to missing a required parameter. |
401 | Unauthorized | No valid API key provided. |
402 | Request Failed | The parameters were valid but the request failed. |
403 | Forbidden | The API key doesn’t have permissions to perform the request. |
404 | Not Found | The requested resource doesn’t exist. |
409 | Conflict | The request conflicts with another request. |
429 | Too Many Requests | Too many requests hit the API too quickly. We recommend an exponential backoff of your requests. |
5xx | Server Errors | Something went wrong on FinWise’s end. (These are rare.) |
Pagination
All FinWise API resources have support for bulk fetches using 'list' endpoints using HTTP GET
methods, e.g., GET /transactions
will return a list of transactions.
All 'list' endpoints support pagination using the pagination
parameter which is currently based on limit/offset pagination by specifying pageNumber
and pageSize
inside the pagination
parameter.
In the future, FinWise will support cursor based pagination which is more performant and stable to use across pages.
Query String Attributes
paginationobjectAn object containing pagination attributes pageNumber and pageSize .
|
Request IDs
All FinWise API requests have an associated request ID which is a unique identifier for the request being made. You can find the request ID in the response header Request-Id
.
The request ID is useful for debugging purposes and tracks any data retrieved or manipulated by an API request.
Versioning
The FinWise API is not currently versioned because FinWise is under heavy active development.
Our API will change from time to time with potentially breaking changes, so be sure to check for API changes in our API Changelog and ensure that any code using our API has validation and appropriate error handling.
In the near future, the FinWise API will be versioned so that breaking changes will not affect previous versions of the API and instead will form part of a new version of the API.
Accounts
This object represents a financial account.
POST | /accounts | Create a new account |
PATCH | /accounts/:id | Update an account |
GET | /accounts | Get a list of accounts |
GET | /accounts/:id | Get an account |
The account object
Attributes
idstringUnique identifier for the account. | ||||
createdAtstringDate the account was created. | ||||
updatedAtstringDate the account was last updated. | ||||
userIdstringUnique identifier of the user who owns the account. | ||||
namestringName of the account. | ||||
logoBase64nullable stringBase64 encoded logo image of the account. | ||||
emojinullable stringEmoji of the account. | ||||
accountNumbernullable stringAccount number from the financial institution of the account. | ||||
currentBalanceobjectCurrent balance of the account.
| ||||
availableBalancenullable objectAvailable balance of the account.
| ||||
typeenumType of account, one of the following values: depository , credit , loan , investment , other . | ||||
subTypeenumSub type of account. | ||||
originalLoanAmountnullable objectOriginal loan amount, only applies for loan type accounts.
| ||||
originationDatenullable stringLast payment date for the account. | ||||
interestRatenullable numberInterest rate percentage. | ||||
interestRateTypenullable stringThe type of the interest rate. | ||||
lastPaymentDatenullable stringLast payment date for the account. | ||||
lastPaymentAmountnullable objectLast payment amount for the account.
| ||||
amountDuenullable objectAmount due for the account.
| ||||
minimumAmountDuenullable objectMinimum amount due for the account.
| ||||
archivedAtnullable stringDate at which the account was archived. | ||||
isLinkednullable booleanWhether or not the account is linked to a provider like Plaid, Yodlee or MX. | ||||
institutionIdnullable stringThe unique identifier of the financial institution that the account is linked to. | ||||
institutionUserIdnullable stringThe unique identifier of the data connection to the financial institution that the account is linked to. | ||||
datanullable objectAdditional data and configuration for the account.
|
Create an account
Request Body Attributes
idstringUnique identifier for the account. | ||||
userIdstringUnique identifier of the user who owns the account. | ||||
namestringName of the account. | ||||
logoBase64nullable stringBase64 encoded logo image of the account. | ||||
emojinullable stringEmoji of the account. | ||||
accountNumbernullable stringAccount number from the financial institution of the account. | ||||
currentBalanceobjectCurrent balance of the account.
| ||||
availableBalancenullable objectAvailable balance of the account.
| ||||
typeenumType of account, one of the following values: depository , credit , loan , investment , other . | ||||
subTypeenumSub type of account. | ||||
originalLoanAmountnullable objectOriginal loan amount, only applies for loan type accounts.
| ||||
originationDatenullable stringLast payment date for the account. | ||||
interestRatenullable numberInterest rate percentage. | ||||
interestRateTypenullable stringThe type of the interest rate. | ||||
lastPaymentDatenullable stringLast payment date for the account. | ||||
lastPaymentAmountnullable objectLast payment amount for the account.
| ||||
amountDuenullable objectAmount due for the account.
| ||||
minimumAmountDuenullable objectMinimum amount due for the account.
| ||||
archivedAtnullable stringDate at which the account was archived. | ||||
datanullable objectAdditional data and configuration for the account.
|
Update an account
Request Body Attributes
namestringName of the account. | ||||
logoBase64nullable stringBase64 encoded logo image of the account. | ||||
emojinullable stringEmoji of the account. | ||||
accountNumbernullable stringAccount number from the financial institution of the account. | ||||
currentBalanceobjectCurrent balance of the account.
| ||||
availableBalancenullable objectAvailable balance of the account.
| ||||
typeenumType of account, one of the following values: depository , credit , loan , investment , other . | ||||
subTypeenumSub type of account. | ||||
originalLoanAmountnullable objectOriginal loan amount, only applies for loan type accounts.
| ||||
originationDatenullable stringLast payment date for the account. | ||||
interestRatenullable numberInterest rate percentage. | ||||
interestRateTypenullable stringThe type of the interest rate. | ||||
lastPaymentDatenullable stringLast payment date for the account. | ||||
lastPaymentAmountnullable objectLast payment amount for the account.
| ||||
amountDuenullable objectAmount due for the account.
| ||||
minimumAmountDuenullable objectMinimum amount due for the account.
| ||||
archivedAtnullable stringDate at which the account was archived. | ||||
datanullable objectAdditional data and configuration for the account.
|
Get accounts
Query String Attributes
filtersnullable objectApply filters to the list of accounts.
| ||||
paginationnullable objectPagination options.
|
Get an account
Archive an account
Account Balances
This object represents an account balance, which is a snapshot of the balance of an account on a particular date.
POST | /account-balances | Create an account balance |
GET | /account-balances | Get a list of account balances |
GET | /account-balances/aggregated2 | Get aggregate account balances |
POST | /account-balances/:id/archive | Archive an account balance |
The account balance object
Attributes
idstringUnique identifier for the account balance. | ||
createdAtstringDate the account balance was created. | ||
updatedAtstringDate the account balance was last updated. | ||
accountIdstringUnique identifier of the account of the balance. | ||
userIdstringUnique identifier of the user who owns the account balance. | ||
datestringDate of the account balance. | ||
amountnullable objectAmount of the balance.
| ||
typeenumType of the balance, one of manual or synced . | ||
dataImportIdnullable stringUnique identifier of the data import that created the account balance. | ||
archivedAtnullable stringDate the account balance was archived at. |
Create an account balance
Request Body Attributes
accountIdstringUnique identifier of the account of the balance. | ||
datestringDate of the account balance. | ||
amountobjectAmount of the balance.
|
Get account balances
Query String Attributes
filtersnullable objectApply filters to the list of account balances.
| |||||||||
paginationnullable objectPagination options.
|
Get aggregated account balances
Query String Attributes
aggregateByarray of enumsFields to aggregate account balances by, must be an array of one of day , week , Month , Year | |||||||||
aggregateFnenumFunction to use on aggregation, only latest supported for now. | |||||||||
currencyCodenullable enumCurrency code to convert balances to. | |||||||||
filtersnullable objectApply filters to the list of account balances.
| |||||||||
paginationnullable objectPagination options.
|
Archive an account balance
Transactions
This object represents a transaction.
POST | /transactions | Create a transaction |
GET | /transactions | Get a list of transactions |
GET | /transactions/aggregated3 | Get aggregated transactions |
POST | /transactions/:id/archive | Archive a transaction |
The transaction object
Attributes
idstringUnique identifier for the transaction. | ||
createdAtstringDate the transaction was created. | ||
updatedAtstringDate the transaction was last updated. | ||
userIdstringUnique identifier of the user who owns the transaction. | ||
datestringDate of the transaction. | ||
amountnullable objectAmount of the transaction.
| ||
transactionCategoryIdnullable stringUnique identifier of the transaction category the transaction belongs to. | ||
merchantIdnullable stringUnique identifier of the merchant/payee the transaction belongs to. | ||
isTransfernullable booleanWhether or not the transaction is a transfer. | ||
isPendingnullable booleanWhether or not the transaction is pending or posted. | ||
needsReviewnullable booleanWhether or not the transaction needs to be reviewed. | ||
notesnullable booleanNotes about the transaction. |
Create a transaction
Request Body Attributes
accountIdstringUnique identifier of the account of the transaction. | ||
datestringDate of the transaction. | ||
effectiveDatenullable stringEffective date of the transaction. | ||
amountobjectAmount of the transaction.
| ||
transactionCategoryIdnullable stringUnique identifier of the transaction category of the transaction. | ||
merchantIdnullable stringUnique identifier of the merchant of the transaction. | ||
isTransfernullable booleanWhether or not the transaction is a transfer. | ||
notesnullable stringNotes for the transaction. |
Get transactions
Query String Attributes
filtersnullable objectApply filters to the list of transactions.
| ||||||||||||||||
paginationnullable objectPagination options.
|
Get aggregated transactions
Query String Attributes
aggregateByarray of enumsFields to aggregate account balances by, must be an array of one of day , week , Month , Year | ||||||||||||||||
aggregateFnenumFunction to use on aggregation, only sum supported for now. | ||||||||||||||||
currencyCodenullable enumCurrency code to convert transaction amounts to. | ||||||||||||||||
filtersnullable objectApply filters to the list of account balances.
| ||||||||||||||||
paginationnullable objectPagination options.
|
Archive a transaction
Transaction Categories
This object represents a transaction category.
POST | /transaction-categories | Create a transaction category |
GET | /transaction-categories | Get a list of transaction categories |
DELETE | /transaction-categories/:id | Delete a transaction category |
The transaction category object
Attributes
idstringUnique identifier for the transaction category. |
createdAtstringDate the transaction category was created. |
updatedAtstringDate the transaction category was last updated. |
namestringName of the category |
colorstringColor for the category, in hex format. |
emojistringEmoji for the category, in hex format. |
userIdstringUnique identifier of the user who owns the account. |
transactionCategoryGroupIdstringUnique identifier of the transaction category group that this category belongs to. |
markTransactionsAsTransfersbooleanWhether transactions in this category should be marked as transfers. |
excludeTransactionsFromBudgetbooleanWhether transactions in this category should be excluded from the budget and income and expenses. |
consolidateInBudgetbooleanWhether this category should have debits and credits consolidated in the budget. |
enableRolloverbooleanWhether budget rollover for this category is enabled or not. |
rolloverFromDatestringDate to count budget rollover from. |
Create a transaction category
Request Body Attributes
idstringUnique identifier for the transaction category. |
createdAtstringDate the transaction category was created. |
updatedAtstringDate the transaction category was last updated. |
namestringName of the category |
colorstringColor for the category, in hex format. |
emojistringEmoji for the category, in hex format. |
userIdstringUnique identifier of the user who owns the account. |
transactionCategoryGroupIdstringUnique identifier of the transaction category group that this category belongs to. |
markTransactionsAsTransfersbooleanWhether transactions in this category should be marked as transfers. |
excludeTransactionsFromBudgetbooleanWhether transactions in this category should be excluded from the budget and income and expenses. |
consolidateInBudgetbooleanWhether this category should have debits and credits consolidated in the budget. |
enableRolloverbooleanWhether budget rollover for this category is enabled or not. |
rolloverFromDatestringDate to count budget rollover from. |
Get transaction categories
Query String Attributes
filtersnullable objectApply filters to the list of transaction categories.
| ||||
paginationnullable objectPagination options.
|
Delete a transaction category
Request Body Attributes
reassignToTransactionCategoryIdstringReassign transactions to this category ID. |