---
title: Address and bank-validation support
summary: Validates state, ZIP, and country combinations and routes bank-validation behavior according to the current environment.
status: draft
owner: SAIF
last_reviewed: 2026-07-30
library: SAIF.Business
reference_type: package
operation_id: OP-SB-11
trigger: Caller validates address or bank details.
---

# Address and bank-validation support

This operation combines the address-validation helpers from `clsAddress`, `clsAddressStructure`, and `ObjectServices` with the environment-sensitive XML parsing in `BankValidatorServices`. It standardizes both postal validation and external bank-validation responses for higher-level callers.

| Field | Value |
| --- | --- |
| **Operation ID** | OP-SB-11 |
| **Trigger** | Caller invokes address validators or bank-validator response helpers. |
| **Inputs** | State, ZIP, country, routing number, account number, bank-validator XML document |
| **Outputs** | Validation booleans, country name, bank name, or service-availability result |
| **Primary components** | `clsAddress.IsValidState`, `clsAddress.IsStateZipValid`, `clsAddress.CountryName`, `ObjectServices.IsValidState`, `BankValidatorServices.IsValidBankRoutingNum`, `BankValidatorServices.IsVerifiedBankRoutingNum` |
| **Entry point** | `Business\SAIF.Business\ContactInfo\clsAddress.vb` |

## Steps

1. Address validators query the address-support SQL family to confirm that a state exists, a country exists, a state/ZIP combination is valid, or an Oregon ZIP belongs to a known county ([SQL-022](../sql/SQL-022-address-state-country-zip-validation-family.md), [ALL_STATES](../database-tables.md#all-states), [ZIP_CODE](../database-tables.md#zip-code-zip-mco-county), [ZIP_MCO_COUNTY](../database-tables.md#zip-code-zip-mco-county), [COUNTRY](../database-tables.md#country)).
2. `clsAddressStructure` and `clsAddress` reuse those validators when callers set or verify postal fields on richer address objects ([SQL-022](../sql/SQL-022-address-state-country-zip-validation-family.md), [ALL_STATES](../database-tables.md#all-states), [ZIP_CODE](../database-tables.md#zip-code-zip-mco-county), [COUNTRY](../database-tables.md#country)).
3. `ObjectServices.IsValidState` exposes the same state-validation check as a lightweight shared helper for callers that do not already have a `clsAddress` object ([SQL-022](../sql/SQL-022-address-state-country-zip-validation-family.md), [ALL_STATES](../database-tables.md#all-states)).
4. Bank-validation helpers inspect the XML response payload and determine whether the upstream service is available, whether an account number or routing number is syntactically valid, and which bank name was returned.
5. `IsVerifiedBankRoutingNum` changes behavior by environment: development-style environments short-circuit with permissive behavior, while test, QA, and production environments require a real verification result from the service ([BR-SB-008](../business-rules.md#br-sb-008-bank-validation-behavior-changes-by-environment)).
6. When the XML indicates that the service could not log on, the helper methods treat the verification call as unavailable or unsuccessful rather than presenting a positive verification result ([BR-SB-008](../business-rules.md#br-sb-008-bank-validation-behavior-changes-by-environment)).

## Process flow

The following diagram visualizes this operation's control flow.

```mermaid
flowchart TD
    Start([Address or bank-validation request]) --> Kind{Postal or bank?}
    Kind -->|Postal| Postal[Run validation SQL]
    Kind -->|Bank| Bank[Inspect XML response]
    Postal --> Return1([Return validation result])
    Bank --> Env{Environment requires live verification?}
    Env -->|No| Return2([Return permissive dev result])
    Env -->|Yes| Return3([Return verified or unavailable result])
```

## Failure and edge-case behavior

- Postal validators return `False` when the lookup tables do not contain the requested state, country, or ZIP combination.
- Live bank verification is intentionally environment-sensitive and does not behave the same way in development as it does in QA or production ([BR-SB-008](../business-rules.md#br-sb-008-bank-validation-behavior-changes-by-environment)).
- XML responses that indicate service-login problems are treated as unavailable or failed verification rather than as valid bank data ([BR-SB-008](../business-rules.md#br-sb-008-bank-validation-behavior-changes-by-environment)).

## Related documentation
- [Operations and processes](../operations-processes.md)
- [Business rules](../business-rules.md)
- [SQL catalog](../sql/index.md)
- [Database tables](../database-tables.md)

## Sources
- `Business\SAIF.Business\ContactInfo\clsAddress.vb`
- `Business\SAIF.Business\ContactInfo\clsAddressStructure.vb`
- `Business\SAIF.Business\ObjectServices.vb`
- `Business\SAIF.Business\BankValidatorServices.vb`
