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
| Field | Type | Required | Description |
|---|---|---|---|
accountEncodedKey | string | Yes | Account number or encoded key |
notes | string | No | Optional 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
- Extract Fields: Get accountEncodedKey and optional notes
- Account Query: Load account with related entities
- Existence Check: Verify account exists
- PND Check: Verify IsOnPND is currently true
- PND Release: Set IsOnPND flag to false
- Database Update: Persist change
- Notification: Send activity notification
- 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 Code | Message | Resolution |
|---|---|---|
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
- Account Required: accountEncodedKey must be provided
- Account Must Exist: Account must be in system
- Must Be On PND: Account must have IsOnPND = true
- Notes Optional: Release notes are optional
Operational Rules
- Flag Cleared: IsOnPND boolean flag set to false
- Immediate Effect: Debits can resume immediately
- Activity Logged: Release logged with ReleasePND action
- Notification Sent: Activity notification published
- User Recorded: User who released PND is logged
- Balance Unchanged: Account balance unaffected
Related Operations
- ActivatePNDOnAccountCommand: Activate PND restriction
- UnlockDepositAccountCommand: Remove full account lock
- InitiateWithdrawalCommand: Can proceed after PND release
Support
For technical assistance: api-support@banklingo.com