Moneyhub Affordability API
The affordability API from Moneyhub — 5 operation(s) for affordability.
The affordability API from Moneyhub — 5 operation(s) for affordability.
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-affordability-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 Affordability API
version: 2.0.0
x-build-sha: 5d5191d
servers:
- url: https://api.moneyhub.co.uk/v2.0
security:
- Bearer: []
tags:
- name: affordability
paths:
/affordability:
get:
summary: List of metadata for all affordability calculations for a user
description: Requires **affordability:read** scope.
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
responses:
'200':
description: Successful Affordability Response
content:
application/json:
schema:
properties:
data:
type: array
items:
$ref: '#/components/schemas/AffordabilityMetadata'
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:
- affordability
post:
summary: Request affordability calculation for a user
description: Requires **affordability:write** and **affordability:read** scopes.
responses:
'200':
description: Successful Affordability Response
content:
application/json:
schema:
properties:
data:
$ref: '#/components/schemas/Affordability'
links:
$ref: '#/components/schemas/Links'
meta:
type: object
type: object
'400':
description: Unsuccessful Response - Bad Request - Mixed account currencies
content:
application/json:
schema:
additionalProperties: false
properties:
code:
description: The error code
type: string
subCode:
description: The error subCode
enum:
- CURRENCY_MISMATCH
message:
description: The error message
type: string
correlationId:
description: Id that identifies the request and can be used to ask for more details related to the error
type: string
required:
- code
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:
- affordability
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/AffordabilityPost'
/affordability/confidence:
get:
summary: Get the affordability confidence calculation for a user, given the account and transaction data currently available
description: Requires **affordability:read** scope.
responses:
'200':
description: Successful Affordability Response
content:
application/json:
schema:
properties:
data:
$ref: '#/components/schemas/AffordabilityConfidence'
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:
- affordability
/affordability/{reportId}:
get:
summary: Get an existing affordability calculation for a user
description: Requires **affordability:read** scope.
parameters:
- description: The Report Id
in: path
name: reportId
required: true
x-example: 0b4e6488-6de0-420c-8f56-fee665707d57
schema:
type: string
format: uuid
responses:
'200':
description: Successful Affordability Response
content:
application/json:
schema:
properties:
data:
$ref: '#/components/schemas/Affordability'
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:
- affordability
/affordability/income:
get:
summary: List of metadata for all affordability income calculations for a user
description: Requires **affordability_income:read** scope.
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
responses:
'200':
description: Successful Affordability Income Response
content:
application/json:
schema:
properties:
data:
type: array
items:
$ref: '#/components/schemas/AffordabilityIncomeMetadata'
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:
- affordability
post:
summary: Request affordability income calculation for a user
description: Requires **affordability_income:write** and **affordability_income:read** scopes.
responses:
'200':
description: Successful Affordability Income Response
content:
application/json:
schema:
properties:
data:
$ref: '#/components/schemas/AffordabilityIncome'
links:
$ref: '#/components/schemas/Links'
meta:
type: object
type: object
'400':
description: Unsuccessful Response - Bad Request - Mixed account currencies
content:
application/json:
schema:
additionalProperties: false
properties:
code:
description: The error code
type: string
subCode:
description: The error subCode
enum:
- CURRENCY_MISMATCH
message:
description: The error message
type: string
correlationId:
description: Id that identifies the request and can be used to ask for more details related to the error
type: string
required:
- code
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:
- affordability
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/AffordabilityIncomePost'
/affordability/income/{reportId}:
get:
summary: Get an existing affordability income calculation for a user
description: Requires **affordability_income:read** scope.
parameters:
- description: The Report Id
in: path
name: reportId
required: true
x-example: 0b4e6488-6de0-420c-8f56-fee665707d57
schema:
type: string
format: uuid
responses:
'200':
description: Successful Affordability Income Response
content:
application/json:
schema:
properties:
data:
$ref: '#/components/schemas/AffordabilityIncome'
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:
- affordability
components:
schemas:
Links:
additionalProperties: false
properties:
next:
description: The url to retrieve the next page of results from
format: uri
type: string
prev:
description: The url to retrieve the previous page of results from
format: uri
type: string
self:
description: The url of the current resource(s)
format: uri
type: string
required:
- self
type: object
Affordability:
additionalProperties: false
type: object
properties:
createdAt:
description: The timestamp at which the report was generated
type: string
id:
description: The report id
type: string
income:
type: object
properties:
amountConsistency:
description: Consistency of monthly income, as a number between 0 and 1
type: number
longevity:
type: object
properties:
consecutiveIncomeMonths:
description: Longevity of income detected in number of months
type: number
incomePeriodLengthMonths:
description: The number of months of transaction history available for the income detection process
type: number
predicted:
description: The predicted monthly income amount
additionalProperties: false
type: object
properties:
value:
description: The amount in minor units of the currency, eg. pennies for GBP, negative means money going out of an account, positive means money coming into an account.
example: -2323
type: integer
majorUnits:
description: The positive major units of the value, based on the values currency, eg. pounds for GBP.
example: 23
type: integer
minorUnits:
description: The positive minor units of the value, based on the values currency, eg. pennies for GBP.
example: 23
type: integer
currency:
description: The currency of the amount
example: GBP
type: string
required:
- value
- currency
regularIncomeDetected:
description: Whether or not regular income was detected
type: boolean
required:
- amountConsistency
- longevity
- predicted
- regularIncomeDetected
overdraftUseByAccount:
type: array
items:
type: object
properties:
id:
description: The account id
type: string
daysInOverdraft:
description: The total number of days the account was overdrawn according to the account balance
type: number
daysInUnarrangedOverdraft:
description: The total number of days the account was in unarranged overdraft according to the account balance. If we were not provided with an overdraft limit by the account provider, we assume any negative balance is unarranged overdraft
type: number
earliestBalanceDate:
description: The earliest available balance date for the account
type: string
details:
type: array
items:
type: object
properties:
days:
description: The number of days the account was overdrawn during the period
type: number
start:
description: The start date of the period
type: string
end:
description: The end date of the period
type: string
minimumBalance:
description: The minimum balance of the account during the period
additionalProperties: false
type: object
properties:
value:
description: The amount in minor units of the currency, eg. pennies for GBP, negative means money going out of an account, positive means money coming into an account.
example: -2323
type: integer
majorUnits:
description: The positive major units of the value, based on the values currency, eg. pounds for GBP.
example: 23
type: integer
minorUnits:
description: The positive minor units of the value, based on the values currency, eg. pennies for GBP.
example: 23
type: integer
currency:
description: The currency of the amount
example: GBP
type: string
required:
- value
- currency
unarrangedOverdraft:
type: object
properties:
days:
description: The total number of days the account was in unarranged overdraft according to the account balance during the period
type: number
details:
type: array
items:
type: object
properties:
days:
description: The number of days the account was in unarranged overdraft during the unarranged overdraft period
type: number
start:
description: The start date of the unarranged overdraft period
type: string
end:
description: The end date of the unarranged overdraft period
type: string
minimumBalance:
description: The minimum balance of the account during the unarranged overdraft period
additionalProperties: false
type: object
properties:
value:
description: The amount in minor units of the currency, eg. pennies for GBP, negative means money going out of an account, positive means money coming into an account.
example: -2323
type: integer
majorUnits:
description: The positive major units of the value, based on the values currency, eg. pounds for GBP.
example: 23
type: integer
minorUnits:
description: The positive minor units of the value, based on the values currency, eg. pennies for GBP.
example: 23
type: integer
currency:
description: The currency of the amount
example: GBP
type: string
required:
- value
- currency
required:
- days
- start
- end
- minimumBalance
required:
- days
- details
required:
- days
- end
- minimumBalance
- start
required:
- id
- daysInOverdraft
- earliestBalanceDate
overview:
type: object
properties:
discretionaryExpenses:
description: The median monthly discretionary spend
additionalProperties: false
type: object
properties:
value:
description: The amount in minor units of the currency, eg. pennies for GBP, negative means money going out of an account, positive means money coming into an account.
example: -2323
type: integer
majorUnits:
description: The positive major units of the value, based on the values currency, eg. pounds for GBP.
example: 23
type: integer
minorUnits:
description: The positive minor units of the value, based on the values currency, eg. pennies for GBP.
example: 23
type: integer
currency:
description: The currency of the amount
example: GBP
type: string
required:
- value
- currency
fixedExpenses:
description: The median monthly fixed spend
additionalProperties: false
type: object
properties:
value:
description: The amount in minor units of the currency, eg. pennies for GBP, negative means money going out of an account, positive means money coming into an account.
example: -2323
type: integer
majorUnits:
description: The positive major units of the value, based on the values currency, eg. pounds for GBP.
example: 23
type: integer
minorUnits:
description: The positive minor units of the value, based on the values currency, eg. pennies for GBP.
example: 23
type: integer
currency:
description: The currency of the amount
example: GBP
type: string
required:
- value
- currency
flexibleExpenses:
description: The median monthly flexible spend
additionalProperties: false
type: object
properties:
value:
description: The amount in minor units of the currency, eg. pennies for GBP, negative means money going out of an account, positive means money coming into an account.
example: -2323
type: integer
majorUnits:
description: The positive major units of the value, based on the values currency, eg. pounds for GBP.
example: 23
type: integer
minorUnits:
description: The positive minor units of the value, based on the values currency, eg. pennies for GBP.
example: 23
type: integer
currency:
description: The currency of the amount
example: GBP
type: string
required:
- value
- currency
income:
description: The median monthly income
additionalProperties: false
type: object
properties:
value:
description: The amount in minor units of the currency, eg. pennies for GBP, negative means money going out of an account, positive means money coming into an account.
example: -2323
type: integer
majorUnits:
description: The positive major units of the value, based on the values currency, eg. pounds for GBP.
example: 23
type: integer
minorUnits:
description: The positive minor units of the value, based on the values currency, eg. pennies for GBP.
example: 23
type: integer
currency:
description: The currency of the amount
example: GBP
type: string
required:
- value
- currency
incomeIncludingTransfers:
description: The median monthly income including incoming transfers when incoming transfers exceed outgoing transfers
additionalProperties: false
type: object
properties:
value:
description: The amount in minor units of the currency, eg. pennies for GBP, negative means money going out of an account, positive means money coming into an account.
example: -2323
type: integer
majorUnits:
description: The positive major units of the value, based on the values currency, eg. pounds for GBP.
example: 23
type: integer
minorUnits:
description: The positive minor units of the value, based on the values currency, eg. pennies for GBP.
example: 23
type: integer
currency:
description: The currency of the amount
example: GBP
type: string
required:
- value
- currency
nonDiscretionaryExpenses:
description: The median monthly non-discretionary spend
additionalProperties: false
type: object
properties:
value:
description: The amount in minor units of the currency, eg. pennies for GBP, negative means money going out of an account, positive means money coming into an account.
example: -2323
type: integer
majorUnits:
description: The positive major units of the value, based on the values currency, eg. pounds for GBP.
example: 23
type: integer
minorUnits:
description: The positive minor units of the value, based on the values currency, eg. pennies for GBP.
example: 23
type: integer
currency:
description: The currency of the amount
example: GBP
type: string
required:
- value
- currency
required:
- discretionaryExpenses
- fixedExpenses
- flexibleExpenses
- income
- nonDiscretionaryExpenses
primaryIncomeAccountId:
description: The account id of the detected primary income account
type: string
riskIndicators:
type: object
properties:
cashWithdrawals:
description: The median monthly cash withdrawal amount
additionalProperties: false
type: object
properties:
value:
description: The amount in minor units of the currency, eg. pennies for GBP, negative means money going out of an account, positive means money coming into an account.
example: -2323
type: integer
majorUnits:
description: The positive major units of the value, based on the values currency, eg. pounds for GBP.
example: 23
type: integer
minorUnits:
description: The positive minor units of the value, based on the values currency, eg. pennies for GBP.
example: 23
type: integer
currency:
description: The currency of the amount
example: GBP
type: string
required:
- value
- currency
gambling:
description: The median monthly gambling spend
additionalProperties: false
type: object
properties:
value:
description: The amount in minor units of the currency, eg. pennies for GBP, negative means money going out of an account, positive means money coming into an account.
example: -2323
type: integer
majorUnits:
description: The positive major units of the value, based on the values currency, eg. pounds for GBP.
example: 23
type: integer
minorUnits:
description: The positive minor units of the value, based on the values currency, eg. pennies for GBP.
example: 23
type: integer
currency:
description: The currency of the amount
example: GBP
type: string
required:
- value
- currency
loansOpened:
type: object
properties:
byPeriod:
type: object
properties:
30days:
type: object
properties:
byType:
type: object
properties:
bnpl:
description: Total number of Buy Now Pay Later loans opened within the period
type: number
hcstc:
description: Total number of high cost short term credit loans opened within the period
type: number
dca/dmp:
description: Total number of debt collection agency and debt management plan loans opened within the period
type: number
secured:
description: Total number of secured loans opened within the period
type: number
unknown:
description: Total number of loans with an unknown type opened within the period
type: number
unsecured:
description: Total number of unsecured loans opened within the period
type: number
totalByType:
type: object
properties:
bnpl:
type: object
properties:
# --- truncated at 32 KB (141 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/moneyhub/refs/heads/main/openapi/moneyhub-affordability-api-openapi.yml