---
title: BprSegment
summary: API reference for BprSegment.
status: draft
owner: SAIF Doc Gen
last_reviewed: 2026-09-15
library: SAIF.Framework.Common.Files
reference_type: package
---

# BprSegment

`BprSegment` models the X12 BPR financial information segment, the payment-order header at the top of an 835 remittance advice transaction. It carries the total payment amount, credit/debit disposition, payment method, the sender's and receiver's banking/account identification, and the payment's effective date, forming the financial instruction that accompanies the itemized claim/service detail in the rest of the transaction.

## Purpose
- Represents the BPR segment identity via `SegmentId` returning the literal `"BPR"` ([BR-020](../../business-rules.md#br-020-first-element-is-the-segment-identifier)).
- Carries the transaction handling code, total payment `Amount`, credit/debit code, and payment method/format codes that describe how the payment is to be handled.
- Carries the sender's and receiver's financial-institution and account identification fields used to route the electronic payment.
- Carries `EffectiveDate`, the date the payment becomes effective, converted via `DateMaker` on `Fill()`.

## Context
- Namespace: `SAIF.Common.Files.Edi.Segments`
- Assembly/package: `SAIF.Framework.Common.Files`

## Public members
| Member | Signature | Purpose |
| --- | --- | --- |
| SegmentId | `string SegmentId { get; }` | Returns the literal X12 segment identifier `"BPR"`. |
| TransactionHandlingCode | `string TransactionHandlingCode { get; set; }` | Code specifying how the payment/remittance should be handled (BPR01), element 1. |
| Amount | `decimal Amount { get; set; }` | The total monetary amount of the payment (BPR02), element 2. |
| CreditDebitCode | `string CreditDebitCode { get; set; }` | Code indicating whether the payment is a credit or debit (BPR03), element 3; written on `Build()` but not populated by `Fill()`*. |
| PaymentMethodCode | `string PaymentMethodCode { get; set; }` | Code identifying the payment method (BPR04), element 4. |
| PaymentFormatCode | `string PaymentFormatCode { get; set; }` | Code identifying the payment format (BPR05), element 5. |
| SenderFinancialInstitutionIdQualifier | `string SenderFinancialInstitutionIdQualifier { get; set; }` | Qualifier for the sender's financial institution identifier (BPR06), element 6. |
| SenderFinancialInstitutionId | `string SenderFinancialInstitutionId { get; set; }` | The sender's financial institution identifier (BPR07), element 7. |
| SenderAccountNumberQualifier | `string SenderAccountNumberQualifier { get; set; }` | Qualifier for the sender's account number (BPR08), element 8. |
| SenderAccountId | `string SenderAccountId { get; set; }` | The sender's account identifier (BPR09), element 9. |
| SenderCompanyId | `string SenderCompanyId { get; set; }` | The sender's company identifier (BPR10), element 10. |
| PayerCompanySupplementalCode | `string PayerCompanySupplementalCode { get; set; }` | A supplemental code identifying the payer company (BPR11), element 11. |
| ReceiverFinancialInstitutionIdQualifier | `string ReceiverFinancialInstitutionIdQualifier { get; set; }` | Qualifier for the receiver's financial institution identifier (BPR12), element 12. |
| ReceiverFinancialInstitutionId | `string ReceiverFinancialInstitutionId { get; set; }` | The receiver's financial institution identifier (BPR13), element 13. |
| ReceiverAccountNumberQualifier | `string ReceiverAccountNumberQualifier { get; set; }` | Qualifier for the receiver's account number (BPR14), element 14. |
| ReceiverAccountId | `string ReceiverAccountId { get; set; }` | The receiver's account identifier (BPR15), element 15. |
| EffectiveDate | `DateTime EffectiveDate { get; set; }` | The date the payment is effective (BPR16), written as `yyyyMMdd` on `Build()` and parsed via `DateMaker.MakeDateTime` on `Fill()`. |
| Build | `IEdiSegment Build()` | Creates a `SegmentBuilder("BPR")` and adds all sixteen fields at elements 1-16, formatting `Amount` and `EffectiveDate` as strings, returning the built segment. |
| Fill | `void Fill(IEdiSegment segment)` | Reads elements 1-16 via `GetChildValue`, converting `Amount` to `decimal` and `EffectiveDate` via `DateMaker`; notably does not populate `CreditDebitCode` from element 3*. |
| Parse | `static BprSegment Parse(IEdiSegment segment)` | Instantiates a new `BprSegment`, calls `Fill(segment)` on it, and returns it. |

## Behavioral notes
- `Fill()` never assigns `CreditDebitCode`, so a round-tripped `BprSegment` loses whatever value was present at element 3 in the source data*.

## Constraints and usage notes
- Callers relying on `CreditDebitCode` after `Fill()` will find it unset regardless of the underlying segment's element 3 value*.

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

## Sources
- Common\SAIF.Common.Files\Edi\Segments\BprSegment.cs
