{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/moneyhub/main/json-schema/moneyhub-statement-schema.json",
  "title": "Statement",
  "x-generated": "2026-10-12",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/moneyhub-statements-api-openapi.yml#/components/schemas/Statement",
  "type": "object",
  "required": [
    "id",
    "accountId",
    "userId",
    "providerStatementId",
    "providerAccountId",
    "type",
    "startDate",
    "endDate",
    "creationDate"
  ],
  "additionalProperties": false,
  "properties": {
    "id": {
      "type": "string"
    },
    "accountId": {
      "type": "string"
    },
    "userId": {
      "type": "string"
    },
    "providerStatementId": {
      "type": "string"
    },
    "providerAccountId": {
      "type": "string"
    },
    "reference": {
      "type": "string"
    },
    "type": {
      "type": "string",
      "enum": [
        "AccountClosure",
        "AccountOpening",
        "Annual",
        "Interim",
        "RegularPeriodic"
      ]
    },
    "startDate": {
      "type": "string",
      "format": "date-time"
    },
    "endDate": {
      "type": "string",
      "format": "date-time"
    },
    "creationDate": {
      "type": "string",
      "format": "date-time"
    },
    "description": {
      "type": "string"
    },
    "benefits": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string"
          },
          "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.",
                "type": "integer"
              },
              "majorUnits": {
                "description": "The positive major units of the value, based on the values currency, eg. pounds for GBP.",
                "type": "integer"
              },
              "minorUnits": {
                "description": "The positive minor units of the value, based on the values currency, eg. pennies for GBP.",
                "type": "integer"
              },
              "currency": {
                "description": "The currency of the amount",
                "type": "string"
              }
            },
            "required": [
              "value",
              "currency"
            ]
          }
        }
      }
    },
    "fees": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "creditDebitIndicator",
          "type",
          "amount"
        ],
        "properties": {
          "description": {
            "type": "string"
          },
          "creditDebitIndicator": {
            "type": "string"
          },
          "type": {
            "type": "string"
          },
          "rate": {
            "type": "string"
          },
          "rateType": {
            "type": "string",
            "enum": [
              "BOEBaseRate",
              "FixedRate",
              "Gross",
              "LoanProviderBaseRate",
              "Net"
            ]
          },
          "frequency": {
            "type": "string",
            "enum": [
              "ChargingPeriod",
              "PerTransactionAmount",
              "PerTransactionPercentage",
              "Quarterly",
              "StatementMonthly",
              "Weekly"
            ]
          },
          "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.",
                "type": "integer"
              },
              "majorUnits": {
                "description": "The positive major units of the value, based on the values currency, eg. pounds for GBP.",
                "type": "integer"
              },
              "minorUnits": {
                "description": "The positive minor units of the value, based on the values currency, eg. pennies for GBP.",
                "type": "integer"
              },
              "currency": {
                "description": "The currency of the amount",
                "type": "string"
              }
            },
            "required": [
              "value",
              "currency"
            ]
          }
        }
      }
    },
    "interest": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "amount"
        ],
        "properties": {
          "description": {
            "type": "string"
          },
          "creditDebitIndicator": {
            "type": "string"
          },
          "rate": {
            "type": "string"
          },
          "rateType": {
            "type": "string",
            "enum": [
              "BOEBaseRate",
              "FixedRate",
              "Gross",
              "LoanProviderBaseRate",
              "Net"
            ]
          },
          "frequency": {
            "type": "string",
            "enum": [
              "Daily",
              "HalfYearly",
              "Monthly",
              "PerStatementDate",
              "Quarterly",
              "Weekly",
              "Yearly"
            ]
          },
          "type": {
            "type": "string"
          },
          "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.",
                "type": "integer"
              },
              "majorUnits": {
                "description": "The positive major units of the value, based on the values currency, eg. pounds for GBP.",
                "type": "integer"
              },
              "minorUnits": {
                "description": "The positive minor units of the value, based on the values currency, eg. pennies for GBP.",
                "type": "integer"
              },
              "currency": {
                "description": "The currency of the amount",
                "type": "string"
              }
            },
            "required": [
              "value",
              "currency"
            ]
          }
        }
      }
    },
    "amounts": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "creditDebitIndicator",
          "type",
          "amount"
        ],
        "properties": {
          "creditDebitIndicator": {
            "type": "string"
          },
          "type": {
            "type": "string"
          },
          "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.",
                "type": "integer"
              },
              "majorUnits": {
                "description": "The positive major units of the value, based on the values currency, eg. pounds for GBP.",
                "type": "integer"
              },
              "minorUnits": {
                "description": "The positive minor units of the value, based on the values currency, eg. pennies for GBP.",
                "type": "integer"
              },
              "currency": {
                "description": "The currency of the amount",
                "type": "string"
              }
            },
            "required": [
              "value",
              "currency"
            ]
          },
          "amountSubType": {
            "type": "string",
            "enum": [
              "BaseCurrency",
              "LocalCurrency"
            ]
          },
          "localAmount": {
            "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.",
                "type": "integer"
              },
              "majorUnits": {
                "description": "The positive major units of the value, based on the values currency, eg. pounds for GBP.",
                "type": "integer"
              },
              "minorUnits": {
                "description": "The positive minor units of the value, based on the values currency, eg. pennies for GBP.",
                "type": "integer"
              },
              "currency": {
                "description": "The currency of the amount",
                "type": "string"
              }
            },
            "required": [
              "value",
              "currency"
            ]
          },
          "localAmountSubType": {
            "type": "string",
            "enum": [
              "BaseCurrency",
              "LocalCurrency"
            ]
          }
        }
      }
    },
    "dates": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "date",
          "type"
        ],
        "properties": {
          "date": {
            "type": "string",
            "format": "date-time"
          },
          "type": {
            "type": "string"
          }
        }
      }
    },
    "rates": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "rate",
          "type"
        ],
        "properties": {
          "rate": {
            "type": "string"
          },
          "type": {
            "type": "string"
          }
        }
      }
    },
    "values": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "value",
          "type"
        ],
        "properties": {
          "value": {
            "type": "string"
          },
          "type": {
            "type": "string"
          }
        }
      }
    },
    "totalValue": {
      "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.",
          "type": "integer"
        },
        "majorUnits": {
          "description": "The positive major units of the value, based on the values currency, eg. pounds for GBP.",
          "type": "integer"
        },
        "minorUnits": {
          "description": "The positive minor units of the value, based on the values currency, eg. pennies for GBP.",
          "type": "integer"
        },
        "currency": {
          "description": "The currency of the amount",
          "type": "string"
        }
      },
      "required": [
        "value",
        "currency"
      ]
    },
    "currency": {
      "type": "string"
    }
  }
}