This section describes the main entities in the CoreWallet.
The Subsidiary represents the system legal entity that is the legal contract partner for every User. It has its own (closed) set of accounting-accounts, and is the basis for most configurations.
The User represents a customer legal entity that is the legal contract partner for a Subsidiary. A user can have properties such as name/address, may have identifiers (such as email address or telephone number used for login/identification) and authentication data (e.g. password or API credentials, and security-roles). A user is the owner of a wallet. The user has a verification level corresponding to the KYC-process that is executed.
The Wallet represents the contract between a Subsidiary and a User, and is a container for wallet-accounts and payment-instruments.
The WalletAccount represents a single account in a wallet with a single currency and a defined purpose, depending on the wallet-account-type. Typically at least one main-wallet-account exists in a wallet, or multiple in case the wallet should support multiple currencies. A wallet-account can store emoney, and the usability depends on the accounting and transaction configuration in the system.
The WalletAccountItem represents an activity on a wallet-account, that may or may not influence the wallet-account-balance. The wallet-account-items form the account-statement. Typically each transaction has one or more wallet-account-items. The wallet-account-item aggregates all accounting-transfers that may be required for a transaction event.
The PaymentInstrument represents a bank-account, credit-card or crypto-wallet that is used to fund to or withdraw from a wallet-account.
The Transaction is the generic type for any entity/process that influences the wallet-account-balance, such as a payment, invoice or purchase. A transaction always references one or more wallet-accounts, and may have any number of wallet-account-items.
The EmoneyAccount is the account in the accounting component, that stores emoney of a given type for a wallet-account. A wallet-account can have multiple emoney-accounts, e.g. for different emoney-types (unrestricted, or MCC-code restricted).