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
}
}
| Field | Type | Required | Notes |
|---|---|---|---|
accountNumber | string | one of these | Exact match on account number |
searchText | string | one of these | Partial match on account number, account name, BVN, customer name |
pageIndex | int | no | 0-based, defaults to 0 |
pageSize | int | no | defaults 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​
- Loads the SIL account + linked customer.
- Calls
ISITCoreBankingReplay.FetchAccountFromCoreAsync(accountNumber, provider). - 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).
- Updates
LastCoreSyncBalanceandLastCoreSyncAtso drift is auditable. - Returns
503if 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"
}
}
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.AccountStatusbecomesFrozenimmediately.- A new
SITAccountStateChangerow is inserted withStatus = Pending. - The hosted worker (
SITSyncHostedService) replays the state change to core whenever connectivity allows. - All subsequent posting attempts on the account are rejected with
409by the Active rule. - Returns
409if 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"
}]
}
}