---
title: clsProviderPaymentPreference
summary: API reference for clsProviderPaymentPreference.
status: draft
owner: SAIF
last_reviewed: 2026-07-24
library: SAIF.Business.Payment.EFT
reference_type: package
---

# clsProviderPaymentPreference

`clsProviderPaymentPreference` is the medical/service-provider payment-method preference business object. It implements the `iPaymentPreference` interface defined in `SAIF.Business.Payment`, scoped specifically to provider payees rather than claimants.

## Purpose
- Persist and retrieve payment method preferences for medical/service providers.
- Implement the `iPaymentPreference` contract for the provider context.
- Expose `AllowDebitCard` to control whether the debit-card option is available to the provider.

## Context
- Namespace: `SAIF.Business.Payment.EFT`
- Assembly/package: `SAIF.BOF.Business.Payment.EFT` (NuGet)
- Implements: `iPaymentPreference` (SAIF.Business.Payment), `IBusinessCriteria`
- Inherits: `clsBusinessBase` (SAIF.BOF.Framework)

## Public members

| Member | Signature | Purpose |
| --- | --- | --- |
| `PAYMENT_PREFERENCE_TYPE_CHECK` | `Public Const PAYMENT_PREFERENCE_TYPE_CHECK = "CHK"` | Code constant representing the check payment preference type. |
| `PAYMENT_PREFERENCE_TYPE_DIRECTDEPOSIT` | `Public Const PAYMENT_PREFERENCE_TYPE_DIRECTDEPOSIT = "DD"` | Code constant representing the direct-deposit payment preference type. |
| `PAYMENT_PREFERENCE_TYPE_DEBITCARD` | `Public Const PAYMENT_PREFERENCE_TYPE_DEBITCARD = "DC"` | Code constant representing the debit-card payment preference type. |
| `PROVIDER_PAYEE_TYPE` | `Public Const PROVIDER_PAYEE_TYPE = "PROV"` | Code constant identifying the provider payee type. |
| `AllowDebitCard` | `Public ReadOnly Property AllowDebitCard As Boolean` | Indicates whether debit-card payment is allowed for this provider payee.* |
| `BankAccountNumber` | `Public Property BankAccountNumber As String` | Gets or sets the decrypted (or masked, per `MyCriteria.MaskBankNumbers`) bank account number stored on `PaymentAuthorization.BankAccount`. |
| `BankAccountTypeCode` | `Public Property BankAccountTypeCode As String` | Gets or sets the bank account type code delegated to `PaymentAuthorization.BankAccount.BankAccountTypeCode`. |
| `BankRoutingNumber` | `Public Property BankRoutingNumber As String` | Gets or sets the decrypted (or masked) bank routing number stored on `PaymentAuthorization.BankAccount`. |
| `Payee` | `Public ReadOnly Property Payee As iPayee` | The provider payee associated with this payment preference. |
| `IsBusinessAccount` | `Public Property IsBusinessAccount As Boolean` | Gets or sets whether the bank account is a business account, mapped to `clsConsumerBusinessCode.BUSINESS`/`CONSUMER` on `PaymentAuthorization.BankAccount`. |
| `SendEmailNotification` | `Public Property SendEmailNotification As Boolean` | Gets or sets whether the provider payee receives email notifications for the payment authorization. |
| `PaymentPreferenceType` | `Public ReadOnly Property PaymentPreferenceType As iPaymentPreference.PaymentPreferenceTypes` | The strongly-typed payment preference type (`Check`, `DirectDeposit`, `DebitCard`) selected for this provider. |
| `PaymentPreferenceTypeCode` | `Public ReadOnly Property PaymentPreferenceTypeCode As String` | The short code (`CHK`/`DD`/`DC`) corresponding to `PaymentPreferenceType`. |
| `ProviderId` | `Public Property ProviderId As Decimal` | The provider identifier this payment preference belongs to. |
| `BankAccountNickName` | `Public Property BankAccountNickName As String` | A user-supplied friendly name for the provider's bank account.* |
| `MaskedBankAccountNumber` | `Public ReadOnly Property MaskedBankAccountNumber As String` | The masked bank account number from `PaymentAuthorization.BankAccount`. |
| `MaskedBankRoutingNumber` | `Public ReadOnly Property MaskedBankRoutingNumber As String` | The masked bank routing number from `PaymentAuthorization.BankAccount`. |
| `PayeeHasForeignOrIATAddress` | `Public ReadOnly Property PayeeHasForeignOrIATAddress As Boolean` | True when any IAT address field is populated, or the provider payee's address is foreign. |
| `IsIAT` | `Public Property IsIAT As Boolean` | Gets or sets `PaymentAuthorization.IATFlag` (International ACH Transaction flag) as a boolean. |
| `IATCity` | `Public Property IATCity As String` | Gets or sets `PaymentAuthorization.IATCity`. |
| `IATCountryCode` | `Public Property IATCountryCode As String` | Gets or sets `PaymentAuthorization.IATCountryCode`. |
| `CountryCodeList` | `Public ReadOnly Property CountryCodeList As SAIF.Business.CodeMappings.clsCountryCodeList` | Lazily-loaded, statically-cached country code list retrieved via `SAIF.Business.CodeMappings.GetCountryCodeList`. |
| `IATCountryName` | `Public ReadOnly Property IATCountryName As String` | The description text for `IATCountryCode` looked up from `CountryCodeList`. |
| `IATStateOrProvince` | `Public Property IATStateOrProvince As String` | Gets or sets `PaymentAuthorization.IATStateProvince`. |
| `IATPostalCode` | `Public Property IATPostalCode As String` | Gets or sets `PaymentAuthorization.IATPostalCode`. |
| `IATStreet` | `Public Property IATStreet As String` | Gets or sets `PaymentAuthorization.IATStreetAddress`. |
| `SecondBankAccountNumber` | `Public Property SecondBankAccountNumber As String` | A secondary bank account number used for confirmation/re-entry during account entry or change.* |
| `BankAccount` | `Public Property BankAccount As clsBankAccount` | The bank account associated with the provider's payment authorization. |
| `PaymentAuthorization` | `Public ReadOnly Property PaymentAuthorization As clsEFTAuthorization` | The underlying `clsEFTAuthorization` child object that backs most bank-account and IAT properties on this class. |
| `BankAccountTypeDescription` | `Public ReadOnly Property BankAccountTypeDescription As String` | Localized description ("Checking"/"Savings") for the bank account type, resolved from `Resources.Business_Payment_EFT`. |
| `PaymentPreferenceTypeDescription` | `Public ReadOnly Property PaymentPreferenceTypeDescription As String` | Localized description of `PaymentPreferenceType` ("Check"/"Debit card"/"Direct deposit"), resolved from `Resources.Business_Payment_EFT`. |
| `IsUserSAIFEmployee` | `Public ReadOnly Property IsUserSAIFEmployee As Boolean` | Indicates whether the current user is a SAIF employee, used to gate masking/validation behavior. |
| `NewPaymentPreference` | `Public Shared Function NewPaymentPreference(inDataPortal As IDataPortalInfo, inProviderId As Decimal, inProviderLocationId As Decimal, inPaymentPreferenceType As iPaymentPreference.PaymentPreferenceTypes, inIsSAIFUser As Boolean, inMaskBankNumbers As Boolean, inBankValidatorXMLDocument As XDocument, Optional inBankAccount As clsBankAccount = Nothing) As clsProviderPaymentPreference` | Creates a new, unsaved `clsProviderPaymentPreference` for the given provider, location, and preference type. |
| `GetPaymentPreference` | `Public Shared Function GetPaymentPreference(inDataPortal As IDataPortalInfo, inProviderId As Decimal, inProviderLocationId As Decimal, inIsUserSAIFEmployee As Boolean, inMaskBankNumbers As Boolean, inBankValidatorXMLDocument As XDocument) As clsProviderPaymentPreference` | Retrieves the existing payment preference for the given provider and location. |
| `IsValidPayee` | `Public Function IsValidPayee() As Boolean` | Validates that the provider payee has a usable name/identity. |
| `IsValid` | `Public Overrides ReadOnly Property IsValid As Boolean` | Triggers bank-number validation when needed, validates child objects, and returns true only when no validation errors are outstanding. |
| `IsDirty` | `Public Overrides ReadOnly Property IsDirty As Boolean` | True when the base object or the `PaymentAuthorization` child object has unsaved changes. |
| `ConvertToPaymentPreferenceType` | `Public Shared Function ConvertToPaymentPreferenceType(inPaymentPreferenceTypeCode As String) As iPaymentPreference.PaymentPreferenceTypes` | Converts a short payment-preference code (`CHK`/`DD`/`DC`) to the corresponding `iPaymentPreference.PaymentPreferenceTypes` value. |
| `GetPayee` | `Public Function GetPayee() As iPayee` | Returns the `iPayee` representation of the provider for this payment preference.* |
| `SetPaymentPreferenceDefaults` | `Public Sub SetPaymentPreferenceDefaults(inPaymentPreferenceType As iPaymentPreference.PaymentPreferenceTypes)` | Resets/initializes default field values appropriate to the given payment preference type.* |
| `Save` | `Public Overrides Function Save() As Boolean` | Persists the payment preference and its child objects through the data portal. |

## Inherited public members

| Member | Signature | Purpose |
| --- | --- | --- |
| `DataPortalInfo` (via `Criteria`) | `Public Property DataPortalInfo() As IDataPortalInfo` implemented from `IBusinessCriteria` on the nested `Criteria` class | Carries the data-portal connection/context information used for retrieve/insert/update/delete operations.* |

## Behavioral notes
- Functionally analogous to `clsPaymentPreference` but scoped to provider context.*
- `AllowDebitCard` governs debit-card option availability; exact eligibility condition not traced.**

## Constraints and usage notes
- Use `clsPaymentPreference` for claimant payment preferences.
- The `iPaymentPreference` contract is defined in `SAIF.BOF.Business.Payment`.

> **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
- `Business\SAIF.Business.Payment.EFT\clsProviderPaymentPreference.vb`
