---
title: BankValidator operations and processes
summary: Operation catalog and cross-operation hub for the BankValidator library.
status: draft
owner: SAIF
last_reviewed: 2026-07-30
library: BankValidator
reference_type: package
---

# BankValidator operations and processes

This page is the operation catalog and cross-operation hub for `BankValidator`. The library exposes a single façade, `SAIF.clsValidateBank`, that groups eight public methods into five cohesive operations against Lyons/CBIZ SOAP vendor services: ABA routing-number validation, company identifier lookup, bank detail retrieval, ATM participation and status, and SSN validation. Each operation's detailed, step-by-step logic lives in its own page under `operations/`.

## Operation catalog

| Operation | Intent | Trigger | Inputs | Outputs | Rules | Tables | SQL |
| --- | --- | --- | --- | --- | --- | --- | --- |
| [ABA routing number validation](operations/aba-routing-number-validation.md) | Determine whether a routing number is structurally valid and/or vendor-verified | Caller invokes `IsValidABANumber` or `IsVerifiedABA` on a constructed `clsValidateBank` | Routing number | `Boolean` structural-validity or verification flag | [BR-002](business-rules.md#br-002-vendor-logon-retry-handling) | — | — |
| [Company identifier lookup](operations/company-identifier-lookup.md) | Resolve a company identifier by serial/payee code or by company name | Caller invokes `FindAsCompanyId` or `FindByCompanyName` | Serial number and payee code, or company name | `Integer` company ID | [BR-002](business-rules.md#br-002-vendor-logon-retry-handling) | — | — |
| [Bank detail retrieval](operations/bank-detail-retrieval.md) | Fetch bank-detail XML, an unaggregated bank list, or a typed `Institutions` DataSet for a routing number | Caller invokes `GetBankFullXML`, `GetBankListXML`, or `GetBankFullDS` | Routing number | XML string, or a populated/empty `Institutions` DataSet | [BR-002](business-rules.md#br-002-vendor-logon-retry-handling), [BR-003](business-rules.md#br-003-bank-lookup-soap-faults-return-empty-results) | — | — |
| [ATM participation and status](operations/atm-participation-and-status.md) | Check ATM-network participation, retrieve and translate an account status, or translate a bare status code | Caller invokes `IsATMParticipant`, `GetATMAccountStatus`, or `TranslateStatusCode` | Routing number; for status lookup, also account number and amount; for translation, a status code | `Boolean` participation flag; status code and description; or a translated description string | [BR-002](business-rules.md#br-002-vendor-logon-retry-handling), [BR-004](business-rules.md#br-004-non-participating-banks-return-unknown-atm-status), [BR-005](business-rules.md#br-005-atm-participation-faults-resolve-to-non-participant) | — | — |
| [SSN validation](operations/ssn-validation.md) | Submit a Social Security Number to the vendor validation service and return its vendor-supplied result | Caller invokes `ValidateSSN` | SSN | Vendor result string | [BR-002](business-rules.md#br-002-vendor-logon-retry-handling) | — | — |

## Process flow diagram

The following diagram shows the common logon/invoke/logoff pattern shared by the five operations and where each one diverges.

```mermaid
flowchart TD
	Start([Caller constructs clsValidateBank<br>with company ID, user ID, password]) --> Select{Which operation?}
	Select -->|ABA validation/verification| ABALogon[LogonABA]
	Select -->|Company lookup| ABALogon
	Select -->|Bank detail retrieval| ABALogon
	Select -->|ATM participation/status| ATMLogon[LogonATM]
	Select -->|SSN validation| SSNLogon[LogonSSN]
	ABALogon --> ABACall[Invoke ABAService method]
	ATMLogon --> ATMCall[Invoke ATMService method]
	SSNLogon --> SSNCall[Invoke SSNKeyService.ValidateSSN]
	ABACall --> ABAFault{SoapException?}
	ABAFault -->|Yes, bank-detail methods| Empty([Return empty XML/DataSet])
	ABAFault -->|No| ABAResult([Return vendor result])
	ATMCall --> ATMFault{SoapException?}
	ATMFault -->|Yes, IsATMParticipant only| NonParticipant([Return False])
	ATMFault -->|No| ATMResult([Return vendor result])
	SSNCall --> SSNResult([Return vendor result string])
	ABAResult --> Logoff[Logoff helper releases token and disposes proxy]
	Empty --> Logoff
	NonParticipant --> Logoff
	ATMResult --> Logoff
	SSNResult --> Logoff
	Logoff --> Done([Result returned to caller])
```

## Failure and edge-case behavior
- All five operations share the same logon-retry behavior defined by [BR-002](business-rules.md#br-002-vendor-logon-retry-handling): a failed `Logon(...)` call retries recursively up to `m_LogonAttemptsMax` times before raising `ApplicationException`.
- Bank detail retrieval methods are the only operation group that converts a vendor `SoapException` into an empty caller result; see [BR-003](business-rules.md#br-003-bank-lookup-soap-faults-return-empty-results).
- ATM participation and status is the only operation group with two distinct fault/edge behaviors: [BR-004](business-rules.md#br-004-non-participating-banks-return-unknown-atm-status) for non-participating banks, and [BR-005](business-rules.md#br-005-atm-participation-faults-resolve-to-non-participant) for `SoapException` during the participation check.
- ABA routing number validation, company identifier lookup, and SSN validation have no method-level `Try/Catch` around the vendor invocation; an exception thrown by the vendor call propagates to the caller and skips the corresponding `Logoff*` call, leaving the session token unreleased.*

## Related documentation
- [Index](index.md)
- [Overview](overview.md)
- [Architecture](architecture.md)
- [Dependencies](dependencies.md)
- [Business rules](business-rules.md)
- [API reference](api/index.md)

> **Note:** Statements marked with `*` were inferred from code structure, naming conventions, or
> contextual evidence where direct confirmation was not available in source artifacts. Statements
> marked with `**` could not be confirmed; treat as unknown until verified.

## Sources
- `Legacy\BankValidator\clsValidateBank.vb`
- `Legacy\BankValidator\Institutions.Designer.vb`


