{"openapi":"3.0.1","info":{"title":"Pfuma Core Banking API","description":"Cloud-native core banking platform purpose-built for African financial institutions.\n\n**Target Market:** Microfinance institutions (MFIs), savings and credit cooperatives (SACCOs), commercial banks, and fintechs operating in multi-currency environments.\n\n**Key Differentiators:**\n- Double-entry accounting engine with real-time journal entries\n- AML/KYC/CFT compliance framework (8 monitoring rules, PEP/sanctions screening engine, STR/TTR generation and internal filing workflow). External sanctions feeds and FIU transmission are connected during implementation.\n- All 15 Zimbabwe banks pre-configured (SWIFT/routing reference data) for ZIPIT and RTGS; external switch connectivity is completed during implementation\n- Decisioning engine for fraud detection, credit scoring, and churn (rule-based heuristics today; IFRS 9 ECL is fully analytical; ML models scaffolded for training on production data)\n- Multi-currency support (USD, ZWG) with automatic GL mirroring\n- Settlement reconciliation engine (ZIPIT, RTGS, EcoCash, GL) with multi-pass matching\n- Cloud-native auto-scaling (zero to thousands of requests per second)\n\n**Public Endpoints (no API key required):**\n- `GET /actuator/health` - Service health status\n- `GET /v1/platform` - Platform capabilities and statistics\n- `GET /v1/platform/compliance` - Regulatory compliance matrix\n- `GET /v1/platform/architecture` - Technical architecture details\n- `GET /v1/platform/faq` - Prospect FAQ (implementation, pricing, migration, support)\n- `GET /v1/platform/banks` - Pre-configured bank integrations\n\n**Getting Started:**\n1. Generate an API key via `POST /v1/api-keys` (requires an existing admin key)\n2. Include the key in the `X-API-Key` header for all authenticated requests\n3. Create a customer, open an account, and make your first deposit","contact":{"name":"Lioncap Ventures","url":"https://lioncapventures.com","email":"api@lioncapventures.com"},"license":{"name":"Proprietary","url":"https://lioncapventures.com/terms"},"version":"1.0.0"},"externalDocs":{"description":"Pfuma Core Platform Documentation","url":"https://qupa-api.lioncapventures.com/docs"},"servers":[{"url":"https://qupa-api.lioncapventures.com","description":"Production"},{"url":"https://qupa-core-api-ynddvnxogq-lz.a.run.app","description":"Cloud Run Direct"}],"security":[{"ApiKeyAuth":[]}],"tags":[{"name":"General Ledger","description":"Double-entry chart of accounts with 5 categories: Assets, Liabilities, Equity, Revenue, Expenses. Multi-currency with automatic ZWG mirror accounts. Trial balance generation. Journal entry audit trail. Branch-level and consolidated views."},{"name":"ALM","description":"Asset-Liability Management. Track maturity mismatches, interest rate sensitivity gaps, and liquidity coverage ratios. Time-bucket analysis for gap reporting. Supports RBZ liquidity ratio requirements."},{"name":"Maker-Checker Approvals","description":"Dual-authorization workflow for high-risk operations. Account freezing, closure, and large transactions require separate maker (initiator) and checker (approver). Configurable approval rules. Full audit trail of approval decisions."},{"name":"Exchange Rates","description":"Multi-currency exchange rate management for USD/ZWG. Daily rate updates, bid/ask spreads, historical rate tracking. Used for cross-currency transactions and financial reporting."},{"name":"Deposit Products","description":"16 pre-configured products across USD and ZWG currencies. Configurable interest rates (annual percentage), minimum balances, fee structures, tiered pricing, maturity terms, and early withdrawal penalties. Products include: regular savings, premium savings, youth savings, senior savings, group savings, fixed deposits (3/6/12/24 month), call deposits, money market, and ZWG equivalents."},{"name":"Customers","description":"Customer lifecycle management with integrated KYC. Create customers with national ID, assign risk profiles, and manage the full onboarding journey. Supports individual and corporate customers. All customers are linked to KYC records for regulatory compliance."},{"name":"Branches","description":"Multi-branch accounting and operations. 6 branches pre-configured (Head Office, Harare CBD, Bulawayo, Mutare, Gweru, Masvingo). Branch-level P&L, transaction filtering, and customer assignment. Unlimited branches supported."},{"name":"Loan Provisioning","description":"IFRS 9 loan loss provisioning with RBZ-compliant staging. Stage 1 (performing, 0-30 days, 1% provision), Stage 2 (underperforming, 31-90 days, 5-20% provision), Stage 3 (non-performing, 90+ days, 50-100% provision). Collateral-adjusted net exposure calculations. Automated GL entries for provision expense."},{"name":"Beneficiaries","description":"Manage payment beneficiaries for repeat transfers. Store bank details, mobile money numbers, and ZIPIT/RTGS routing information. Beneficiaries can be shared across customers or customer-specific."},{"name":"Transactions","description":"Immutable transaction ledger with double-entry accounting. Every transaction (deposit, withdrawal, transfer, fee, interest) creates balanced debit and credit journal entries. Full audit trail with timestamps, channels, and operator IDs. Branch-aware and period-locked."},{"name":"KYC","description":"Know Your Customer records management. Risk-based approach with categories: low, medium, high, prohibited. Captures national ID and passport details with a manual maker-checker verification workflow, address verification, source of funds documentation. Periodic review scheduling. External verification checks (identity registry, sanctions and PEP, credit bureau, adverse media) run through a pluggable external verification provider selected by EXTERNAL_KYC_PROVIDER_MODE; the default mode is an offline stub that contacts nothing and labels every result source=STUB. Aligned with FATF Recommendations 10-22 and RBZ KYC Guidelines."},{"name":"Statutory Reserves","description":"Statutory reserve ratio calculations per RBZ requirements. Track required reserves vs actual holdings. Alert on shortfalls. Supports both USD and ZWG reserve calculations."},{"name":"Compliance Reports","description":"Suspicious Transaction Report (STR) and Threshold Transaction Report (TTR) management. Generate, review, and manage reports through an internal filing workflow (assembly, review, status tracking); electronic transmission to the Financial Intelligence Unit (FIU) of Zimbabwe is planned. Aligned with the Money Laundering and Proceeds of Crime Act (Chapter 9:24)."},{"name":"Periods","description":"Accounting period management. Open and close monthly/annual periods. Period-locked transactions prevent backdating. Year-end closing procedures. Supports month-end accrual runs and financial statement generation."},{"name":"Treasury","description":"Treasury and liquidity management. Cash flow forecasting, Asset-Liability Management (ALM) positions, investment portfolio tracking, statutory reserve calculations, and interest rate risk monitoring. Supports RBZ statutory reserve ratio compliance."},{"name":"Platform Information","description":"Public endpoints describing platform capabilities, compliance posture, architecture, integrated banks, and prospect FAQ. No authentication required. Use these endpoints during demos and client presentations."},{"name":"Cash Flow Forecasts","description":"Forward-looking cash flow projections. Model expected inflows (deposits, loan repayments, investment maturities) and outflows (withdrawals, payments, operational costs). Multiple scenario analysis."},{"name":"Reconciliation","description":"Settlement reconciliation engine for ZIPIT (ZIMSWITCH), RTGS (ZETSS), EcoCash, and internal GL reconciliation. Multi-pass matching algorithm: Tier 1 (exact reference + amount + date, 60-70% hit rate), Tier 2 (amount + date tolerance, 15-20%), Tier 3 (fuzzy/sum-of-transactions, 5-10%), Tier 4 (exception routing). Exception management with aging SLA (0-2 days monitor, 3-5 investigate, 6-15 escalate, 16-30 CFO review, 30+ write-off assessment). Suspense account tracking by channel. Daily summary and match rate KPI reports. Target: >95% auto-match rate."},{"name":"Alerts","description":"Transaction monitoring alert management. 8 pre-configured rules detect: large cash deposits, structuring, rapid fund movement, unusual patterns, high-risk jurisdiction transfers, dormant account reactivation, round-amount transactions, and velocity anomalies. Alert lifecycle: open, under review, escalated, closed (true positive / false positive)."},{"name":"Prudential Returns","description":"Reserve Bank of Zimbabwe prudential return data collection. Supports monthly balance sheet returns (BR1), income statement returns (BR2), large exposure reporting, and capital adequacy monitoring. Data structured in JSONB for flexible reporting."},{"name":"API Keys","description":"Self-service API key management. Generate keys with scoped access (read, write, admin) and configurable rate limits. Keys are SHA-256 hashed (never stored in plaintext). Support for key rotation with zero downtime. Admin scope required for key management operations."},{"name":"Beneficial Owners","description":"Beneficial ownership registry for corporate customers. Identify individuals who ultimately own or control 25%+ of an entity. Required by FATF Recommendation 24 and Zimbabwe's AML regulations."},{"name":"Interest","description":"Interest accrual engine. Daily accrual calculations based on deposit product rates. Supports simple and compound interest. Tiered rate structures. Month-end interest posting to accounts with corresponding GL entries."},{"name":"Loan Applications","description":"Loan application workflow: submit, review, approve/reject, disburse. Captures borrower financials (income, expenses, existing obligations), employment status, and calculates debt-to-income ratio. Integrated with maker-checker approval workflow for amounts above configurable thresholds."},{"name":"Financial Reports","description":"Core financial statements: Statement of Financial Position (Balance Sheet), Income Statement, Cash Flow Statement. Branch-filterable and period-aware. Generates from real-time GL data with double-entry integrity."},{"name":"Loan Products","description":"Loan product catalog with configurable interest rates (flat, declining balance, reducing balance), repayment frequencies, term limits, fee structures, collateral requirements, and grace periods. 8 pre-configured products: personal loan, SME business loan, agricultural loan, salary-backed loan, group loan, emergency loan, mortgage, and asset finance."},{"name":"Accounts","description":"10 account types: Savings, Current, Fixed Deposit, Call Deposit, Money Market, Trust, Escrow, Nostro, Suspense, and GL. Full lifecycle management (open, activate, freeze/unfreeze, close, reactivate). Automatic dormancy detection. Each account links to a deposit product for interest rate and fee configuration. Deposits, withdrawals, and transfers create double-entry journal entries."},{"name":"Screening","description":"Customer and transaction screening engine (exact and fuzzy name matching) against a configurable internal watchlist. Connection to external sanctions/PEP feeds is planned; lists are populated manually until then. Configurable match thresholds. Results stored with match details for audit purposes. Supports batch screening for periodic reviews."},{"name":"Investments","description":"Investment portfolio management. Track treasury bills, government bonds, and other securities. Maturity tracking, yield calculations, and mark-to-market valuations."},{"name":"Loans","description":"Active loan management. Full lifecycle: disbursement, repayment processing, arrears tracking, write-off. Amortization schedule generation (flat, declining balance, reducing balance). Repayment waterfall: penalties > fees > interest > principal. Double-entry GL journal entries for all loan transactions."},{"name":"Platform Information","description":"Public endpoints describing platform capabilities, compliance posture, architecture, and FAQ. No authentication required."},{"name":"Payment Batches","description":"Bulk payment processing for salary runs, supplier payments, and mass disbursements. Upload batch items, validate individually, process in bulk. Status tracking per item. Supports ZIPIT and RTGS channels."},{"name":"Standing Orders","description":"Recurring transaction scheduling. Set up automatic transfers between accounts on daily, weekly, monthly, or custom frequencies. Supports internal transfers and external payments."},{"name":"Payments","description":"Payment module for ZIPIT (real-time interbank, up to USD 5,000), RTGS (high-value gross settlement, no limit), and mobile money (EcoCash, OneMoney, InnBucks). Full payment lifecycle: initiate, approve (maker-checker), process, confirm settlement, reverse. Payment instructions post double-entry GL entries to settlement accounts; live connectivity to the ZIPIT/RTGS and mobile-money switches is completed during implementation. Batch payments for salary and bulk disbursements. All 15 Zimbabwe commercial banks pre-configured with SWIFT/BIC reference codes."}],"paths":{"/v1/standing-orders/{id}/resume":{"put":{"tags":["Standing Orders"],"operationId":"resumeStandingOrder","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/StandingOrderResponse"}}}}}}},"/v1/standing-orders/{id}/pause":{"put":{"tags":["Standing Orders"],"operationId":"pauseStandingOrder","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/StandingOrderResponse"}}}}}}},"/v1/standing-orders/{id}/cancel":{"put":{"tags":["Standing Orders"],"operationId":"cancelStandingOrder","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/StandingOrderResponse"}}}}}}},"/v1/reconciliation/exceptions/{id}/resolve":{"put":{"tags":["Reconciliation"],"summary":"Resolve a reconciliation exception","operationId":"resolveException","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResolveExceptionRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ReconExceptionResponse"}}}}}}},"/v1/gl/accounts/{id}":{"put":{"tags":["General Ledger"],"summary":"Amend a GL account (code/type frozen once posted to)","operationId":"updateGlAccount","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateGlAccountRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/GlAccountResponse"}}}}}}},"/v1/treasury/reserves/calculate":{"post":{"tags":["Statutory Reserves"],"operationId":"calculateReserve","parameters":[{"name":"date","in":"query","required":true,"schema":{"type":"string","format":"date"}},{"name":"currency","in":"query","required":true,"schema":{"type":"string","enum":["USD","ZWG"]}},{"name":"calculatedBy","in":"query","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/StatutoryReserveResponse"}}}}}}},"/v1/treasury/investments":{"get":{"tags":["Investments"],"operationId":"listInvestments","parameters":[{"name":"type","in":"query","required":false,"schema":{"type":"string"}},{"name":"status","in":"query","required":false,"schema":{"type":"string"}},{"name":"currency","in":"query","required":false,"schema":{"type":"string","enum":["USD","ZWG"]}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/InvestmentResponse"}}}}}}},"post":{"tags":["Investments"],"operationId":"purchaseInvestment","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PurchaseInvestmentRequestDto"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/InvestmentResponse"}}}}}}},"/v1/treasury/investments/{id}/sell":{"post":{"tags":["Investments"],"operationId":"sellInvestment","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SellInvestmentRequestDto"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/InvestmentResponse"}}}}}}},"/v1/treasury/investments/{id}/mature":{"post":{"tags":["Investments"],"operationId":"matureInvestment","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MatureInvestmentRequestDto"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/InvestmentResponse"}}}}}}},"/v1/treasury/cash-flow/weekly":{"post":{"tags":["Cash Flow Forecasts"],"operationId":"generateWeeklyForecast","parameters":[{"name":"currency","in":"query","required":true,"schema":{"type":"string","enum":["USD","ZWG"]}},{"name":"branchId","in":"query","required":false,"schema":{"type":"string","format":"uuid"}},{"name":"weeks","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":12}},{"name":"generatedBy","in":"query","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CashFlowForecastResponse"}}}}}}}},"/v1/treasury/cash-flow/monthly":{"post":{"tags":["Cash Flow Forecasts"],"operationId":"generateMonthlyForecast","parameters":[{"name":"currency","in":"query","required":true,"schema":{"type":"string","enum":["USD","ZWG"]}},{"name":"branchId","in":"query","required":false,"schema":{"type":"string","format":"uuid"}},{"name":"months","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":12}},{"name":"generatedBy","in":"query","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CashFlowForecastResponse"}}}}}}}},"/v1/treasury/cash-flow/daily":{"post":{"tags":["Cash Flow Forecasts"],"operationId":"generateDailyForecast","parameters":[{"name":"currency","in":"query","required":true,"schema":{"type":"string","enum":["USD","ZWG"]}},{"name":"branchId","in":"query","required":false,"schema":{"type":"string","format":"uuid"}},{"name":"days","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":30}},{"name":"generatedBy","in":"query","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CashFlowForecastResponse"}}}}}}}},"/v1/treasury/alm/generate":{"post":{"tags":["ALM"],"operationId":"generatePosition","parameters":[{"name":"date","in":"query","required":true,"schema":{"type":"string","format":"date"}},{"name":"currency","in":"query","required":true,"schema":{"type":"string","enum":["USD","ZWG"]}},{"name":"generatedBy","in":"query","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/AlmPositionResponse"}}}}}}},"/v1/transactions":{"get":{"tags":["Transactions"],"summary":"Search transactions (paged, filterable)","operationId":"searchTransactions","parameters":[{"name":"from","in":"query","required":false,"schema":{"type":"string","format":"date"}},{"name":"to","in":"query","required":false,"schema":{"type":"string","format":"date"}},{"name":"type","in":"query","required":false,"schema":{"type":"string","enum":["DEPOSIT","WITHDRAWAL","TRANSFER","INTEREST_ACCRUAL","FEE","LOAN_DISBURSEMENT","LOAN_REPAYMENT","ADJUSTMENT","ZIPIT_SEND","ZIPIT_RECEIVE","RTGS_SEND","RTGS_RECEIVE","MOBILE_MONEY_SEND","MOBILE_MONEY_RECEIVE","SALARY_PAYMENT","BULK_PAYMENT","BILL_PAYMENT","PAYMENT_REVERSAL","INVESTMENT_PURCHASE","INVESTMENT_MATURITY","INVESTMENT_SALE","INVESTMENT_INTEREST"]}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["PENDING","POSTED","REVERSED"]}},{"name":"state","in":"query","required":false,"schema":{"type":"string","enum":["PENDING","POSTED","REVERSED"]}},{"name":"reference","in":"query","required":false,"schema":{"type":"string"}},{"name":"glAccountCode","in":"query","required":false,"schema":{"type":"string"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":0}},{"name":"size","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":25}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/PagedResponseTransactionResponse"}}}}}},"post":{"tags":["Transactions"],"operationId":"createTransaction","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateTransactionRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/TransactionResponse"}}}}}}},"/v1/transactions/{id}/reverse":{"post":{"tags":["Transactions"],"operationId":"reverseTransaction","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"reversedBy","in":"query","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/TransactionResponse"}}}}}}},"/v1/transactions/{id}/post":{"post":{"tags":["Transactions"],"operationId":"postTransaction","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/TransactionResponse"}}}}}}},"/v1/standing-orders":{"get":{"tags":["Standing Orders"],"operationId":"listStandingOrders","parameters":[{"name":"accountId","in":"query","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/StandingOrderResponse"}}}}}}},"post":{"tags":["Standing Orders"],"operationId":"createStandingOrder","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateStandingOrderRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/StandingOrderResponse"}}}}}}},"/v1/standing-orders/execute":{"post":{"tags":["Standing Orders"],"operationId":"executeStandingOrders","parameters":[{"name":"date","in":"query","required":true,"schema":{"type":"string","format":"date"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/StandingOrderExecutionResultResponse"}}}}}}},"/v1/screening/{id}/review":{"post":{"tags":["Screening"],"operationId":"reviewMatch","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReviewScreeningDto"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ScreeningRecordResponse"}}}}}}},"/v1/screening/watchlist":{"get":{"tags":["Screening"],"operationId":"searchWatchlist","parameters":[{"name":"name","in":"query","required":false,"schema":{"type":"string"}},{"name":"nationalId","in":"query","required":false,"schema":{"type":"string"}},{"name":"type","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/WatchlistEntryResponse"}}}}}}},"post":{"tags":["Screening"],"operationId":"addToWatchlist","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddWatchlistDto"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/WatchlistEntryResponse"}}}}}}},"/v1/screening/customer/{customerId}":{"get":{"tags":["Screening"],"operationId":"getScreeningHistory","parameters":[{"name":"customerId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ScreeningRecordResponse"}}}}}}},"post":{"tags":["Screening"],"operationId":"screenCustomer","parameters":[{"name":"customerId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScreenedByDto"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ScreeningRecordResponse"}}}}}}}},"/v1/reconciliation/definitions":{"get":{"tags":["Reconciliation"],"summary":"List reconciliation definitions","operationId":"listDefinitions","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ReconDefinitionResponse"}}}}}}},"post":{"tags":["Reconciliation"],"summary":"Create a new reconciliation definition","operationId":"createDefinition","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateReconDefinitionRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ReconDefinitionResponse"}}}}}}},"/v1/reconciliation/batches":{"get":{"tags":["Reconciliation"],"summary":"List reconciliation batches with optional filters","operationId":"listBatches","parameters":[{"name":"definitionId","in":"query","required":false,"schema":{"type":"string","format":"uuid"}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["PENDING","INGESTING","MATCHING","REVIEW","COMPLETED","FAILED"]}},{"name":"fromDate","in":"query","required":false,"schema":{"type":"string","format":"date"}},{"name":"toDate","in":"query","required":false,"schema":{"type":"string","format":"date"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ReconBatchResponse"}}}}}}},"post":{"tags":["Reconciliation"],"summary":"Create and run a reconciliation batch","operationId":"createBatch","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateReconBatchRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ReconBatchResponse"}}}}}}},"/v1/reconciliation/batches/{id}/run-matching":{"post":{"tags":["Reconciliation"],"summary":"Run the multi-pass matching engine on a batch","operationId":"runMatching","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"performedBy","in":"query","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ReconBatchResponse"}}}}}}},"/v1/reconciliation/batches/{id}/manual-match":{"post":{"tags":["Reconciliation"],"summary":"Manually match source and target items","operationId":"manualMatch","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ManualMatchRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"object"}}}}}}}},"/v1/reconciliation/batches/{id}/ingest-target":{"post":{"tags":["Reconciliation"],"summary":"Ingest target (internal CBS) items from CSV content","operationId":"ingestTarget","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"string"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"object"}}}}}}}},"/v1/reconciliation/batches/{id}/ingest-source":{"post":{"tags":["Reconciliation"],"summary":"Ingest source (external/switch) items from CSV content","operationId":"ingestSource","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"string"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"object"}}}}}}}},"/v1/reconciliation/batches/{id}/complete":{"post":{"tags":["Reconciliation"],"summary":"Mark a reviewed batch as completed","operationId":"completeBatch","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"performedBy","in":"query","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ReconBatchResponse"}}}}}}},"/v1/products":{"get":{"tags":["Deposit Products"],"operationId":"listProducts","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ProductResponse"}}}}}}},"post":{"tags":["Deposit Products"],"operationId":"createProduct","parameters":[{"name":"createdBy","in":"query","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateProductRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ProductResponse"}}}}}}},"/v1/periods/{id}/reopen":{"post":{"tags":["Periods"],"operationId":"reopenPeriod","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReopenPeriodRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApprovalRequestResponse"}}}}}}},"/v1/periods/year-end":{"post":{"tags":["Periods"],"operationId":"runYearEnd","parameters":[{"name":"year","in":"query","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"runBy","in":"query","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/YearEndResultResponse"}}}}}}},"/v1/periods/treasury-day-end":{"post":{"tags":["Periods"],"operationId":"runTreasuryDayEnd","parameters":[{"name":"date","in":"query","required":true,"schema":{"type":"string","format":"date"}},{"name":"runBy","in":"query","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/TreasuryDayEndResultResponse"}}}}}}},"/v1/periods/month-end":{"post":{"tags":["Periods"],"operationId":"runMonthEnd","parameters":[{"name":"yearMonth","in":"query","required":true,"schema":{"type":"string"}},{"name":"runBy","in":"query","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/MonthEndResultResponse"}}}}}}},"/v1/periods/day-end":{"post":{"tags":["Periods"],"operationId":"runDayEnd","parameters":[{"name":"date","in":"query","required":true,"schema":{"type":"string","format":"date"}},{"name":"runBy","in":"query","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/DayEndResultResponse"}}}}}}},"/v1/payments":{"get":{"tags":["Payments"],"operationId":"listPayments","parameters":[{"name":"accountId","in":"query","required":false,"schema":{"type":"string","format":"uuid"}},{"name":"type","in":"query","required":false,"schema":{"type":"string","enum":["INTERNAL_TRANSFER","ZIPIT_SEND","ZIPIT_RECEIVE","RTGS_SEND","RTGS_RECEIVE","MOBILE_MONEY_SEND","MOBILE_MONEY_RECEIVE","BILL_PAYMENT","SALARY_PAYMENT","BULK_PAYMENT"]}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["INITIATED","PENDING_APPROVAL","APPROVED","PROCESSING","SENT","COMPLETED","FAILED","REVERSED","TIMED_OUT","CANCELLED"]}},{"name":"from","in":"query","required":false,"schema":{"type":"string","format":"date"}},{"name":"to","in":"query","required":false,"schema":{"type":"string","format":"date"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/PaymentOrderResponse"}}}}}}},"post":{"tags":["Payments"],"operationId":"initiatePayment","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InitiatePaymentRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/PaymentOrderResponse"}}}}}}},"/v1/payments/{id}/reverse":{"post":{"tags":["Payments"],"operationId":"reversePayment","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReversePaymentRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/PaymentOrderResponse"}}}}}}},"/v1/payments/{id}/process":{"post":{"tags":["Payments"],"operationId":"processPayment","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/PaymentOrderResponse"}}}}}}},"/v1/payments/{id}/confirm-settlement":{"post":{"tags":["Payments"],"operationId":"confirmSettlement","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConfirmSettlementRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/PaymentOrderResponse"}}}}}}},"/v1/payments/{id}/cancel":{"post":{"tags":["Payments"],"operationId":"cancelPayment","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CancelPaymentRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/PaymentOrderResponse"}}}}}}},"/v1/payments/{id}/approve":{"post":{"tags":["Payments"],"operationId":"approvePayment","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApprovePaymentRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/PaymentOrderResponse"}}}}}}},"/v1/payments/receive":{"post":{"tags":["Payments"],"operationId":"receivePayment","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReceivePaymentRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/PaymentOrderResponse"}}}}}}},"/v1/payment-batches/{id}/submit":{"post":{"tags":["Payment Batches"],"operationId":"submitForApproval","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubmitBatchRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/PaymentBatchResponse"}}}}}}},"/v1/payment-batches/{id}/process":{"post":{"tags":["Payment Batches"],"operationId":"processBatch","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/PaymentBatchResponse"}}}}}}},"/v1/payment-batches/{id}/approve":{"post":{"tags":["Payment Batches"],"operationId":"approveBatch","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApproveBatchRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/PaymentBatchResponse"}}}}}}},"/v1/payment-batches/salary":{"post":{"tags":["Payment Batches"],"operationId":"createSalaryBatch","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSalaryBatchRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/PaymentBatchResponse"}}}}}}},"/v1/payment-batches/bulk":{"post":{"tags":["Payment Batches"],"operationId":"createBulkBatch","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateBulkBatchRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/PaymentBatchResponse"}}}}}}},"/v1/loans/{id}/write-off":{"post":{"tags":["Loans"],"summary":"Write off a loan","operationId":"writeOffLoan","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WriteOffLoanRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/LoanAccountResponse"}}}}}}},"/v1/loans/{id}/repay":{"post":{"tags":["Loans"],"summary":"Process a loan repayment","operationId":"processRepayment","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProcessRepaymentRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/LoanRepaymentResponse"}}}}}}},"/v1/loans/disburse":{"post":{"tags":["Loans"],"summary":"Disburse an approved loan","operationId":"disburseLoan","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DisburseLoanRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/LoanAccountResponse"}}}}}}},"/v1/loans/arrears/update":{"post":{"tags":["Loans"],"summary":"Update arrears for all active loans (daily batch)","operationId":"updateArrears","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"object"}}}}}}}},"/v1/loan-provisioning/run":{"post":{"tags":["Loan Provisioning"],"summary":"Run IFRS 9 provisioning for all active loans (incremental delta-based GL entries)","operationId":"runProvisioning","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunProvisioningRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"object"}}}}}}}},"/v1/loan-products":{"get":{"tags":["Loan Products"],"summary":"List all active loan products","operationId":"listProducts_1","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/LoanProductResponse"}}}}}}},"post":{"tags":["Loan Products"],"summary":"Create a new loan product","operationId":"createProduct_1","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateLoanProductRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/LoanProductResponse"}}}}}}},"/v1/loan-products/{id}/deactivate":{"post":{"tags":["Loan Products"],"summary":"Deactivate a loan product","operationId":"deactivateProduct","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"performedBy","in":"query","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/LoanProductResponse"}}}}}}},"/v1/loan-applications":{"get":{"tags":["Loan Applications"],"summary":"List loan applications by status","operationId":"listApplications","parameters":[{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["SUBMITTED","UNDER_REVIEW","ADDITIONAL_INFO_REQUIRED","PENDING_CHECKER_APPROVAL","APPROVED","REJECTED","DISBURSED","CANCELLED","EXPIRED"]}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/LoanApplicationResponse"}}}}}}},"post":{"tags":["Loan Applications"],"summary":"Submit a new loan application","operationId":"submitApplication","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubmitLoanApplicationRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/LoanApplicationResponse"}}}}}}},"/v1/loan-applications/{id}/review":{"post":{"tags":["Loan Applications"],"summary":"Move application to under review","operationId":"reviewApplication","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"reviewedBy","in":"query","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/LoanApplicationResponse"}}}}}}},"/v1/loan-applications/{id}/reject":{"post":{"tags":["Loan Applications"],"summary":"Reject a loan application","operationId":"rejectApplication","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RejectLoanApplicationRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/LoanApplicationResponse"}}}}}}},"/v1/loan-applications/{id}/checker-approve":{"post":{"tags":["Loan Applications"],"summary":"Checker confirms loan approval (dual-authorization)","operationId":"checkerApproveApplication","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"checkerId","in":"query","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/LoanApplicationResponse"}}}}}}},"/v1/loan-applications/{id}/approve":{"post":{"tags":["Loan Applications"],"summary":"Maker initiates loan approval (requires checker confirmation)","operationId":"approveApplication","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApproveLoanApplicationRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/LoanApplicationResponse"}}}}}}},"/v1/kyc":{"post":{"tags":["KYC"],"operationId":"initiateKyc","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InitiateKycDto"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/KycRecordResponse"}}}}}}},"/v1/kyc/{id}/submit":{"post":{"tags":["KYC"],"operationId":"submitForReview","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerformedByDto"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/KycRecordResponse"}}}}}}},"/v1/kyc/{id}/review":{"post":{"tags":["KYC"],"operationId":"reviewKyc","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReviewKycDto"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/KycRecordResponse"}}}}}}},"/v1/kyc/{id}/reject":{"post":{"tags":["KYC"],"operationId":"rejectKyc","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RejectKycDto"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/KycRecordResponse"}}}}}}},"/v1/kyc/{id}/external-checks":{"get":{"tags":["KYC"],"summary":"Latest stored external verification run for a KYC record","operationId":"getExternalChecks","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/KycExternalChecksResponse"}}}}}},"post":{"tags":["KYC"],"summary":"Run the external verification checks for a KYC record","operationId":"runExternalChecks","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerformedByDto"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/KycExternalChecksResponse"}}}}}}},"/v1/kyc/{id}/approve":{"post":{"tags":["KYC"],"operationId":"approveKyc","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApprovedByDto"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/KycRecordResponse"}}}}}}},"/v1/interest/capitalise":{"post":{"tags":["Interest"],"operationId":"runMonthlyCapitalisation","parameters":[{"name":"valueDate","in":"query","required":true,"schema":{"type":"string","format":"date"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/InterestCapitalisationResultResponse"}}}}}}},"/v1/interest/accrue":{"post":{"tags":["Interest"],"operationId":"runDayEndAccrual","parameters":[{"name":"valueDate","in":"query","required":true,"schema":{"type":"string","format":"date"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/InterestAccrualResultResponse"}}}}}}},"/v1/gl/accounts":{"get":{"tags":["General Ledger"],"operationId":"listGlAccounts","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/GlAccountResponse"}}}}}}},"post":{"tags":["General Ledger"],"summary":"Create a GL account (structural config, no money movement)","operationId":"createGlAccount","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateGlAccountRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/GlAccountResponse"}}}}}}},"/v1/gl/accounts/import":{"post":{"tags":["General Ledger"],"summary":"Bulk-create GL accounts (all-or-nothing)","operationId":"importGlAccounts","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImportGlAccountsRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ImportGlAccountsResponse"}}}}}}},"/v1/exchange-rates":{"get":{"tags":["Exchange Rates"],"operationId":"getRate","parameters":[{"name":"from","in":"query","required":true,"schema":{"type":"string","enum":["USD","ZWG"]}},{"name":"to","in":"query","required":true,"schema":{"type":"string","enum":["USD","ZWG"]}},{"name":"date","in":"query","required":true,"schema":{"type":"string","format":"date"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ExchangeRateResponse"}}}}}},"post":{"tags":["Exchange Rates"],"operationId":"setRate","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateExchangeRateRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ExchangeRateResponse"}}}}}}},"/v1/exchange-rates/convert":{"post":{"tags":["Exchange Rates"],"operationId":"convert","parameters":[{"name":"fromCurrency","in":"query","required":true,"schema":{"type":"string","enum":["USD","ZWG"]}},{"name":"toCurrency","in":"query","required":true,"schema":{"type":"string","enum":["USD","ZWG"]}},{"name":"amountCents","in":"query","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"date","in":"query","required":true,"schema":{"type":"string","format":"date"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ConversionResponse"}}}}}}},"/v1/customers":{"get":{"tags":["Customers"],"summary":"Customer directory (paged) or exact national-ID lookup","operationId":"listCustomers","parameters":[{"name":"nationalId","in":"query","required":false,"schema":{"type":"string"}},{"name":"q","in":"query","required":false,"schema":{"type":"string"}},{"name":"isPep","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":0}},{"name":"size","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":25}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}},"post":{"tags":["Customers"],"operationId":"createCustomer","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCustomerRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/CustomerResponse"}}}}}}},"/v1/compliance/returns/{id}/submit":{"post":{"tags":["Prudential Returns"],"operationId":"submitReturn","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/PrudentialReturnResponse"}}}}}}},"/v1/compliance/returns/{id}/review":{"post":{"tags":["Prudential Returns"],"operationId":"reviewReturn","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReviewReturnDto"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/PrudentialReturnResponse"}}}}}}},"/v1/compliance/returns/liquidity-ratio":{"post":{"tags":["Prudential Returns"],"operationId":"generateLiquidityRatio","parameters":[{"name":"periodEnd","in":"query","required":true,"schema":{"type":"string","format":"date"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerformedByDto"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/PrudentialReturnResponse"}}}}}}},"/v1/compliance/returns/large-exposure":{"post":{"tags":["Prudential Returns"],"operationId":"generateLargeExposure","parameters":[{"name":"periodEnd","in":"query","required":true,"schema":{"type":"string","format":"date"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerformedByDto"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/PrudentialReturnResponse"}}}}}}},"/v1/compliance/returns/deposit-return":{"post":{"tags":["Prudential Returns"],"operationId":"generateDepositReturn","parameters":[{"name":"from","in":"query","required":true,"schema":{"type":"string","format":"date"}},{"name":"to","in":"query","required":true,"schema":{"type":"string","format":"date"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerformedByDto"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/PrudentialReturnResponse"}}}}}}},"/v1/compliance/returns/capital-adequacy":{"post":{"tags":["Prudential Returns"],"operationId":"generateCapitalAdequacy","parameters":[{"name":"periodEnd","in":"query","required":true,"schema":{"type":"string","format":"date"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerformedByDto"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/PrudentialReturnResponse"}}}}}}},"/v1/compliance/returns/aml-statistics":{"post":{"tags":["Prudential Returns"],"operationId":"generateAmlStatistics","parameters":[{"name":"from","in":"query","required":true,"schema":{"type":"string","format":"date"}},{"name":"to","in":"query","required":true,"schema":{"type":"string","format":"date"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerformedByDto"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/PrudentialReturnResponse"}}}}}}},"/v1/compliance/reports/ttr/file-pending":{"post":{"tags":["Compliance Reports"],"operationId":"filePendingTtrs","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"integer","format":"int32"}}}}}}}},"/v1/compliance/reports/str":{"get":{"tags":["Compliance Reports"],"operationId":"listStrs","parameters":[{"name":"status","in":"query","required":false,"schema":{"type":"string"}},{"name":"from","in":"query","required":false,"schema":{"type":"string","format":"date"}},{"name":"to","in":"query","required":false,"schema":{"type":"string","format":"date"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/StrResponse"}}}}}}},"post":{"tags":["Compliance Reports"],"operationId":"createStr","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateStrDto"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/StrResponse"}}}}}}},"/v1/compliance/reports/str/{id}/review":{"post":{"tags":["Compliance Reports"],"operationId":"reviewStr","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReviewStrDto"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/StrResponse"}}}}}}},"/v1/compliance/reports/str/{id}/file":{"post":{"tags":["Compliance Reports"],"operationId":"fileStr","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/StrResponse"}}}}}}},"/v1/compliance/reports/str/{id}/approve":{"post":{"tags":["Compliance Reports"],"operationId":"approveStr","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApproveStrDto"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/StrResponse"}}}}}}},"/v1/branches":{"get":{"tags":["Branches"],"operationId":"listBranches","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/BranchResponse"}}}}}}},"post":{"tags":["Branches"],"operationId":"createBranch","parameters":[{"name":"createdBy","in":"query","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateBranchRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/BranchResponse"}}}}}}},"/v1/beneficiaries":{"get":{"tags":["Beneficiaries"],"operationId":"listBeneficiaries","parameters":[{"name":"customerId","in":"query","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/BeneficiaryResponse"}}}}}}},"post":{"tags":["Beneficiaries"],"operationId":"addBeneficiary","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddBeneficiaryRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/BeneficiaryResponse"}}}}}}},"/v1/beneficial-owners":{"post":{"tags":["Beneficial Owners"],"operationId":"addBeneficialOwner","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddBeneficialOwnerDto"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/BeneficialOwnerResponse"}}}}}}},"/v1/beneficial-owners/{id}/verify":{"post":{"tags":["Beneficial Owners"],"operationId":"verifyOwner","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyOwnerDto"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/BeneficialOwnerResponse"}}}}}}},"/v1/approvals":{"get":{"tags":["Maker-Checker Approvals"],"operationId":"listApprovals","parameters":[{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["PENDING_APPROVAL","APPROVED","REJECTED","EXPIRED"]}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ApprovalRequestResponse"}}}}}}},"post":{"tags":["Maker-Checker Approvals"],"operationId":"createApprovalRequest","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateApprovalRequestDto"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApprovalRequestResponse"}}}}}}},"/v1/approvals/{id}/reject":{"post":{"tags":["Maker-Checker Approvals"],"operationId":"rejectRequest","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApprovalDecisionDto"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApprovalRequestResponse"}}}}}}},"/v1/approvals/{id}/approve":{"post":{"tags":["Maker-Checker Approvals"],"operationId":"approveRequest","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApprovalDecisionDto"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApprovalRequestResponse"}}}}}}},"/v1/api-keys":{"get":{"tags":["API Keys"],"operationId":"listApiKeys","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ApiKeyResponse"}}}}}}},"post":{"tags":["API Keys"],"operationId":"createApiKey","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateApiKeyRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/CreateApiKeyResponse"}}}}}}},"/v1/alerts/{id}/investigate":{"post":{"tags":["Alerts"],"operationId":"addInvestigationNotes","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvestigationNotesDto"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/TransactionAlertResponse"}}}}}}},"/v1/alerts/{id}/file-str":{"post":{"tags":["Alerts"],"operationId":"fileStr_1","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FileStrFromAlertDto"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/StrResponse"}}}}}}},"/v1/alerts/{id}/escalate":{"post":{"tags":["Alerts"],"operationId":"escalateAlert","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EscalateAlertDto"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/TransactionAlertResponse"}}}}}}},"/v1/alerts/{id}/dismiss":{"post":{"tags":["Alerts"],"operationId":"dismissAlert","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DismissAlertDto"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/TransactionAlertResponse"}}}}}}},"/v1/alerts/{id}/close":{"post":{"tags":["Alerts"],"operationId":"closeAlert","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloseAlertDto"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/TransactionAlertResponse"}}}}}}},"/v1/alerts/{id}/assign":{"post":{"tags":["Alerts"],"operationId":"assignAlert","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssignAlertDto"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/TransactionAlertResponse"}}}}}}},"/v1/accounts":{"get":{"tags":["Accounts"],"summary":"Browse accounts (paged, filterable)","operationId":"listAccounts","parameters":[{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["PENDING_ACTIVATION","ACTIVE","DORMANT","FROZEN","CLOSED"]}},{"name":"accountType","in":"query","required":false,"schema":{"type":"string","enum":["SAVINGS","CURRENT","FIXED_DEPOSIT","CALL_DEPOSIT","YOUTH_SAVINGS","GROUP_SAVINGS","SME_BUSINESS","AGENT_FLOAT","TRUST","SALARY_SAVINGS"]}},{"name":"currency","in":"query","required":false,"schema":{"type":"string","enum":["USD","ZWG"]}},{"name":"customerId","in":"query","required":false,"schema":{"type":"string","format":"uuid"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":0}},{"name":"size","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":25}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/PagedResponseAccountResponse"}}}}}},"post":{"tags":["Accounts"],"operationId":"openAccount","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAccountRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/AccountResponse"}}}}}}},"/v1/accounts/{sourceId}/transfer":{"post":{"tags":["Accounts"],"operationId":"transfer","parameters":[{"name":"sourceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransferRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/TransactionResponse"}}}}}}},"/v1/accounts/{id}/withdraw":{"post":{"tags":["Accounts"],"operationId":"withdraw","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WithdrawRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/TransactionResponse"}}}}}}},"/v1/accounts/{id}/unfreeze":{"post":{"tags":["Accounts"],"operationId":"unfreezeAccount","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountActionRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/AccountResponse"}}}}}}},"/v1/accounts/{id}/reactivate":{"post":{"tags":["Accounts"],"operationId":"reactivateAccount","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountActionRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/AccountResponse"}}}}}}},"/v1/accounts/{id}/freeze":{"post":{"tags":["Accounts"],"operationId":"freezeAccount","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountActionRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApprovalRequestResponse"}}}}}}},"/v1/accounts/{id}/deposit":{"post":{"tags":["Accounts"],"operationId":"deposit","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DepositRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/TransactionResponse"}}}}}}},"/v1/accounts/{id}/close":{"post":{"tags":["Accounts"],"operationId":"closeAccount","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountActionRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApprovalRequestResponse"}}}}}}},"/v1/accounts/{id}/activate":{"post":{"tags":["Accounts"],"operationId":"activateAccount","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountActionRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/AccountResponse"}}}}}}},"/v1/accounts/dormancy-check":{"post":{"tags":["Accounts"],"operationId":"runDormancyCheck","parameters":[{"name":"referenceDate","in":"query","required":true,"schema":{"type":"string","format":"date"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/DormancyCheckResultResponse"}}}}}}},"/v1/treasury/reserves":{"get":{"tags":["Statutory Reserves"],"operationId":"getReserveHistory","parameters":[{"name":"from","in":"query","required":true,"schema":{"type":"string","format":"date"}},{"name":"to","in":"query","required":true,"schema":{"type":"string","format":"date"}},{"name":"currency","in":"query","required":true,"schema":{"type":"string","enum":["USD","ZWG"]}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/StatutoryReserveResponse"}}}}}}}},"/v1/treasury/reserves/compliance":{"get":{"tags":["Statutory Reserves"],"operationId":"getComplianceStatus","parameters":[{"name":"currency","in":"query","required":true,"schema":{"type":"string","enum":["USD","ZWG"]}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ReserveComplianceResponse"}}}}}}},"/v1/treasury/investments/{id}":{"get":{"tags":["Investments"],"operationId":"getInvestment","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/InvestmentResponse"}}}}}}},"/v1/treasury/investments/portfolio":{"get":{"tags":["Investments"],"operationId":"getPortfolioSummary","parameters":[{"name":"currency","in":"query","required":false,"schema":{"type":"string","enum":["USD","ZWG"]}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/InvestmentPortfolioSummaryResponse"}}}}}}},"/v1/treasury/investments/maturing":{"get":{"tags":["Investments"],"operationId":"getMaturing","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":30}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/InvestmentResponse"}}}}}}}},"/v1/treasury/dashboard":{"get":{"tags":["Treasury"],"operationId":"getDashboard","parameters":[{"name":"date","in":"query","required":true,"schema":{"type":"string","format":"date"}},{"name":"currency","in":"query","required":true,"schema":{"type":"string","enum":["USD","ZWG"]}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/TreasuryDashboardResponse"}}}}}}},"/v1/treasury/dashboard/history":{"get":{"tags":["Treasury"],"operationId":"getDashboardHistory","parameters":[{"name":"from","in":"query","required":true,"schema":{"type":"string","format":"date"}},{"name":"to","in":"query","required":true,"schema":{"type":"string","format":"date"}},{"name":"currency","in":"query","required":true,"schema":{"type":"string","enum":["USD","ZWG"]}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/TreasuryDashboardResponse"}}}}}}}},"/v1/treasury/cash-flow":{"get":{"tags":["Cash Flow Forecasts"],"operationId":"getForecasts","parameters":[{"name":"from","in":"query","required":true,"schema":{"type":"string","format":"date"}},{"name":"to","in":"query","required":true,"schema":{"type":"string","format":"date"}},{"name":"currency","in":"query","required":true,"schema":{"type":"string","enum":["USD","ZWG"]}},{"name":"branchId","in":"query","required":false,"schema":{"type":"string","format":"uuid"}},{"name":"horizon","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CashFlowForecastResponse"}}}}}}}},"/v1/treasury/cash-flow/accuracy":{"get":{"tags":["Cash Flow Forecasts"],"operationId":"getForecastAccuracy","parameters":[{"name":"from","in":"query","required":true,"schema":{"type":"string","format":"date"}},{"name":"to","in":"query","required":true,"schema":{"type":"string","format":"date"}},{"name":"currency","in":"query","required":true,"schema":{"type":"string","enum":["USD","ZWG"]}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ForecastAccuracyResponse"}}}}}}},"/v1/treasury/alm":{"get":{"tags":["ALM"],"operationId":"getPositions","parameters":[{"name":"from","in":"query","required":true,"schema":{"type":"string","format":"date"}},{"name":"to","in":"query","required":true,"schema":{"type":"string","format":"date"}},{"name":"currency","in":"query","required":true,"schema":{"type":"string","enum":["USD","ZWG"]}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AlmPositionResponse"}}}}}}}},"/v1/treasury/alm/sensitivity":{"get":{"tags":["ALM"],"operationId":"getInterestRateSensitivity","parameters":[{"name":"date","in":"query","required":true,"schema":{"type":"string","format":"date"}},{"name":"currency","in":"query","required":true,"schema":{"type":"string","enum":["USD","ZWG"]}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/InterestRateSensitivityResponse"}}}}}}},"/v1/treasury/alm/funding-gap":{"get":{"tags":["ALM"],"operationId":"getFundingGapAnalysis","parameters":[{"name":"date","in":"query","required":true,"schema":{"type":"string","format":"date"}},{"name":"currency","in":"query","required":true,"schema":{"type":"string","enum":["USD","ZWG"]}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/FundingGapAnalysisResponse"}}}}}}},"/v1/transactions/{id}":{"get":{"tags":["Transactions"],"operationId":"getTransaction","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/TransactionResponse"}}}}}}},"/v1/standing-orders/{id}":{"get":{"tags":["Standing Orders"],"operationId":"getStandingOrder","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/StandingOrderResponse"}}}}}}},"/v1/reports/sofp":{"get":{"tags":["Financial Reports"],"operationId":"getSOFP","parameters":[{"name":"asOf","in":"query","required":true,"schema":{"type":"string","format":"date"}},{"name":"branchId","in":"query","required":false,"schema":{"type":"string","format":"uuid"}},{"name":"currency","in":"query","required":false,"schema":{"type":"string","enum":["USD","ZWG"],"default":"USD"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/StatementOfFinancialPosition"}}}}}}},"/v1/reports/income-statement":{"get":{"tags":["Financial Reports"],"operationId":"getIncomeStatement","parameters":[{"name":"from","in":"query","required":true,"schema":{"type":"string","format":"date"}},{"name":"to","in":"query","required":true,"schema":{"type":"string","format":"date"}},{"name":"branchId","in":"query","required":false,"schema":{"type":"string","format":"uuid"}},{"name":"currency","in":"query","required":false,"schema":{"type":"string","enum":["USD","ZWG"],"default":"USD"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/IncomeStatement"}}}}}}},"/v1/reports/cash-flow":{"get":{"tags":["Financial Reports"],"operationId":"getCashFlow","parameters":[{"name":"from","in":"query","required":true,"schema":{"type":"string","format":"date"}},{"name":"to","in":"query","required":true,"schema":{"type":"string","format":"date"}},{"name":"branchId","in":"query","required":false,"schema":{"type":"string","format":"uuid"}},{"name":"currency","in":"query","required":false,"schema":{"type":"string","enum":["USD","ZWG"],"default":"USD"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/CashFlowStatement"}}}}}}},"/v1/reconciliation/suspense":{"get":{"tags":["Reconciliation"],"summary":"Suspense account aging report","operationId":"suspenseAgingReport","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/SuspenseAgingReportResponse"}}}}}}},"/v1/reconciliation/suspense/{type}":{"get":{"tags":["Reconciliation"],"summary":"Suspense items by type (ZIMSWITCH, ZETSS, ECOCASH, etc.)","operationId":"suspenseByType","parameters":[{"name":"type","in":"path","required":true,"schema":{"type":"string","enum":["ZIMSWITCH","ZETSS","ECOCASH","ONEMONEY","INNBUCKS","ATM","GENERAL"]}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/SuspenseItemResponse"}}}}}}}},"/v1/reconciliation/reports/match-rate":{"get":{"tags":["Reconciliation"],"summary":"Match rate KPIs over time","operationId":"matchRateKpis","parameters":[{"name":"fromDate","in":"query","required":true,"schema":{"type":"string","format":"date"}},{"name":"toDate","in":"query","required":true,"schema":{"type":"string","format":"date"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/MatchRateKpis"}}}}}}},"/v1/reconciliation/reports/daily-summary":{"get":{"tags":["Reconciliation"],"summary":"Daily reconciliation summary report","operationId":"dailySummary","parameters":[{"name":"date","in":"query","required":true,"schema":{"type":"string","format":"date"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/DailyReconciliationSummary"}}}}}}},"/v1/reconciliation/batches/{id}":{"get":{"tags":["Reconciliation"],"summary":"Get reconciliation batch detail with match/exception summary","operationId":"getBatch","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ReconBatchResponse"}}}}}}},"/v1/reconciliation/batches/{id}/exceptions":{"get":{"tags":["Reconciliation"],"summary":"List exceptions for a reconciliation batch","operationId":"listBatchExceptions","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ReconExceptionResponse"}}}}}}}},"/v1/platform":{"get":{"tags":["Platform Information"],"summary":"Platform overview","description":"Returns full platform capabilities, module list, and statistics.","operationId":"overview","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"object"}}}}}},"security":[]}},"/v1/platform/faq":{"get":{"tags":["Platform Information"],"summary":"Prospect FAQ","description":"Frequently asked questions from prospective clients covering implementation, pricing, migration, and support.","operationId":"faq","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"array","items":{"type":"object","additionalProperties":{"type":"object"}}}}}}}},"security":[]}},"/v1/platform/compliance":{"get":{"tags":["Platform Information"],"summary":"Compliance matrix","description":"Maps platform capabilities to regulatory requirements. Covers RBZ, FATF, and international banking standards.","operationId":"compliance","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"object"}}}}}},"security":[]}},"/v1/platform/banks":{"get":{"tags":["Platform Information"],"summary":"Integrated banks","description":"List of pre-configured Zimbabwe bank integrations for ZIPIT and RTGS payments.","operationId":"banks","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"object"}}}}}},"security":[]}},"/v1/platform/architecture":{"get":{"tags":["Platform Information"],"summary":"Architecture details","description":"Technical architecture, security controls, deployment model, and disaster recovery posture.","operationId":"architecture","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"object","additionalProperties":{"type":"object"}}}}}}},"security":[]}},"/v1/periods":{"get":{"tags":["Periods"],"operationId":"listPeriods","parameters":[{"name":"type","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AccountingPeriodResponse"}}}}}}}},"/v1/periods/{id}":{"get":{"tags":["Periods"],"operationId":"getPeriod","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/AccountingPeriodResponse"}}}}}}},"/v1/payments/{id}":{"get":{"tags":["Payments"],"operationId":"getPayment","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/PaymentOrderResponse"}}}}}}},"/v1/payments/reference/{ref}":{"get":{"tags":["Payments"],"operationId":"getPaymentByReference","parameters":[{"name":"ref","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/PaymentOrderResponse"}}}}}}},"/v1/payment-batches":{"get":{"tags":["Payment Batches"],"operationId":"listBatches_1","parameters":[{"name":"accountId","in":"query","required":false,"schema":{"type":"string","format":"uuid"}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["DRAFT","PENDING_APPROVAL","APPROVED","PROCESSING","COMPLETED","PARTIAL","FAILED"]}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/PaymentBatchResponse"}}}}}}}},"/v1/payment-batches/{id}":{"get":{"tags":["Payment Batches"],"operationId":"getBatch_1","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/PaymentBatchResponse"}}}}}}},"/v1/loans":{"get":{"tags":["Loans"],"summary":"List loans by status","operationId":"listLoans","parameters":[{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["ACTIVE","CLOSED","DEFAULTED","WRITTEN_OFF","RESTRUCTURED","RESCHEDULED"]}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/LoanAccountResponse"}}}}}}}},"/v1/loans/{id}":{"get":{"tags":["Loans"],"summary":"Get loan account details","operationId":"getLoan","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/LoanAccountResponse"}}}}}}},"/v1/loans/{id}/schedule":{"get":{"tags":["Loans"],"summary":"Get amortization schedule for a loan","operationId":"getSchedule","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/LoanScheduleResponse"}}}}}}}},"/v1/loans/{id}/repayments":{"get":{"tags":["Loans"],"summary":"List repayments for a loan","operationId":"getRepayments","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/LoanRepaymentResponse"}}}}}}}},"/v1/loans/number/{loanNumber}":{"get":{"tags":["Loans"],"summary":"Get loan by human-readable loan number","operationId":"getLoanByNumber","parameters":[{"name":"loanNumber","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/LoanAccountResponse"}}}}}}},"/v1/loans/customer/{customerId}":{"get":{"tags":["Loans"],"summary":"List loans for a customer","operationId":"listByCustomer","parameters":[{"name":"customerId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/LoanAccountResponse"}}}}}}}},"/v1/loans/arrears/aging":{"get":{"tags":["Loans"],"summary":"Get loan arrears aging report","operationId":"getAgingReport","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"object"}}}}}}}},"/v1/loan-provisioning/report":{"get":{"tags":["Loan Provisioning"],"summary":"Get provisioning report for a date","operationId":"getReport","parameters":[{"name":"asOf","in":"query","required":true,"schema":{"type":"string","format":"date"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"object"}}}}}}}},"/v1/loan-provisioning/loan/{loanAccountId}/history":{"get":{"tags":["Loan Provisioning"],"summary":"Get provisioning history for a specific loan","operationId":"getLoanProvisioningHistory","parameters":[{"name":"loanAccountId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/LoanProvisioningResponse"}}}}}}}},"/v1/loan-products/{id}":{"get":{"tags":["Loan Products"],"summary":"Get loan product details","operationId":"getProduct","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/LoanProductResponse"}}}}}}},"/v1/loan-products/all":{"get":{"tags":["Loan Products"],"summary":"List all loan products including inactive","operationId":"listAllProducts","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/LoanProductResponse"}}}}}}}},"/v1/loan-applications/{id}":{"get":{"tags":["Loan Applications"],"summary":"Get loan application details","operationId":"getApplication","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/LoanApplicationResponse"}}}}}}},"/v1/loan-applications/customer/{customerId}":{"get":{"tags":["Loan Applications"],"summary":"List loan applications for a customer","operationId":"listByCustomer_1","parameters":[{"name":"customerId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/LoanApplicationResponse"}}}}}}}},"/v1/kyc/{id}":{"get":{"tags":["KYC"],"operationId":"getKycRecord","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/KycRecordResponse"}}}}}}},"/v1/kyc/expiring":{"get":{"tags":["KYC"],"operationId":"getExpiringKyc","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":30}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/KycRecordResponse"}}}}}}}},"/v1/kyc/customer/{customerId}":{"get":{"tags":["KYC"],"operationId":"getCustomerKycRecords","parameters":[{"name":"customerId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/KycRecordResponse"}}}}}}}},"/v1/interest/accrual-summary":{"get":{"tags":["Interest"],"operationId":"getAccrualSummary","parameters":[{"name":"date","in":"query","required":true,"schema":{"type":"string","format":"date"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/InterestAccrualResponse"}}}}}}}},"/v1/gl/trial-balance":{"get":{"tags":["General Ledger"],"operationId":"getTrialBalance","parameters":[{"name":"asOf","in":"query","required":false,"schema":{"type":"string","format":"date"}},{"name":"branchId","in":"query","required":false,"schema":{"type":"string","format":"uuid"}},{"name":"currency","in":"query","required":false,"schema":{"type":"string","enum":["USD","ZWG"]}},{"name":"compareTo","in":"query","required":false,"schema":{"type":"string","format":"date"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/v1/gl/journal-entries":{"get":{"tags":["General Ledger"],"operationId":"searchJournalEntries","parameters":[{"name":"from","in":"query","required":true,"schema":{"type":"string","format":"date"}},{"name":"to","in":"query","required":true,"schema":{"type":"string","format":"date"}},{"name":"glAccountCode","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/JournalEntryResponse"}}}}}}}},"/v1/gl/journal-entries/{transactionId}":{"get":{"tags":["General Ledger"],"operationId":"getJournalEntriesByTransaction","parameters":[{"name":"transactionId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/JournalEntryResponse"}}}}}}}},"/v1/gl/accounts/{id}/balance":{"get":{"tags":["General Ledger"],"operationId":"getGlBalance","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/GlBalanceResponse"}}}}}}},"/v1/gl/account-statement":{"get":{"tags":["General Ledger"],"operationId":"getGlAccountStatement","parameters":[{"name":"glAccountId","in":"query","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"from","in":"query","required":true,"schema":{"type":"string","format":"date"}},{"name":"to","in":"query","required":true,"schema":{"type":"string","format":"date"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/GlAccountStatementResponse"}}}}}}},"/v1/exchange-rates/history":{"get":{"tags":["Exchange Rates"],"operationId":"getHistoricalRates","parameters":[{"name":"from","in":"query","required":true,"schema":{"type":"string","enum":["USD","ZWG"]}},{"name":"to","in":"query","required":true,"schema":{"type":"string","enum":["USD","ZWG"]}},{"name":"startDate","in":"query","required":true,"schema":{"type":"string","format":"date"}},{"name":"endDate","in":"query","required":true,"schema":{"type":"string","format":"date"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ExchangeRateResponse"}}}}}}}},"/v1/customers/{id}":{"get":{"tags":["Customers"],"operationId":"getCustomer","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/CustomerResponse"}}}}}}},"/v1/compliance/returns":{"get":{"tags":["Prudential Returns"],"operationId":"listReturns","parameters":[{"name":"type","in":"query","required":false,"schema":{"type":"string"}},{"name":"status","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/PrudentialReturnResponse"}}}}}}}},"/v1/compliance/reports/ttr":{"get":{"tags":["Compliance Reports"],"operationId":"listTtrs","parameters":[{"name":"status","in":"query","required":false,"schema":{"type":"string"}},{"name":"from","in":"query","required":false,"schema":{"type":"string","format":"date"}},{"name":"to","in":"query","required":false,"schema":{"type":"string","format":"date"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/TtrResponse"}}}}}}}},"/v1/compliance/reports/statistics":{"get":{"tags":["Compliance Reports"],"operationId":"getReportingStatistics","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ReportingStatistics"}}}}}}},"/v1/branches/{id}":{"get":{"tags":["Branches"],"operationId":"getBranch","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/BranchResponse"}}}}}}},"/v1/branches/code/{code}":{"get":{"tags":["Branches"],"operationId":"getBranchByCode","parameters":[{"name":"code","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/BranchResponse"}}}}}}},"/v1/beneficiaries/{id}":{"get":{"tags":["Beneficiaries"],"operationId":"getBeneficiary","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/BeneficiaryResponse"}}}}}},"delete":{"tags":["Beneficiaries"],"operationId":"deactivateBeneficiary","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"deactivatedBy","in":"query","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/BeneficiaryResponse"}}}}}}},"/v1/beneficial-owners/customer/{customerId}":{"get":{"tags":["Beneficial Owners"],"operationId":"getBeneficialOwners","parameters":[{"name":"customerId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/BeneficialOwnerResponse"}}}}}}}},"/v1/beneficial-owners/customer/{customerId}/validation":{"get":{"tags":["Beneficial Owners"],"operationId":"validateOwnershipCoverage","parameters":[{"name":"customerId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/OwnershipValidationResponse"}}}}}}},"/v1/audit":{"get":{"tags":["Audit"],"summary":"Search the audit trail (paged, read-only)","operationId":"searchAuditLogs","parameters":[{"name":"entityType","in":"query","required":false,"schema":{"type":"string"}},{"name":"entityId","in":"query","required":false,"schema":{"type":"string","format":"uuid"}},{"name":"performedBy","in":"query","required":false,"schema":{"type":"string","format":"uuid"}},{"name":"action","in":"query","required":false,"schema":{"type":"string","enum":["CREATE","UPDATE","DELETE","STATE_CHANGE"]}},{"name":"from","in":"query","required":false,"schema":{"type":"string","format":"date"}},{"name":"to","in":"query","required":false,"schema":{"type":"string","format":"date"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":0}},{"name":"size","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":25}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/PagedResponseAuditLogResponse"}}}}}}},"/v1/approvals/{id}":{"get":{"tags":["Maker-Checker Approvals"],"operationId":"getApproval","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApprovalRequestResponse"}}}}}}},"/v1/alerts":{"get":{"tags":["Alerts"],"operationId":"listAlerts","parameters":[{"name":"status","in":"query","required":false,"schema":{"type":"string"}},{"name":"severity","in":"query","required":false,"schema":{"type":"string"}},{"name":"customerId","in":"query","required":false,"schema":{"type":"string","format":"uuid"}},{"name":"assignedTo","in":"query","required":false,"schema":{"type":"string","format":"uuid"}},{"name":"from","in":"query","required":false,"schema":{"type":"string","format":"date"}},{"name":"to","in":"query","required":false,"schema":{"type":"string","format":"date"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/TransactionAlertResponse"}}}}}}}},"/v1/alerts/{id}":{"get":{"tags":["Alerts"],"operationId":"getAlert","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/TransactionAlertResponse"}}}}}}},"/v1/alerts/statistics":{"get":{"tags":["Alerts"],"operationId":"getAlertStatistics","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/AlertStatistics"}}}}}}},"/v1/accounts/{id}":{"get":{"tags":["Accounts"],"operationId":"getAccount","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/AccountResponse"}}}}}}},"/v1/accounts/{id}/transactions":{"get":{"tags":["Accounts"],"operationId":"getAccountTransactions","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/TransactionResponse"}}}}}}}},"/v1/accounts/{id}/interest-accruals":{"get":{"tags":["Accounts"],"operationId":"getAccountInterestAccruals","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/InterestAccrualResponse"}}}}}}}},"/v1/accounts/number/{accountNumber}":{"get":{"tags":["Accounts"],"operationId":"getAccountByNumber","parameters":[{"name":"accountNumber","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/AccountResponse"}}}}}}},"/v1/accounts/customer/{customerId}":{"get":{"tags":["Accounts"],"operationId":"getAccountsByCustomer","parameters":[{"name":"customerId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AccountResponse"}}}}}}}},"/v1/screening/watchlist/{id}":{"delete":{"tags":["Screening"],"operationId":"removeFromWatchlist","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"removedBy","in":"query","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/WatchlistEntryResponse"}}}}}}},"/v1/beneficial-owners/{id}":{"delete":{"tags":["Beneficial Owners"],"operationId":"removeBeneficialOwner","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"removedBy","in":"query","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/BeneficialOwnerResponse"}}}}}}},"/v1/api-keys/{id}":{"delete":{"tags":["API Keys"],"operationId":"revokeApiKey","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}}}}}},"components":{"schemas":{"StandingOrderResponse":{"required":["amountCents","amountDecimal","createdAt","createdBy","currency","executionCount","frequency","id","nextExecutionDate","sourceAccountId","sourceAccountNumber","status","targetAccountId","targetAccountNumber"],"type":"object","properties":{"id":{"type":"string","format":"uuid"},"sourceAccountId":{"type":"string","format":"uuid"},"sourceAccountNumber":{"type":"string"},"targetAccountId":{"type":"string","format":"uuid"},"targetAccountNumber":{"type":"string"},"amountCents":{"type":"integer","format":"int64"},"amountDecimal":{"type":"number"},"currency":{"type":"string","enum":["USD","ZWG"]},"frequency":{"type":"string","enum":["DAILY","WEEKLY","MONTHLY","QUARTERLY"]},"nextExecutionDate":{"type":"string","format":"date"},"lastExecutedAt":{"type":"string","format":"date-time"},"description":{"type":"string"},"status":{"type":"string","enum":["ACTIVE","PAUSED","CANCELLED","COMPLETED"]},"maxExecutions":{"type":"integer","format":"int32"},"executionCount":{"type":"integer","format":"int32"},"endDate":{"type":"string","format":"date"},"createdBy":{"type":"string","format":"uuid"},"createdAt":{"type":"string","format":"date-time"}}},"ResolveExceptionRequest":{"required":["resolutionNotes","resolutionType","resolvedBy"],"type":"object","properties":{"resolutionType":{"type":"string","enum":["MANUAL_MATCH","JOURNAL_ADJUSTMENT","REVERSAL","WRITE_OFF","FALSE_POSITIVE"]},"resolutionNotes":{"type":"string","example":"Matched manually after confirming with ZIMSWITCH"},"resolvedBy":{"type":"string","format":"uuid"}},"description":"Resolve a reconciliation exception"},"ReconExceptionResponse":{"required":["ageDays","amountCents","amountDecimal","batchReference","createdAt","escalationLevel","exceptionType","id","severity","status"],"type":"object","properties":{"id":{"type":"string","format":"uuid"},"batchReference":{"type":"string"},"exceptionType":{"type":"string","enum":["SOURCE_ONLY","TARGET_ONLY","AMOUNT_MISMATCH","DUPLICATE","TIMING_DIFFERENCE"]},"severity":{"type":"string","enum":["LOW","MEDIUM","HIGH","CRITICAL"]},"status":{"type":"string","enum":["OPEN","INVESTIGATING","RESOLVED","WRITTEN_OFF","ESCALATED"]},"amountCents":{"type":"integer","format":"int64"},"amountDecimal":{"type":"number"},"ageDays":{"type":"integer","format":"int32"},"escalationLevel":{"type":"integer","format":"int32"},"resolutionType":{"type":"string","enum":["MANUAL_MATCH","JOURNAL_ADJUSTMENT","REVERSAL","WRITE_OFF","FALSE_POSITIVE"]},"resolutionNotes":{"type":"string"},"resolvedBy":{"type":"string","format":"uuid"},"resolvedAt":{"type":"string","format":"date-time"},"createdAt":{"type":"string","format":"date-time"}}},"UpdateGlAccountRequest":{"required":["clearParent","performedBy"],"type":"object","properties":{"name":{"type":"string","example":"Suspense - Development (renamed)"},"code":{"type":"string","example":"2900-DEV2"},"type":{"type":"string","example":"LIABILITY","enum":["ASSET","LIABILITY","EQUITY","REVENUE","EXPENSE"]},"parentCode":{"type":"string","example":"2000"},"parentId":{"type":"string","format":"uuid"},"clearParent":{"type":"boolean","description":"Detach from any parent. Wins over parentCode/parentId"},"isActive":{"type":"boolean","example":true},"allowDirectPosting":{"type":"boolean","description":"Accept direct postings even once this account has children"},"performedBy":{"type":"string","description":"Actor recorded on the audit entry","format":"uuid"}}},"GlAccountResponse":{"required":["allowDirectPosting","balanceCents","balanceDecimal","code","currency","id","isActive","name","type"],"type":"object","properties":{"id":{"type":"string","format":"uuid"},"code":{"type":"string"},"name":{"type":"string"},"type":{"type":"string","enum":["ASSET","LIABILITY","EQUITY","REVENUE","EXPENSE"]},"currency":{"type":"string","enum":["USD","ZWG"]},"parentCode":{"type":"string"},"isActive":{"type":"boolean"},"allowDirectPosting":{"type":"boolean"},"balanceCents":{"type":"integer","format":"int64"},"balanceDecimal":{"type":"number"}}},"StatutoryReserveResponse":{"required":["actualReserveCents","calculatedAt","calculationDate","currency","demandReserveRateBps","fixedReserveRateBps","id","isCompliant","requiredReserveCents","savingsReserveRateBps","surplusDeficitCents","totalDemandDepositsCents","totalDepositBaseCents","totalFixedDepositsCents","totalSavingsDepositsCents"],"type":"object","properties":{"id":{"type":"string","format":"uuid"},"calculationDate":{"type":"string","format":"date"},"currency":{"type":"string","enum":["USD","ZWG"]},"totalDemandDepositsCents":{"type":"integer","format":"int64"},"totalSavingsDepositsCents":{"type":"integer","format":"int64"},"totalFixedDepositsCents":{"type":"integer","format":"int64"},"totalDepositBaseCents":{"type":"integer","format":"int64"},"demandReserveRateBps":{"type":"integer","format":"int32"},"savingsReserveRateBps":{"type":"integer","format":"int32"},"fixedReserveRateBps":{"type":"integer","format":"int32"},"requiredReserveCents":{"type":"integer","format":"int64"},"actualReserveCents":{"type":"integer","format":"int64"},"surplusDeficitCents":{"type":"integer","format":"int64"},"isCompliant":{"type":"boolean"},"calculatedAt":{"type":"string","format":"date-time"}}},"PurchaseInvestmentRequestDto":{"required":["counterparty","createdBy","currency","faceValueCents","interestRateBps","investmentType","maturityDate","purchaseDate","purchasePriceCents"],"type":"object","properties":{"investmentType":{"type":"string","enum":["TREASURY_BILL","TREASURY_BOND","INTERBANK_PLACEMENT","CORPORATE_BOND","GOVERNMENT_BOND","FIXED_DEPOSIT_PLACED"]},"counterparty":{"type":"string"},"currency":{"type":"string","enum":["USD","ZWG"]},"faceValueCents":{"type":"integer","format":"int64"},"purchasePriceCents":{"type":"integer","format":"int64"},"interestRateBps":{"type":"integer","format":"int32"},"purchaseDate":{"type":"string","format":"date"},"maturityDate":{"type":"string","format":"date"},"branchId":{"type":"string","format":"uuid"},"notes":{"type":"string"},"createdBy":{"type":"string","format":"uuid"}}},"InvestmentResponse":{"required":["accruedInterestCents","counterparty","createdAt","createdBy","currency","currentValueCents","faceValueCents","id","interestRateBps","investmentReference","investmentType","maturityDate","purchaseDate","purchasePriceCents","status"],"type":"object","properties":{"id":{"type":"string","format":"uuid"},"investmentReference":{"type":"string"},"investmentType":{"type":"string","enum":["TREASURY_BILL","TREASURY_BOND","INTERBANK_PLACEMENT","CORPORATE_BOND","GOVERNMENT_BOND","FIXED_DEPOSIT_PLACED"]},"status":{"type":"string","enum":["ACTIVE","MATURED","SOLD","DEFAULTED"]},"counterparty":{"type":"string"},"currency":{"type":"string","enum":["USD","ZWG"]},"faceValueCents":{"type":"integer","format":"int64"},"purchasePriceCents":{"type":"integer","format":"int64"},"currentValueCents":{"type":"integer","format":"int64"},"accruedInterestCents":{"type":"integer","format":"int64"},"interestRateBps":{"type":"integer","format":"int32"},"purchaseDate":{"type":"string","format":"date"},"maturityDate":{"type":"string","format":"date"},"branchId":{"type":"string","format":"uuid"},"notes":{"type":"string"},"createdBy":{"type":"string","format":"uuid"},"createdAt":{"type":"string","format":"date-time"}}},"SellInvestmentRequestDto":{"required":["salePriceCents","soldBy"],"type":"object","properties":{"salePriceCents":{"type":"integer","format":"int64"},"soldBy":{"type":"string","format":"uuid"}}},"MatureInvestmentRequestDto":{"required":["proceedsCents"],"type":"object","properties":{"proceedsCents":{"type":"integer","format":"int64"}}},"CashFlowForecastResponse":{"required":["closingBalanceCents","currency","forecastDate","forecastHorizon","generatedAt","id","openingBalanceCents","projectedDepositsCents","projectedFeeIncomeCents","projectedInterestExpenseCents","projectedInterestIncomeCents","projectedMobileMoneyInflowsCents","projectedMobileMoneyOutflowsCents","projectedRtgsInflowsCents","projectedRtgsOutflowsCents","projectedSalaryPaymentsCents","projectedWithdrawalsCents","projectedZipitInflowsCents","projectedZipitOutflowsCents","totalProjectedInflowsCents","totalProjectedOutflowsCents"],"type":"object","properties":{"id":{"type":"string","format":"uuid"},"forecastDate":{"type":"string","format":"date"},"currency":{"type":"string","enum":["USD","ZWG"]},"branchId":{"type":"string","format":"uuid"},"openingBalanceCents":{"type":"integer","format":"int64"},"totalProjectedInflowsCents":{"type":"integer","format":"int64"},"totalProjectedOutflowsCents":{"type":"integer","format":"int64"},"closingBalanceCents":{"type":"integer","format":"int64"},"projectedDepositsCents":{"type":"integer","format":"int64"},"projectedWithdrawalsCents":{"type":"integer","format":"int64"},"projectedFeeIncomeCents":{"type":"integer","format":"int64"},"projectedInterestIncomeCents":{"type":"integer","format":"int64"},"projectedInterestExpenseCents":{"type":"integer","format":"int64"},"projectedZipitInflowsCents":{"type":"integer","format":"int64"},"projectedRtgsInflowsCents":{"type":"integer","format":"int64"},"projectedMobileMoneyInflowsCents":{"type":"integer","format":"int64"},"projectedZipitOutflowsCents":{"type":"integer","format":"int64"},"projectedRtgsOutflowsCents":{"type":"integer","format":"int64"},"projectedMobileMoneyOutflowsCents":{"type":"integer","format":"int64"},"projectedSalaryPaymentsCents":{"type":"integer","format":"int64"},"actualInflowsCents":{"type":"integer","format":"int64"},"actualOutflowsCents":{"type":"integer","format":"int64"},"actualClosingCents":{"type":"integer","format":"int64"},"varianceCents":{"type":"integer","format":"int64"},"forecastHorizon":{"type":"string","enum":["DAILY","WEEKLY","MONTHLY"]},"generatedAt":{"type":"string","format":"date-time"}}},"AlmPositionResponse":{"required":["assets030DaysCents","assets181365DaysCents","assets3190DaysCents","assets91180DaysCents","assetsOnDemandCents","assetsOver365DaysCents","cumulativeGapCents","currency","gap030DaysCents","gap181365DaysCents","gap3190DaysCents","gap91180DaysCents","gapOnDemandCents","gapOver365DaysCents","generatedAt","id","liabilities030DaysCents","liabilities181365DaysCents","liabilities3190DaysCents","liabilities91180DaysCents","liabilitiesOnDemandCents","liabilitiesOver365DaysCents","liquidityCoverageRatioBps","positionDate","totalAssetsCents","totalLiabilitiesCents"],"type":"object","properties":{"id":{"type":"string","format":"uuid"},"positionDate":{"type":"string","format":"date"},"currency":{"type":"string","enum":["USD","ZWG"]},"assetsOnDemandCents":{"type":"integer","format":"int64"},"assets030DaysCents":{"type":"integer","format":"int64"},"assets3190DaysCents":{"type":"integer","format":"int64"},"assets91180DaysCents":{"type":"integer","format":"int64"},"assets181365DaysCents":{"type":"integer","format":"int64"},"assetsOver365DaysCents":{"type":"integer","format":"int64"},"totalAssetsCents":{"type":"integer","format":"int64"},"liabilitiesOnDemandCents":{"type":"integer","format":"int64"},"liabilities030DaysCents":{"type":"integer","format":"int64"},"liabilities3190DaysCents":{"type":"integer","format":"int64"},"liabilities91180DaysCents":{"type":"integer","format":"int64"},"liabilities181365DaysCents":{"type":"integer","format":"int64"},"liabilitiesOver365DaysCents":{"type":"integer","format":"int64"},"totalLiabilitiesCents":{"type":"integer","format":"int64"},"gapOnDemandCents":{"type":"integer","format":"int64"},"gap030DaysCents":{"type":"integer","format":"int64"},"gap3190DaysCents":{"type":"integer","format":"int64"},"gap91180DaysCents":{"type":"integer","format":"int64"},"gap181365DaysCents":{"type":"integer","format":"int64"},"gapOver365DaysCents":{"type":"integer","format":"int64"},"cumulativeGapCents":{"type":"integer","format":"int64"},"liquidityCoverageRatioBps":{"type":"integer","format":"int32"},"generatedAt":{"type":"string","format":"date-time"}}},"CreateTransactionRequest":{"required":["createdBy","description","entries","type","valueDate"],"type":"object","properties":{"type":{"type":"string","enum":["DEPOSIT","WITHDRAWAL","TRANSFER","INTEREST_ACCRUAL","FEE","LOAN_DISBURSEMENT","LOAN_REPAYMENT","ADJUSTMENT","ZIPIT_SEND","ZIPIT_RECEIVE","RTGS_SEND","RTGS_RECEIVE","MOBILE_MONEY_SEND","MOBILE_MONEY_RECEIVE","SALARY_PAYMENT","BULK_PAYMENT","BILL_PAYMENT","PAYMENT_REVERSAL","INVESTMENT_PURCHASE","INVESTMENT_MATURITY","INVESTMENT_SALE","INVESTMENT_INTEREST"]},"description":{"type":"string"},"valueDate":{"type":"string","format":"date"},"createdBy":{"type":"string","format":"uuid"},"entries":{"type":"array","items":{"$ref":"#/components/schemas/JournalEntryRequest"}}}},"JournalEntryRequest":{"required":["creditCents","currency","debitCents","description","glAccountCode"],"type":"object","properties":{"glAccountCode":{"type":"string"},"debitCents":{"type":"integer","format":"int64"},"creditCents":{"type":"integer","format":"int64"},"description":{"type":"string"},"currency":{"type":"string","enum":["USD","ZWG"]}}},"JournalEntryResponse":{"required":["creditCents","creditDecimal","currency","debitCents","debitDecimal","description","glAccountCode","glAccountName","id","valueDate"],"type":"object","properties":{"id":{"type":"string","format":"uuid"},"glAccountCode":{"type":"string"},"glAccountName":{"type":"string"},"debitCents":{"type":"integer","format":"int64"},"creditCents":{"type":"integer","format":"int64"},"debitDecimal":{"type":"number"},"creditDecimal":{"type":"number"},"description":{"type":"string"},"currency":{"type":"string","enum":["USD","ZWG"]},"valueDate":{"type":"string","format":"date"},"postedAt":{"type":"string","format":"date-time"}}},"TransactionResponse":{"required":["createdAt","createdBy","description","entries","id","isBalanced","reference","state","totalCreditCents","totalDebitCents","type","valueDate"],"type":"object","properties":{"id":{"type":"string","format":"uuid"},"type":{"type":"string","enum":["DEPOSIT","WITHDRAWAL","TRANSFER","INTEREST_ACCRUAL","FEE","LOAN_DISBURSEMENT","LOAN_REPAYMENT","ADJUSTMENT","ZIPIT_SEND","ZIPIT_RECEIVE","RTGS_SEND","RTGS_RECEIVE","MOBILE_MONEY_SEND","MOBILE_MONEY_RECEIVE","SALARY_PAYMENT","BULK_PAYMENT","BILL_PAYMENT","PAYMENT_REVERSAL","INVESTMENT_PURCHASE","INVESTMENT_MATURITY","INVESTMENT_SALE","INVESTMENT_INTEREST"]},"state":{"type":"string","enum":["PENDING","POSTED","REVERSED"]},"reference":{"type":"string"},"description":{"type":"string"},"valueDate":{"type":"string","format":"date"},"postedAt":{"type":"string","format":"date-time"},"reversedAt":{"type":"string","format":"date-time"},"createdBy":{"type":"string","format":"uuid"},"createdAt":{"type":"string","format":"date-time"},"entries":{"type":"array","items":{"$ref":"#/components/schemas/JournalEntryResponse"}},"totalDebitCents":{"type":"integer","format":"int64"},"totalCreditCents":{"type":"integer","format":"int64"},"isBalanced":{"type":"boolean"}}},"CreateStandingOrderRequest":{"required":["amountCents","createdBy","currency","frequency","sourceAccountId","startDate","targetAccountId"],"type":"object","properties":{"sourceAccountId":{"type":"string","format":"uuid"},"targetAccountId":{"type":"string","format":"uuid"},"amountCents":{"type":"integer","format":"int64"},"currency":{"type":"string","enum":["USD","ZWG"]},"frequency":{"type":"string","enum":["DAILY","WEEKLY","MONTHLY","QUARTERLY"]},"startDate":{"type":"string","format":"date"},"description":{"type":"string"},"maxExecutions":{"type":"integer","format":"int32"},"endDate":{"type":"string","format":"date"},"createdBy":{"type":"string","format":"uuid"}}},"StandingOrderExecutionResultResponse":{"required":["executedCount","executionDate","failedCount","failedOrderIds"],"type":"object","properties":{"executedCount":{"type":"integer","format":"int32"},"failedCount":{"type":"integer","format":"int32"},"failedOrderIds":{"type":"array","items":{"type":"string","format":"uuid"}},"executionDate":{"type":"string","format":"date"}}},"ReviewScreeningDto":{"required":["decision","notes","reviewedBy"],"type":"object","properties":{"decision":{"type":"string"},"notes":{"type":"string"},"reviewedBy":{"type":"string","format":"uuid"}}},"ScreeningRecordResponse":{"required":["createdAt","customerId","id","screenedAt","screeningType","status"],"type":"object","properties":{"id":{"type":"string","format":"uuid"},"customerId":{"type":"string","format":"uuid"},"screeningType":{"type":"string","enum":["PEP","SANCTIONS","BLACKLIST","ADVERSE_MEDIA","INTERNAL"]},"status":{"type":"string","enum":["PENDING","CLEAR","MATCH","FALSE_POSITIVE","CONFIRMED_MATCH"]},"matchScore":{"type":"integer","format":"int32"},"screenedAgainst":{"type":"string"},"screenedAt":{"type":"string","format":"date-time"},"reviewedBy":{"type":"string","format":"uuid"},"reviewedAt":{"type":"string","format":"date-time"},"reviewNotes":{"type":"string"},"createdAt":{"type":"string","format":"date-time"}}},"AddWatchlistDto":{"required":["addedBy","listType","name","source"],"type":"object","properties":{"listType":{"type":"string","enum":["PEP","SANCTIONS","BLACKLIST","INTERNAL"]},"name":{"type":"string"},"nationalId":{"type":"string"},"dateOfBirth":{"type":"string","format":"date"},"nationality":{"type":"string"},"reason":{"type":"string"},"source":{"type":"string"},"addedBy":{"type":"string","format":"uuid"},"expiresAt":{"type":"string","format":"date-time"}}},"WatchlistEntryResponse":{"required":["addedAt","id","isActive","listType","name","source"],"type":"object","properties":{"id":{"type":"string","format":"uuid"},"listType":{"type":"string","enum":["PEP","SANCTIONS","BLACKLIST","INTERNAL"]},"name":{"type":"string"},"nationalId":{"type":"string"},"dateOfBirth":{"type":"string","format":"date"},"nationality":{"type":"string"},"reason":{"type":"string"},"source":{"type":"string"},"isActive":{"type":"boolean"},"addedBy":{"type":"string","format":"uuid"},"addedAt":{"type":"string","format":"date-time"},"expiresAt":{"type":"string","format":"date-time"}}},"ScreenedByDto":{"required":["screenedBy"],"type":"object","properties":{"screenedBy":{"type":"string","format":"uuid"}}},"CreateReconDefinitionRequest":{"required":["autoMatch","code","createdBy","frequency","lookbackDays","name","sourceType","targetType","toleranceType","toleranceValueCents"],"type":"object","properties":{"code":{"type":"string","example":"ZIPIT_DAILY"},"name":{"type":"string","example":"ZIPIT Daily Reconciliation"},"description":{"type":"string","example":"Reconcile ZIMSWITCH settlement file against CBS payment transactions"},"sourceType":{"type":"string","example":"ZIMSWITCH_SETTLEMENT"},"targetType":{"type":"string","example":"CBS_PAYMENT_TRANSACTIONS"},"frequency":{"type":"string","enum":["DAILY","WEEKLY","MONTHLY","ON_DEMAND"]},"toleranceType":{"type":"string","enum":["EXACT","ABSOLUTE","PERCENTAGE"]},"toleranceValueCents":{"type":"integer","description":"Tolerance value in cents","format":"int64","example":0},"lookbackDays":{"type":"integer","format":"int32","example":3},"autoMatch":{"type":"boolean"},"createdBy":{"type":"string","format":"uuid"}},"description":"Create a reconciliation definition"},"ReconDefinitionResponse":{"required":["autoMatch","code","frequency","id","isActive","lookbackDays","name","sourceType","targetType","toleranceType","toleranceValueCents"],"type":"object","properties":{"id":{"type":"string","format":"uuid"},"code":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"sourceType":{"type":"string"},"targetType":{"type":"string"},"frequency":{"type":"string","enum":["DAILY","WEEKLY","MONTHLY","ON_DEMAND"]},"toleranceType":{"type":"string","enum":["EXACT","ABSOLUTE","PERCENTAGE"]},"toleranceValueCents":{"type":"integer","format":"int64"},"lookbackDays":{"type":"integer","format":"int32"},"autoMatch":{"type":"boolean"},"isActive":{"type":"boolean"}}},"CreateReconBatchRequest":{"required":["createdBy","definitionId","reconDate"],"type":"object","properties":{"definitionId":{"type":"string","format":"uuid"},"reconDate":{"type":"string","format":"date","example":"2026-05-21"},"sourceFileName":{"type":"string"},"sourceFileHash":{"type":"string"},"createdBy":{"type":"string","format":"uuid"}},"description":"Create a reconciliation batch"},"ReconBatchResponse":{"required":["batchReference","definitionCode","exceptionCount","id","matchRatePercent","matchedCount","netDifferenceCents","netDifferenceDecimal","reconDate","sourceRecordCount","sourceTotalAmountCents","sourceTotalAmountDecimal","status","targetRecordCount","targetTotalAmountCents","targetTotalAmountDecimal","unmatchedSource","unmatchedTarget"],"type":"object","properties":{"id":{"type":"string","format":"uuid"},"batchReference":{"type":"string"},"definitionCode":{"type":"string"},"reconDate":{"type":"string","format":"date"},"status":{"type":"string","enum":["PENDING","INGESTING","MATCHING","REVIEW","COMPLETED","FAILED"]},"sourceFileName":{"type":"string"},"sourceRecordCount":{"type":"integer","format":"int32"},"targetRecordCount":{"type":"integer","format":"int32"},"matchedCount":{"type":"integer","format":"int32"},"unmatchedSource":{"type":"integer","format":"int32"},"unmatchedTarget":{"type":"integer","format":"int32"},"exceptionCount":{"type":"integer","format":"int32"},"sourceTotalAmountCents":{"type":"integer","format":"int64"},"targetTotalAmountCents":{"type":"integer","format":"int64"},"netDifferenceCents":{"type":"integer","format":"int64"},"sourceTotalAmountDecimal":{"type":"number"},"targetTotalAmountDecimal":{"type":"number"},"netDifferenceDecimal":{"type":"number"},"matchRatePercent":{"type":"number"},"startedAt":{"type":"string","format":"date-time"},"completedAt":{"type":"string","format":"date-time"}}},"ManualMatchRequest":{"required":["performedBy","sourceItemIds","targetItemIds"],"type":"object","properties":{"sourceItemIds":{"type":"array","items":{"type":"string","format":"uuid"}},"targetItemIds":{"type":"array","items":{"type":"string","format":"uuid"}},"performedBy":{"type":"string","format":"uuid"}},"description":"Manually match source and target items"},"CreateProductRequest":{"required":["accountType","allowsOverdraft","autoSweepEnabled","currency","dormancyDays","interestCalculationMethod","interestCompoundingFrequency","interestPostingFrequency","interestRateBps","lockInDays","maxWithdrawalPerDayCents","maxWithdrawalsPerMonth","minimumBalanceCents","minimumOpeningBalanceCents","monthlyFeeCents","name","overdraftLimitCents","penaltyRateBps","sweepThresholdCents","tieredInterest","withdrawalFeeCents"],"type":"object","properties":{"name":{"type":"string"},"accountType":{"type":"string","enum":["SAVINGS","CURRENT","FIXED_DEPOSIT","CALL_DEPOSIT","YOUTH_SAVINGS","GROUP_SAVINGS","SME_BUSINESS","AGENT_FLOAT","TRUST","SALARY_SAVINGS"]},"currency":{"type":"string","enum":["USD","ZWG"]},"interestRateBps":{"type":"integer","format":"int32"},"minimumBalanceCents":{"type":"integer","format":"int64"},"minimumOpeningBalanceCents":{"type":"integer","format":"int64"},"monthlyFeeCents":{"type":"integer","format":"int64"},"withdrawalFeeCents":{"type":"integer","format":"int64"},"description":{"type":"string"},"interestCalculationMethod":{"type":"string","enum":["DAILY_ACCRUAL","MONTHLY_AVERAGE","MINIMUM_BALANCE"]},"interestCompoundingFrequency":{"type":"string","enum":["DAILY","MONTHLY","QUARTERLY","SEMI_ANNUAL","ANNUAL","AT_MATURITY"]},"interestPostingFrequency":{"type":"string","enum":["MONTHLY","QUARTERLY","SEMI_ANNUAL","ANNUAL","AT_MATURITY"]},"tieredInterest":{"type":"string"},"maxWithdrawalPerDayCents":{"type":"integer","format":"int64"},"maxWithdrawalsPerMonth":{"type":"integer","format":"int32"},"lockInDays":{"type":"integer","format":"int32"},"penaltyRateBps":{"type":"integer","format":"int32"},"allowsOverdraft":{"type":"boolean"},"overdraftLimitCents":{"type":"integer","format":"int64"},"dormancyDays":{"type":"integer","format":"int32"},"autoSweepEnabled":{"type":"boolean"},"sweepTargetAccountType":{"type":"string","enum":["SAVINGS","CURRENT","FIXED_DEPOSIT","CALL_DEPOSIT","YOUTH_SAVINGS","GROUP_SAVINGS","SME_BUSINESS","AGENT_FLOAT","TRUST","SALARY_SAVINGS"]},"sweepThresholdCents":{"type":"integer","format":"int64"}}},"ProductResponse":{"required":["accountType","allowsOverdraft","autoSweepEnabled","createdAt","currency","dormancyDays","id","interestCalculationMethod","interestCompoundingFrequency","interestPostingFrequency","interestRateBps","interestRatePercent","isActive","lockInDays","maxWithdrawalPerDayCents","maxWithdrawalsPerMonth","minimumBalanceCents","minimumOpeningBalanceCents","monthlyFeeCents","name","overdraftLimitCents","penaltyRateBps","sweepThresholdCents","tieredInterest","withdrawalFeeCents"],"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"accountType":{"type":"string","enum":["SAVINGS","CURRENT","FIXED_DEPOSIT","CALL_DEPOSIT","YOUTH_SAVINGS","GROUP_SAVINGS","SME_BUSINESS","AGENT_FLOAT","TRUST","SALARY_SAVINGS"]},"currency":{"type":"string","enum":["USD","ZWG"]},"interestRateBps":{"type":"integer","format":"int32"},"interestRatePercent":{"type":"number"},"minimumBalanceCents":{"type":"integer","format":"int64"},"minimumOpeningBalanceCents":{"type":"integer","format":"int64"},"monthlyFeeCents":{"type":"integer","format":"int64"},"withdrawalFeeCents":{"type":"integer","format":"int64"},"isActive":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time"},"description":{"type":"string"},"interestCalculationMethod":{"type":"string","enum":["DAILY_ACCRUAL","MONTHLY_AVERAGE","MINIMUM_BALANCE"]},"interestCompoundingFrequency":{"type":"string","enum":["DAILY","MONTHLY","QUARTERLY","SEMI_ANNUAL","ANNUAL","AT_MATURITY"]},"interestPostingFrequency":{"type":"string","enum":["MONTHLY","QUARTERLY","SEMI_ANNUAL","ANNUAL","AT_MATURITY"]},"tieredInterest":{"type":"string"},"maxWithdrawalPerDayCents":{"type":"integer","format":"int64"},"maxWithdrawalsPerMonth":{"type":"integer","format":"int32"},"lockInDays":{"type":"integer","format":"int32"},"penaltyRateBps":{"type":"integer","format":"int32"},"allowsOverdraft":{"type":"boolean"},"overdraftLimitCents":{"type":"integer","format":"int64"},"dormancyDays":{"type":"integer","format":"int32"},"autoSweepEnabled":{"type":"boolean"},"sweepTargetAccountType":{"type":"string","enum":["SAVINGS","CURRENT","FIXED_DEPOSIT","CALL_DEPOSIT","YOUTH_SAVINGS","GROUP_SAVINGS","SME_BUSINESS","AGENT_FLOAT","TRUST","SALARY_SAVINGS"]},"sweepThresholdCents":{"type":"integer","format":"int64"}}},"ReopenPeriodRequest":{"required":["reason","requestedBy"],"type":"object","properties":{"reason":{"type":"string"},"requestedBy":{"type":"string","format":"uuid"}}},"ApprovalRequestResponse":{"required":["createdAt","entityId","entityType","id","makerId","payload","requestType","status"],"type":"object","properties":{"id":{"type":"string","format":"uuid"},"requestType":{"type":"string","enum":["ACCOUNT_OPENING","TRANSACTION_POSTING","PRODUCT_CHANGE","ACCOUNT_CLOSURE","ACCOUNT_FREEZE","PAYMENT_APPROVAL","BATCH_PAYMENT_APPROVAL","LOAN_APPROVAL","LOAN_DISBURSEMENT","LOAN_WRITE_OFF","LOAN_RESTRUCTURE"]},"entityType":{"type":"string"},"entityId":{"type":"string","format":"uuid"},"payload":{"type":"string"},"status":{"type":"string","enum":["PENDING_APPROVAL","APPROVED","REJECTED","EXPIRED"]},"makerId":{"type":"string","format":"uuid"},"makerNotes":{"type":"string"},"checkerId":{"type":"string","format":"uuid"},"checkerNotes":{"type":"string"},"decidedAt":{"type":"string","format":"date-time"},"expiresAt":{"type":"string","format":"date-time"},"createdAt":{"type":"string","format":"date-time"}}},"YearEndResultResponse":{"required":["expenseAccountsClosed","netIncomeCents","netIncomeDecimal","periodClosed","revenueAccountsClosed","transferredToRetainedEarnings","year"],"type":"object","properties":{"year":{"type":"integer","format":"int32"},"revenueAccountsClosed":{"type":"integer","format":"int32"},"expenseAccountsClosed":{"type":"integer","format":"int32"},"netIncomeCents":{"type":"integer","format":"int64"},"netIncomeDecimal":{"type":"number"},"transferredToRetainedEarnings":{"type":"boolean"},"periodClosed":{"type":"boolean"}}},"ReserveCalcResult":{"required":["actualCents","currency","isCompliant","requiredCents"],"type":"object","properties":{"currency":{"type":"string"},"requiredCents":{"type":"integer","format":"int64"},"actualCents":{"type":"integer","format":"int64"},"isCompliant":{"type":"boolean"}}},"TreasuryDayEndResultResponse":{"required":["almPositionsGenerated","date","forecastsReconciled","investmentsProcessed","reserveCalculations","totalAccruedCents"],"type":"object","properties":{"date":{"type":"string","format":"date"},"investmentsProcessed":{"type":"integer","format":"int32"},"totalAccruedCents":{"type":"integer","format":"int64"},"reserveCalculations":{"type":"array","items":{"$ref":"#/components/schemas/ReserveCalcResult"}},"forecastsReconciled":{"type":"array","items":{"type":"string"}},"almPositionsGenerated":{"type":"array","items":{"type":"string"}}}},"MonthEndResultResponse":{"required":["feesPosted","interestCapitalisedAccounts","periodClosed","totalCapitalisedCents","totalFeeCents","yearMonth"],"type":"object","properties":{"yearMonth":{"type":"string"},"interestCapitalisedAccounts":{"type":"integer","format":"int32"},"totalCapitalisedCents":{"type":"integer","format":"int64"},"feesPosted":{"type":"integer","format":"int32"},"totalFeeCents":{"type":"integer","format":"int64"},"periodClosed":{"type":"boolean"}}},"DayEndResultResponse":{"required":["date","dormancyAccountsChecked","dormancyAccountsMarked","interestAccruedAccounts","periodClosed","standingOrdersExecuted","totalInterestAccruedCents","trialBalanceBalanced"],"type":"object","properties":{"date":{"type":"string","format":"date"},"interestAccruedAccounts":{"type":"integer","format":"int32"},"totalInterestAccruedCents":{"type":"integer","format":"int64"},"standingOrdersExecuted":{"type":"integer","format":"int32"},"dormancyAccountsChecked":{"type":"integer","format":"int32"},"dormancyAccountsMarked":{"type":"integer","format":"int32"},"trialBalanceBalanced":{"type":"boolean"},"periodClosed":{"type":"boolean"}}},"InitiatePaymentRequest":{"required":["amountCents","createdBy","currency","destinationAccountNumber","sourceAccountId","type","valueDate"],"type":"object","properties":{"type":{"type":"string","example":"ZIPIT","enum":["INTERNAL_TRANSFER","ZIPIT_SEND","ZIPIT_RECEIVE","RTGS_SEND","RTGS_RECEIVE","MOBILE_MONEY_SEND","MOBILE_MONEY_RECEIVE","BILL_PAYMENT","SALARY_PAYMENT","BULK_PAYMENT"]},"sourceAccountId":{"type":"string","format":"uuid","example":"6a3e685e-fc86-4aac-92b7-d6d24e81ebb1"},"destinationAccountNumber":{"type":"string","example":"1234567890"},"destinationBankCode":{"type":"string","example":"CBZ"},"destinationBankName":{"type":"string","example":"CBZ Bank"},"destinationName":{"type":"string","example":"John Banda"},"amountCents":{"type":"integer","format":"int64","example":15000},"currency":{"type":"string","example":"USD","enum":["USD","ZWG"]},"channel":{"type":"string","example":"ZIPIT"},"narration":{"type":"string","example":"Invoice payment #INV-2026-001"},"valueDate":{"type":"string","format":"date"},"branchId":{"type":"string","format":"uuid"},"createdBy":{"type":"string","format":"uuid","example":"3dcb3a71-6c65-4493-aa4e-104ba4ac2cc5"}}},"PaymentOrderResponse":{"required":["amountCents","amountDecimal","createdAt","createdBy","currency","destinationAccountNumber","feeCents","feeDecimal","id","orderReference","status","type","valueDate"],"type":"object","properties":{"id":{"type":"string","format":"uuid"},"orderReference":{"type":"string"},"type":{"type":"string","enum":["INTERNAL_TRANSFER","ZIPIT_SEND","ZIPIT_RECEIVE","RTGS_SEND","RTGS_RECEIVE","MOBILE_MONEY_SEND","MOBILE_MONEY_RECEIVE","BILL_PAYMENT","SALARY_PAYMENT","BULK_PAYMENT"]},"status":{"type":"string","enum":["INITIATED","PENDING_APPROVAL","APPROVED","PROCESSING","SENT","COMPLETED","FAILED","REVERSED","TIMED_OUT","CANCELLED"]},"sourceAccountNumber":{"type":"string"},"destinationAccountNumber":{"type":"string"},"destinationBankCode":{"type":"string"},"destinationBankName":{"type":"string"},"destinationName":{"type":"string"},"amountCents":{"type":"integer","format":"int64"},"amountDecimal":{"type":"number"},"feeCents":{"type":"integer","format":"int64"},"feeDecimal":{"type":"number"},"currency":{"type":"string","enum":["USD","ZWG"]},"channel":{"type":"string"},"externalReference":{"type":"string"},"failureReason":{"type":"string"},"narration":{"type":"string"},"valueDate":{"type":"string","format":"date"},"createdBy":{"type":"string","format":"uuid"},"approvedBy":{"type":"string","format":"uuid"},"processedAt":{"type":"string","format":"date-time"},"completedAt":{"type":"string","format":"date-time"},"createdAt":{"type":"string","format":"date-time"}}},"ReversePaymentRequest":{"required":["reason","reversedBy"],"type":"object","properties":{"reason":{"type":"string"},"reversedBy":{"type":"string","format":"uuid"}}},"ConfirmSettlementRequest":{"required":["externalReference"],"type":"object","properties":{"externalReference":{"type":"string"}}},"CancelPaymentRequest":{"required":["cancelledBy","reason"],"type":"object","properties":{"reason":{"type":"string"},"cancelledBy":{"type":"string","format":"uuid"}}},"ApprovePaymentRequest":{"required":["approvedBy"],"type":"object","properties":{"approvedBy":{"type":"string","format":"uuid"}}},"ReceivePaymentRequest":{"required":["amountCents","currency","destinationAccountNumber","receivedBy","type","valueDate"],"type":"object","properties":{"type":{"type":"string","enum":["INTERNAL_TRANSFER","ZIPIT_SEND","ZIPIT_RECEIVE","RTGS_SEND","RTGS_RECEIVE","MOBILE_MONEY_SEND","MOBILE_MONEY_RECEIVE","BILL_PAYMENT","SALARY_PAYMENT","BULK_PAYMENT"]},"destinationAccountNumber":{"type":"string"},"sourceAccountNumber":{"type":"string"},"sourceBankCode":{"type":"string"},"sourceBankName":{"type":"string"},"senderName":{"type":"string"},"amountCents":{"type":"integer","format":"int64"},"currency":{"type":"string","enum":["USD","ZWG"]},"externalReference":{"type":"string"},"narration":{"type":"string"},"valueDate":{"type":"string","format":"date"},"receivedBy":{"type":"string","format":"uuid"}}},"SubmitBatchRequest":{"required":["submittedBy"],"type":"object","properties":{"submittedBy":{"type":"string","format":"uuid"}}},"PaymentBatchItemResponse":{"required":["amountCents","amountDecimal","destinationAccountNumber","destinationName","id","status"],"type":"object","properties":{"id":{"type":"string","format":"uuid"},"destinationAccountNumber":{"type":"string"},"destinationBankCode":{"type":"string"},"destinationName":{"type":"string"},"amountCents":{"type":"integer","format":"int64"},"amountDecimal":{"type":"number"},"narration":{"type":"string"},"status":{"type":"string","enum":["PENDING","PROCESSING","COMPLETED","FAILED"]},"failureReason":{"type":"string"},"paymentOrderId":{"type":"string","format":"uuid"}}},"PaymentBatchResponse":{"required":["batchReference","createdAt","createdBy","currency","failedItems","id","items","processedItems","sourceAccountId","status","totalAmountCents","totalAmountDecimal","totalFeeCents","totalItems","type"],"type":"object","properties":{"id":{"type":"string","format":"uuid"},"batchReference":{"type":"string"},"type":{"type":"string","enum":["SALARY","BULK_TRANSFER","BULK_BILL"]},"status":{"type":"string","enum":["DRAFT","PENDING_APPROVAL","APPROVED","PROCESSING","COMPLETED","PARTIAL","FAILED"]},"sourceAccountId":{"type":"string","format":"uuid"},"totalAmountCents":{"type":"integer","format":"int64"},"totalAmountDecimal":{"type":"number"},"totalFeeCents":{"type":"integer","format":"int64"},"currency":{"type":"string","enum":["USD","ZWG"]},"totalItems":{"type":"integer","format":"int32"},"processedItems":{"type":"integer","format":"int32"},"failedItems":{"type":"integer","format":"int32"},"narration":{"type":"string"},"createdBy":{"type":"string","format":"uuid"},"approvedBy":{"type":"string","format":"uuid"},"processedAt":{"type":"string","format":"date-time"},"completedAt":{"type":"string","format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"items":{"type":"array","items":{"$ref":"#/components/schemas/PaymentBatchItemResponse"}}}},"ApproveBatchRequest":{"required":["approvedBy"],"type":"object","properties":{"approvedBy":{"type":"string","format":"uuid"}}},"CreateSalaryBatchRequest":{"required":["createdBy","currency","payees","sourceAccountId"],"type":"object","properties":{"sourceAccountId":{"type":"string","format":"uuid"},"currency":{"type":"string","enum":["USD","ZWG"]},"payees":{"type":"array","items":{"$ref":"#/components/schemas/PayeeItem"}},"branchId":{"type":"string","format":"uuid"},"narration":{"type":"string"},"createdBy":{"type":"string","format":"uuid"}}},"PayeeItem":{"required":["accountNumber","amountCents","name"],"type":"object","properties":{"accountNumber":{"type":"string"},"bankCode":{"type":"string"},"name":{"type":"string"},"amountCents":{"type":"integer","format":"int64"},"narration":{"type":"string"}}},"CreateBulkBatchRequest":{"required":["batchType","createdBy","currency","items","sourceAccountId"],"type":"object","properties":{"sourceAccountId":{"type":"string","format":"uuid"},"currency":{"type":"string","enum":["USD","ZWG"]},"batchType":{"type":"string","enum":["SALARY","BULK_TRANSFER","BULK_BILL"]},"items":{"type":"array","items":{"$ref":"#/components/schemas/PayeeItem"}},"branchId":{"type":"string","format":"uuid"},"narration":{"type":"string"},"createdBy":{"type":"string","format":"uuid"}}},"WriteOffLoanRequest":{"required":["reason","writtenOffBy"],"type":"object","properties":{"writtenOffBy":{"type":"string","format":"uuid"},"reason":{"type":"string"}},"description":"Write off a loan"},"LoanAccountResponse":{"required":["applicationId","arrearsClassification","arrearsDays","currency","customerId","customerName","disbursedAmountCents","disbursedAt","firstRepaymentDate","gracePeriodDays","id","interestMethod","interestRateBps","loanNumber","loanProductId","loanProductName","maturityDate","outstandingFeesCents","outstandingInterestCents","outstandingPenaltiesCents","outstandingPrincipalCents","principalCents","principalDecimal","repaymentFrequency","status","termMonths","totalOutstandingCents","totalOutstandingDecimal","totalRepaidCents"],"type":"object","properties":{"id":{"type":"string","format":"uuid"},"loanNumber":{"type":"string"},"customerId":{"type":"string","format":"uuid"},"customerName":{"type":"string"},"loanProductId":{"type":"string","format":"uuid"},"loanProductName":{"type":"string"},"applicationId":{"type":"string","format":"uuid"},"principalCents":{"type":"integer","format":"int64"},"principalDecimal":{"type":"number"},"disbursedAmountCents":{"type":"integer","format":"int64"},"outstandingPrincipalCents":{"type":"integer","format":"int64"},"outstandingInterestCents":{"type":"integer","format":"int64"},"outstandingFeesCents":{"type":"integer","format":"int64"},"outstandingPenaltiesCents":{"type":"integer","format":"int64"},"totalOutstandingCents":{"type":"integer","format":"int64"},"totalOutstandingDecimal":{"type":"number"},"totalRepaidCents":{"type":"integer","format":"int64"},"interestRateBps":{"type":"integer","format":"int32"},"interestMethod":{"type":"string","enum":["FLAT","DECLINING_BALANCE","REDUCING_BALANCE"]},"repaymentFrequency":{"type":"string","enum":["DAILY","WEEKLY","BIWEEKLY","MONTHLY","QUARTERLY","SEMI_ANNUALLY","ANNUALLY","BULLET"]},"termMonths":{"type":"integer","format":"int32"},"gracePeriodDays":{"type":"integer","format":"int32"},"currency":{"type":"string","enum":["USD","ZWG"]},"status":{"type":"string","enum":["ACTIVE","CLOSED","DEFAULTED","WRITTEN_OFF","RESTRUCTURED","RESCHEDULED"]},"arrearsDays":{"type":"integer","format":"int32"},"arrearsClassification":{"type":"string","enum":["CURRENT","WATCH","SUBSTANDARD","DOUBTFUL","LOSS"]},"disbursedAt":{"type":"string","format":"date-time"},"maturityDate":{"type":"string","format":"date"},"firstRepaymentDate":{"type":"string","format":"date"},"nextRepaymentDate":{"type":"string","format":"date"},"lastRepaymentDate":{"type":"string","format":"date"},"closedAt":{"type":"string","format":"date-time"},"loanOfficerId":{"type":"string","format":"uuid"}}},"ProcessRepaymentRequest":{"required":["amountCents","processedBy","repaymentMethod","valueDate"],"type":"object","properties":{"amountCents":{"type":"integer","description":"Repayment amount in cents","format":"int64","example":10000},"repaymentMethod":{"type":"string","enum":["CASH","ACCOUNT_DEBIT","MOBILE_MONEY","BANK_TRANSFER","CHEQUE","SALARY_DEDUCTION"]},"sourceAccountId":{"type":"string","format":"uuid"},"valueDate":{"type":"string","format":"date"},"notes":{"type":"string"},"receivedBy":{"type":"string","format":"uuid"},"processedBy":{"type":"string","format":"uuid"}},"description":"Process a loan repayment"},"LoanRepaymentResponse":{"required":["amountCents","amountDecimal","createdAt","feesPortionCents","id","interestPortionCents","isEarlyRepayment","loanNumber","overpaymentCents","penaltyPortionCents","principalPortionCents","repaymentMethod","repaymentReference","valueDate"],"type":"object","properties":{"id":{"type":"string","format":"uuid"},"repaymentReference":{"type":"string"},"loanNumber":{"type":"string"},"amountCents":{"type":"integer","format":"int64"},"amountDecimal":{"type":"number"},"principalPortionCents":{"type":"integer","format":"int64"},"interestPortionCents":{"type":"integer","format":"int64"},"feesPortionCents":{"type":"integer","format":"int64"},"penaltyPortionCents":{"type":"integer","format":"int64"},"overpaymentCents":{"type":"integer","format":"int64"},"repaymentMethod":{"type":"string","enum":["CASH","ACCOUNT_DEBIT","MOBILE_MONEY","BANK_TRANSFER","CHEQUE","SALARY_DEDUCTION"]},"valueDate":{"type":"string","format":"date"},"isEarlyRepayment":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time"}}},"DisburseLoanRequest":{"required":["applicationId","disbursedBy","disbursementAccountId"],"type":"object","properties":{"applicationId":{"type":"string","format":"uuid"},"disbursementAccountId":{"type":"string","format":"uuid"},"disbursedBy":{"type":"string","format":"uuid"},"branchId":{"type":"string","format":"uuid"},"loanOfficerId":{"type":"string","format":"uuid"}},"description":"Disburse an approved loan"},"RunProvisioningRequest":{"required":["asOf","runBy"],"type":"object","properties":{"runBy":{"type":"string","format":"uuid"},"asOf":{"type":"string","format":"date"}},"description":"Run IFRS 9 provisioning"},"CreateLoanProductRequest":{"required":["code","collateralRequired","createdBy","currency","gracePeriodDays","insuranceFeeBps","interestMethod","interestRateBps","latePaymentPenaltyBps","maxAmountCents","maxLoansPerCustomer","maxTermMonths","minAmountCents","minCollateralCoveragePct","minTermMonths","name","processingFeeBps","repaymentFrequency","requiresGuarantor"],"type":"object","properties":{"code":{"type":"string","example":"PL-USD-002"},"name":{"type":"string","example":"Personal Loan Plus"},"description":{"type":"string","example":"Enhanced personal loan with flexible terms"},"currency":{"type":"string","enum":["USD","ZWG"]},"interestRateBps":{"type":"integer","description":"Annual interest rate in basis points","format":"int32","example":2400},"interestMethod":{"type":"string","enum":["FLAT","DECLINING_BALANCE","REDUCING_BALANCE"]},"repaymentFrequency":{"type":"string","enum":["DAILY","WEEKLY","BIWEEKLY","MONTHLY","QUARTERLY","SEMI_ANNUALLY","ANNUALLY","BULLET"]},"minTermMonths":{"type":"integer","format":"int32","example":3},"maxTermMonths":{"type":"integer","format":"int32","example":36},"minAmountCents":{"type":"integer","description":"Minimum loan amount in cents","format":"int64","example":5000},"maxAmountCents":{"type":"integer","description":"Maximum loan amount in cents","format":"int64","example":500000},"gracePeriodDays":{"type":"integer","format":"int32","example":0},"processingFeeBps":{"type":"integer","format":"int32","example":200},"insuranceFeeBps":{"type":"integer","format":"int32","example":50},"latePaymentPenaltyBps":{"type":"integer","format":"int32","example":500},"collateralRequired":{"type":"boolean"},"minCollateralCoveragePct":{"type":"integer","format":"int32"},"maxLoansPerCustomer":{"type":"integer","format":"int32"},"requiresGuarantor":{"type":"boolean"},"createdBy":{"type":"string","format":"uuid"}},"description":"Create a new loan product"},"LoanProductResponse":{"required":["code","collateralRequired","currency","gracePeriodDays","id","insuranceFeeBps","interestMethod","interestRateBps","interestRatePercent","isActive","latePaymentPenaltyBps","maxAmountCents","maxAmountDecimal","maxLoansPerCustomer","maxTermMonths","minAmountCents","minAmountDecimal","minCollateralCoveragePct","minTermMonths","name","processingFeeBps","repaymentFrequency","requiresGuarantor"],"type":"object","properties":{"id":{"type":"string","format":"uuid"},"code":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"currency":{"type":"string","enum":["USD","ZWG"]},"interestRateBps":{"type":"integer","format":"int32"},"interestRatePercent":{"type":"number"},"interestMethod":{"type":"string","enum":["FLAT","DECLINING_BALANCE","REDUCING_BALANCE"]},"repaymentFrequency":{"type":"string","enum":["DAILY","WEEKLY","BIWEEKLY","MONTHLY","QUARTERLY","SEMI_ANNUALLY","ANNUALLY","BULLET"]},"minTermMonths":{"type":"integer","format":"int32"},"maxTermMonths":{"type":"integer","format":"int32"},"minAmountCents":{"type":"integer","format":"int64"},"maxAmountCents":{"type":"integer","format":"int64"},"minAmountDecimal":{"type":"number"},"maxAmountDecimal":{"type":"number"},"gracePeriodDays":{"type":"integer","format":"int32"},"processingFeeBps":{"type":"integer","format":"int32"},"insuranceFeeBps":{"type":"integer","format":"int32"},"latePaymentPenaltyBps":{"type":"integer","format":"int32"},"collateralRequired":{"type":"boolean"},"minCollateralCoveragePct":{"type":"integer","format":"int32"},"maxLoansPerCustomer":{"type":"integer","format":"int32"},"requiresGuarantor":{"type":"boolean"},"isActive":{"type":"boolean"}}},"SubmitLoanApplicationRequest":{"required":["createdBy","customerId","existingLoanObligationsCents","loanProductId","purpose","requestedAmountCents","termMonths"],"type":"object","properties":{"customerId":{"type":"string","format":"uuid"},"loanProductId":{"type":"string","format":"uuid"},"requestedAmountCents":{"type":"integer","description":"Requested loan amount in cents","format":"int64","example":100000},"termMonths":{"type":"integer","format":"int32","example":12},"purpose":{"type":"string","example":"Working capital for farming season"},"monthlyIncomeCents":{"type":"integer","format":"int64","example":250000},"monthlyExpensesCents":{"type":"integer","format":"int64","example":150000},"existingLoanObligationsCents":{"type":"integer","format":"int64"},"employmentStatus":{"type":"string","enum":["EMPLOYED","SELF_EMPLOYED","BUSINESS_OWNER","RETIRED","UNEMPLOYED","STUDENT"]},"employerName":{"type":"string"},"branchId":{"type":"string","format":"uuid"},"createdBy":{"type":"string","format":"uuid"}},"description":"Submit a loan application"},"LoanApplicationResponse":{"required":["applicationReference","createdAt","customerId","customerName","existingLoanObligationsCents","id","loanProductId","loanProductName","purpose","requestedAmountCents","requestedAmountDecimal","status","termMonths"],"type":"object","properties":{"id":{"type":"string","format":"uuid"},"applicationReference":{"type":"string"},"customerId":{"type":"string","format":"uuid"},"customerName":{"type":"string"},"loanProductId":{"type":"string","format":"uuid"},"loanProductName":{"type":"string"},"requestedAmountCents":{"type":"integer","format":"int64"},"requestedAmountDecimal":{"type":"number"},"approvedAmountCents":{"type":"integer","format":"int64"},"termMonths":{"type":"integer","format":"int32"},"purpose":{"type":"string"},"status":{"type":"string","enum":["SUBMITTED","UNDER_REVIEW","ADDITIONAL_INFO_REQUIRED","PENDING_CHECKER_APPROVAL","APPROVED","REJECTED","DISBURSED","CANCELLED","EXPIRED"]},"creditScore":{"type":"integer","format":"int32"},"debtToIncomeRatioBps":{"type":"integer","format":"int32"},"monthlyIncomeCents":{"type":"integer","format":"int64"},"monthlyExpensesCents":{"type":"integer","format":"int64"},"existingLoanObligationsCents":{"type":"integer","format":"int64"},"employmentStatus":{"type":"string","enum":["EMPLOYED","SELF_EMPLOYED","BUSINESS_OWNER","RETIRED","UNEMPLOYED","STUDENT"]},"employerName":{"type":"string"},"rejectionReason":{"type":"string"},"reviewedBy":{"type":"string","format":"uuid"},"reviewedAt":{"type":"string","format":"date-time"},"approvedBy":{"type":"string","format":"uuid"},"approvedAt":{"type":"string","format":"date-time"},"expiresAt":{"type":"string","format":"date-time"},"createdAt":{"type":"string","format":"date-time"}}},"RejectLoanApplicationRequest":{"required":["reason","rejectedBy"],"type":"object","properties":{"rejectedBy":{"type":"string","format":"uuid"},"reason":{"type":"string"}},"description":"Reject a loan application"},"ApproveLoanApplicationRequest":{"required":["approvedBy"],"type":"object","properties":{"approvedBy":{"type":"string","format":"uuid"},"approvedAmountCents":{"type":"integer","description":"If null, approves for requested amount","format":"int64"}},"description":"Approve a loan application"},"InitiateKycDto":{"required":["customerId","idNumber","idType","initiatedBy"],"type":"object","properties":{"customerId":{"type":"string","format":"uuid"},"idType":{"type":"string","enum":["NATIONAL_ID","PASSPORT","DRIVERS_LICENSE","COMPANY_REGISTRATION"]},"idNumber":{"type":"string"},"idExpiryDate":{"type":"string","format":"date"},"addressType":{"type":"string","enum":["UTILITY_BILL","BANK_STATEMENT","LEASE_AGREEMENT","EMPLOYER_LETTER"]},"sourceOfFunds":{"type":"string"},"sourceOfWealth":{"type":"string"},"expectedMonthlyTurnoverCents":{"type":"integer","format":"int64"},"notes":{"type":"string"},"initiatedBy":{"type":"string","format":"uuid"}}},"KycRecordResponse":{"required":["addressVerified","createdAt","customerId","id","idNumber","idType","idVerified","kycLevel","riskScore","status","updatedAt"],"type":"object","properties":{"id":{"type":"string","format":"uuid"},"customerId":{"type":"string","format":"uuid"},"kycLevel":{"type":"string","enum":["SIMPLIFIED","STANDARD","ENHANCED"]},"status":{"type":"string","enum":["PENDING","IN_REVIEW","APPROVED","REJECTED","EXPIRED"]},"idType":{"type":"string","enum":["NATIONAL_ID","PASSPORT","DRIVERS_LICENSE","COMPANY_REGISTRATION"]},"idNumber":{"type":"string"},"idExpiryDate":{"type":"string","format":"date"},"idVerified":{"type":"boolean"},"addressType":{"type":"string","enum":["UTILITY_BILL","BANK_STATEMENT","LEASE_AGREEMENT","EMPLOYER_LETTER"]},"addressVerified":{"type":"boolean"},"sourceOfFunds":{"type":"string"},"sourceOfWealth":{"type":"string"},"expectedMonthlyTurnoverCents":{"type":"integer","format":"int64"},"riskScore":{"type":"integer","format":"int32"},"reviewedBy":{"type":"string","format":"uuid"},"reviewedAt":{"type":"string","format":"date-time"},"approvedBy":{"type":"string","format":"uuid"},"approvedAt":{"type":"string","format":"date-time"},"rejectionReason":{"type":"string"},"expiryDate":{"type":"string","format":"date"},"nextReviewDate":{"type":"string","format":"date"},"notes":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}},"PerformedByDto":{"required":["performedBy"],"type":"object","properties":{"performedBy":{"type":"string","format":"uuid"}}},"ReviewKycDto":{"required":["decision","reviewedBy"],"type":"object","properties":{"decision":{"type":"string","enum":["APPROVE","REJECT"]},"reviewedBy":{"type":"string","format":"uuid"}}},"RejectKycDto":{"required":["reason","rejectedBy"],"type":"object","properties":{"reason":{"type":"string"},"rejectedBy":{"type":"string","format":"uuid"}}},"ExternalCheckResultResponse":{"required":["checkedAt","outcome","source"],"type":"object","properties":{"outcome":{"type":"string","enum":["MATCH","NO_MATCH","INCONCLUSIVE"]},"source":{"type":"string"},"reference":{"type":"string"},"checkedAt":{"type":"string","format":"date-time"},"details":{"$ref":"#/components/schemas/JsonNode"}}},"JsonNode":{"type":"object"},"KycExternalChecksResponse":{"required":["checkedAt","customerId","kycRecordId","performedBy","providerMode","runId"],"type":"object","properties":{"kycRecordId":{"type":"string","format":"uuid"},"customerId":{"type":"string","format":"uuid"},"runId":{"type":"string","format":"uuid"},"providerMode":{"type":"string"},"checkedAt":{"type":"string","format":"date-time"},"performedBy":{"type":"string","format":"uuid"},"identityRegistry":{"$ref":"#/components/schemas/ExternalCheckResultResponse"},"sanctionsAndPep":{"$ref":"#/components/schemas/ExternalCheckResultResponse"},"creditBureau":{"$ref":"#/components/schemas/ExternalCheckResultResponse"},"adverseMedia":{"$ref":"#/components/schemas/ExternalCheckResultResponse"}}},"ApprovedByDto":{"required":["approvedBy"],"type":"object","properties":{"approvedBy":{"type":"string","format":"uuid"}}},"InterestCapitalisationResultResponse":{"required":["failedAccounts","processedAccounts","totalCapitalisedCents","totalCapitalisedDecimal","valueDate"],"type":"object","properties":{"processedAccounts":{"type":"integer","format":"int32"},"totalCapitalisedCents":{"type":"integer","format":"int64"},"totalCapitalisedDecimal":{"type":"number"},"failedAccounts":{"type":"array","items":{"type":"string","format":"uuid"}},"valueDate":{"type":"string","format":"date"}}},"InterestAccrualResultResponse":{"required":["failedAccounts","processedAccounts","totalInterestAccruedCents","totalInterestAccruedDecimal","valueDate"],"type":"object","properties":{"processedAccounts":{"type":"integer","format":"int32"},"totalInterestAccruedCents":{"type":"integer","format":"int64"},"totalInterestAccruedDecimal":{"type":"number"},"failedAccounts":{"type":"array","items":{"type":"string","format":"uuid"}},"valueDate":{"type":"string","format":"date"}}},"CreateGlAccountRequest":{"required":["allowDirectPosting","code","currency","name","performedBy","type"],"type":"object","properties":{"code":{"maxLength":32,"minLength":0,"type":"string","example":"2900-DEV"},"name":{"type":"string","example":"Suspense - Development"},"type":{"type":"string","example":"LIABILITY","enum":["ASSET","LIABILITY","EQUITY","REVENUE","EXPENSE"]},"currency":{"type":"string","example":"USD","enum":["USD","ZWG"]},"parentCode":{"type":"string","description":"Optional parent, by code","example":"2000"},"allowDirectPosting":{"type":"boolean","description":"Accept direct postings even once this account has children"},"parentId":{"type":"string","description":"Optional parent, by id. Takes precedence over parentCode","format":"uuid"},"performedBy":{"type":"string","description":"Actor recorded on the audit entry","format":"uuid"}}},"ImportGlAccountRow":{"required":["code","currency","name","type"],"type":"object","properties":{"code":{"maxLength":32,"minLength":0,"type":"string"},"name":{"type":"string"},"type":{"type":"string","enum":["ASSET","LIABILITY","EQUITY","REVENUE","EXPENSE"]},"currency":{"type":"string","enum":["USD","ZWG"]},"parentCode":{"type":"string"},"parentId":{"type":"string","format":"uuid"}}},"ImportGlAccountsRequest":{"required":["accounts","performedBy"],"type":"object","properties":{"accounts":{"type":"array","items":{"$ref":"#/components/schemas/ImportGlAccountRow"}},"performedBy":{"type":"string","format":"uuid"}}},"GlAccountImportError":{"required":["index","message"],"type":"object","properties":{"index":{"type":"integer","format":"int32"},"code":{"type":"string"},"message":{"type":"string"}}},"ImportGlAccountsResponse":{"required":["accounts","errors","imported"],"type":"object","properties":{"imported":{"type":"integer","format":"int32"},"accounts":{"type":"array","items":{"$ref":"#/components/schemas/GlAccountResponse"}},"errors":{"type":"array","items":{"$ref":"#/components/schemas/GlAccountImportError"}}}},"CreateExchangeRateRequest":{"required":["effectiveDate","fromCurrency","rateMultiplier","toCurrency"],"type":"object","properties":{"fromCurrency":{"type":"string","enum":["USD","ZWG"]},"toCurrency":{"type":"string","enum":["USD","ZWG"]},"rateMultiplier":{"type":"integer","format":"int64"},"effectiveDate":{"type":"string","format":"date"},"source":{"type":"string"},"createdBy":{"type":"string","format":"uuid"}}},"ExchangeRateResponse":{"required":["createdAt","effectiveDate","fromCurrency","id","rateDecimal","rateMultiplier","toCurrency"],"type":"object","properties":{"id":{"type":"string","format":"uuid"},"fromCurrency":{"type":"string","enum":["USD","ZWG"]},"toCurrency":{"type":"string","enum":["USD","ZWG"]},"rateMultiplier":{"type":"integer","format":"int64"},"rateDecimal":{"type":"number"},"effectiveDate":{"type":"string","format":"date"},"source":{"type":"string"},"createdAt":{"type":"string","format":"date-time"}}},"ConversionResponse":{"required":["effectiveDate","fromAmountCents","fromAmountDecimal","fromCurrency","rateUsed","toAmountCents","toAmountDecimal","toCurrency"],"type":"object","properties":{"fromCurrency":{"type":"string","enum":["USD","ZWG"]},"toCurrency":{"type":"string","enum":["USD","ZWG"]},"fromAmountCents":{"type":"integer","format":"int64"},"toAmountCents":{"type":"integer","format":"int64"},"fromAmountDecimal":{"type":"number"},"toAmountDecimal":{"type":"number"},"rateUsed":{"type":"number"},"effectiveDate":{"type":"string","format":"date"}}},"CreateCustomerRequest":{"required":["dateOfBirth","firstName","isPep","lastName","nationalId","phone"],"type":"object","properties":{"nationalId":{"type":"string","example":"63-456789-C-03"},"firstName":{"type":"string","example":"Kudzai"},"lastName":{"type":"string","example":"Nhongo"},"dateOfBirth":{"type":"string","format":"date","example":"1992-08-14"},"phone":{"type":"string","example":"+263773456789"},"email":{"type":"string","example":"kudzai.nhongo@example.com"},"isPep":{"type":"boolean","example":false}}},"CustomerResponse":{"required":["createdAt","dateOfBirth","firstName","id","isPep","kycStatus","lastName","nationalId","phone","riskRating","updatedAt"],"type":"object","properties":{"id":{"type":"string","format":"uuid"},"nationalId":{"type":"string"},"firstName":{"type":"string"},"lastName":{"type":"string"},"dateOfBirth":{"type":"string","format":"date"},"phone":{"type":"string"},"email":{"type":"string"},"kycStatus":{"type":"string","enum":["PENDING","VERIFIED","REJECTED","EXPIRED"]},"riskRating":{"type":"string","enum":["LOW","MEDIUM","HIGH","PROHIBITED"]},"isPep":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}},"PrudentialReturnResponse":{"required":["createdAt","data","id","reportingPeriodEnd","reportingPeriodStart","returnType","status"],"type":"object","properties":{"id":{"type":"string","format":"uuid"},"returnType":{"type":"string","enum":["CAPITAL_ADEQUACY","LIQUIDITY_RATIO","DEPOSIT_RETURN","LARGE_EXPOSURE","FOREIGN_CURRENCY","AML_STATISTICS"]},"reportingPeriodStart":{"type":"string","format":"date"},"reportingPeriodEnd":{"type":"string","format":"date"},"status":{"type":"string","enum":["DRAFT","GENERATED","REVIEWED","SUBMITTED","ACKNOWLEDGED"]},"data":{"type":"string"},"generatedAt":{"type":"string","format":"date-time"},"generatedBy":{"type":"string","format":"uuid"},"reviewedBy":{"type":"string","format":"uuid"},"reviewedAt":{"type":"string","format":"date-time"},"submittedAt":{"type":"string","format":"date-time"},"rbzReference":{"type":"string"},"createdAt":{"type":"string","format":"date-time"}}},"ReviewReturnDto":{"required":["reviewedBy"],"type":"object","properties":{"reviewedBy":{"type":"string","format":"uuid"}}},"CreateStrDto":{"required":["customerId","indicators","preparedBy","suspicionDescription","suspicionType"],"type":"object","properties":{"alertId":{"type":"string","format":"uuid"},"customerId":{"type":"string","format":"uuid"},"accountId":{"type":"string","format":"uuid"},"suspicionType":{"type":"string"},"suspicionDescription":{"type":"string"},"indicators":{"type":"array","items":{"type":"string"}},"preparedBy":{"type":"string","format":"uuid"}}},"StrResponse":{"required":["createdAt","customerId","id","preparedBy","status","strReference","suspicionDescription","suspicionType"],"type":"object","properties":{"id":{"type":"string","format":"uuid"},"strReference":{"type":"string"},"alertId":{"type":"string","format":"uuid"},"customerId":{"type":"string","format":"uuid"},"accountId":{"type":"string","format":"uuid"},"suspicionType":{"type":"string"},"suspicionDescription":{"type":"string"},"status":{"type":"string","enum":["DRAFT","PENDING_REVIEW","APPROVED","FILED","ACKNOWLEDGED"]},"preparedBy":{"type":"string","format":"uuid"},"reviewedBy":{"type":"string","format":"uuid"},"reviewedAt":{"type":"string","format":"date-time"},"filedAt":{"type":"string","format":"date-time"},"fiuReference":{"type":"string"},"createdAt":{"type":"string","format":"date-time"}}},"ReviewStrDto":{"required":["reviewedBy"],"type":"object","properties":{"reviewedBy":{"type":"string","format":"uuid"}}},"ApproveStrDto":{"required":["approvedBy"],"type":"object","properties":{"approvedBy":{"type":"string","format":"uuid"}}},"CreateBranchRequest":{"required":["code","name"],"type":"object","properties":{"code":{"type":"string"},"name":{"type":"string"},"region":{"type":"string"},"address":{"type":"string"}}},"BranchResponse":{"required":["code","createdAt","id","isActive","name","openedAt"],"type":"object","properties":{"id":{"type":"string","format":"uuid"},"code":{"type":"string"},"name":{"type":"string"},"region":{"type":"string"},"address":{"type":"string"},"isActive":{"type":"boolean"},"openedAt":{"type":"string","format":"date-time"},"createdAt":{"type":"string","format":"date-time"}}},"AddBeneficiaryRequest":{"required":["accountNumber","beneficiaryName","customerId","destinationType","nickname"],"type":"object","properties":{"customerId":{"type":"string","format":"uuid"},"nickname":{"type":"string"},"destinationType":{"type":"string","enum":["INTERNAL","ZIPIT","RTGS","ECOCASH","INNBUCKS","ONEMONEY"]},"accountNumber":{"type":"string"},"bankCode":{"type":"string"},"bankName":{"type":"string"},"beneficiaryName":{"type":"string"},"phoneNumber":{"type":"string"}}},"BeneficiaryResponse":{"required":["accountNumber","beneficiaryName","createdAt","customerId","destinationType","id","isActive","nickname"],"type":"object","properties":{"id":{"type":"string","format":"uuid"},"customerId":{"type":"string","format":"uuid"},"nickname":{"type":"string"},"destinationType":{"type":"string","enum":["INTERNAL","ZIPIT","RTGS","ECOCASH","INNBUCKS","ONEMONEY"]},"accountNumber":{"type":"string"},"bankCode":{"type":"string"},"bankName":{"type":"string"},"beneficiaryName":{"type":"string"},"phoneNumber":{"type":"string"},"isActive":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time"}}},"AddBeneficialOwnerDto":{"required":["addedBy","controlType","customerId","isPep","ownerName","ownershipPercentage"],"type":"object","properties":{"customerId":{"type":"string","format":"uuid"},"ownerName":{"type":"string"},"nationalId":{"type":"string"},"dateOfBirth":{"type":"string","format":"date"},"nationality":{"type":"string"},"ownershipPercentage":{"type":"number"},"controlType":{"type":"string","enum":["DIRECT_OWNERSHIP","INDIRECT_OWNERSHIP","VOTING_RIGHTS","MANAGEMENT_CONTROL"]},"isPep":{"type":"boolean"},"addedBy":{"type":"string","format":"uuid"}}},"BeneficialOwnerResponse":{"required":["controlType","createdAt","customerId","id","isPep","ownerName","ownershipPercentage","verificationStatus"],"type":"object","properties":{"id":{"type":"string","format":"uuid"},"customerId":{"type":"string","format":"uuid"},"ownerName":{"type":"string"},"nationalId":{"type":"string"},"dateOfBirth":{"type":"string","format":"date"},"nationality":{"type":"string"},"ownershipPercentage":{"type":"number"},"controlType":{"type":"string","enum":["DIRECT_OWNERSHIP","INDIRECT_OWNERSHIP","VOTING_RIGHTS","MANAGEMENT_CONTROL"]},"isPep":{"type":"boolean"},"verificationStatus":{"type":"string","enum":["UNVERIFIED","VERIFIED","UNABLE_TO_VERIFY"]},"verifiedBy":{"type":"string","format":"uuid"},"verifiedAt":{"type":"string","format":"date-time"},"createdAt":{"type":"string","format":"date-time"}}},"VerifyOwnerDto":{"required":["verifiedBy"],"type":"object","properties":{"verifiedBy":{"type":"string","format":"uuid"}}},"CreateApprovalRequestDto":{"required":["entityId","entityType","makerId","payload","requestType"],"type":"object","properties":{"requestType":{"type":"string","enum":["ACCOUNT_OPENING","TRANSACTION_POSTING","PRODUCT_CHANGE","ACCOUNT_CLOSURE","ACCOUNT_FREEZE","PAYMENT_APPROVAL","BATCH_PAYMENT_APPROVAL","LOAN_APPROVAL","LOAN_DISBURSEMENT","LOAN_WRITE_OFF","LOAN_RESTRUCTURE"]},"entityType":{"type":"string"},"entityId":{"type":"string","format":"uuid"},"payload":{"type":"string"},"makerId":{"type":"string","format":"uuid"},"makerNotes":{"type":"string"}}},"ApprovalDecisionDto":{"required":["checkerId"],"type":"object","properties":{"checkerId":{"type":"string","format":"uuid"},"checkerNotes":{"type":"string"}}},"CreateApiKeyRequest":{"required":["clientName","rateLimitPerMinute","scopes"],"type":"object","properties":{"clientName":{"type":"string","example":"Mobile Banking App"},"scopes":{"type":"string","example":"read,write"},"rateLimitPerMinute":{"minimum":1,"type":"integer","format":"int32","example":60},"description":{"type":"string","example":"API key for mobile app integration"}}},"ApiKeyResponse":{"required":["clientName","createdAt","id","isActive","keyPrefix","rateLimitPerMinute","scopes"],"type":"object","properties":{"id":{"type":"string","format":"uuid"},"clientName":{"type":"string"},"keyPrefix":{"type":"string"},"scopes":{"type":"string"},"rateLimitPerMinute":{"type":"integer","format":"int32"},"isActive":{"type":"boolean"},"description":{"type":"string"},"createdAt":{"type":"string","format":"date-time"}}},"CreateApiKeyResponse":{"required":["apiKey","rawKey"],"type":"object","properties":{"apiKey":{"$ref":"#/components/schemas/ApiKeyResponse"},"rawKey":{"type":"string"}}},"InvestigationNotesDto":{"required":["addedBy","notes"],"type":"object","properties":{"notes":{"type":"string"},"addedBy":{"type":"string","format":"uuid"}}},"TransactionAlertResponse":{"required":["alertReference","alertType","createdAt","customerId","customerName","description","id","ruleCode","ruleName","severity","status"],"type":"object","properties":{"id":{"type":"string","format":"uuid"},"alertReference":{"type":"string"},"ruleCode":{"type":"string"},"ruleName":{"type":"string"},"customerId":{"type":"string","format":"uuid"},"customerName":{"type":"string"},"accountId":{"type":"string","format":"uuid"},"transactionId":{"type":"string","format":"uuid"},"paymentOrderId":{"type":"string","format":"uuid"},"alertType":{"type":"string","enum":["THRESHOLD_BREACH","STRUCTURING_SUSPECTED","VELOCITY_BREACH","PATTERN_DETECTED","PEP_TRANSACTION","HIGH_RISK_COUNTRY","UNUSUAL_BEHAVIOR","LARGE_CASH","DORMANT_REACTIVATION"]},"severity":{"type":"string","enum":["LOW","MEDIUM","HIGH","CRITICAL"]},"status":{"type":"string","enum":["NEW","UNDER_REVIEW","ESCALATED","DISMISSED","STR_FILED","CLOSED"]},"description":{"type":"string"},"amountCents":{"type":"integer","format":"int64"},"currency":{"type":"string"},"assignedTo":{"type":"string","format":"uuid"},"investigationNotes":{"type":"string"},"escalatedTo":{"type":"string","format":"uuid"},"escalatedAt":{"type":"string","format":"date-time"},"resolution":{"type":"string"},"resolvedBy":{"type":"string","format":"uuid"},"resolvedAt":{"type":"string","format":"date-time"},"createdAt":{"type":"string","format":"date-time"}}},"FileStrFromAlertDto":{"required":["filedBy"],"type":"object","properties":{"filedBy":{"type":"string","format":"uuid"}}},"EscalateAlertDto":{"required":["escalatedBy","escalatedTo","reason"],"type":"object","properties":{"escalatedTo":{"type":"string","format":"uuid"},"reason":{"type":"string"},"escalatedBy":{"type":"string","format":"uuid"}}},"DismissAlertDto":{"required":["dismissedBy","reason"],"type":"object","properties":{"reason":{"type":"string"},"dismissedBy":{"type":"string","format":"uuid"}}},"CloseAlertDto":{"required":["closedBy","resolution"],"type":"object","properties":{"resolution":{"type":"string"},"closedBy":{"type":"string","format":"uuid"}}},"AssignAlertDto":{"required":["assignedBy","assignedTo"],"type":"object","properties":{"assignedTo":{"type":"string","format":"uuid"},"assignedBy":{"type":"string","format":"uuid"}}},"CreateAccountRequest":{"required":["accountType","currency","customerId","initialDepositCents","productId"],"type":"object","properties":{"customerId":{"type":"string","format":"uuid","example":"3a262ddd-0cd3-41c9-a6ff-ff420b4e9077"},"accountType":{"type":"string","example":"SAVINGS","enum":["SAVINGS","CURRENT","FIXED_DEPOSIT","CALL_DEPOSIT","YOUTH_SAVINGS","GROUP_SAVINGS","SME_BUSINESS","AGENT_FLOAT","TRUST","SALARY_SAVINGS"]},"productId":{"type":"string","format":"uuid","example":"b0000001-0000-0000-0000-000000000001"},"currency":{"type":"string","example":"USD","enum":["USD","ZWG"]},"initialDepositCents":{"type":"integer","description":"Must be 0: accounts open unfunded; fund via POST /v1/accounts/{id}/deposit afterwards","format":"int64","example":0}}},"AccountResponse":{"required":["accountNumber","accountType","balanceCents","balanceDecimal","currency","customerId","customerName","id","minimumOpeningBalanceCents","openedAt","openingCreditsCents","productName","status"],"type":"object","properties":{"id":{"type":"string","format":"uuid"},"customerId":{"type":"string","format":"uuid"},"customerName":{"type":"string"},"accountNumber":{"type":"string"},"accountType":{"type":"string","enum":["SAVINGS","CURRENT","FIXED_DEPOSIT","CALL_DEPOSIT","YOUTH_SAVINGS","GROUP_SAVINGS","SME_BUSINESS","AGENT_FLOAT","TRUST","SALARY_SAVINGS"]},"productName":{"type":"string"},"currency":{"type":"string","enum":["USD","ZWG"]},"balanceCents":{"type":"integer","format":"int64"},"balanceDecimal":{"type":"number"},"status":{"type":"string","enum":["PENDING_ACTIVATION","ACTIVE","DORMANT","FROZEN","CLOSED"]},"openedAt":{"type":"string","format":"date-time"},"lastTransactionAt":{"type":"string","format":"date-time"},"fundedAt":{"type":"string","format":"date-time"},"openingCreditsCents":{"type":"integer","format":"int64"},"minimumOpeningBalanceCents":{"type":"integer","format":"int64"}}},"TransferRequest":{"required":["amountCents","currency","targetAccountId","transferredBy"],"type":"object","properties":{"targetAccountId":{"type":"string","format":"uuid","example":"cb9650d9-a2a8-4f6e-a7f9-cb303f8c68ea"},"amountCents":{"type":"integer","format":"int64","example":5000},"currency":{"type":"string","example":"USD","enum":["USD","ZWG"]},"transferredBy":{"type":"string","format":"uuid","example":"3dcb3a71-6c65-4493-aa4e-104ba4ac2cc5"},"description":{"type":"string","example":"Monthly rent payment"}}},"WithdrawRequest":{"required":["amountCents","channel","currency","withdrawnBy"],"type":"object","properties":{"amountCents":{"type":"integer","format":"int64","example":10000},"currency":{"type":"string","example":"USD","enum":["USD","ZWG"]},"channel":{"type":"string","example":"BRANCH"},"withdrawnBy":{"type":"string","format":"uuid","example":"3a262ddd-0cd3-41c9-a6ff-ff420b4e9077"}}},"AccountActionRequest":{"required":["performedBy"],"type":"object","properties":{"performedBy":{"type":"string","format":"uuid","example":"3a262ddd-0cd3-41c9-a6ff-ff420b4e9077"},"reason":{"type":"string","example":"Routine account review"}}},"DepositRequest":{"required":["amountCents","channel","currency","depositedBy"],"type":"object","properties":{"amountCents":{"type":"integer","format":"int64","example":25000},"currency":{"type":"string","example":"USD","enum":["USD","ZWG"]},"channel":{"type":"string","example":"BRANCH"},"depositedBy":{"type":"string","format":"uuid","example":"3a262ddd-0cd3-41c9-a6ff-ff420b4e9077"}}},"DormancyCheckResultResponse":{"required":["accountIds","accountsChecked","accountsMarkedDormant"],"type":"object","properties":{"accountsChecked":{"type":"integer","format":"int32"},"accountsMarkedDormant":{"type":"integer","format":"int32"},"accountIds":{"type":"array","items":{"type":"string","format":"uuid"}}}},"ReserveComplianceResponse":{"required":["currency","isCompliant","surplusDeficitCents"],"type":"object","properties":{"currency":{"type":"string","enum":["USD","ZWG"]},"isCompliant":{"type":"boolean"},"surplusDeficitCents":{"type":"integer","format":"int64"}}},"InvestmentPortfolioSummaryResponse":{"required":["averageYieldBps","byCurrency","byType","totalAccruedInterestCents","totalCurrentValueCents","totalFaceValueCents","weightedAverageMaturityDays"],"type":"object","properties":{"totalFaceValueCents":{"type":"integer","format":"int64"},"totalCurrentValueCents":{"type":"integer","format":"int64"},"totalAccruedInterestCents":{"type":"integer","format":"int64"},"byType":{"type":"object","additionalProperties":{"type":"integer","format":"int64"}},"byCurrency":{"type":"object","additionalProperties":{"type":"integer","format":"int64"}},"averageYieldBps":{"type":"integer","format":"int32"},"weightedAverageMaturityDays":{"type":"integer","format":"int32"}}},"TreasuryDashboardResponse":{"required":["actualReserveCents","capitalAdequacyRatioBps","cashPositionCents","currency","date","demandDepositsCents","fixedDepositsCents","investmentPortfolioCents","investmentsMaturing30DaysCents","isReserveCompliant","liquidityRatioBps","nostroBalanceCents","openComplianceAlerts","pendingPaymentsCents","projectedInflowsTodayCents","projectedNetCashFlowCents","projectedOutflowsTodayCents","requiredReserveCents","reserveSurplusDeficitCents","savingsDepositsCents","totalDepositsCents","totalLiquidAssetsCents","unsettledPaymentsCents"],"type":"object","properties":{"date":{"type":"string","format":"date"},"currency":{"type":"string","enum":["USD","ZWG"]},"cashPositionCents":{"type":"integer","format":"int64"},"nostroBalanceCents":{"type":"integer","format":"int64"},"totalLiquidAssetsCents":{"type":"integer","format":"int64"},"totalDepositsCents":{"type":"integer","format":"int64"},"demandDepositsCents":{"type":"integer","format":"int64"},"savingsDepositsCents":{"type":"integer","format":"int64"},"fixedDepositsCents":{"type":"integer","format":"int64"},"investmentPortfolioCents":{"type":"integer","format":"int64"},"investmentsMaturing30DaysCents":{"type":"integer","format":"int64"},"liquidityRatioBps":{"type":"integer","format":"int32"},"capitalAdequacyRatioBps":{"type":"integer","format":"int32"},"requiredReserveCents":{"type":"integer","format":"int64"},"actualReserveCents":{"type":"integer","format":"int64"},"reserveSurplusDeficitCents":{"type":"integer","format":"int64"},"isReserveCompliant":{"type":"boolean"},"projectedInflowsTodayCents":{"type":"integer","format":"int64"},"projectedOutflowsTodayCents":{"type":"integer","format":"int64"},"projectedNetCashFlowCents":{"type":"integer","format":"int64"},"openComplianceAlerts":{"type":"integer","format":"int32"},"pendingPaymentsCents":{"type":"integer","format":"int64"},"unsettledPaymentsCents":{"type":"integer","format":"int64"}}},"ForecastAccuracyResponse":{"required":["accuracyPercent","averageVarianceCents","averageVariancePercent","currency","maxOverestimateCents","maxUnderestimateCents","periodEnd","periodStart","totalForecastDays"],"type":"object","properties":{"periodStart":{"type":"string","format":"date"},"periodEnd":{"type":"string","format":"date"},"currency":{"type":"string","enum":["USD","ZWG"]},"totalForecastDays":{"type":"integer","format":"int32"},"averageVarianceCents":{"type":"integer","format":"int64"},"averageVariancePercent":{"type":"number","format":"double"},"maxOverestimateCents":{"type":"integer","format":"int64"},"maxUnderestimateCents":{"type":"integer","format":"int64"},"accuracyPercent":{"type":"number","format":"double"}}},"InterestRateSensitivityResponse":{"required":["currency","date","gapCents","isAssetSensitive","niiImpactPer100BpsCents","rateSensitiveAssetsCents","rateSensitiveLiabilitiesCents"],"type":"object","properties":{"date":{"type":"string","format":"date"},"currency":{"type":"string","enum":["USD","ZWG"]},"rateSensitiveAssetsCents":{"type":"integer","format":"int64"},"rateSensitiveLiabilitiesCents":{"type":"integer","format":"int64"},"gapCents":{"type":"integer","format":"int64"},"niiImpactPer100BpsCents":{"type":"integer","format":"int64"},"isAssetSensitive":{"type":"boolean"}}},"FundingGapAnalysisResponse":{"required":["buckets","cumulativeGapCents","currency","date","isPositiveGap","totalGapCents"],"type":"object","properties":{"date":{"type":"string","format":"date"},"currency":{"type":"string","enum":["USD","ZWG"]},"buckets":{"type":"array","items":{"$ref":"#/components/schemas/FundingGapBucketResponse"}},"totalGapCents":{"type":"integer","format":"int64"},"cumulativeGapCents":{"type":"integer","format":"int64"},"isPositiveGap":{"type":"boolean"}}},"FundingGapBucketResponse":{"required":["assetsCents","bucket","cumulativeGapCents","gapCents","liabilitiesCents"],"type":"object","properties":{"bucket":{"type":"string"},"assetsCents":{"type":"integer","format":"int64"},"liabilitiesCents":{"type":"integer","format":"int64"},"gapCents":{"type":"integer","format":"int64"},"cumulativeGapCents":{"type":"integer","format":"int64"}}},"PagedResponseTransactionResponse":{"required":["content","first","last","page","size","totalElements","totalPages"],"type":"object","properties":{"content":{"type":"array","items":{"$ref":"#/components/schemas/TransactionResponse"}},"page":{"type":"integer","format":"int32"},"size":{"type":"integer","format":"int32"},"totalElements":{"type":"integer","format":"int64"},"totalPages":{"type":"integer","format":"int32"},"first":{"type":"boolean"},"last":{"type":"boolean"}}},"StatementLine":{"required":["balanceCents","balanceDecimal","glCode","glName"],"type":"object","properties":{"glCode":{"type":"string"},"glName":{"type":"string"},"balanceCents":{"type":"integer","format":"int64"},"balanceDecimal":{"type":"number"}}},"StatementOfFinancialPosition":{"required":["asOf","assets","currency","equity","isBalanced","liabilities","totalAssets","totalLiabilitiesAndEquity"],"type":"object","properties":{"asOf":{"type":"string","format":"date"},"branchId":{"type":"string","format":"uuid"},"currency":{"type":"string","enum":["USD","ZWG"]},"assets":{"$ref":"#/components/schemas/StatementSection"},"liabilities":{"$ref":"#/components/schemas/StatementSection"},"equity":{"$ref":"#/components/schemas/StatementSection"},"totalAssets":{"type":"integer","format":"int64"},"totalLiabilitiesAndEquity":{"type":"integer","format":"int64"},"isBalanced":{"type":"boolean"}}},"StatementSection":{"required":["lines","title","totalCents"],"type":"object","properties":{"title":{"type":"string"},"lines":{"type":"array","items":{"$ref":"#/components/schemas/StatementLine"}},"totalCents":{"type":"integer","format":"int64"}}},"IncomeStatement":{"required":["currency","expenses","netIncomeCents","netIncomeDecimal","periodEnd","periodStart","revenue","totalExpensesCents","totalRevenueCents"],"type":"object","properties":{"periodStart":{"type":"string","format":"date"},"periodEnd":{"type":"string","format":"date"},"branchId":{"type":"string","format":"uuid"},"currency":{"type":"string","enum":["USD","ZWG"]},"revenue":{"$ref":"#/components/schemas/StatementSection"},"expenses":{"$ref":"#/components/schemas/StatementSection"},"totalRevenueCents":{"type":"integer","format":"int64"},"totalExpensesCents":{"type":"integer","format":"int64"},"netIncomeCents":{"type":"integer","format":"int64"},"netIncomeDecimal":{"type":"number"}}},"CashFlowItem":{"required":["amountCents","description"],"type":"object","properties":{"description":{"type":"string"},"amountCents":{"type":"integer","format":"int64"}}},"CashFlowSection":{"required":["items","title","totalCents"],"type":"object","properties":{"title":{"type":"string"},"items":{"type":"array","items":{"$ref":"#/components/schemas/CashFlowItem"}},"totalCents":{"type":"integer","format":"int64"}}},"CashFlowStatement":{"required":["closingCashCents","currency","financingActivities","investingActivities","netCashChangeCents","openingCashCents","operatingActivities","periodEnd","periodStart"],"type":"object","properties":{"periodStart":{"type":"string","format":"date"},"periodEnd":{"type":"string","format":"date"},"branchId":{"type":"string","format":"uuid"},"currency":{"type":"string","enum":["USD","ZWG"]},"operatingActivities":{"$ref":"#/components/schemas/CashFlowSection"},"investingActivities":{"$ref":"#/components/schemas/CashFlowSection"},"financingActivities":{"$ref":"#/components/schemas/CashFlowSection"},"netCashChangeCents":{"type":"integer","format":"int64"},"openingCashCents":{"type":"integer","format":"int64"},"closingCashCents":{"type":"integer","format":"int64"}}},"AgingBandResponse":{"required":["action","amountCents","amountDecimal","count"],"type":"object","properties":{"count":{"type":"integer","format":"int32"},"amountCents":{"type":"integer","format":"int64"},"amountDecimal":{"type":"number"},"action":{"type":"string"}}},"SuspenseAgingReportResponse":{"required":["band0to2Days","band16to30Days","band30PlusDays","band3to5Days","band6to15Days","byType","totalOpenAmountCents","totalOpenAmountDecimal","totalOpenItems"],"type":"object","properties":{"totalOpenItems":{"type":"integer","format":"int32"},"totalOpenAmountCents":{"type":"integer","format":"int64"},"totalOpenAmountDecimal":{"type":"number"},"band0to2Days":{"$ref":"#/components/schemas/AgingBandResponse"},"band3to5Days":{"$ref":"#/components/schemas/AgingBandResponse"},"band6to15Days":{"$ref":"#/components/schemas/AgingBandResponse"},"band16to30Days":{"$ref":"#/components/schemas/AgingBandResponse"},"band30PlusDays":{"$ref":"#/components/schemas/AgingBandResponse"},"byType":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/TypeSummaryResponse"}}}},"TypeSummaryResponse":{"required":["amountCents","amountDecimal","count"],"type":"object","properties":{"count":{"type":"integer","format":"int32"},"amountCents":{"type":"integer","format":"int64"},"amountDecimal":{"type":"number"}}},"SuspenseItemResponse":{"required":["ageDays","agingBand","amountCents","amountDecimal","currency","id","postingDate","status","suspenseType","transactionRef"],"type":"object","properties":{"id":{"type":"string","format":"uuid"},"suspenseType":{"type":"string","enum":["ZIMSWITCH","ZETSS","ECOCASH","ONEMONEY","INNBUCKS","ATM","GENERAL"]},"transactionRef":{"type":"string"},"amountCents":{"type":"integer","format":"int64"},"amountDecimal":{"type":"number"},"currency":{"type":"string"},"postingDate":{"type":"string","format":"date"},"ageDays":{"type":"integer","format":"int32"},"status":{"type":"string","enum":["OPEN","MATCHED","CLEARED","ESCALATED","WRITTEN_OFF"]},"narrative":{"type":"string"},"agingBand":{"type":"string"}}},"DefinitionMatchRate":{"required":["batchCount","code","matchRatePercent"],"type":"object","properties":{"code":{"type":"string"},"batchCount":{"type":"integer","format":"int32"},"matchRatePercent":{"type":"number"}}},"MatchRateKpis":{"required":["byDefinition","fromDate","openExceptionAmountCents","openExceptions","openSuspenseAmountCents","openSuspenseItems","overallMatchRatePercent","targetMatchRatePercent","toDate","totalBatches"],"type":"object","properties":{"fromDate":{"type":"string","format":"date"},"toDate":{"type":"string","format":"date"},"totalBatches":{"type":"integer","format":"int32"},"overallMatchRatePercent":{"type":"number"},"targetMatchRatePercent":{"type":"number"},"openExceptions":{"type":"integer","format":"int64"},"openExceptionAmountCents":{"type":"integer","format":"int64"},"openSuspenseItems":{"type":"integer","format":"int64"},"openSuspenseAmountCents":{"type":"integer","format":"int64"},"byDefinition":{"type":"array","items":{"$ref":"#/components/schemas/DefinitionMatchRate"}}}},"BatchSummary":{"required":["batchReference","definitionCode","exceptions","matchRatePercent","matched","sourceRecords","status","targetRecords"],"type":"object","properties":{"batchReference":{"type":"string"},"definitionCode":{"type":"string"},"status":{"type":"string","enum":["PENDING","INGESTING","MATCHING","REVIEW","COMPLETED","FAILED"]},"sourceRecords":{"type":"integer","format":"int32"},"targetRecords":{"type":"integer","format":"int32"},"matched":{"type":"integer","format":"int32"},"exceptions":{"type":"integer","format":"int32"},"matchRatePercent":{"type":"number"}}},"DailyReconciliationSummary":{"required":["batchCount","batchSummaries","date","matchRatePercent","netDifferenceCents","totalExceptions","totalMatched","totalSourceAmountCents","totalSourceRecords","totalTargetAmountCents","totalTargetRecords"],"type":"object","properties":{"date":{"type":"string","format":"date"},"batchCount":{"type":"integer","format":"int32"},"totalSourceRecords":{"type":"integer","format":"int32"},"totalTargetRecords":{"type":"integer","format":"int32"},"totalMatched":{"type":"integer","format":"int32"},"totalExceptions":{"type":"integer","format":"int32"},"matchRatePercent":{"type":"number"},"totalSourceAmountCents":{"type":"integer","format":"int64"},"totalTargetAmountCents":{"type":"integer","format":"int64"},"netDifferenceCents":{"type":"integer","format":"int64"},"batchSummaries":{"type":"array","items":{"$ref":"#/components/schemas/BatchSummary"}}}},"AccountingPeriodResponse":{"required":["createdAt","id","periodDate","periodEnd","periodStart","periodType","status"],"type":"object","properties":{"id":{"type":"string","format":"uuid"},"periodType":{"type":"string","enum":["DAY","MONTH","QUARTER","YEAR"]},"periodDate":{"type":"string","format":"date"},"periodStart":{"type":"string","format":"date"},"periodEnd":{"type":"string","format":"date"},"status":{"type":"string","enum":["OPEN","PROCESSING","CLOSED","REOPENED"]},"openedBy":{"type":"string","format":"uuid"},"closedBy":{"type":"string","format":"uuid"},"closedAt":{"type":"string","format":"date-time"},"notes":{"type":"string"},"createdAt":{"type":"string","format":"date-time"}}},"LoanScheduleResponse":{"required":["dueDate","feesCents","installmentNumber","interestCents","outstandingBalanceCents","paidInterestCents","paidPrincipalCents","principalCents","remainingCents","status","totalCents","totalDecimal"],"type":"object","properties":{"installmentNumber":{"type":"integer","format":"int32"},"dueDate":{"type":"string","format":"date"},"principalCents":{"type":"integer","format":"int64"},"interestCents":{"type":"integer","format":"int64"},"feesCents":{"type":"integer","format":"int64"},"totalCents":{"type":"integer","format":"int64"},"totalDecimal":{"type":"number"},"outstandingBalanceCents":{"type":"integer","format":"int64"},"paidPrincipalCents":{"type":"integer","format":"int64"},"paidInterestCents":{"type":"integer","format":"int64"},"remainingCents":{"type":"integer","format":"int64"},"status":{"type":"string","enum":["PENDING","PARTIALLY_PAID","PAID","OVERDUE","WAIVED"]}}},"LoanProvisioningResponse":{"required":["arrearsDays","classification","collateralValueCents","createdAt","id","loanAccountId","loanNumber","netExposureCents","outstandingBalanceCents","provisionAmountCents","provisionAmountDecimal","provisionRateBps","provisioningDate","stage"],"type":"object","properties":{"id":{"type":"string","format":"uuid"},"loanAccountId":{"type":"string","format":"uuid"},"loanNumber":{"type":"string"},"provisioningDate":{"type":"string","format":"date"},"stage":{"type":"string","enum":["STAGE_1","STAGE_2","STAGE_3"]},"previousStage":{"type":"string","enum":["STAGE_1","STAGE_2","STAGE_3"]},"outstandingBalanceCents":{"type":"integer","format":"int64"},"provisionRateBps":{"type":"integer","format":"int32"},"provisionAmountCents":{"type":"integer","format":"int64"},"provisionAmountDecimal":{"type":"number"},"collateralValueCents":{"type":"integer","format":"int64"},"netExposureCents":{"type":"integer","format":"int64"},"arrearsDays":{"type":"integer","format":"int32"},"classification":{"type":"string","enum":["CURRENT","WATCH","SUBSTANDARD","DOUBTFUL","LOSS"]},"createdAt":{"type":"string","format":"date-time"}}},"InterestAccrualResponse":{"required":["accountId","accrualDate","accruedCents","accruedDecimal","balanceCents","capitalised","createdAt","id","rateBps"],"type":"object","properties":{"id":{"type":"string","format":"uuid"},"accountId":{"type":"string","format":"uuid"},"accrualDate":{"type":"string","format":"date"},"balanceCents":{"type":"integer","format":"int64"},"rateBps":{"type":"integer","format":"int32"},"accruedCents":{"type":"integer","format":"int64"},"accruedDecimal":{"type":"number"},"capitalised":{"type":"boolean"},"capitalisedAt":{"type":"string","format":"date-time"},"transactionId":{"type":"string","format":"uuid"},"createdAt":{"type":"string","format":"date-time"}}},"GlBalanceResponse":{"required":["balanceCents","balanceDecimal","code","currency","glAccountId","name","type"],"type":"object","properties":{"glAccountId":{"type":"string","format":"uuid"},"code":{"type":"string"},"name":{"type":"string"},"type":{"type":"string","enum":["ASSET","LIABILITY","EQUITY","REVENUE","EXPENSE"]},"currency":{"type":"string","enum":["USD","ZWG"]},"balanceCents":{"type":"integer","format":"int64"},"balanceDecimal":{"type":"number"}}},"GlAccountStatementEntry":{"required":["creditCents","creditDecimal","debitCents","debitDecimal","description","runningBalanceCents","runningBalanceDecimal","transactionId","transactionReference","valueDate"],"type":"object","properties":{"transactionId":{"type":"string","format":"uuid"},"transactionReference":{"type":"string"},"valueDate":{"type":"string","format":"date"},"description":{"type":"string"},"debitCents":{"type":"integer","format":"int64"},"creditCents":{"type":"integer","format":"int64"},"runningBalanceCents":{"type":"integer","format":"int64"},"debitDecimal":{"type":"number"},"creditDecimal":{"type":"number"},"runningBalanceDecimal":{"type":"number"}}},"GlAccountStatementResponse":{"required":["closingBalanceCents","currency","entries","fromDate","glAccountCode","glAccountId","glAccountName","openingBalanceCents","toDate"],"type":"object","properties":{"glAccountId":{"type":"string","format":"uuid"},"glAccountCode":{"type":"string"},"glAccountName":{"type":"string"},"currency":{"type":"string","enum":["USD","ZWG"]},"fromDate":{"type":"string","format":"date"},"toDate":{"type":"string","format":"date"},"openingBalanceCents":{"type":"integer","format":"int64"},"closingBalanceCents":{"type":"integer","format":"int64"},"entries":{"type":"array","items":{"$ref":"#/components/schemas/GlAccountStatementEntry"}}}},"TtrResponse":{"required":["amountCents","createdAt","currency","customerId","id","status","transactionDate","transactionType","ttrReference"],"type":"object","properties":{"id":{"type":"string","format":"uuid"},"ttrReference":{"type":"string"},"customerId":{"type":"string","format":"uuid"},"accountId":{"type":"string","format":"uuid"},"transactionId":{"type":"string","format":"uuid"},"paymentOrderId":{"type":"string","format":"uuid"},"amountCents":{"type":"integer","format":"int64"},"currency":{"type":"string"},"transactionType":{"type":"string"},"transactionDate":{"type":"string","format":"date"},"status":{"type":"string","enum":["PENDING","FILED","ACKNOWLEDGED"]},"filedAt":{"type":"string","format":"date-time"},"fiuReference":{"type":"string"},"createdAt":{"type":"string","format":"date-time"}}},"ReportingStatistics":{"required":["averageStrProcessingDays","strsDraft","strsFiled","totalStrs","totalTtrs","ttrsFiled","ttrsPending"],"type":"object","properties":{"totalStrs":{"type":"integer","format":"int32"},"strsDraft":{"type":"integer","format":"int32"},"strsFiled":{"type":"integer","format":"int32"},"totalTtrs":{"type":"integer","format":"int32"},"ttrsPending":{"type":"integer","format":"int32"},"ttrsFiled":{"type":"integer","format":"int32"},"averageStrProcessingDays":{"type":"number","format":"double"}}},"OwnershipValidationResponse":{"required":["customerId","hasPepOwner","isAdequate","owners","totalOwnershipPercent"],"type":"object","properties":{"customerId":{"type":"string","format":"uuid"},"totalOwnershipPercent":{"type":"number","format":"double"},"isAdequate":{"type":"boolean"},"hasPepOwner":{"type":"boolean"},"owners":{"type":"array","items":{"$ref":"#/components/schemas/BeneficialOwnerResponse"}}}},"AuditLogResponse":{"required":["action","entityId","entityType","id","performedAt","performedBy"],"type":"object","properties":{"id":{"type":"string","format":"uuid"},"entityType":{"type":"string"},"entityId":{"type":"string","format":"uuid"},"action":{"type":"string","enum":["CREATE","UPDATE","DELETE","STATE_CHANGE"]},"performedBy":{"type":"string","format":"uuid"},"performedAt":{"type":"string","format":"date-time"},"ipAddress":{"type":"string"},"oldValue":{"$ref":"#/components/schemas/JsonNode"},"newValue":{"$ref":"#/components/schemas/JsonNode"}}},"PagedResponseAuditLogResponse":{"required":["content","first","last","page","size","totalElements","totalPages"],"type":"object","properties":{"content":{"type":"array","items":{"$ref":"#/components/schemas/AuditLogResponse"}},"page":{"type":"integer","format":"int32"},"size":{"type":"integer","format":"int32"},"totalElements":{"type":"integer","format":"int64"},"totalPages":{"type":"integer","format":"int32"},"first":{"type":"boolean"},"last":{"type":"boolean"}}},"AlertStatistics":{"required":["avgResolutionDays","bySeverity","strsFiled","totalEscalated","totalNew","totalOpen","totalUnderReview"],"type":"object","properties":{"totalOpen":{"type":"integer","format":"int32"},"totalNew":{"type":"integer","format":"int32"},"totalUnderReview":{"type":"integer","format":"int32"},"totalEscalated":{"type":"integer","format":"int32"},"bySeverity":{"type":"object","additionalProperties":{"type":"integer","format":"int32"}},"avgResolutionDays":{"type":"number","format":"double"},"strsFiled":{"type":"integer","format":"int32"}}},"PagedResponseAccountResponse":{"required":["content","first","last","page","size","totalElements","totalPages"],"type":"object","properties":{"content":{"type":"array","items":{"$ref":"#/components/schemas/AccountResponse"}},"page":{"type":"integer","format":"int32"},"size":{"type":"integer","format":"int32"},"totalElements":{"type":"integer","format":"int64"},"totalPages":{"type":"integer","format":"int32"},"first":{"type":"boolean"},"last":{"type":"boolean"}}}},"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","description":"API key for authentication. Include in X-API-Key header. Generate keys via POST /v1/api-keys (requires admin scope). Keys use SHA-256 hashing and support scoped access (read, write, admin) with per-key rate limiting.","name":"X-API-Key","in":"header"}}}}