Configuration

The line between what a bank configures and what only a developer changes is drawn on purpose, and it sits far towards configuration.

Configuration or code
Configuration: a settings row, versioned, per tenantCode: the engine
Account types: positions, transaction types, schedules, input amountsHow a position is posted and accrued
Rate cards, banded by period and amount; day-count conventionsInterest arithmetic and rounding
Calendars and business-day conventionsDate arithmetic
Posting groups and posting rules per operating entityDouble entry and period close
Workflow steps and which operations need four eyesThe authorisation mechanism
Permissions per roleDeny by default
Counterparty, relationship, role and collateral typesThe aggregate model
Capabilities switched on per tenantThe capabilities themselves
Numbering schemes, statement layouts, submission formatsRendering and transport
What configuration looks like
# One account type, excerpted from the retail lending template.
- accountType:
    name: PersonalLoan
    label: Personal Loan
    productFamily: Loans
    nature: Asset
    collectionMethod: DirectDebit
    positionTypes:
    - name: Balance
    - name: Accrued
    - name: Arrears
    - name: Provision
    transactionTypes:
    - name: Advance
      isPostable: true
      paymentInstruction: DirectCredit
      positionRules:
      - operation: Debit
        positionTypeName: Balance
    - name: InterestAccrued
      costOfCreditCategory: Interest
      positionRules:
      - operation: Debit
        positionTypeName: Accrued
    scheduleTypes:
    - name: Accrual
      frequency: Daily
      businessDayConvention: None
      startDateExpression: StartDate
      endDateExpression: EndDate
    - name: Anniversary
      frequency: Monthly
      businessDayConvention: ModifiedFollowing
      startDateExpression: FirstPaymentDate
      endDateExpression: EndDate
    scheduledTransactions:
    - name: DailyAccrual
      scheduleName: Accrual
      timing: EndOfDay
      generatedTransactionType: InterestAccrued
      amountExpression: (Balance + Arrears) * rate(interestRate, valueDate) / daysInYear(valueDate)
      conditionExpression: (Balance + Arrears) > 0
    - name: AnniversaryServiceFee
      scheduleName: Anniversary
      timing: StartOfDay
      generatedTransactionType: ServiceFeeCharged
      amountExpression: price('service-fee', valueDate)
    instalmentType:
      name: Instalment
      scheduleName: Anniversary
      transactionType: InstalmentDue
      solveForZeroPosition: Balance
      solveForDate: EndDate
      rateChangePolicy: ReSolve
    openingTransactions:
    - type: InitiationFeeCharged
      amount: initiationFee
      optional: true
    - type: Advance
      isAdvance: true
      amount: loanAmount

An account type is a document, not a program.

This is a personal loan from the retail lending template, shortened. Its positions, the transactions that move them, the schedules they run on, the expressions that price them and the instalment solver are all here. A product manager reads it. The engine runs it. A new product is a new document.

The full type carries the capture screens, the balance views, the statutory cost-of-credit categories and the operations a clerk may perform. Same file, same shape.

The account designer

Describe a new account type in plain English.

The designer reads the configuration model, drafts the account type, builds the capture screens in a sandbox and projects transactions across the account's whole life. When the numbers are right, it goes live at runtime. No code. Where else AI works in the product →

The AI-assisted account designer
The account designer.
Why this matters commercially

A capability you can switch on is a capability you can price. A product you can configure is a product a partner can sell into a market we have never seen. And a settings row is something an auditor can read.

What this means for you: onboarding a product is a configuration exercise on a sandbox tenant, with the forecaster as the test.