Skip to main content

Account PND — Post No Debit

Overview​

These commands place or remove a Post No Debit (PND) restriction on a deposit account in core banking.
While PND is active, the account cannot be debited; credits are still processed normally.

The core banking provider (BankOne, BankLingo, etc.) is resolved automatically from the account number prefix using the tenant's routing rules — no provider field is required in the request.

Permission Required

DepositManagement.LockAccount


ActivatePndOnAccountBpmCommand​

Places a PND restriction on an account.

Request​

{
"cmd": "ActivatePndOnAccountBpmCommand",
"data": {
"accountNumber": "0123456789",
"reason": "Suspicious transaction pattern — under investigation"
}
}

Request Fields​

FieldTypeRequiredDescription
accountNumberstringYesThe account number to restrict
reasonstringYesReason for placing PND — stored in core banking and audit log

Response​

{
"isSuccessful": true,
"statusCode": "00",
"message": "Account '0123456789' has been placed on PND. No debit transactions will be allowed.",
"data": {
"accountNumber": "0123456789",
"isOnPND": true,
"reason": "Suspicious transaction pattern — under investigation",
"referenceId": "A3F9D2B1C4E7",
"route": "EmpireTrust"
}
}

ReleasePndFromAccountBpmCommand​

Removes an existing PND restriction and restores normal debit access.

Request​

{
"cmd": "ReleasePndFromAccountBpmCommand",
"data": {
"accountNumber": "0123456789",
"reason": "Investigation concluded — no fraud found"
}
}

Request Fields​

FieldTypeRequiredDescription
accountNumberstringYesThe account number to unblock
reasonstringNoReason for releasing PND (defaults to "PND released.")

Response​

{
"isSuccessful": true,
"statusCode": "00",
"message": "PND restriction on account '0123456789' has been lifted.",
"data": {
"accountNumber": "0123456789",
"isOnPND": false,
"reason": "Investigation concluded — no fraud found",
"referenceId": "B7E2A1D3F509",
"route": "EmpireTrust"
}
}

How Provider Routing Works​

The handler calls ICoreBankingRepositoryWrapper.GetProvider(accountNumber) which matches the account prefix against the tenant's routing configuration and returns the appropriate ICoreBankingInterface implementation (BankOne, BankLingo, etc.). No provider code needs to be passed in the request.


Developer Notes (Raji)​

ItemDetail
Command fileCB.Administration.Api/Commands/BPM/Security/AccountPndBpmCommand.cs
HandlerAccountPndBpmCommandHandlers
Provider resolutionICoreBankingRepositoryWrapper.GetProvider(accountNumber, isFromNibssServer: false)
CBS call — activateprovider.AccountUnblockAsync(...) → calls CBS /freezeaccount
CBS call — releaseprovider.BlockAccountAsync(...) → calls CBS /Unfreezeaccount
Note on namingICoreBankingInterface method names are inverted in all CBS implementations. AccountUnblockAsync freezes; BlockAccountAsync unfreezes. This matches the NIBSS outward command pattern.
PermissionPermissionStandardCodes.DepositManagement.LockAccount