Moneyhub Accounts API
The accounts API from Moneyhub — 6 operation(s) for accounts.
The accounts API from Moneyhub — 6 operation(s) for accounts.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/moneyhub-accounts-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
openapi: 3.2.0
info:
description: Documentation for the Moneyhub data API. <br/>Authentication is via bearer token. <br/>
title: Moneyhub Data Accounts API
version: 2.0.0
x-build-sha: 5d5191d
servers:
- url: https://api.moneyhub.co.uk/v2.0
security:
- Bearer: []
tags:
- name: accounts
paths:
/accounts:
get:
summary: Retrieve all accounts for a user
description: 'Requires **accounts:read** scope. Optional scope **accounts_details:read** is needed for some extra fields such as account number and sort code. Please note: field **additionalBalances** is currently in **beta**'
parameters:
- description: The total number of records to retrieve
in: query
name: limit
schema:
type: integer
maximum: 1000
minimum: 0
- description: The offset at which to start retrieving records
in: query
name: offset
schema:
type: integer
maximum: 1000000000
minimum: 0
- description: Return transaction data for the account when available
in: query
name: showTransactionData
schema:
type: boolean
default: true
- description: Return performance score for the account when available
in: query
name: showPerformanceScore
schema:
type: boolean
default: true
- description: Filter accounts by their connectionId
in: query
name: connectionId
x-example: 1ffe704d39629a929c8e293880fb449a:c1ef4ce6-c1d6-4900-9288-228fb21f5dc4
schema:
type: string
responses:
'200':
description: Successful Accounts Response
content:
application/json:
schema:
properties:
data:
items:
$ref: '#/components/schemas/Account'
type: array
example:
- id: d372d09b-f50a-4114-9c83-687828fa8ac2
dateAdded: '2020-07-27T14:33:44+00:00'
dateModified: '2020-07-27T14:33:44+00:00'
accountName: Joint Account
accountOpeningDate: '2014-08-10T00:00:00.000Z'
type: cash:current
providerAccountId: '12345678'
providerName: Lloyds
providerId: DEMO
providerReference: demo
connectionId: 1ffe704d39629a929c8e293880fb449a:c1ef4ce6-c1d6-4900-9288-228fb21f5dc4
accountHolderName: Robert Cantu
balance:
date: '2020-07-27'
amount:
value: 802323
currency: GBP
currency: GBP
details:
AER: 0
overdraftLimit: 0
sortCodeAccountNumber: '30949301273345'
transactionData:
count: 218
earliestDate: '2019-08-02'
lastDate: '2020-07-27'
additionalBalances:
- date: '2020-07-27'
amount:
value: 1000
currency: GBP
type: InterimAvailable
- id: 3cc555e4-d954-4eb1-a1df-90df15b132a9
dateAdded: '2020-07-27T14:33:44+00:00'
dateModified: '2020-07-27T14:33:44+00:00'
accountName: Current Account
type: cash:current
providerAccountId: C4735247524
providerName: Lloyds
providerId: DEMO
providerReference: demo
connectionId: 1ffe704d39629a929c8e293880fb449a:c1ef4ce6-c1d6-4900-9288-228fb21f5dc4
accountHolderName: Robert Cantu
balance:
date: '2020-07-11'
amount:
value: 216258
currency: GBP
currency: GBP
details:
AER: 0
overdraftLimit: 0
sortCodeAccountNumber: '30949301273801'
providerAccountIdentifications:
- identification: ACCOUNT12345678
type: AccountNumber
transactionData:
count: 133
earliestDate: '2019-08-03'
lastDate: '2020-07-11'
additionalBalances:
- date: '2020-07-27'
amount:
value: 1000
currency: GBP
type: ClosingBooked
- id: 7abc948a-416d-44ab-8a23-69d3ea13bcf1
dateAdded: '2020-07-27T14:33:44+00:00'
dateModified: '2020-07-27T14:33:44+00:00'
accountName: Credit Card
type: card
providerAccountId: '23534724573'
providerName: Virgin
providerId: DEMO
providerReference: demo
connectionId: DEMO:888
balance:
date: '2020-07-27'
amount:
value: -196700
currency: GBP
currency: GBP
details:
creditLimit: 250000
APR: 0
pan: '5498572687746087'
transactionData:
count: 163
earliestDate: '2019-07-28'
lastDate: '2020-07-27'
additionalBalances: []
- id: 344f69f8-0172-4d68-ac38-ea11be1f7373
dateAdded: '2020-07-27T14:33:44+00:00'
dateModified: '2020-07-27T14:33:44+00:00'
accountName: Starling Current Account
productName: Personal Current Account
accountOpeningDate: '2013-09-13T00:00:00.000Z'
type: cash:current
providerAccountId: S13123513D
providerName: Starling
providerId: DEMO
providerReference: demo
connectionId: DEMO:999
balance:
date: '2020-07-12'
amount:
value: 124885
currency: GBP
currency: GBP
details:
AER: 0
overdraftLimit: 0
sortCodeAccountNumber: '30949301273045'
transactionData:
count: 108
earliestDate: '2019-07-28'
lastDate: '2020-07-12'
additionalBalances: []
- id: 478a84cc-296f-4388-af24-cf15f81a2fd4
dateAdded: '2020-07-27T14:33:44+00:00'
dateModified: '2020-07-27T14:33:44+00:00'
accountName: Natwest savings a/c
accountOpeningDate: '2014-08-10T00:00:00.000Z'
type: savings
providerAccountId: NW2352135
providerName: Natwest
providerId: DEMO
providerReference: demo
connectionId: DEMO:222
balance:
date: '2020-07-05'
amount:
value: 1500000
currency: GBP
currency: GBP
details:
AER: 0
iban: GB24BKEN10000031510604
transactionData:
count: 12
earliestDate: '2019-08-05'
lastDate: '2020-07-05'
additionalBalances: []
- id: 2e30e166-70f8-4b46-b0e3-8afe4acda964
dateAdded: '2020-07-27T14:33:44+00:00'
dateModified: '2020-07-27T14:33:44+00:00'
accountName: 15 Hardys Rd
type: properties:residential
balance:
amount:
value: 27600000
currency: GBP
date: '2016-01-01'
currency: GBP
details: {}
additionalBalances: []
- id: 54841fea-7eb6-4523-9a20-2722d19d7766
dateAdded: '2020-07-27T14:33:44+00:00'
dateModified: '2020-07-27T14:33:44+00:00'
accountName: HL Sipp
type: pension
providerName: Hargreaves Lansdown
balance:
amount:
value: 3525134
currency: GBP
date: '2020-07-01'
currency: GBP
details: {}
providerAccountIdentifications:
- identification: XXXX5168
type: AccountNumber
performanceScore:
months:
- date: 2020-04
openingBalance: 3465134
nonContributionGrowth: 24000
aer: 8.64
- date: 2020-05
openingBalance: 3489134
nonContributionGrowth: 12000
aer: 4.21
- date: 2020-06
openingBalance: 3501134
nonContributionGrowth: 24000
aer: 8.54
totals:
openingBalance:
amount:
value: 3325134
currency: GBP
date: '2019-08-01'
currentBalance:
amount:
value: 3525134
currency: GBP
date: '2020-07-01'
contributions: 0
withdrawals: 0
nonContributionGrowth: 200000
growthRate: 6.01
annualisedGrowthRate: 6.57
additionalBalances: []
- id: fa447159-13d2-4089-bbbc-28be41d5febd
dateAdded: '2020-07-27T14:33:44+00:00'
dateModified: '2020-07-27T14:33:44+00:00'
accountName: Wealthify ISA (Stocks and Shares)
type: investment
providerName: Wealthify
balance:
amount:
value: 253214
currency: GBP
date: '2020-07-16'
currency: GBP
details: {}
providerAccountIdentifications:
- identification: XXXX5168
type: AccountNumber
performanceScore:
months:
- date: 2020-05
openingBalance: 237023
nonContributionGrowth: 5140
aer: 29.36
- date: 2020-06
openingBalance: 242163
nonContributionGrowth: 11051
aer: 70.83
totals:
openingBalance:
amount:
value: 200000
currency: GBP
date: '2020-01-16'
currentBalance:
amount:
value: 253214
currency: GBP
date: '2020-07-16'
contributions: 0
withdrawals: 0
nonContributionGrowth: 53214
growthRate: 26.61
annualisedGrowthRate: 60.5
additionalBalances: []
- id: fe9e0391-960e-4251-b3b6-f7f9d144db36
dateAdded: '2020-07-27T14:33:44+00:00'
dateModified: '2020-07-27T14:33:44+00:00'
accountName: Nationwide Repayment Mortgage
type: mortgage:repayment
providerName: Nationwide
balance:
amount:
value: -16900000
currency: GBP
date: '2020-07-01'
currency: GBP
details:
linkedProperty: 2e30e166-70f8-4b46-b0e3-8afe4acda964
monthlyRepayment: 1000
term: 300
APR: 1.94
interestType: fixed
fixedDate: '2023-07-27'
providerAccountIdentifications:
- identification: XXXX5168
type: AccountNumber
additionalBalances: []
- id: 1e30e166-70f8-4b46-b0e3-8afe4acda478
dateAdded: '2020-07-29T15:33:44+00:00'
dateModified: '2020-07-29T15:33:44+00:00'
accountName: Santander Mortgage
type: mortgage:interestOnly
providerName: Santander
balance:
amount:
value: -1500000
currency: GBP
date: '2020-06-01'
currency: GBP
details:
monthlyRepayment: 1200
term: 270
APR: 3.94
interestType: fixed
fixedDate: '2025-06-25'
providerAccountIdentifications:
- identification: XXXX5168
type: AccountNumber
additionalBalances: []
- id: 5cbf59cf-c112-4864-b4e3-11b3ca794000
accountName: Audi Finance
type: loan
providerName: Audi Financial Services
balance:
amount:
value: -1095000
currency: GBP
date: '2020-07-05'
currency: GBP
details:
monthlyRepayment: 35000
endDate: '2020-07-27'
APR: 4.1
interestFreePeriod: 24
providerAccountIdentifications:
- identification: XXXX5168
type: AccountNumber
additionalBalances: []
- id: 8e5320c9-a285-47f6-bac0-e2f78f5db9cd
dateAdded: '2020-07-27T14:33:44+00:00'
dateModified: '2020-07-27T14:33:44+00:00'
accountName: Work Pension
type: pension
providerName: Aviva
balance:
amount:
value: 20524578
currency: GBP
date: '2020-06-28'
currency: GBP
details: {}
providerAccountIdentifications:
- identification: XXXX5168
type: AccountNumber
performanceScore:
months:
- date: 2020-04
openingBalance: 20180078
nonContributionGrowth: 160000
aer: 9.94
- date: 2020-05
openingBalance: 20340078
nonContributionGrowth: 184500
aer: 11.44
totals:
openingBalance:
amount:
value: 18456778
currency: GBP
date: '2019-07-28'
currentBalance:
amount:
value: 20524578
currency: GBP
date: '2020-06-28'
contributions: 0
withdrawals: 0
nonContributionGrowth: 2067800
growthRate: 11.2
annualisedGrowthRate: 12.23
additionalBalances: []
links:
$ref: '#/components/schemas/Links'
meta:
type: object
type: object
'401':
description: Unsuccessful Response - Not authorised - Missing authorization header - Invalid access Token
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Unsuccessful Response - Forbidden - Invalid scopes
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
tags:
- accounts
post:
summary: Create a single account for a user
description: Requires **accounts:read** and **accounts:write:all** scopes.
responses:
'200':
description: Successful Account Response
content:
application/json:
schema:
properties:
data:
$ref: '#/components/schemas/Account'
links:
$ref: '#/components/schemas/Links'
meta:
type: object
type: object
'400':
description: Unsuccessful Response - Bad request - Missing query parameters - Missing body properties
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Unsuccessful Response - Not authorised - Missing authorization header - Invalid access Token
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Unsuccessful Response - Forbidden - Invalid scopes
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
tags:
- accounts
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/AccountPost'
/accounts-list:
get:
summary: Retrieve all accounts for a user without additional data
description: 'Requires **accounts:read** scope. Optional scope **accounts_details:read** is needed for some extra fields such as account number and sort code. By default this endpoint does not return transaction data (when this isn''t returned response times are quicker than the GET /accounts endpoint). Please note: field **additionalBalances** is currently in **beta**'
parameters:
- description: The total number of records to retrieve
in: query
name: limit
schema:
type: integer
maximum: 1000
minimum: 0
- description: The offset at which to start retrieving records
in: query
name: offset
schema:
type: integer
maximum: 1000000000
minimum: 0
- description: Return transaction data for the account when available
in: query
name: showTransactionData
schema:
type: boolean
default: false
- description: Return performance score for the account when available
in: query
name: showPerformanceScore
schema:
type: boolean
default: false
- description: Filter accounts by their connectionId
in: query
name: connectionId
x-example: 1ffe704d39629a929c8e293880fb449a:c1ef4ce6-c1d6-4900-9288-228fb21f5dc4
schema:
type: string
responses:
'200':
description: Successful Accounts Response
content:
application/json:
schema:
properties:
data:
items:
$ref: '#/components/schemas/Account'
type: array
example:
- id: d372d09b-f50a-4114-9c83-687828fa8ac2
dateAdded: '2020-07-27T14:33:44+00:00'
dateModified: '2020-07-27T14:33:44+00:00'
accountName: Joint Account
type: cash:current
providerName: Lloyds
providerId: DEMO
providerReference: demo
connectionId: 1ffe704d39629a929c8e293880fb449a:c1ef4ce6-c1d6-4900-9288-228fb21f5dc4
accountHolderName: Robert Cantu
balance:
date: '2020-07-27'
amount:
value: 802323
currency: GBP
currency: GBP
details:
AER: 0
overdraftLimit: 0
sortCodeAccountNumber: '30949301273345'
additionalBalances:
- date: '2020-07-27'
amount:
value: 1000
currency: GBP
type: InterimAvailable
- id: 3cc555e4-d954-4eb1-a1df-90df15b132a9
dateAdded: '2020-07-27T14:33:44+00:00'
dateModified: '2020-07-27T14:33:44+00:00'
accountName: Current Account
type: cash:current
providerName: Lloyds
providerId: DEMO
providerReference: demo
connectionId: 1ffe704d39629a929c8e293880fb449a:c1ef4ce6-c1d6-4900-9288-228fb21f5dc4
accountHolderName: Robert Cantu
balance:
date: '2020-07-11'
amount:
value: 216258
currency: GBP
currency: GBP
details:
AER: 0
overdraftLimit: 0
sortCodeAccountNumber: '30949301273801'
additionalBalances:
- date: '2020-07-27'
amount:
value: 1000
currency: GBP
type: InterimAvailable
links:
$ref: '#/components/schemas/Links'
meta:
type: object
type: object
'401':
description: Unsuccessful Response - Not authorised - Missing authorization header - Invalid access Token
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Unsuccessful Response - Forbidden - Invalid scopes
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
tags:
- accounts
/accounts/{accountId}:
get:
summary: Retrieve a single account
description: 'Requires **accounts:read** scope. Optional scope **accounts_details:read** is needed for some extra fields such as account number and sort code. Please note: field **additionalBalances** is currently in **beta**'
parameters:
- description: The Account Id
in: path
name: accountId
required: true
x-example: 0b4e6488-6de0-420c-8f56-fee665707d57
schema:
type: string
format: uuid
responses:
'200':
description: Successful Account Response
content:
application/json:
schema:
properties:
data:
$ref: '#/components/schemas/Account'
links:
$ref: '#/components/schemas/Links'
meta:
type: object
type: object
'401':
description: Unsuccessful Response - Not authorised - Missing authorization header - Invalid access Token
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Unsuccessful Response - Forbidden - Invalid scopes
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: Unsuccessful Response - Resource Not found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
tags:
- accounts
patch:
summary: Update a single account
description: Requires **accounts:read** and **accounts:write:all** scopes.
parameters:
- description: The Account Id
in: path
name: accountId
required: true
x-example: 0b4e6488-6de0-420c-8f56-fee665707d57
schema:
type: string
format: uuid
responses:
'200':
description: Successful Account Response
content:
application/json:
schema:
properties:
data:
$ref: '#/components/schemas/Account'
links:
$ref: '#/components/schemas/Links'
meta:
type: object
type: object
'401':
description: Unsuccessful Response - Not authorised - Missing authorization header - Invalid access Token
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Unsuccessful Response - Forbidden - Invalid scopes
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: Unsuccessful Response - Resource Not found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
tags:
- accounts
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/AccountPatch'
delete:
summary: Delete a single account
description: This endpoint can only be used to delete accounts created using the POST /accounts endpoint. Accounts created when connecting to a financial institution can only be deleted by removing the connection they belong to. Requires **accounts:write:all** scope.
parameters:
- description: The Account Id
in: path
name: accountId
required: true
x-example: 0b4e6488-6de0-420c-8f56-fee665707d57
schema:
type: string
format: uuid
responses:
'204':
description: Successful Response
'401':
description: Unsuccessful Response - Not authorised - Missing authorization header - Invalid access Token
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Unsuccessful Response - Forbidden - Invalid scopes
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: Unsuccessful Response - Resource Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
tags:
- accounts
/accounts/{accountId}/balances:
get:
summary: Retrieve the historical balances for an account
description: Requires **accounts:read** scope.
parameters:
- description: The Account Id
in: path
name: accountId
required: true
x-example: 0b4e6488-6de0-420c-8f56-fee665707d57
schema:
type: string
format: uuid
responses:
'200':
description: Successful Balances Response
content:
application/json:
schema:
properties:
data:
items:
$ref: '#/components/schemas/Balance'
type: array
links:
$ref: '#/components/schemas/Links'
meta:
type: object
type: object
'401':
description: Unsuccessful Response - Not authorised - Missing authorization header - Invalid access Token
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Unsuccessful Response - Forbidden - Invalid scopes
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: Unsuccessful Response - Resource Not found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
tags:
- accounts
post:
summary: Add a new balance for an account
description: Requires **accounts:read** and either of **accounts:write** or **accounts:write:all** scopes.
parameters:
- description: The Account Id
in: path
name: accountId
required: true
x-example: 0b4e6488-6de0-420c-8f56-fee665707d57
schema:
type: string
format: uuid
responses:
'200':
description: Successful Balance Response
content:
application/json:
schema:
properties:
data:
$ref: '#/components/schemas/Balance'
links:
$ref: '#/components/schemas/Links'
meta:
type: object
type: object
'400':
description: Unsuccessful Response - Bad request - Missing query parameters - Missing body properties
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Unsuccessful Balance Response
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Unsuccessful Response - Forbidden - Invalid scopes
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
tags:
- accounts
requestBody:
content:
application/json:
schema:
$ref: '#/component
# --- truncated at 32 KB (72 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/moneyhub/refs/heads/main/openapi/moneyhub-accounts-api-openapi.yml