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

# iPaymentPreference

`iPaymentPreference` is a contract interface that describes the shape of a payee's preferred payment method within the SAIF payment domain. It declares the nested `PaymentPreferenceTypes` enum and properties for bank-account routing, account-type, and channel-eligibility flags. The interface is defined in this library and implemented by consuming libraries — most likely `clsPaymentPreference` and `clsProviderPaymentPreference` in `SAIF.Business.Payment.EFT`.*

Several members related to international ACH transactions (IAT), Social Security Number, and payee email were present in source but commented out; they are excluded from the active surface per analysis rules.

## Purpose
- Provide a stable contract over payment-preference data that payment-processing workflows can consume without a direct dependency on the implementing class.
- Declare the `PaymentPreferenceTypes` enum used across the payment domain.

## Context
- Namespace: `SAIF.Business.Payment`
- Assembly/package: `SAIF.BOF.Business.Payment`

## Public members

| Member | Signature | Purpose |
| --- | --- | --- |
| `PaymentPreferenceType` | `ReadOnly Property PaymentPreferenceType As PaymentPreferenceTypes` | Returns the payee's preferred payment channel as a `PaymentPreferenceTypes` enum value. |
| `PaymentPreferenceTypeCode` | `ReadOnly Property PaymentPreferenceTypeCode As String` | Returns the string code corresponding to the payment preference type. |
| `Payee` | `ReadOnly Property Payee As iPayee` | Returns the payee associated with this payment preference. |
| `BankRoutingNumber` | `Property BankRoutingNumber As String` | The ABA routing/transit number for the payee's bank. |
| `BankAccountNumber` | `Property BankAccountNumber As String` | The payee's bank account number. |
| `BankAccountTypeCode` | `Property BankAccountTypeCode As String` | Code identifying the bank account type (for example, checking or savings). |
| `IsBusinessAccount` | `Property IsBusinessAccount As Boolean` | Indicates the account is a business account. |
| `SendEmailNotification` | `Property SendEmailNotification As Boolean` | Indicates whether email notification should be sent for payments. |
| `AllowDebitCard` | `ReadOnly Property AllowDebitCard As Boolean` | Indicates debit-card payment is allowed for this payee; see [BR-PAY-02](../../business-rules.md#br-pay-02-conditional-debit-card-allowance). |

## Behavioral notes
- `AllowDebitCard` is a `ReadOnly Property`; the condition governing this flag is defined and enforced by the implementing class.*
- Commented-out members (IAT fields, SSN, payee email, `PayeeTypeCode`, `PayeeID`, `Name`, `IsIAT`, and related fields) are not part of the active contract and must not be treated as public surface.
- The nested `PaymentPreferenceTypes` enum (`Check`, `DirectDeposit`, `DebitCard`, `UnSpecified`) is declared inside this interface; see [PaymentPreferenceTypes](PaymentPreferenceTypes.md).

## Constraints and usage notes
- Implementations of this interface must reside outside this library (for example, `clsPaymentPreference` and `clsProviderPaymentPreference` in `SAIF.Business.Payment.EFT`).*

> **Note:** Statements marked with `*` were inferred from code structure, naming
> conventions, or contextual evidence where direct confirmation was not available
> in source artifacts.

## Sources
- `Business\SAIF.Business.Payment\IPaymentPreference.vb`
