---
title: SubpoenaRecipientValidator
summary: API reference for SubpoenaRecipientValidator.
status: draft
owner: SAIF Doc Gen
last_reviewed: 2026-09-24
library: SAIF.Services
reference_type: package
---

# SubpoenaRecipientValidator

A FluentValidation `AbstractValidator<SubpoenaRecipient>` that enforces non-negative mileage figures and a minimum-paid-amount rule on an individual subpoena recipient's payment fields, used by the subpoena save/approval workflow to reject recipient data before it is persisted.

## Purpose
- Rejects a negative `MileageCost` on a subpoena recipient.
- Rejects a negative `MileageUnits` on a subpoena recipient.
- Rejects a `PaidAmount` that is nonzero but less than the recipient's system-calculated payment amount (`CalculatedPaidAmount`), while still permitting an explicit `0` (unpaid) value.

## Context
- Namespace: `SAIF.Services.Legal.Subpoenas`
- Assembly/package: `SAIF.Services` (packaged inside the `SAIF.SAIFCode.Core` NuGet package).

## Public members
| Member | Signature | Purpose |
| --- | --- | --- |
| SubpoenaRecipientValidator (constructor) | `public SubpoenaRecipientValidator()` | Registers the three FluentValidation rules for `MileageCost`, `MileageUnits`, and `PaidAmount`, each with a specific "Error: ..." message surfaced to callers when validation fails. |

## Behavioral notes
- `PaidAmount` validation uses a custom `Must(HasValidPaidAmount)` predicate rather than a built-in comparator, since the valid threshold (`CalculatedPaidAmount`) is itself a property of the same recipient object.
- Carries a `CA1710:IdentifiersShouldHaveCorrectSuffix` suppression, acknowledging the type name does not end in the conventional "Collection"/"Validator"-exempt suffix pattern the analyzer expects.*

## Constraints and usage notes
- This validator only checks payment-related numeric fields on a recipient; it does not validate the recipient's name, address, or provider/location identifiers — those are enforced separately by `SubpoenaValidator`'s `ContainsValidRecipientData` rule.*

> **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
- `Services/SAIF.Services/Legal/Subpoenas/SubpoenaRecipientValidator.cs`
