Skip to main content

Release PND (Post No Debit)

Release Post No Debit restriction from a deposit account to restore full debit transaction capabilities.

Overview

The ReleasePNDFromDepositAccountCommand removes the Post No Debit (PND) restriction from an account, allowing withdrawals, transfers, and all debit operations to resume. This command reverses the effect of ActivatePNDOnAccountCommand and is used when the reason for the restriction has been resolved.

Key Capabilities

  • PND Removal: Releases Post No Debit restriction
  • Full Access Restoration: Re-enables all debit operations
  • Audit Trail: Records release reason and user
  • Validation: Ensures account is actually on PND before releasing
  • Activity Notification: Logs release for compliance

API Endpoint

POST /api/bpm/cmd


Request Structure

{
"commandName": "ReleasePNDFromDepositAccountCommand",
"data": {
"accountEncodedKey": "string",
"notes": "string"
}
}

Request Fields

FieldTypeRequiredDescription
accountEncodedKeystringYesAccount number or encoded key
notesstringNoOptional notes/reason for releasing PND

Response Structure

Success Response

{
"isSuccessful": true,
"message": "The deposit account PND (POST NO DEBIT) has been released successfully.",
"statusCode": "00"
}

Error Response

{
"isSuccessful": false,
"message": "The deposit account is not presently on PND (POST NO DEBIT).",
"statusCode": "INVALID_REQUEST"
}

Sample Requests

1. Release After Limit Reset

{
"commandName": "ReleasePNDFromDepositAccountCommand",
"data": {
"accountEncodedKey": "ACC001234567",
"notes": "New day - Daily limits reset, PND released"
}
}

2. Release After Investigation

{
"commandName": "ReleasePNDFromDepositAccountCommand",
"data": {
"accountEncodedKey": "SAV987654321",
"notes": "Suspicious activity investigation completed - No issues found"
}
}

Business Logic

Processing Workflow

Validation Steps

  1. Extract Fields: Get accountEncodedKey and optional notes
  2. Account Query: Load account with related entities
  3. Existence Check: Verify account exists
  4. PND Check: Verify IsOnPND is currently true
  5. PND Release: Set IsOnPND flag to false
  6. Database Update: Persist change
  7. Notification: Send activity notification
  8. Success Response: Return confirmation

Impact of Release

Operations Restored

  • ✅ Withdrawals (cash, ATM, teller)
  • ✅ Transfers out of the account
  • ✅ Bill payments from account
  • ✅ Standing orders (debits)
  • ✅ Card transactions (debit)
  • ✅ Check payments

Error Responses

Error CodeMessageResolution
Client_Not_Found"The deposit account does not exist."Verify account identifier
INVALID_REQUEST"Account not on PND"Check IsOnPND status first

Code Examples

C# Implementation

public async Task<PNDReleaseResponse> ReleasePNDAsync(
string accountEncodedKey,
string notes = null)
{
var request = new
{
commandName = "ReleasePNDFromDepositAccountCommand",
data = new { accountEncodedKey, notes }
};

var json = JsonSerializer.Serialize(request);
var content = new StringContent(json, Encoding.UTF8, "application/json");
var response = await _httpClient.PostAsync($"{_baseUrl}/api/bpm/cmd", content);

return JsonSerializer.Deserialize<PNDReleaseResponse>(
await response.Content.ReadAsStringAsync());
}

JavaScript Implementation

async releasePND(accountEncodedKey, notes = null) {
const request = {
commandName: 'ReleasePNDFromDepositAccountCommand',
data: { accountEncodedKey, notes }
};

const response = await fetch(`${this.baseUrl}/api/bpm/cmd`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${this.accessToken}`,
'X-Tenant-ID': this.tenantId
},
body: JSON.stringify(request)
});

return await response.json();
}

Python Implementation

def release_pnd(
self,
account_encoded_key: str,
notes: Optional[str] = None
) -> PNDReleaseResponse:
request_data = {
'commandName': 'ReleasePNDFromDepositAccountCommand',
'data': {
'accountEncodedKey': account_encoded_key,
'notes': notes
}
}

response = requests.post(
f'{self.base_url}/api/bpm/cmd',
headers=self.headers,
json=request_data
)

result = response.json()
return PNDReleaseResponse(
is_successful=result.get('isSuccessful', False),
message=result.get('message', ''),
status_code=result.get('statusCode', '')
)

Business Rules

Validation Rules

  1. Account Required: accountEncodedKey must be provided
  2. Account Must Exist: Account must be in system
  3. Must Be On PND: Account must have IsOnPND = true
  4. Notes Optional: Release notes are optional

Operational Rules

  1. Flag Cleared: IsOnPND boolean flag set to false
  2. Immediate Effect: Debits can resume immediately
  3. Activity Logged: Release logged with ReleasePND action
  4. Notification Sent: Activity notification published
  5. User Recorded: User who released PND is logged
  6. Balance Unchanged: Account balance unaffected

  • ActivatePNDOnAccountCommand: Activate PND restriction
  • UnlockDepositAccountCommand: Remove full account lock
  • InitiateWithdrawalCommand: Can proceed after PND release

Support

For technical assistance: api-support@banklingo.com