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

# IProviderMatcher

`IProviderMatcher` is the contract `ProviderMatcher` implements to run an ordered set of `IProviderMatchRule` implementations against a biller's e-bill and provider addresses and return the single unique matched location, as used by `ProviderIndexerV2` in operation OP-DOM-04. It exists so that `ProviderIndexerV2` can depend on "something that finds a unique provider location" without depending on `ProviderMatcher`'s specific rule-selection logic.

## Purpose
- Defines the single operation a provider-location matcher exposes: given whether to concatenate a two-line bill address, return the unique matched `ProviderLocation` or `null` when no rule produces a single unambiguous match ([DOM-BR-029](../../business-rules.md#dom-br-029-matching)).

## Context
- Namespace: `SAIF.Domain.Claims.Ebilling.Indexing`
- Assembly/package: `SAIF.Domain` (`Domain/SAIF.Domain/SAIF.Domain.csproj`, .NET Framework 4.6.2 class library)

## Public members
| Member | Signature | Purpose |
| --- | --- | --- |
| UniqueProviderLocationMatch | `ProviderLocation UniqueProviderLocationMatch(bool concatenateTwoLineBillAddresses)` | Returns the single unique `ProviderLocation` produced by the matcher's underlying rule set for the given address-concatenation mode, or `null` when no rule matches uniquely ([DOM-BR-029](../../business-rules.md#dom-br-029-matching)). |

## Behavioral notes
- `IProviderMatchRule` shares this exact method signature, so a matcher implementation and an individual rule are structurally interchangeable from a caller's perspective*.

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

## Sources
- `Domain/SAIF.Domain/Claims/Ebilling/Indexing/IProviderMatcher.cs`
