Skip to main content

Account Management

Commands that read or mutate the SIL account / customer cache without posting any financial entry.

SITSearchAccountCommand​

Search the SIL account cache. This command feeds the SIL Account Management screen (Customer Info / Account Details / Transactions tabs).

Cmd: SITSearchAccountCommand

Request​

{
"cmd": "SITSearchAccountCommand",
"data": {
"accountNumber": "0900851943",
"searchText": "Adaeze",
"pageIndex": 0,
"pageSize": 20
}
}
FieldTypeRequiredNotes
accountNumberstringone of theseExact match on account number
searchTextstringone of thesePartial match on account number, account name, BVN, customer name
pageIndexintno0-based, defaults to 0
pageSizeintnodefaults to 20

Response​

Account-rooted with the owning customer summary attached.

{
"isSuccessful": true,
"data": {
"items": [{
"sitAccountId": "...",
"accountNumber": "0900851943",
"accountName": "Adaeze Okafor",
"accountType": "SAVINGS",
"availableBalance": 154300.00,
"ledgerBalance": 154300.00,
"accountStatus": "Active",
"currency": "NGN",
"branchCode": "BR001",
"branchName": "Lagos Marina",
"customer": {
"sitCustomerId": "...",
"coreCustomerId": "C-1234",
"customerType": "Individual",
"displayName": "Adaeze Okafor",
"bvn": "22188776655"
}
}],
"totalRows": 1
}
}

SITGetAccountBalanceCommand​

Quick balance enquiry by account number.

Cmd: SITGetAccountBalanceCommand

Request​

{ "cmd": "SITGetAccountBalanceCommand", "data": { "accountNumber": "0900851943" } }

Response​

Returns balances + status + customer identity.


GetSITAccountListQuery​

Filterable, exportable list of SIL accounts. Uses the standard DynamicPredicateBuilder so the same filters / searchText / searchFields payload shape used elsewhere works unchanged.

Cmd: GetSITAccountListQuery

Request​

{
"cmd": "GetSITAccountListQuery",
"data": {
"pageIndex": 0,
"pageSize": 50,
"isExport": false,
"searchText": "Adaeze",
"searchFields": ["AccountNumber", "AccountName"],
"filters": [
{ "field": "AccountStatus", "operator": "equals", "value": "Active" },
{ "field": "Currency", "operator": "equals", "value": "NGN" }
]
}
}

GetSITCustomerListQuery​

Filterable, exportable list of SIL-cached customers.

Cmd: GetSITCustomerListQuery

Request shape is identical to GetSITAccountListQuery — the DynamicPredicateBuilder resolves filters against the SITCustomer columns instead.


SITSyncAccountCommand​

Pull the canonical account + customer snapshot from the core banking system and refresh the SIL cache. Used when an operator suspects the SIL mirror has drifted from core, or after an extended outage.

Cmd: SITSyncAccountCommand

Request​

{ "cmd": "SITSyncAccountCommand", "data": { "accountNumber": "0900851943" } }

Behaviour​

  1. Loads the SIL account + linked customer.
  2. Calls ISITCoreBankingReplay.FetchAccountFromCoreAsync(accountNumber, provider).
  3. Overwrites the SIL cache only for fields the core actually returned (null fields from core are ignored — local data is never wiped by a partial response).
  4. Updates LastCoreSyncBalance and LastCoreSyncAt so drift is auditable.
  5. Returns 503 if the core adapter is unreachable.

Response​

{
"isSuccessful": true,
"message": "SIT account synced from core.",
"data": {
"sitAccountId": "...",
"accountNumber": "0900851943",
"availableBalance": 154300.00,
"ledgerBalance": 154300.00,
"accountStatus": "Active",
"lastCoreSyncAt": "2026-04-27T09:14:22Z",
"customerCoreId": "C-1234"
}
}
Adapter required

The default NullSITCoreBankingReplay returns 503. Wire a real ISITCoreBankingReplay implementation (BankOne / T24 / Finacle / etc.) in Startup.cs to enable this command.


SITBlockAccountCommand​

Administratively freeze an account. Sets AccountStatus = Frozen and queues a state-change replay to core.

Cmd: SITBlockAccountCommand

Request​

{
"cmd": "SITBlockAccountCommand",
"data": {
"accountNumber": "0900851943",
"reason": "Suspected fraud — pending investigation"
}
}

Effects​

  • SITAccount.AccountStatus becomes Frozen immediately.
  • A new SITAccountStateChange row is inserted with Status = Pending.
  • The hosted worker (SITSyncHostedService) replays the state change to core whenever connectivity allows.
  • All subsequent posting attempts on the account are rejected with 409 by the Active rule.
  • Returns 409 if the account is already frozen.

SITUnblockAccountCommand​

Reverse of Block. Sets AccountStatus = Active and queues a state-change replay to core.

Cmd: SITUnblockAccountCommand

Request​

{
"cmd": "SITUnblockAccountCommand",
"data": {
"accountNumber": "0900851943",
"reason": "Investigation cleared"
}
}

Returns 409 if the account is already active.


SITMandateSearchCommand​

Lookup mandate / signature details for a SIL-cached customer.

Cmd: SITMandateSearchCommand

Request​

Provide one of:

{ "data": { "sitCustomerId": "<guid>" } }
{ "data": { "coreCustomerId": "C-1234" } }
{ "data": { "accountNumber": "0900851943" } }

Response​

{
"data": {
"customer": { "sitCustomerId": "...", "displayName": "Adaeze Okafor", "bvn": "..." },
"mandates": [{
"id": 1,
"roleName": "Primary",
"mandateOption": "AnyOne",
"isSignatureAvailable": true,
"isPassportAvailable": true,
"lastSignatureUpdated": "2026-03-01T10:00:00Z"
}]
}
}