X12 820 BPR01 (Transaction Handling Code): Format, Values, and Testing Notes
Two 820 files can carry the exact same dollar amount and premium breakdown and mean completely different things to a health plan's bank reconciliation team, all because of what sits in BPR01. Miss that distinction in test data and you build a posting system that credits an account no money ever touched.
BPR01 is a one or two-character code that tells the receiving system whether this 820 transaction is an instruction to move money, a report of money already moved, or purely informational remittance detail with no associated funds transfer. In premium-payment 820s, the two values that show up most are C, meaning the payment travels with this remittance, and I, meaning the file only reports remittance detail and no funds are being transferred through this transaction.
Common code values
Example
BPR01=C in this synthetic premium payment confirms the $48,250.00 in BPR02 is actually moving through the ACH transfer described later in the segment.
Where this trips people up
Test suites frequently generate every 820 fixture with BPR01 = C, since that is the value that matches a normal payment scenario, and never produce an I file. When a real employer or exchange later sends remittance-only notifications, ahead of or separate from an actual wire, the receiving system has no tested code path for it and either posts a phantom payment or rejects a perfectly valid file. Build synthetic 820 batches that mix C and I values so posting logic actually checks BPR01 before crediting anything.