> ## Documentation Index
> Fetch the complete documentation index at: https://docs.onnucleus.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Accounts, NUBAN & Interest Rates

> CBN NUBAN 10-digit generation, Treasury rate setting, and custom customer rate overrides.

Nucleus provides comprehensive account lifecycle management covering on-demand savings, fixed term deposits, and target savings.

## 1. Automated CBN NUBAN Derivation

All accounts derive a compliant 10-digit Nigerian Uniform Bank Account Number (NUBAN) adhering to the CBN standard formula:

$$
\text{Check Digit} = 10 - \left(\left(\sum_{i=1}^3 \text{CBN}_i \times w_i + \sum_{j=1}^9 \text{Serial}_j \times w_{j+3}\right) \pmod{10}\right)
$$

Where the weighting vector is $[3, 7, 3, 3, 7, 3, 3, 7, 3, 3, 7, 3]$.

***

## 2. Who Sets Interest Rates?

* **Department:** The **Treasury Department** owns interest rate policy across the institution.
* **Role:** **Treasury Officer (Role `320015`)**.
* **Maker-Checker Governance:**
  * **Maker:** The Treasury Officer proposes product rate changes or slab adjustments.
  * **Checker:** The **Head of Operations (Role `320011`)** or **Asset-Liability Committee (ALCO)** approves the rate changes before they take effect.

***

## 3. Custom Rate Overrides for Individual Customers

Banks frequently negotiate bespoke rates for high-net-worth individuals, institutional depositors, or prime corporate borrowers.

<Note>
  **Guiding Invariant:** A custom rate must never mutate the bank's global product rate catalog. It is stored as an account-level contract override with an audit trail.
</Note>

### How Custom Overrides Work:

1. When opening or modifying an account, the officer enters the negotiated `nominalInterestRate` (e.g. 14.5% instead of the default 11.0%).
2. The core banking engine flags the transaction: `OVERRIDE_PENDING_APPROVAL`.
3. The request routes to the **Treasury Officer (Role `320015`)** in the approval queue.
4. Once the Treasury Officer approves, the account activates with its custom schedule. Daily interest accrual batch jobs calculate interest against this custom rate.

### Opening an Account with a Custom Rate Override:

```bash theme={null}
POST /nucleus/api/v1/savingsaccounts?tenantIdentifier=pilot-mfb
Content-Type: application/json

{
  "clientId": 3,
  "productId": 2,
  "nominalAnnualInterestRate": 14.5,
  "interestCompoundingPeriodType": 1,
  "interestPostingPeriodType": 4,
  "interestCalculationType": 1,
  "interestCalculationDaysInYearType": 365,
  "submittedOnDate": "12 September 2026",
  "dateFormat": "dd MMMM yyyy",
  "locale": "en"
}
```
