# MoneyHub v1.0.0 - Table of Contents

> A production-grade Elixir client for the Moneyhub Open Finance API: OIDC authentication (PAR, private_key_jwt, request objects), account aggregation (AIS), payments (SIP, VRP, standing orders, pay links), categorisation, affordability, and webhook verification.

## Pages

- [MoneyHub](readme.md)
- [Changelog](changelog.md)

## Modules

- [MoneyHub](MoneyHub.md): A client for the [Moneyhub Open Finance API](https://docs.moneyhubenterprise.com/).

- Authentication
  - [MoneyHub.Auth](MoneyHub.Auth.md): OIDC authentication flows: Pushed Authorisation Requests, authorisation
URLs, code exchange, and client-credentials tokens.
  - [MoneyHub.Auth.IdToken](MoneyHub.Auth.IdToken.md): Verifies and decodes the `id_token` returned from Moneyhub's token
endpoint.
  - [MoneyHub.Auth.JWKS](MoneyHub.Auth.JWKS.md): Fetches and caches Moneyhub's public JSON Web Key Set (JWKS).
  - [MoneyHub.Auth.PrivateKeyJWT](MoneyHub.Auth.PrivateKeyJWT.md): Builds and signs `private_key_jwt` client assertions.
  - [MoneyHub.Claims](MoneyHub.Claims.md): Builds the OIDC `claims` request parameter Moneyhub uses to drive
connection behaviour.
  - [MoneyHub.Scopes](MoneyHub.Scopes.md): Known Moneyhub OAuth2 scopes, grouped by purpose.

- Data Aggregation (AIS)
  - [MoneyHub.Accounts](MoneyHub.Accounts.md): Account data: list, fetch, update, and delete accounts; manual account
creation; account balances.
  - [MoneyHub.Affordability](MoneyHub.Affordability.md): Affordability and income verification reports, and Standard Financial
Statements - used in lending and collections workflows.
  - [MoneyHub.AuthRequests](MoneyHub.AuthRequests.md): The Auth Requests API: an alternative to building authorisation URLs
and Pushed Authorisation Requests by hand (see `MoneyHub.Auth`) - you
send the desired scope/claims to this endpoint with your
`client_credentials` token, and Moneyhub returns a ready-to-use
authorisation URL.
  - [MoneyHub.BankIcons](MoneyHub.BankIcons.md): Fetches a bank/institution's icon image by its bank reference, for use
in bank-chooser UIs alongside `MoneyHub.Connections.available/2`.

  - [MoneyHub.Beneficiaries](MoneyHub.Beneficiaries.md): Beneficiaries: payees the user has previously sent money to from a
connected account, as detected from open banking data (distinct from
`MoneyHub.Payees`, which are payees *you* create for initiating
payments).
  - [MoneyHub.Categories](MoneyHub.Categories.md): The Moneyhub category and category-group taxonomy used to classify
transactions, plus business/personal categorisation-as-a-service for
data not connected through Moneyhub.
  - [MoneyHub.Connections](MoneyHub.Connections.md): Connection lifecycle management: listing a user's bank connections,
checking sync status, and removing connections.
  - [MoneyHub.ConsentHistory](MoneyHub.ConsentHistory.md): Historical record of consent grants/revocations across a user's
connections and payment authorisations - useful for compliance and audit
trails.

  - [MoneyHub.Counterparties](MoneyHub.Counterparties.md): Counterparty data: the merchant/payee/payer identified behind a
transaction, including logos, categories, and an explicit "is this a
recognised business" check.
  - [MoneyHub.Discovery](MoneyHub.Discovery.md): OpenID Connect discovery: fetches Moneyhub's published OIDC provider
metadata (`/oidc/well-known/openid-configuration`) - endpoint URLs,
supported scopes, signing algorithms, and so on.
  - [MoneyHub.GlobalCounterparties](MoneyHub.GlobalCounterparties.md): Global counterparties: Moneyhub's shared, user-independent reference
database of known merchants/businesses, as distinct from
`MoneyHub.Counterparties` (counterparties seen in a specific user's
transaction history).
  - [MoneyHub.Holdings](MoneyHub.Holdings.md): Investment account holdings, with ISIN code matching against a reference
database to enrich each holding with identified security details.
  - [MoneyHub.NotificationThresholds](MoneyHub.NotificationThresholds.md): Balance notification thresholds on an account - configure a balance
level which, when crossed, triggers the `balanceThreshold` webhook (see
`MoneyHub.Webhooks`). Used for low-balance alerts and patterns like
"Smart Saver" VRP sweeping.

  - [MoneyHub.Projects](MoneyHub.Projects.md): Projects: a user-defined grouping construct (similar in spirit to a
manual account) that can be created, read, updated, and deleted via the
API. Projects created via the API can be deleted directly; projects
created as part of a bank connection can only be removed by removing
the connection.

  - [MoneyHub.RegularTransactions](MoneyHub.RegularTransactions.md): Regular transaction series detection: recurring payments (subscriptions,
rent, salary) automatically identified from transaction history.
  - [MoneyHub.RentalRecords](MoneyHub.RentalRecords.md): Rental payment record submission - reporting a tenant's verified rent
payment history (typically derived from detected regular transactions)
to a credit reference agency such as Experian, to help build their
credit file.
  - [MoneyHub.ResellerCheck](MoneyHub.ResellerCheck.md): Reseller check: validates a reseller/partner relationship as part of
certain onboarding flows.

  - [MoneyHub.SavingsGoals](MoneyHub.SavingsGoals.md): Savings goals: user-defined targets tracked against the combined balance
of one or more accounts, surfacing progress as both an amount and a
percentage.
  - [MoneyHub.ScimUsers](MoneyHub.ScimUsers.md): SCIM users: a [SCIM](https://en.wikipedia.org/wiki/System_for_Cross-domain_Identity_Management)-style
user identity resource that can hold personally identifiable information
(name, email, etc), as distinct from `MoneyHub.Users` (the lightweight
data-only user record `sub` claims point at).
  - [MoneyHub.SpendingAnalysis](MoneyHub.SpendingAnalysis.md): Aggregated spending and income statistics over arbitrary date ranges,
grouped by category - useful for "this month vs last month" comparisons
without manually summing transactions client-side.
  - [MoneyHub.SpendingGoals](MoneyHub.SpendingGoals.md): Spending and income goals: budgeting targets scoped to a category and
date range (for example "spend less than £500/month on groceries").
  - [MoneyHub.StandardFinancialStatements](MoneyHub.StandardFinancialStatements.md): Standard Financial Statements (SFS): a pre-filled financial statement
report, used alongside affordability and income-verification reports in
lending and collections workflows.
  - [MoneyHub.Statements](MoneyHub.Statements.md): Account statements - periodic statement documents/metadata for a
connected account, where the provider exposes them.
  - [MoneyHub.Tax](MoneyHub.Tax.md): Tax reporting data: transactions surfaced to help answer SA105 (the UK
Self Assessment questions for property income) for HMRC reporting.
  - [MoneyHub.Transactions](MoneyHub.Transactions.md): Transaction data: list and fetch transactions, with date-range and
account filtering, and manual category correction.
  - [MoneyHub.Users](MoneyHub.Users.md): Moneyhub user management, for the "ongoing access" integration pattern
where you maintain a long-lived mapping between your own user records
and a Moneyhub `sub`.

- Payments
  - [MoneyHub.PayFile](MoneyHub.PayFile.md): Pay Files: bulk/batch payment submission - initiate many payments from a
single account in one authorisation, instead of one `MoneyHub.Payments`
authorisation per payment. Useful for payroll, supplier runs, or refund
batches.
  - [MoneyHub.PayLinks](MoneyHub.PayLinks.md): Pay Links: shareable, hosted single-payment links that don't require
embedding a widget yourself - useful for invoicing flows where you just
need to send a customer a URL.
  - [MoneyHub.Payees](MoneyHub.Payees.md): Payee management for payments.
  - [MoneyHub.Payments](MoneyHub.Payments.md): Single Immediate Payments (SIP): initiate a payment authorisation and
check payment status.
  - [MoneyHub.RecurringPayments](MoneyHub.RecurringPayments.md): Variable Recurring Payments (VRP): set up a recurring payment consent
once, then trigger individual payments ("sweeps") against it without
further user interaction, up to the consented limits.
  - [MoneyHub.StandingOrders](MoneyHub.StandingOrders.md): Standing order creation and management via Payment Initiation.

- Webhooks
  - [MoneyHub.Webhooks](MoneyHub.Webhooks.md): Verifies and parses incoming Moneyhub webhook deliveries.
  - [MoneyHub.Webhooks.Event](MoneyHub.Webhooks.Event.md): A parsed, verified Moneyhub webhook event.

- Internals
  - [MoneyHub.Client](MoneyHub.Client.md): Low-level HTTP client for the Moneyhub data API (`api_url`).
  - [MoneyHub.Config](MoneyHub.Config.md): Configuration for a `MoneyHub` API client.
  - [MoneyHub.Error](MoneyHub.Error.md): A structured error returned by `MoneyHub` functions.

