Moneyhub Affordability API

The affordability API from Moneyhub — 5 operation(s) for affordability.

Operations 7

GET /affordability List of metadata for all affordability calculations for a user
POST /affordability Request affordability calculation for a user
GET /affordability/confidence Get the affordability confidence calculation for a user, given the account and transaction data currently available
GET /affordability/{reportId} Get an existing affordability calculation for a user
GET /affordability/income List of metadata for all affordability income calculations for a user
POST /affordability/income Request affordability income calculation for a user
GET /affordability/income/{reportId} Get an existing affordability income calculation for a user

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • 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.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/moneyhub-affordability-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

moneyhub-affordability-api-openapi.yml Raw ↑
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