ClosingDisclosureTRID

ClosingCostLine

Section

The lettered section heading this fee line falls under, copied verbatim INCLUDING the letter and the section title, e.g. 'A. Origination Charges', 'B. Services Borrower Did Not Shop For', 'C. Services Borrower Did Shop For' (in loan_costs); or 'E. Taxes and Other Government Fees', 'F. Prepaids', 'G. Initial Escrow Payment at Closing', 'H. Other' (in other_costs). Found on page 2 (Closing Cost Details). Do NOT confuse with line_label (the individual fee name): section is the bold lettered header, line_label is the numbered (01, 02, ...) row beneath it. Do NOT use the subtotal rows ('D. TOTAL LOAN COSTS', 'I. TOTAL OTHER COSTS', 'Loan Costs Subtotals') as a section value for a fee line.

Line Label

The BASE NAME of this individual numbered fee line ONLY, e.g. 'Application Fee', 'Appraisal Fee', '0.25 % of Loan Amount (Points)', 'Title - Lender's Title Insurance', 'Recording Fees', 'Prepaid Interest', 'Property Taxes', 'Homeowner's Insurance', 'Mortgage Insurance', 'Aggregate Adjustment'. Page 2 (Closing Cost Details), the numbered (01, 02, ...) rows under each lettered section. STRIP all of the following so the same line in two documents produces the identical label: (a) the leading line number (01/02/...); (b) the 'to <payee>' portion (that goes in payee); (c) any inline dollar figures or rate/term descriptors that trail the name on the same row - e.g. for 'Homeowner's Insurance $100.83 per month for 2 mo.' use 'Homeowner's Insurance'; for 'Recording Fees Deed: $40.00 Mortgage: $45.00' use 'Recording Fees'; for 'Prepaid Interest ( $17.44 per day from 4/15/13 to 5/1/13 )' use 'Prepaid Interest'; for 'Homeowner's Insurance Premium ( 12 mo.)' use 'Homeowner's Insurance Premium'; for 'Property Taxes ( 6 mo.)' use 'Property Taxes'. Keep only the descriptive fee NAME, not the parenthetical month counts, per-day/per-month amounts, or deed/mortgage breakdowns. EXCEPTIONS - keep these parentheticals because they are part of the printed line NAME, not data: '0.25 % of Loan Amount (Points)' (the '%' rate IS the line name, keep the exact printed rate e.g. '.5 % of Loan Amount (Points)' on H25E), and the trailing '(Points)' / '(optional)' qualifiers (e.g. keep 'Title - Owner's Title Insurance (optional)' WITH '(optional)'). Do NOT confuse with section (the lettered header). Do NOT emit subtotal / TOTAL rows as a line_label.

Payee

The recipient of this fee, taken from the 'to <name>' text that follows the fee name on the same row, e.g. 'John Smith Appraisers Inc.', 'Epsilon Title Co.', 'Any County USA'. Strip the leading 'to '. Page 2 fee rows. Null when the row shows no 'to ...' payee. Do NOT confuse with line_label (the fee name) or with any dollar amount.

Borrower Paid At Closing

Dollar amount in the FIRST money column, labeled 'Borrower-Paid / At Closing', for this fee line, verbatim with dollar sign and cents, e.g. '$300.00'. Negative values keep their sign, e.g. '- $0.01'. There are up to five money columns in left-to-right order: [Borrower-Paid At Closing] [Borrower-Paid Before Closing] [Seller-Paid At Closing] [Seller-Paid Before Closing] [Paid by Others]; place each amount strictly under the column it physically sits in. CRITICAL: a value that sits in the 'Before Closing' or 'Paid by Others' column must NOT be put here just because this is the first/most-common column - e.g. on the purchase sample 'Appraisal Fee' $405.00 is in the rightmost Paid by Others column (so this is null), and 'Credit Report Fee' $29.80 is in Before Closing (so this is null). Null when the At Closing column is blank for the row.

Borrower Paid Before Closing

Dollar amount in the SECOND money column, labeled 'Borrower-Paid / Before Closing', for this fee line, verbatim e.g. '$29.80', '$405.00'. This column captures fees the borrower paid prior to the closing date (POC-style). On the purchase sample 'Credit Report Fee' $29.80 is here; on the H25E refinance 'Appraisal Fee' $405.00 and 'Credit Report Fee' $30.00 are here. Do NOT confuse with borrower_paid_at_closing (column to its left) or paid_by_others (far-right column). Null when blank.

Seller Paid At Closing

Dollar amount in the Seller-Paid 'At Closing' column for this fee line, verbatim e.g. '$450.00'. Page 2. PURCHASE disclosures only have Seller-Paid columns; on REFINANCE disclosures there are no Seller-Paid columns so this is always null. Do NOT confuse with borrower_paid_at_closing. Null when blank or absent.

Seller Paid Before Closing

Dollar amount in the Seller-Paid 'Before Closing' column for this fee line, verbatim e.g. '$750.00'. Page 2. PURCHASE only; null on REFINANCE. Null when blank.

Paid By Others

Dollar amount in the FAR-RIGHT 'Paid by Others' column for this fee line, verbatim e.g. '$405.00'. Page 2, the last money column on the right edge of the table. On the purchase sample the 'Appraisal Fee' $405.00 sits in THIS column (Paid by Others), NOT in any Borrower-Paid column. Do NOT confuse with the seller_paid columns (which are between Borrower-Paid and Paid by Others on a purchase disclosure) or with borrower_paid columns. Null when blank.

CashToCloseGridRow

Line Label

The row label in the 'Calculating Cash to Close' table, verbatim including any '(letter)' suffix, e.g. 'Total Closing Costs (J)', 'Closing Costs Paid Before Closing', 'Closing Costs Financed (Paid from your Loan Amount)', 'Down Payment/Funds from Borrower', 'Deposit', 'Funds for Borrower', 'Seller Credits', 'Adjustments and Other Credits', 'Cash to Close' (PURCHASE row set); or 'Loan Amount', 'Total Closing Costs (J)', 'Closing Costs Paid Before Closing', 'Total Payoffs and Payments (K)', 'Cash to Close' (REFINANCE row set). PURCHASE is on page 3, REFINANCE on page 3 (H25E) / page 2 (H25F excerpt). The two doc types have different row sets - emit whatever rows appear. Do NOT confuse with the Closing Cost Details fee lines on page 2.

Loan Estimate

Value in the 'Loan Estimate' column for this row, verbatim with sign/dollar e.g. '$8,054.00', '- $10,000.00', '$0'. Do NOT confuse with the 'Final' column (immediately to its right). Null when blank.

Final

Value in the 'Final' column for this row, verbatim with sign/dollar e.g. '$9,712.10', '- $29.80'. For the 'Cash to Close' row, capture the dollar amount ONLY (e.g. '$14,147.26'); do NOT append the 'From / To Borrower' checkbox text. Do NOT confuse with the 'Loan Estimate' column. Null when blank.

Did This Change

The 'Did this change?' answer for this row, normalized to 'YES' or 'NO'. The Cash to Close summary row itself has no YES/NO answer - null there. Null when blank.

Date Issued

The 'Date Issued' value from the Closing Information block (page 1, top-left), formatted exactly as printed e.g. '4/15/2013' (M/D/YYYY). Do NOT confuse with closing_date or disbursement_date which sit directly below it and may share the same value. Null if absent.

Closing Date

The 'Closing Date' value from the Closing Information block (page 1, top-left), as printed e.g. '4/15/2013'. Do NOT confuse with date_issued (line above) or disbursement_date (line below). Null if absent.

Disbursement Date

The 'Disbursement Date' value from the Closing Information block (page 1, top-left), as printed e.g. '4/15/2013'. Do NOT confuse with closing_date (line above). Null if absent.

Settlement Agent

The 'Settlement Agent' company name from the Closing Information block (page 1), e.g. 'Epsilon Title Co.', 'Zeta Title'. Do NOT confuse with lender_name (Ficus Bank) or the Settlement Agent column in the page-5 Contact Information table. Null if absent.

File Number

The 'File #' value from the Closing Information block (page 1), verbatim e.g. '12-3456'. Do NOT confuse with loan_id ('Loan ID #') or mic_number ('MIC #'). Null if absent.

Property Address

The 'Property' address from the Closing Information block (page 1), full multi-line address joined into one string e.g. '456 Somewhere Ave, Anytown, ST 12345'. Do NOT confuse with the Borrower or Seller mailing addresses in the Transaction Information block. Null if absent.

Sale Price

The 'Sale Price' value from the Closing Information block (page 1), verbatim with dollar e.g. '$180,000'. PURCHASE disclosures only. On a REFINANCE disclosure this label is replaced by 'Appraised Prop. Value' - leave sale_price null and use appraised_property_value instead. Do NOT confuse with loan_amount or appraised_property_value. Null on refinance / when absent.

Appraised Property Value

The 'Appraised Prop. Value' value from the Closing Information block (page 1), verbatim e.g. '$180,000'. REFINANCE disclosures only (it replaces 'Sale Price'). On a PURCHASE disclosure leave this null and use sale_price. Do NOT confuse with sale_price or loan_amount. Null on purchase / when absent.

Borrower Name

The 'Borrower' name(s) from the Transaction Information block (page 1), the name line only, verbatim e.g. 'Michael Jones and Mary Stone'. Do NOT include the borrower's street address that follows on the next lines. Do NOT confuse with seller_name or lender_name. Null if absent.

Seller Name

The 'Seller' name(s) from the Transaction Information block (page 1), name line only, verbatim e.g. 'Steve Cole and Amy Doe'. PURCHASE disclosures only - REFINANCE disclosures have no Seller row, so this is null on refinance. Do NOT include the seller address. Do NOT confuse with borrower_name. Null on refinance / when absent.

Lender Name

The 'Lender' name from the Transaction Information block (page 1), verbatim e.g. 'Ficus Bank'. Do NOT confuse with settlement_agent or with the Lender column of the page-5 Contact Information table. Null if absent.

Loan Term

The 'Loan Term' from the Loan Information block (page 1), verbatim e.g. '30 years'. Do NOT confuse with the Projected Payments year ranges (e.g. 'Years 1-7'). Null if absent.

Purpose

The 'Purpose' from the Loan Information block (page 1), one of 'Purchase', 'Refinance', 'Construction', 'Other' as printed. Do NOT confuse with product (e.g. 'Fixed Rate') or loan_type ('Conventional'). Null if absent.

Product

The 'Product' from the Loan Information block (page 1), verbatim e.g. 'Fixed Rate', '5 Year Interest Only, 5/3 Adjustable Rate'. Do NOT confuse with purpose ('Purchase'/'Refinance') or loan_type ('Conventional'). Null if absent.

Loan Type

The 'Loan Type' from the Loan Information block (page 1) - the checked box among Conventional / FHA / VA / ____ (Other). Return the checked value as one of 'Conventional', 'FHA', 'VA', 'Other'. In both samples 'Conventional' is checked (the box shows 'x'). Do NOT confuse with purpose or product. Null if no box is determinable.

Loan ID

The 'Loan ID #' from the Loan Information block (page 1), verbatim e.g. '123456789'. Do NOT confuse with file_number ('File #') or mic_number ('MIC #'). Null if absent.

MIC Number

The 'MIC #' (Mortgage Insurance Case number) from the Loan Information block (page 1), verbatim e.g. '000654321', '009874513'. Do NOT confuse with loan_id or file_number. Null if absent.

Loan Amount

The 'Loan Amount' from the Loan Terms table (page 1, first row), verbatim with dollar e.g. '$162,000'. Do NOT confuse with closing_costs_total, cash_to_close, sale_price, or amount_financed (page 5). Null if absent.

Interest Rate

The 'Interest Rate' from the Loan Terms table (page 1), verbatim as a percent e.g. '3.875%', '4.25%'. Do NOT confuse with annual_percentage_rate (APR, page 5) or total_interest_percentage (TIP). Null if absent.

Monthly Principal & Interest

The 'Monthly Principal & Interest' amount from the Loan Terms table (page 1), verbatim e.g. '$761.78', '$737.91'. This is the base P&I, NOT the full Estimated Total Monthly Payment (which adds escrow/MI). Do NOT confuse with estimated_total_monthly_payment. Null if absent.

Prepayment Penalty

Whether the loan has a Prepayment Penalty, from the 'Does the loan have these features?' block of the Loan Terms table (page 1). Normalize to 'YES' or 'NO'. Do NOT confuse with balloon_payment (the row below). Null if absent.

Prepayment Penalty Detail

The descriptive text beside a YES prepayment penalty, verbatim e.g. 'As high as $3,240 if you pay off the loan during the first 2 years' (strip a leading bullet). Page 1 Loan Terms. Null when prepayment_penalty is NO or no detail text is printed.

Balloon Payment

Whether the loan has a Balloon Payment, from the 'Does the loan have these features?' block (page 1). Normalize to 'YES' or 'NO'. Do NOT confuse with prepayment_penalty (row above). Null if absent.

The 'Estimated Total Monthly Payment' value in the FIRST (left) Projected Payments column (page 1), verbatim e.g. '$1,050.26' (Years 1-7 on the purchase sample, Years 1-4 on H25E). Do NOT confuse with monthly_principal_and_interest (just the P&I component) or with the second-period column. Null if absent.

The 'Estimated Total Monthly Payment' value in the SECOND (right) Projected Payments column (page 1), verbatim e.g. '$967.91' (Years 8-30 on purchase, Years 5-30 on H25E). Do NOT confuse with the first-period column. Null if absent or if there is only one payment column.

The 'Estimated Taxes, Insurance & Assessments' monthly amount from the Projected Payments section (page 1), the '$x a month' figure, verbatim dollar only e.g. '$356.13' (omit the trailing 'a month'). Do NOT confuse with estimated_total_monthly_payment or the Estimated Escrow line. Null if absent.

Closing Costs Total

The headline 'Closing Costs' figure in the 'Costs at Closing' box (page 1), verbatim e.g. '$9,712.10', '$5,757.57'. This is the page-1 summary number. Do NOT confuse with: cash_to_close (the larger Cash to Close figure), loan_amount, or the page-2 'J. TOTAL CLOSING COSTS' line (which equals this value but is a different field captured inside loan_costs/grid). Equals loan_costs_portion + other_costs_portion - lender_credits. Null if absent.

Closing Costs - Loan Costs Portion

The 'Loan Costs' component cited inside the Closing Costs explanatory sentence on page 1 ('Includes $X in Loan Costs + $Y in Other Costs - $Z in Lender Credits'), verbatim e.g. '$4,694.05', '$3,495.50'. Do NOT confuse with closing_costs_other_costs_portion (the '$Y in Other Costs' value), closing_costs_total, or lender_credits. Null if absent.

Closing Costs - Other Costs Portion

The 'Other Costs' component cited inside the Closing Costs explanatory sentence on page 1 ('... + $Y in Other Costs ...'), verbatim e.g. '$5,018.05', '$2,762.07'. Do NOT confuse with closing_costs_loan_costs_portion ('$X in Loan Costs') or lender_credits. Null if absent.

Lender Credits

The 'Lender Credits' amount from the page-1 Closing Costs sentence ('... - $Z in Lender Credits'). ALWAYS take it from the page-1 'Costs at Closing' sentence and report it as a POSITIVE dollar string WITHOUT a leading minus sign, e.g. '$0', '$500' (purchase sample shows '$0'; H25E shows '$500'). Do NOT use the page-2 'Lender Credits' line form '- $500.00' and do NOT prepend a '-' sign. Do NOT confuse with closing_costs_total, the loan/other-costs portions, or Seller Credits. Null if absent.

Cash to Close

The headline 'Cash to Close' figure in the 'Costs at Closing' box (page 1), the DOLLAR AMOUNT ONLY e.g. '$14,147.26', '$29,677.43'. Do NOT append the 'From / To Borrower' checkbox words that may sit beside it. Do NOT confuse with closing_costs_total (the smaller Closing Costs figure), loan_amount, or the page-3 Calculating-Cash-to-Close grid 'Cash to Close' row. Null if absent.

Total of Payments

The 'Total of Payments' value from the Loan Calculations box (page 5), verbatim e.g. '$285,803.36'. Do NOT confuse with finance_charge or amount_financed in the same box. Null if absent.

Finance Charge

The 'Finance Charge' value from the Loan Calculations box (page 5), verbatim e.g. '$118,830.27'. Do NOT confuse with total_of_payments or amount_financed. Null if absent.

Amount Financed

The 'Amount Financed' value from the Loan Calculations box (page 5), verbatim e.g. '$162,000.00', '$148,241.94'. Do NOT confuse with loan_amount (page 1, may differ) or finance_charge. Null if absent.

Annual Percentage Rate (APR)

The 'Annual Percentage Rate (APR)' from the Loan Calculations box (page 5), verbatim percent e.g. '4.174%', '4.543%'. Do NOT confuse with interest_rate (page 1, lower) or total_interest_percentage (TIP). Null if absent.

Total Interest Percentage (TIP)

The 'Total Interest Percentage (TIP)' from the Loan Calculations box (page 5), verbatim percent e.g. '69.46%', '77.29%'. Do NOT confuse with annual_percentage_rate (APR) or interest_rate. Null if absent.

Assumption

The checked Assumption option in Loan Disclosures (page 4): 'will allow' (lender will allow assumption) or 'will not allow'. In both samples 'will not allow' is checked. Null if not determinable.

Demand Feature

The checked Demand Feature option in Loan Disclosures (page 4): 'has' a demand feature or 'does not have'. In both samples 'does not have' is checked. Null if not determinable.

Negative Amortization

The checked Negative Amortization option in Loan Disclosures (page 4): 'are scheduled' (scheduled neg-am payments), 'may have' (may have neg-am), or 'do not have' (no negative amortization feature). In both samples 'do not have' is checked. Null if not determinable.

Partial Payments

The checked Partial Payments option in Loan Disclosures (page 4): 'may accept' partial payments, 'may hold' them in a separate account, or 'does not accept' partial payments. In both samples 'may accept' is checked. Null if not determinable.

Escrow Account

The checked Escrow Account option in the Escrow Account box (page 4): 'will have' an escrow account or 'will not have'. In both samples 'will have' is checked. Null if not determinable.

Liability after Foreclosure

The checked Liability after Foreclosure option in Other Disclosures (page 5): 'state law may protect' you from liability for the unpaid balance, or 'state law does not protect'. Purchase sample = 'state law may protect'; H25E refinance = 'state law does not protect'. Null if not determinable.

Loan Costs

Itemized fee lines under the 'Loan Costs' heading of Closing Cost Details (page 2): sections A (Origination Charges), B (Services Borrower Did Not Shop For), C (Services Borrower Did Shop For). Emit one object ONLY for each numbered fee line that has a PRINTED FEE NAME. The form pre-prints blank numbered slots (e.g. '04', '05', '06', '07', '08' with nothing after them) - these are EMPTY placeholders and must NOT be emitted as rows. Also do NOT emit: a row whose line_label would be empty/null, the section header rows themselves, per-section subtotals, or the 'D. TOTAL LOAN COSTS' / 'Loan Costs Subtotals' rows. Expected non-empty counts: purchase sample = 15 lines (A:3, B:6, C:6); H25E refinance = 15 lines (A:4, B:6, C:5). Null when the document does not include the Closing Cost Details page (e.g. an excerpt).

Other Costs

Itemized fee lines under the 'Other Costs' heading of Closing Cost Details (page 2): sections E (Taxes and Other Government Fees), F (Prepaids), G (Initial Escrow Payment at Closing), H (Other). Emit one object ONLY for each numbered fee line that has a PRINTED FEE NAME, INCLUDING the 'Aggregate Adjustment' line under G. The form pre-prints blank numbered slots and partially-blank rows such as 'Mortgage Insurance Premium ( mo.)' / 'Mortgage Insurance per month for mo.' that have a label but NO dollar amount in any column - treat a row as EMPTY and skip it only when it has neither a meaningful fee name nor any amount; a printed fee name with all-blank amounts (like an unused Mortgage Insurance line) should be SKIPPED. Do NOT emit blank numbered placeholders, section header rows, per-section subtotals, or the 'I. TOTAL OTHER COSTS' / 'J. TOTAL CLOSING COSTS' / 'Other Costs Subtotals' rows. Expected non-empty counts: purchase sample = 15 lines (E:2, F:3, G:3 incl. Aggregate Adjustment, H:7); H25E refinance = 8 lines (E:1, F:3, G:3, H:0, and 'Aggregate Adjustment' counted in G). Null when the document omits the Closing Cost Details page.

Calculating Cash to Close Grid

Rows of the 'Calculating Cash to Close' table (PURCHASE: page 3; REFINANCE H25E: page 3; REFINANCE excerpt H25F: page 2), which compares Loan Estimate vs Final with a 'Did this change?' answer. Emit one object per row. PURCHASE and REFINANCE have different row sets (refinance includes 'Loan Amount' and 'Total Payoffs and Payments (K)'; purchase includes 'Down Payment/Funds from Borrower', 'Deposit', 'Seller Credits', etc.) - emit whatever rows the document shows, including the final 'Cash to Close' summary row. Do NOT include the page-2 Closing Cost Details fee lines or the page-3 Summaries of Transactions (K/L/M/N) rows.

Title – Owner’s Title Insurance (optional)

Title – Owner’s Title Insurance (optional)


ClosingDisclosureTRID

ClosingCostLine

Section

The lettered section heading this fee line falls under, copied verbatim INCLUDING the letter and the section title, e.g. 'A. Origination Charges', 'B. Services Borrower Did Not Shop For', 'C. Services Borrower Did Shop For' (in loan_costs); or 'E. Taxes and Other Government Fees', 'F. Prepaids', 'G. Initial Escrow Payment at Closing', 'H. Other' (in other_costs). Found on page 2 (Closing Cost Details). Do NOT confuse with line_label (the individual fee name): section is the bold lettered header, line_label is the numbered (01, 02, ...) row beneath it. Do NOT use the subtotal rows ('D. TOTAL LOAN COSTS', 'I. TOTAL OTHER COSTS', 'Loan Costs Subtotals') as a section value for a fee line.

Line Label

The BASE NAME of this individual numbered fee line ONLY, e.g. 'Application Fee', 'Appraisal Fee', '0.25 % of Loan Amount (Points)', 'Title - Lender's Title Insurance', 'Recording Fees', 'Prepaid Interest', 'Property Taxes', 'Homeowner's Insurance', 'Mortgage Insurance', 'Aggregate Adjustment'. Page 2 (Closing Cost Details), the numbered (01, 02, ...) rows under each lettered section. STRIP all of the following so the same line in two documents produces the identical label: (a) the leading line number (01/02/...); (b) the 'to <payee>' portion (that goes in payee); (c) any inline dollar figures or rate/term descriptors that trail the name on the same row - e.g. for 'Homeowner's Insurance $100.83 per month for 2 mo.' use 'Homeowner's Insurance'; for 'Recording Fees Deed: $40.00 Mortgage: $45.00' use 'Recording Fees'; for 'Prepaid Interest ( $17.44 per day from 4/15/13 to 5/1/13 )' use 'Prepaid Interest'; for 'Homeowner's Insurance Premium ( 12 mo.)' use 'Homeowner's Insurance Premium'; for 'Property Taxes ( 6 mo.)' use 'Property Taxes'. Keep only the descriptive fee NAME, not the parenthetical month counts, per-day/per-month amounts, or deed/mortgage breakdowns. EXCEPTIONS - keep these parentheticals because they are part of the printed line NAME, not data: '0.25 % of Loan Amount (Points)' (the '%' rate IS the line name, keep the exact printed rate e.g. '.5 % of Loan Amount (Points)' on H25E), and the trailing '(Points)' / '(optional)' qualifiers (e.g. keep 'Title - Owner's Title Insurance (optional)' WITH '(optional)'). Do NOT confuse with section (the lettered header). Do NOT emit subtotal / TOTAL rows as a line_label.

Payee

The recipient of this fee, taken from the 'to <name>' text that follows the fee name on the same row, e.g. 'John Smith Appraisers Inc.', 'Epsilon Title Co.', 'Any County USA'. Strip the leading 'to '. Page 2 fee rows. Null when the row shows no 'to ...' payee. Do NOT confuse with line_label (the fee name) or with any dollar amount.

Borrower Paid At Closing

Dollar amount in the FIRST money column, labeled 'Borrower-Paid / At Closing', for this fee line, verbatim with dollar sign and cents, e.g. '$300.00'. Negative values keep their sign, e.g. '- $0.01'. There are up to five money columns in left-to-right order: [Borrower-Paid At Closing] [Borrower-Paid Before Closing] [Seller-Paid At Closing] [Seller-Paid Before Closing] [Paid by Others]; place each amount strictly under the column it physically sits in. CRITICAL: a value that sits in the 'Before Closing' or 'Paid by Others' column must NOT be put here just because this is the first/most-common column - e.g. on the purchase sample 'Appraisal Fee' $405.00 is in the rightmost Paid by Others column (so this is null), and 'Credit Report Fee' $29.80 is in Before Closing (so this is null). Null when the At Closing column is blank for the row.

Borrower Paid Before Closing

Dollar amount in the SECOND money column, labeled 'Borrower-Paid / Before Closing', for this fee line, verbatim e.g. '$29.80', '$405.00'. This column captures fees the borrower paid prior to the closing date (POC-style). On the purchase sample 'Credit Report Fee' $29.80 is here; on the H25E refinance 'Appraisal Fee' $405.00 and 'Credit Report Fee' $30.00 are here. Do NOT confuse with borrower_paid_at_closing (column to its left) or paid_by_others (far-right column). Null when blank.

Seller Paid At Closing

Dollar amount in the Seller-Paid 'At Closing' column for this fee line, verbatim e.g. '$450.00'. Page 2. PURCHASE disclosures only have Seller-Paid columns; on REFINANCE disclosures there are no Seller-Paid columns so this is always null. Do NOT confuse with borrower_paid_at_closing. Null when blank or absent.

Seller Paid Before Closing

Dollar amount in the Seller-Paid 'Before Closing' column for this fee line, verbatim e.g. '$750.00'. Page 2. PURCHASE only; null on REFINANCE. Null when blank.

Paid By Others

Dollar amount in the FAR-RIGHT 'Paid by Others' column for this fee line, verbatim e.g. '$405.00'. Page 2, the last money column on the right edge of the table. On the purchase sample the 'Appraisal Fee' $405.00 sits in THIS column (Paid by Others), NOT in any Borrower-Paid column. Do NOT confuse with the seller_paid columns (which are between Borrower-Paid and Paid by Others on a purchase disclosure) or with borrower_paid columns. Null when blank.

CashToCloseGridRow

Line Label

The row label in the 'Calculating Cash to Close' table, verbatim including any '(letter)' suffix, e.g. 'Total Closing Costs (J)', 'Closing Costs Paid Before Closing', 'Closing Costs Financed (Paid from your Loan Amount)', 'Down Payment/Funds from Borrower', 'Deposit', 'Funds for Borrower', 'Seller Credits', 'Adjustments and Other Credits', 'Cash to Close' (PURCHASE row set); or 'Loan Amount', 'Total Closing Costs (J)', 'Closing Costs Paid Before Closing', 'Total Payoffs and Payments (K)', 'Cash to Close' (REFINANCE row set). PURCHASE is on page 3, REFINANCE on page 3 (H25E) / page 2 (H25F excerpt). The two doc types have different row sets - emit whatever rows appear. Do NOT confuse with the Closing Cost Details fee lines on page 2.

Loan Estimate

Value in the 'Loan Estimate' column for this row, verbatim with sign/dollar e.g. '$8,054.00', '- $10,000.00', '$0'. Do NOT confuse with the 'Final' column (immediately to its right). Null when blank.

Final

Value in the 'Final' column for this row, verbatim with sign/dollar e.g. '$9,712.10', '- $29.80'. For the 'Cash to Close' row, capture the dollar amount ONLY (e.g. '$14,147.26'); do NOT append the 'From / To Borrower' checkbox text. Do NOT confuse with the 'Loan Estimate' column. Null when blank.

Did This Change

The 'Did this change?' answer for this row, normalized to 'YES' or 'NO'. The Cash to Close summary row itself has no YES/NO answer - null there. Null when blank.

Date Issued

The 'Date Issued' value from the Closing Information block (page 1, top-left), formatted exactly as printed e.g. '4/15/2013' (M/D/YYYY). Do NOT confuse with closing_date or disbursement_date which sit directly below it and may share the same value. Null if absent.

Closing Date

The 'Closing Date' value from the Closing Information block (page 1, top-left), as printed e.g. '4/15/2013'. Do NOT confuse with date_issued (line above) or disbursement_date (line below). Null if absent.

Disbursement Date

The 'Disbursement Date' value from the Closing Information block (page 1, top-left), as printed e.g. '4/15/2013'. Do NOT confuse with closing_date (line above). Null if absent.

Settlement Agent

The 'Settlement Agent' company name from the Closing Information block (page 1), e.g. 'Epsilon Title Co.', 'Zeta Title'. Do NOT confuse with lender_name (Ficus Bank) or the Settlement Agent column in the page-5 Contact Information table. Null if absent.

File Number

The 'File #' value from the Closing Information block (page 1), verbatim e.g. '12-3456'. Do NOT confuse with loan_id ('Loan ID #') or mic_number ('MIC #'). Null if absent.

Property Address

The 'Property' address from the Closing Information block (page 1), full multi-line address joined into one string e.g. '456 Somewhere Ave, Anytown, ST 12345'. Do NOT confuse with the Borrower or Seller mailing addresses in the Transaction Information block. Null if absent.

Sale Price

The 'Sale Price' value from the Closing Information block (page 1), verbatim with dollar e.g. '$180,000'. PURCHASE disclosures only. On a REFINANCE disclosure this label is replaced by 'Appraised Prop. Value' - leave sale_price null and use appraised_property_value instead. Do NOT confuse with loan_amount or appraised_property_value. Null on refinance / when absent.

Appraised Property Value

The 'Appraised Prop. Value' value from the Closing Information block (page 1), verbatim e.g. '$180,000'. REFINANCE disclosures only (it replaces 'Sale Price'). On a PURCHASE disclosure leave this null and use sale_price. Do NOT confuse with sale_price or loan_amount. Null on purchase / when absent.

Borrower Name

The 'Borrower' name(s) from the Transaction Information block (page 1), the name line only, verbatim e.g. 'Michael Jones and Mary Stone'. Do NOT include the borrower's street address that follows on the next lines. Do NOT confuse with seller_name or lender_name. Null if absent.

Seller Name

The 'Seller' name(s) from the Transaction Information block (page 1), name line only, verbatim e.g. 'Steve Cole and Amy Doe'. PURCHASE disclosures only - REFINANCE disclosures have no Seller row, so this is null on refinance. Do NOT include the seller address. Do NOT confuse with borrower_name. Null on refinance / when absent.

Lender Name

The 'Lender' name from the Transaction Information block (page 1), verbatim e.g. 'Ficus Bank'. Do NOT confuse with settlement_agent or with the Lender column of the page-5 Contact Information table. Null if absent.

Loan Term

The 'Loan Term' from the Loan Information block (page 1), verbatim e.g. '30 years'. Do NOT confuse with the Projected Payments year ranges (e.g. 'Years 1-7'). Null if absent.

Purpose

The 'Purpose' from the Loan Information block (page 1), one of 'Purchase', 'Refinance', 'Construction', 'Other' as printed. Do NOT confuse with product (e.g. 'Fixed Rate') or loan_type ('Conventional'). Null if absent.

Product

The 'Product' from the Loan Information block (page 1), verbatim e.g. 'Fixed Rate', '5 Year Interest Only, 5/3 Adjustable Rate'. Do NOT confuse with purpose ('Purchase'/'Refinance') or loan_type ('Conventional'). Null if absent.

Loan Type

The 'Loan Type' from the Loan Information block (page 1) - the checked box among Conventional / FHA / VA / ____ (Other). Return the checked value as one of 'Conventional', 'FHA', 'VA', 'Other'. In both samples 'Conventional' is checked (the box shows 'x'). Do NOT confuse with purpose or product. Null if no box is determinable.

Loan ID

The 'Loan ID #' from the Loan Information block (page 1), verbatim e.g. '123456789'. Do NOT confuse with file_number ('File #') or mic_number ('MIC #'). Null if absent.

MIC Number

The 'MIC #' (Mortgage Insurance Case number) from the Loan Information block (page 1), verbatim e.g. '000654321', '009874513'. Do NOT confuse with loan_id or file_number. Null if absent.

Loan Amount

The 'Loan Amount' from the Loan Terms table (page 1, first row), verbatim with dollar e.g. '$162,000'. Do NOT confuse with closing_costs_total, cash_to_close, sale_price, or amount_financed (page 5). Null if absent.

Interest Rate

The 'Interest Rate' from the Loan Terms table (page 1), verbatim as a percent e.g. '3.875%', '4.25%'. Do NOT confuse with annual_percentage_rate (APR, page 5) or total_interest_percentage (TIP). Null if absent.

Monthly Principal & Interest

The 'Monthly Principal & Interest' amount from the Loan Terms table (page 1), verbatim e.g. '$761.78', '$737.91'. This is the base P&I, NOT the full Estimated Total Monthly Payment (which adds escrow/MI). Do NOT confuse with estimated_total_monthly_payment. Null if absent.

Prepayment Penalty

Whether the loan has a Prepayment Penalty, from the 'Does the loan have these features?' block of the Loan Terms table (page 1). Normalize to 'YES' or 'NO'. Do NOT confuse with balloon_payment (the row below). Null if absent.

Prepayment Penalty Detail

The descriptive text beside a YES prepayment penalty, verbatim e.g. 'As high as $3,240 if you pay off the loan during the first 2 years' (strip a leading bullet). Page 1 Loan Terms. Null when prepayment_penalty is NO or no detail text is printed.

Balloon Payment

Whether the loan has a Balloon Payment, from the 'Does the loan have these features?' block (page 1). Normalize to 'YES' or 'NO'. Do NOT confuse with prepayment_penalty (row above). Null if absent.

Estimated Total Monthly Payment (First Period)

The 'Estimated Total Monthly Payment' value in the FIRST (left) Projected Payments column (page 1), verbatim e.g. '$1,050.26' (Years 1-7 on the purchase sample, Years 1-4 on H25E). Do NOT confuse with monthly_principal_and_interest (just the P&I component) or with the second-period column. Null if absent.

Estimated Total Monthly Payment (Second Period)

The 'Estimated Total Monthly Payment' value in the SECOND (right) Projected Payments column (page 1), verbatim e.g. '$967.91' (Years 8-30 on purchase, Years 5-30 on H25E). Do NOT confuse with the first-period column. Null if absent or if there is only one payment column.

The 'Estimated Taxes, Insurance & Assessments' monthly amount from the Projected Payments section (page 1), the '$x a month' figure, verbatim dollar only e.g. '$356.13' (omit the trailing 'a month'). Do NOT confuse with estimated_total_monthly_payment or the Estimated Escrow line. Null if absent.

Closing Costs Total

The headline 'Closing Costs' figure in the 'Costs at Closing' box (page 1), verbatim e.g. '$9,712.10', '$5,757.57'. This is the page-1 summary number. Do NOT confuse with: cash_to_close (the larger Cash to Close figure), loan_amount, or the page-2 'J. TOTAL CLOSING COSTS' line (which equals this value but is a different field captured inside loan_costs/grid). Equals loan_costs_portion + other_costs_portion - lender_credits. Null if absent.

Closing Costs - Loan Costs Portion

The 'Loan Costs' component cited inside the Closing Costs explanatory sentence on page 1 ('Includes $X in Loan Costs + $Y in Other Costs - $Z in Lender Credits'), verbatim e.g. '$4,694.05', '$3,495.50'. Do NOT confuse with closing_costs_other_costs_portion (the '$Y in Other Costs' value), closing_costs_total, or lender_credits. Null if absent.

Closing Costs - Other Costs Portion

The 'Other Costs' component cited inside the Closing Costs explanatory sentence on page 1 ('... + $Y in Other Costs ...'), verbatim e.g. '$5,018.05', '$2,762.07'. Do NOT confuse with closing_costs_loan_costs_portion ('$X in Loan Costs') or lender_credits. Null if absent.

Lender Credits

The 'Lender Credits' amount from the page-1 Closing Costs sentence ('... - $Z in Lender Credits'). ALWAYS take it from the page-1 'Costs at Closing' sentence and report it as a POSITIVE dollar string WITHOUT a leading minus sign, e.g. '$0', '$500' (purchase sample shows '$0'; H25E shows '$500'). Do NOT use the page-2 'Lender Credits' line form '- $500.00' and do NOT prepend a '-' sign. Do NOT confuse with closing_costs_total, the loan/other-costs portions, or Seller Credits. Null if absent.

Cash to Close

The headline 'Cash to Close' figure in the 'Costs at Closing' box (page 1), the DOLLAR AMOUNT ONLY e.g. '$14,147.26', '$29,677.43'. Do NOT append the 'From / To Borrower' checkbox words that may sit beside it. Do NOT confuse with closing_costs_total (the smaller Closing Costs figure), loan_amount, or the page-3 Calculating-Cash-to-Close grid 'Cash to Close' row. Null if absent.

Total of Payments

The 'Total of Payments' value from the Loan Calculations box (page 5), verbatim e.g. '$285,803.36'. Do NOT confuse with finance_charge or amount_financed in the same box. Null if absent.

Finance Charge

The 'Finance Charge' value from the Loan Calculations box (page 5), verbatim e.g. '$118,830.27'. Do NOT confuse with total_of_payments or amount_financed. Null if absent.

Amount Financed

The 'Amount Financed' value from the Loan Calculations box (page 5), verbatim e.g. '$162,000.00', '$148,241.94'. Do NOT confuse with loan_amount (page 1, may differ) or finance_charge. Null if absent.

Annual Percentage Rate (APR)

The 'Annual Percentage Rate (APR)' from the Loan Calculations box (page 5), verbatim percent e.g. '4.174%', '4.543%'. Do NOT confuse with interest_rate (page 1, lower) or total_interest_percentage (TIP). Null if absent.

Total Interest Percentage (TIP)

The 'Total Interest Percentage (TIP)' from the Loan Calculations box (page 5), verbatim percent e.g. '69.46%', '77.29%'. Do NOT confuse with annual_percentage_rate (APR) or interest_rate. Null if absent.

Assumption

The checked Assumption option in Loan Disclosures (page 4): 'will allow' (lender will allow assumption) or 'will not allow'. In both samples 'will not allow' is checked. Null if not determinable.

Demand Feature

The checked Demand Feature option in Loan Disclosures (page 4): 'has' a demand feature or 'does not have'. In both samples 'does not have' is checked. Null if not determinable.

Negative Amortization

The checked Negative Amortization option in Loan Disclosures (page 4): 'are scheduled' (scheduled neg-am payments), 'may have' (may have neg-am), or 'do not have' (no negative amortization feature). In both samples 'do not have' is checked. Null if not determinable.

Partial Payments

The checked Partial Payments option in Loan Disclosures (page 4): 'may accept' partial payments, 'may hold' them in a separate account, or 'does not accept' partial payments. In both samples 'may accept' is checked. Null if not determinable.

Escrow Account

The checked Escrow Account option in the Escrow Account box (page 4): 'will have' an escrow account or 'will not have'. In both samples 'will have' is checked. Null if not determinable.

state law may protect
state law does not protect

Liability after Foreclosure

The checked Liability after Foreclosure option in Other Disclosures (page 5): 'state law may protect' you from liability for the unpaid balance, or 'state law does not protect'. Purchase sample = 'state law may protect'; H25E refinance = 'state law does not protect'. Null if not determinable.

Loan Costs

Itemized fee lines under the 'Loan Costs' heading of Closing Cost Details (page 2): sections A (Origination Charges), B (Services Borrower Did Not Shop For), C (Services Borrower Did Shop For). Emit one object ONLY for each numbered fee line that has a PRINTED FEE NAME. The form pre-prints blank numbered slots (e.g. '04', '05', '06', '07', '08' with nothing after them) - these are EMPTY placeholders and must NOT be emitted as rows. Also do NOT emit: a row whose line_label would be empty/null, the section header rows themselves, per-section subtotals, or the 'D. TOTAL LOAN COSTS' / 'Loan Costs Subtotals' rows. Expected non-empty counts: purchase sample = 15 lines (A:3, B:6, C:6); H25E refinance = 15 lines (A:4, B:6, C:5). Null when the document does not include the Closing Cost Details page (e.g. an excerpt).

Other Costs

Itemized fee lines under the 'Other Costs' heading of Closing Cost Details (page 2): sections E (Taxes and Other Government Fees), F (Prepaids), G (Initial Escrow Payment at Closing), H (Other). Emit one object ONLY for each numbered fee line that has a PRINTED FEE NAME, INCLUDING the 'Aggregate Adjustment' line under G. The form pre-prints blank numbered slots and partially-blank rows such as 'Mortgage Insurance Premium ( mo.)' / 'Mortgage Insurance per month for mo.' that have a label but NO dollar amount in any column - treat a row as EMPTY and skip it only when it has neither a meaningful fee name nor any amount; a printed fee name with all-blank amounts (like an unused Mortgage Insurance line) should be SKIPPED. Do NOT emit blank numbered placeholders, section header rows, per-section subtotals, or the 'I. TOTAL OTHER COSTS' / 'J. TOTAL CLOSING COSTS' / 'Other Costs Subtotals' rows. Expected non-empty counts: purchase sample = 15 lines (E:2, F:3, G:3 incl. Aggregate Adjustment, H:7); H25E refinance = 8 lines (E:1, F:3, G:3, H:0, and 'Aggregate Adjustment' counted in G). Null when the document omits the Closing Cost Details page.

Calculating Cash to Close Grid

Rows of the 'Calculating Cash to Close' table (PURCHASE: page 3; REFINANCE H25E: page 3; REFINANCE excerpt H25F: page 2), which compares Loan Estimate vs Final with a 'Did this change?' answer. Emit one object per row. PURCHASE and REFINANCE have different row sets (refinance includes 'Loan Amount' and 'Total Payoffs and Payments (K)'; purchase includes 'Down Payment/Funds from Borrower', 'Deposit', 'Seller Credits', etc.) - emit whatever rows the document shows, including the final 'Cash to Close' summary row. Do NOT include the page-2 Closing Cost Details fee lines or the page-3 Summaries of Transactions (K/L/M/N) rows.


UtilityBill

A residential utility bill (electric and/or gas) from a single provider. Covers single-meter bills (Pepco electric, PPL electric) and dual-commodity bills (We Energies electric+gas). Top-level fields are flat bill-level identifiers and totals; per-meter usage is the repeated list `meters[]`.

Name of the utility company that issued the bill. Aliases: 'utility', 'company', the brand printed beside the bill title and in the payment remittance address. Examples: 'We Energies', 'Pepco', 'PPL Electric Utilities'. CASING: use the Title-Case brand exactly as it appears in the running body text and the remittance/return-payment block; do NOT copy the stylized all-lowercase logo wordmark (e.g. the Pepco logo renders 'pepco' but the company is 'Pepco'). Do NOT confuse with the competitive generation supplier (e.g. 'WGL Energy Svcs' on Pepco supply pages; the separate supplier referenced on PPL) — that is the third-party supplier, not the issuing distribution utility. Location: bill header/title and the 'make payable to' / remittance block.

The customer's utility account number. Aliases: 'Account Number', 'Account number', 'Account #'. Format: VERBATIM as printed, preserving internal spaces and dashes (e.g. We Energies '0123456789-00003', Pepco '0123 4567 890'). Do NOT confuse with: invoice_number (Pepco '200000088589'), service_number, the long barcode/scanline digit string at the bottom of a payment stub, or the meter number. Location: top summary table or the 'Account number:' label near the customer name; the payment stub repeats it.

The bill/invoice number uniquely identifying this statement, ONLY if the bill prints an explicit 'Invoice Number'/'Bill Number' label. Example: Pepco '200000088589' (printed as 'Invoice Number: 200000088589' on the coupon tear line). Format: verbatim digits as printed. Do NOT confuse with account_number, service_number, or an archive/page/system tag — in particular the We Energies 'WEC_PDF_Out_Archive 00001' string is an internal archive tag, NOT an invoice number, so We Energies invoice_number is null. Return null when no field is explicitly labeled invoice/bill number. Location: near the 'Please tear on the dotted line' coupon line or the bill header.

The service / point-of-delivery (POD) number distinct from the account number, ONLY if printed. Aliases: 'service number', 'Service No', 'POD ID'. Example: Pepco '0012 3456 7890 7001 6762 64' (printed as 'Residential-R - service number ...' on the 'Details of your Electric Charges' page). Format: verbatim including spaces. Do NOT confuse with account_number or meter_number. Return null if the bill shows no separate service number (e.g. We Energies prints none → null). Location: the per-service detail section header.

The name of the customer/account holder the bill is addressed to. Aliases: 'Customer Name', 'Service to', 'Bill to'. Format: verbatim as printed (e.g. We Energies 'JOHN Q CUSTOMER', Pepco 'PEPCO CUSTOMER'). Do NOT confuse with the utility_provider name or the remittance payee. Location: the addressee block near the service address or above the service-address label.

The address where utility service is delivered. Aliases: 'Service Address', 'Your service address', 'Service to'. Format: full street address as printed, single line, including city/state/ZIP if shown (e.g. We Energies '123 MAIN ST NEENAH WI 54956-1802', Pepco '123 9TH ST NW WASHINGTON DC 20012'). Do NOT confuse with the utility's remittance/PO-Box mailing address or the regulator addresses. Location: under the 'Service Address'/'Your service address' label near the customer name.

The date the bill was issued/printed, VERBATIM as printed. Aliases: 'Bill Date', 'Bill Issue date', 'Statement Date'. Examples: '02/03/2026', 'May 11, 2015'. RULE: return null if the bill prints no explicit bill/issue/statement date — some bills (e.g. PPL) show only a Due Date and a billing period and have NO issue date; in that case do NOT substitute the due date, the billing-period end, the 'balance as of' date, or a meter-read date. Do NOT confuse with payment_due_date, billing_period_start/end, or the next-meter-read date. Location: top summary table ('Bill Date') or the 'Bill Issue date:' label.

Start date of the service/billing period this bill covers. Aliases: 'Bill Period' (first date), 'for the period' (first date), 'Usage from' (first date). Format: VERBATIM as printed; e.g. We Energies '01/05/2026', Pepco 'April 4, 2015'. Do NOT confuse with bill_date or billing_period_end. Location: the 'Bill Period: X to Y' / 'for the period X to Y' line — take the FIRST (earlier) date.

End date of the service/billing period this bill covers. Aliases: 'Bill Period' (second date), 'for the period' (second date), 'Usage from' (second date). Format: VERBATIM as printed; e.g. We Energies '02/02/2026', Pepco 'May 5, 2015'. Do NOT confuse with bill_date, payment_due_date, or the next-meter-read date. Location: the 'Bill Period: X to Y' / 'for the period X to Y' line — take the SECOND (later) date.

The date payment is due. Aliases: 'Due Date', 'Total amount due by', 'Payment Transfer Date' (for autopay-withdrawal bills). Format: VERBATIM as printed; e.g. Pepco 'Jun 1, 2015' (from 'Total amount due by Jun 1, 2015'). Do NOT confuse with bill_date or billing_period_end, and do NOT use the later late-payment date ('after Jun 1, 2015'). For We Energies (autopay) use the 'Payment Transfer Date' '02/25/2026'. Location: top summary box ('Due Date'/'Payment Transfer Date') or the 'Total amount due by <date>' line.

The total amount due for this bill by the due date, as a number (strip '$' and commas; e.g. We Energies 246.40, Pepco 176.31). Aliases: 'Amount Due', 'Total amount due by <date>', 'Total Current Balance'. Do NOT confuse with: the higher late-payment amount (Pepco 'amount due after Jun 1' 179.06), previous_balance, total_current_charges (when it differs), or a single service subtotal. Location: top 'Amount Due' box or the 'Total amount due by <date>' summary line.

The balance carried from the prior bill before this period's payments/charges, as a number. Aliases: 'Previous Balance', 'Balance from your last bill'. Example: We Energies 277.79, Pepco 287.32. Do NOT confuse with amount_due, balance_forward ($0.00 after payment), or total_current_charges. Use the TOP-LEVEL bill summary value, NOT a per-service sub-summary's 'Balance from last bill'. Return null if not printed. Location: the 'Activity Since Last Bill' / 'Summary of your charges' / 'Billing Summary' block.

The total NEW charges for the current billing period, taken VERBATIM from a single line that the bill explicitly labels as the combined current-period charges. Accepted labels: 'Total Current Charges', 'Total Current Balance' (We Energies), or an equivalently-labeled single combined-charges total. Example: We Energies 'Total Current Charges $246.40' -> 246.40. RULE: return null if the bill shows no such single combined-current-charges line — do NOT compute it by summing delivery + supply, and do NOT substitute the amount due or a single-service subtotal. Pepco (separate 'New electric distribution charges' + 'New WGL Energy Svcs supply charges', no combined current-charges line) -> null. PPL (separate 'Total Delivery Charges' + 'Total Supply Charges', no combined current-charges line) -> null. Do NOT confuse with amount_due, previous_balance, total_delivery_charges, or total_supply_charges. Location: the charges-summary / billing-summary block.

Total distribution/delivery charges billed by the regulated utility for the current period, as a number, ONLY when the bill cleanly separates delivery from supply. Aliases: 'Total Delivery Charges', 'Total Electric Delivery Charges', 'New electric distribution charges'. Example: Pepco 21.01 ('New electric distribution charges - Pepco'). Return null when the bill does NOT split delivery vs supply: We Energies shows commodity totals (Electric Service Total + Gas Service Total) with no delivery/supply split → null. Do NOT use a commodity subtotal (e.g. We Energies gas distribution line) as the delivery total. Location: the delivery/distribution charges subtotal.

Total supply/generation charges (often billed for a competitive/third-party supplier) for the current period, as a number, ONLY when the bill cleanly separates supply from delivery. Aliases: 'Total Supply Charges', 'supply charges', 'Generation & Transmission Charges'. Example: Pepco 155.30 ('New WGL Energy Svcs supply charges'). Return null when the bill does NOT split supply vs delivery (bundled): We Energies is bundled (no delivery/supply split) → null. Do NOT use a commodity subtotal (e.g. We Energies 'Gas Supply Service' line) as the supply total. Location: the supply/generation charges subtotal.

One entry per metered service on the bill. Single-meter electric bills have one entry (Pepco: one electric meter); dual-commodity bills have one electric + one gas entry (We Energies: meter NZT0123456 electric + meter 0WG0123456 gas). Aligned by meter_number.

The meter identifier for this metered service. Aliases: 'Meter', 'Meter Number', 'Meter No'. Format: VERBATIM alphanumeric as printed (e.g. We Energies 'NZT0123456' / '0WG0123456', Pepco '1ND344415274'). Do NOT confuse with account_number, service_number, or the rate/schedule code (e.g. 'Rg1', 'Residential-R'). Location: the per-service block ('Meter <id>') or the 'Meter Number' column of the usage table.

The commodity this meter measures. 'electric' for kWh electric service, 'gas' for natural-gas service (therms/CCF), 'water' for water. Infer from the service section heading ('Electric Service', 'Gas Service', 'Residential Electric Service', 'Use (kWh)'). Do NOT guess: choose by the section the meter appears under and its usage unit. We Energies meter NZT0123456 is electric; meter 0WG0123456 is gas.

The most recent (ending) meter reading for this period, as a number (drop any leading zeros' formatting; the numeric value). Aliases: 'Current Reading', 'Actual Reading <later date>'. Example: We electric 40705, We gas 1464, Pepco 57043 (printed '057043'). Do NOT confuse with previous_reading (the earlier/beginning reading) or usage_quantity (the difference). Return null if no numeric reading is printed. Location: the meter-reading rows/table for this meter — the later of the two read dates ('Current Reading' column).

The prior (beginning) meter reading for this period, as a number (the numeric value). Aliases: 'Previous Reading', 'Actual Reading <earlier date>'. Example: We electric 40036, We gas 1385, Pepco 55628 (printed '055628'). Do NOT confuse with current_reading (the later reading) or usage_quantity. Return null if not printed. Location: the meter-reading rows/table for this meter — the earlier of the two read dates ('Previous Reading' column).

The billed consumption for this meter over the period, as a number. For electric use the billed kWh; for gas use the billed therms (the unit the gas charges are calculated on), NOT the raw CCF reading difference. Example: We electric 669 (kWh), We gas 83.9 (therms — the '79 CCF x 1.062 BTU = 83.9 Therms' converted value, NOT 79), Pepco 1415 (kWh). Do NOT confuse with current_reading/previous_reading or the raw reading difference when a meter constant/CCF→therms conversion applies. Location: the 'Total Use'/'KWH'/'Therms Used'/'Total Difference' figure for this meter.

The unit of usage_quantity. 'kWh' for electric, 'therms' for gas billed on therms, 'CCF' only if the gas bill is billed on CCF with no therms conversion, 'gallons' for water. Must match the unit usage_quantity is expressed in. For We Energies gas, usage_quantity is 83.9 therms so usage_unit='therms' (NOT 'CCF', even though the raw reading difference is 79 CCF).


UNIQUE 4-character zero-padded CLIN/SLIN identifier — EACH item_number VALUE MUST APPEAR AT MOST ONCE IN THE line_items LIST. Taken from the leftmost 'ITEM NO.' or 'Item' column of the Schedule of Supplies/Services (block 18 / DFARS Section B). Common label aliases: 'ITEM NO.', 'Item', 'Line Item', 'CLIN', 'CLIN/SLIN/ELIN', 'CLIN No.'. Always a 4-character zero-padded numeric string for top-level CLINs (e.g. '0001', '2000', '6100', '8100') and 6-character for SLINs (e.g. '000101', '200001'). Preserve verbatim including leading zeros; do NOT strip or normalize. Do NOT confuse with: requisition/PR number (block 4), purchase order number (block 1), delivery order number (block 2), ACRN (2-letter accounting code like 'AA'), PSC/FSC code (4-character product service code like 'R425'), CIN (long alphanumeric like 'F4FDAT2262A0380000AA'), or the document-page-number 'Page X of Y' header. If the same item_number appears in multiple places in the document (e.g. once in Section B with full data and again in Section E/F/G as a bare reference), this field STILL has only one value in the list — emit a single LineItem with this item_number from the Section B Schedule-of-Supplies row, and do NOT emit any additional LineItem with the same item_number.

The free-text supply/service description for this CLIN/SLIN, taken from the 'SCHEDULE OF SUPPLIES/SERVICES' column (block 19 on DD-1155) or 'Supplies/Services' / 'Supplies/Service' column on the continuation sheet. Capture the FULL description verbatim — DO NOT TRUNCATE. The description typically begins with an NSN/PSC line (e.g. '1650-00-993-7386') followed by a noun phrase (e.g. 'VALVE,LINEAR,DIRECTIONAL CONTROL') and may continue with manufacturer / CAGE code / part number lines (e.g. 'HYDRO-AIRE INC., DBA CRANE HYDRO-AIRE CAGE 81982', 'P/N: 80791'). Read the ENTIRE description column for that row — including all wrapped or continuation lines that belong to the same row — and capture every line. Preserve line breaks within the description cell as '\n'. INCLUDE any inline metadata that the agency printed inside the description cell (e.g. 'Data Category Code:', 'Purchase Requisition Number:', 'Product Service Code:', 'Pricing Arrangement:', 'CIN:', 'ACRN:', 'Fund Type', 'Option' suffix). Do NOT include text that appears in a separate column ('UNIT', 'UNIT PRICE', 'AMOUNT') or in standalone subsequent paragraphs ('PRICING TERMS:', 'INSPECTION POINT:', 'DELIVERY DATE:', 'PREP FOR DELIVERY:', 'SAMPLING:', 'PARCEL POST ADDRESS:'). Do NOT confuse with the Statement-of-Work prose body of Section C, the contractor's address (block 9), or the WAWF routing data table. If the description column is literally 'See Schedule' or 'CONT'D' with no real text, return that literal string. NORMALIZE column-wrap whitespace artifacts: if a comma is preceded by a stray space or line-break caused by DD-1155 column-wrap (e.g. 'VALVE,LINEAR ,DIRECT' or 'VALVE,LINEAR\n,DIRECT'), remove that spurious whitespace so it reads 'VALVE,LINEAR,DIRECT'. This rule applies only to whitespace immediately adjacent to punctuation (comma, period, semicolon); do NOT alter other line breaks or spacing in the description.

Numeric quantity ordered for this CLIN/SLIN, from the 'QUANTITY ORDERED/ACCEPTED*' column (block 20 on DD-1155) or the 'Qty' / 'Quantity' / 'QTY' column on the continuation sheet. Strip any thousands separators (',') and any trailing unit text (e.g. '21,640.00 Labor Hours' → 21640.0; '3.000' → 3.0; '1.00' → 1.0). Use a JSON number (float OK). Do NOT include the unit-of-issue, unit price, or amount. Do NOT confuse with: '# of Personnel', '# of Days', 'Instances' columns inside Section H travel tables, or the page-of-pages count. Return null only if the row genuinely has no quantity printed (e.g. an NSP / informational sub-item that lists only a description).

Unit of issue / unit-of-measure for the quantity, from the 'UNIT' column (block 21 on DD-1155) or the 'Unit' column on the continuation sheet. Verbatim short code or short phrase as printed: 'EA', 'Each', 'Lot', 'Labor Hours', 'HR', 'DA', 'BX', 'GA', 'KT'. Preserve original casing exactly. Do NOT expand abbreviations (do NOT change 'EA' to 'Each' or vice versa). Do NOT confuse with: the unit price, the unit-of-issue inside the description text, or the 'Unit Pack' (QUP) under PKGING DATA. Return null only if the unit cell is genuinely blank for that row.

Unit price per single unit-of-issue for this CLIN/SLIN, from the 'UNIT PRICE' column (block 22 on DD-1155) or 'Unit Price' / 'Est. Cost' / 'Fixed Fee' / 'CPFF' column on the continuation sheet. Capture verbatim AS PRINTED in the cell — including any currency prefix ('USD', '$'), thousands separators, and decimal point — as a string (e.g. 'USD 1,000.00', '$45,213.00', '0.00'). Do NOT compute or normalize. If multiple price-related sub-columns exist (Est. Cost / Fixed Fee / CPFF), join the populated cells with ' | ' in column order (e.g. 'USD 21,640.00 | USD 1,000.00 | USD 22,640.00'); if only one is populated, use it alone. Return null only if every price/cost cell for that row is genuinely blank (typical for NSP / 'No Separate Pricing' lines and informational sub-items). NSP-CELL RULE: if the row's amount/price column reads literally 'NSP' or 'No Separate Pricing' (typical of 'Cost Type / NSP Items' CLINs like 4000/4100/4200/8000/8100 on AFLCMC IDIQ orders), set unit_price=null AND set amount='NSP' (place the literal 'NSP' marker in the amount field, not the unit_price field). Do NOT confuse with: the Total in block 21/25, an ACRN-table 'Amount' column, or the 'Funded Amount' under the description.

Total extended amount for this CLIN/SLIN (typically quantity * unit_price), from the 'AMOUNT' column (block 23 on DD-1155) or 'Amount' / 'Funded Amount' / 'Firm Price' column on the continuation sheet. Capture verbatim AS PRINTED — currency prefix, thousands separators, decimals — as a string (e.g. 'USD 1,000.00', '$45,213.00'). STACKED-CELL RULE — when the Amount cell contains BOTH a 'Firm Price' line AND a 'Funded Amount' line stacked vertically (typical of the AFLCMC IDIQ continuation-sheet template, where each CLIN's Amount column shows two labeled sub-rows), capture ONLY the dollar value next to 'Funded Amount' (the obligated dollar figure for THIS line item). Do NOT concatenate, do NOT join, do NOT include the 'Firm Price' line, do NOT prefix with sub-labels — output a single bare dollar string (e.g. 'USD 1,000.00'). NSP-CELL RULE — when the row is a 'Cost Type / NSP' item (typical CLINs 4000/4100/4200/8000/8100 on AFLCMC IDIQ orders) and the price/amount cell reads literally 'NSP' or 'No Separate Pricing', set amount='NSP' (the literal string 'NSP'). Return null only if the cell is genuinely blank, or a CLIN whose amount is deferred to a later modification. Do NOT confuse with: block 25 'TOTAL' for the whole order, ACRN-table 'Amount' (per-accounting-string allocation), Section G 'Line of Accounting' amount, or the page header dollar figure.

LineItem

The base contract or purchase-order/agreement number that this DD-1155 order is written against, from block 1 'CONTRACT/PURCH ORDER/AGREEMENT NO.' on page 1. Verbatim including all dashes / slashes and any letter prefix (e.g. 'SPE4A7-17-P-5525', 'FA868423DB074', 'N0017819D7712', 'H94003-04-D-0004'). Typical formats: PIID 13-character (e.g. 'N0001719C5001'), DLA 'SPE…-NN-P-NNNN', or IDIQ base contract. Do NOT confuse with: block 2 delivery order/call number (often a shorter PIID), block 4 requisition / purchase request number, the CIN (long string ending in '-AA' or similar inside Section B), or the document page-header reference (which mirrors block 2, not block 1). If block 1 contains a comma-separated pair, capture only the first (the base contract).

The delivery-order / call / task-order number for this specific order, from block 2 'DELIVERY ORDER/CALL NO.' on page 1. Verbatim including any letter prefix (e.g. 'FA868423FB061', 'N0017422F3007'). On many DD-1155s this is the value that also appears in the upper-right page header (e.g. 'N0017422F3007 - FINAL', 'FA868423FB061 Page 2 of 13'). If block 2 is blank (true for many DLA SPE… purchase orders where there is no separate delivery order), return null. NEVER return empty string ''; use null for blank cells.

Date the order was issued, from block 3 'DATE OF ORDER/CALL (YYYYMMMDD)' on page 1. Return verbatim AS PRINTED in the source (the DD-1155 form prescribes the 'YYYYMMMDD' format with a 3-letter uppercase month, e.g. '2017 FEB 17', '2022JUL29', '2022DEC06'). Preserve internal whitespace exactly as printed. Do NOT reformat to ISO-8601, do NOT translate the month, do NOT confuse with: date signed (block 24 BY/DATE SIGNED), delivery date in Section F, document creation timestamp ('Created On:' footer), or Period-of-Performance start date. If block 3 is genuinely blank, return null. NEVER return empty string ''; use null for blank cells.

The requisition or purchase-request number that initiated this order, from block 4 'REQUISITION/PURCH REQUEST NO.' on page 1. Verbatim string (e.g. '0065228382', 'A025532', 'F4FDAT2262A038'). If block 4 explicitly says 'Various' (used when the order rolls up many PRs), return the literal string 'Various'. Do NOT confuse with: contract number (block 1), delivery order number (block 2), CIN (Section G accounting CIN like 'F4FDAT2262A0380000AA'), or the per-line 'External PR' values on a Section B continuation.

Grand total dollar value of this order, from block 25 'TOTAL' on the DD-1155 cover page (usually directly above the contracting officer signature in block 24). Capture VERBATIM AS PRINTED including any currency prefix and punctuation as a string (e.g. '$1,772,661.97', 'USD 1,000.00', '$45,213.00'). Return null only if block 25 is genuinely blank (no total printed). NEVER return empty string ''; use null for blank cells. Do NOT compute by summing the line_items, do NOT confuse with: the Section G ACRN line of accounting amount, a per-CLIN unit_price/amount, the 'Funded Amount' on a single CLIN, or 'AMOUNT VERIFIED CORRECT FOR' (block 33).

DEDUPLICATED list of every distinct Schedule-of-Supplies/Services CLIN/SLIN row in this DD-1155 order. EACH CLIN/SLIN APPEARS EXACTLY ONCE IN THIS LIST — IT IS A SET-VALUED FIELD KEYED BY item_number, NOT A BAG OF EVERY MENTION. If you find yourself about to emit a second LineItem with the same item_number, DO NOT — that's wrong. Update or merge into the first LineItem instead.\n\nSource: block 18-23 of the DD-1155 cover page AND every continuation-sheet 'Section B' / 'SCHEDULE OF SUPPLIES/SERVICES' / 'CLIN - SUPPLIES OR SERVICES' table (including DD-1155C-1 continuation sheets, 'Cost Type Items', 'Cost Only Items', 'Cost Type / NSP Items', and base-year + option-year CLIN groupings).\n\nA CLIN qualifies for inclusion ONLY when it appears in a Schedule-of-Supplies/Services TABLE with a populated description/qty/unit/price/amount column. CLIN identifiers are routinely referenced again throughout the document body (Section E inspection clauses, Section F period-of-performance lists, Section G ACRN/CIN cross-reference tables, payment-clause boilerplate, delivery rosters, etc.). Those secondary references are NOT new line items — they do NOT produce additional LineItem entries. The number of LineItem entries you emit MUST equal the number of distinct numeric CLINs in the Schedule-of-Supplies tables (typically 1-30 depending on whether base-year + option-year CLINs are present). It MUST NOT equal the total number of times any CLIN identifier is mentioned anywhere in the document.\n\nEXPLICITLY EXCLUDE (do not emit a duplicate row for):\n- bare CLIN references inside Section E 'INSPECTION AND ACCEPTANCE' clauses\n- bare CLIN references inside Section F 'DELIVERIES OR PERFORMANCE' / 'Period of Performance' bullet lists\n- bare CLIN references inside Section G 'CONTRACT ADMINISTRATION DATA' / ACRN / CIN cross-reference tables\n- CLIN references inside Section H special contract requirements, Section I clauses, Section J attachments, eCRAFT labor crosswalks, deliverable (CDRL A###) summary tables, WAWF routing tables, or address blocks\n- standalone bullet, paragraph, or footer references to a CLIN number elsewhere in the document\n\nDo NOT create a 'shadow' or 'echo' row with null/empty description/qty/unit/unit_price/amount for the same item_number just because the CLIN identifier reappears in Section E/F/G or anywhere else.\n\nINCLUDE: informational/funding sub-items such as 'Funding in support of CLIN 2000' (with their own item number like 2001, 2002, 2003) when they appear as their own row in the Schedule-of-Supplies table; option-year CLINs (2100, 2200, 6000, etc.) when they appear as their own row in the Schedule-of-Supplies table. If the cover-page Section 18-23 is literally 'See Schedule' or 'SEE SCHEDULE' or 'Award sent EDI', do not invent a row from it — instead pull all rows from the continuation Section B. Preserve the printed order (typically ascending by item_number, grouped by section). If after a careful pass NO schedule rows exist (extremely rare; DD-1155 always has at least one CLIN), return [].

Line Items

DD1155Schedule

1650-00-993-7386
VALVE,LINEAR,DIRECTIONAL CONTROL
HYDRO-AIRE INC., DBA CRANE HYDRO-AIRE CAGE 81982
P/N: 80791

2. DELIVERY ORDER/CALL NO. [block 2 empty on form]

One entry per distinct Schedule-of-Supplies/Services CLIN/SLIN row. DEDUPLICATE by item_number across the entire document: a CLIN that appears once in the Schedule-of-Supplies table and then is referenced again in Section E/F/G or elsewhere must appear ONLY ONCE in this list. Identified in the text by a numeric item_number in the leftmost 'ITEM NO.' / 'Item' / 'CLIN' column of a Section B / Schedule table (DD-1155 block 18 or any continuation sheet). Excludes accounting/ACRN rows, period-of-performance bullets, deliverable rosters, travel-table entries, and bare CLIN references outside the Schedule-of-Supplies table.

Line Items


LineItem

Line Items

DD1155Schedule

1650003175589\nGUIDE,PISTON ROLLER\nGUIDE, PISTON ROLLER\n52.246-11 Higher Level Contract Quality Requirement (Manufacturers)\nFAR CLAUSE 52.246-11 APPLIES. A QUALITY MANAGEMENT PROGRAM MEETING THE REQUIREMENTS OF ISO 9001:2008; A PROGRAM COMPARABLE TO ISO 9001:2008 (EXAMPLE SAE AS 9100), THE FOLLOWING TAILORED VERSION OF ISO 9001:2008; OR A PROGRAM COMPARABLE TO THE TAILORED VERSION OF ISO 9001:2008 (EXAMPLE SAE AS 9003) IS REQUIRED. IN THE TAILORED VERSION OF THE ISO 9001:2008, ANY REFERENCES WHICH CITE THE ENTIRE INTERNATIONAL STANDARD ARE INTERPRETED AS EXCLUSIONS TO THIS DOCUMENT.\nDLA TAILORED HIGHER LEVEL QUALITY CLAUSE FROM ISO 9001:2008\n[ISO subclauses 4.1-8.5.3 as listed]\nIDENTIFY TO\nMARK IAW MIL-STD-130N(1), DATED 16 NOV 2012.\nCONFIGURATION CONTROL APPLIES\nSEE CLAUSE 52.246-9G36 (SECTION I).\nTECH DATA AVAILABILITY\nDSCR MAY NOT HAVE AN APPROVED BIDSET FOR\nTHIS NSN.\nCRITICAL APPLICATION ITEM\nHYDRO-AIRE, INC. 81982 P/N 85965-1

Line Items


BrokerageConsolidated1099

Schema for a US brokerage consolidated 1099 / composite tax statement. Bundles 1099-DIV / 1099-INT / 1099-B / 1099-OID / 1099-MISC for one account-year. The long-doc list is the 1099-B per-lot Proceeds From Broker and Barter Exchange transactions section. Doc-type taxonomy: (1) filled per-recipient composite statement = extract everything; (2) pure-explainer guide PDF with no recipient header = all fields null/[]; (3) guide PDF with an embedded sample composite inside = extract from the embedded sample as if it were a real composite.

One per-lot row from the official 1099-B 'Proceeds From Broker and Barter Exchange Transactions' section. Do NOT include rows from a 'Year-End Summary' / 'Realized Gain or (Loss)' supplemental section even when the same security appears there — those are issuer-supplemental rollups and the PDF itself usually says 'this information is not provided to the IRS'. Do NOT emit Security Subtotal / Sale Date Total / Total Short-Term / Total Long-Term / category-total rows as lots.

Which 1099-B section this row appears under. One of: 'short_term_covered' (Box A, basis reported to IRS), 'short_term_noncovered' (Box B), 'short_term_noncovered_no_basis' (Box B, basis missing), 'long_term_covered' (Box D, basis reported), 'long_term_noncovered' (Box E, basis NOT reported), 'long_term_noncovered_no_basis' (Box E, basis missing), 'undetermined' (Box C or F, holding period unknown). Map source phrasings: 'Short-Term Transactions for Which Basis Is Reported' / 'Box A' -> short_term_covered; 'Box B' short-term -> short_term_noncovered; 'Box D' -> long_term_covered; 'Box E' -> long_term_noncovered. Do NOT confuse with the holding_period or basis_reporting_status separate fields (those split this enum into two axes for users who want them separately).

Holding period axis derived from section_category. One of: 'short_term', 'long_term', 'undetermined'. Mirrors the section header's 'Short-Term' / 'Long-Term' / 'Holding Period Unknown' label.

Basis-reporting axis derived from section_category. One of: 'basis_reported_to_irs' (Box A or D), 'basis_not_reported_to_irs' (Box B or E with basis shown), 'basis_missing' (Box B or E with basis blank or '—'). The 1099-B section header indicates this.

Which Form 8949 box the section header instructs the taxpayer to use. One letter: A, B, C, D, E, F. From phrasings like 'report on Form 8949, Part I, with Box A checked' (A); 'Box B checked' (B); 'Part II ... Box D checked' (D). Strip the word 'Box' and any 'checked' qualifier.

Disposition/transaction type as printed in the 'Disposition Transaction' / 'Action' / leftmost column, or as a short code right after the CUSIP. Pershing-style long-form values: 'SELL', 'BUY TO COVER', 'SHORT SELL', 'REDEEM', 'TENDER', 'MERGER', 'CALLED', 'MATURED', 'Sale'. Schwab-style short codes (1–2 letters appended to or right of the CUSIP): 'S' = Sale, 'SS' = Short Sale, 'R' = Redemption, 'P' = Principal Payment, 'C' = Cancellation/Conversion, 'MT' = Maturity. Extract VERBATIM (preserve case/length as printed). Return null if no action column or code is present. Do NOT confuse with section_category (covered/noncovered) or with state-code letters that appear in a separate 'State' field.

Security or property description for this lot as printed in 'Description (Box 1a)' or '1a-Description of property'. Common label aliases: 'Description (Box 1a)', '1a-Description of property/CUSIP/Symbol', 'Security Description', '8-Description'. Extract VERBATIM as printed — preserve casing, spacing, trailing qualifiers like 'CALLED', 'MATURED', 'DUE mm/dd/yy', and section subtitle ('SAMPLE CORP BOND CALLED', not 'SAMPLE CORP BOND'). STRIP any leading quantity number that some brokers (Schwab) inline in the description column. STRIP a trailing CUSIP-or-Symbol substring that some brokers concatenate ('SAMPLE CORP / CUSIP: 68075N103 / Symbol: OPK' → 'SAMPLE CORP'). STRIP markdown formatting artifacts ('**', '*', leading/trailing '_' underscores). When a security has a description sub-header above several lot rows (Pershing layout), COPY the sub-header description into every lot row. Do NOT confuse with section banners ('Short-Term Transactions for Which Basis Is Reported') — those are section_category, not description. Do NOT confuse with subtotal/total row labels.

9-character CUSIP identifier for the security. Sources: 'CUSIP', 'CUSIP Number', 'CUSIP:', '1b CUSIP', or right-aligned next to security_description. Extract ONLY the CUSIP portion — if printed as '30246XXXX / Symbol: XXYY' or '30246XXXX/XXYY', extract '30246XXXX' (the 9-character CUSIP standard). Preserve masked digits as printed (e.g. '30246XXXX' if X's are in the source). For Schwab statements that print the ticker symbol on the line below the CUSIP, do NOT merge them. Return null if no CUSIP printed. CUSIPs apply to ALL lot rows under the same security-description group header — copy onto every lot.

Stock ticker symbol when printed alongside or below the CUSIP (Schwab format: 'XXYY' / 'ABCXX' / 'OPK' on the line below the CUSIP). Extract VERBATIM (uppercase as printed). Some brokers do not print a symbol separately — return null in that case. Do NOT include the CUSIP here; that's a separate field.

Quantity of shares / units / par value sold for this lot. Source columns: 'Quantity (Box 1a)', 'Quantity', '1e Quantity sold', 'Quantity Sold'. Numeric; strip commas; preserve decimals as printed (e.g. 100.0000, 26.8200, 5952.00, 5000.0000). If the broker (Schwab) inlines quantity in the description column like '5,952 SAMPLE CORP', extract '5952' here. If 'VARIOUS' appears, that's a Sale-Date-Total aggregator row — skip the row entirely. Return null only if the lot row truly has no printed quantity.

Date the security was acquired (1099-B Box 1b). Sources: 'Date Acquired (Box 1b)', '1b-Date acquired', 'Date of acquisition'. Format VERBATIM as printed (e.g. '01/01/20XX', '04/01/12', '12/09/16'). May literally be 'VARIOUS' or 'Various' when multiple acquisition dates roll up to one disposition — preserve as-is. May be BLANK on Box B / Box E noncovered lots where the broker doesn't know the acquisition date — return null (do NOT drop the lot just because date_acquired is null). May be printed as '––' / '—' / 'Not Provided' / 'NOT PROVIDED' on no-basis lots — these also map to null. Do NOT confuse with date_sold (sister column) or with the statement preparation date in the header. **Schwab layout convention**: when the per-lot row spans two physical lines, the TOP physical line carries date_acquired (the '1b–Date of acquisition' header is stacked above '1a–Date of sale'). When only ONE line shows a date for a lot, that date goes in date_acquired ONLY if context makes acquisition the natural read; otherwise it goes in date_sold and date_acquired is null.

Sale or disposition date (1099-B Box 1c). Sources: 'Date Sold or Disposed (Box 1c)', '1c-Date sold or disposed', 'Date of sale or exchange', '1a–Date of sale or exchange'. Format VERBATIM as printed (e.g. '06/01/20XX', '04/01/23', '04/08/12'). Do NOT reformat. Do NOT incorporate 'Net proceeds' annotations that may appear under the date. **Schwab layout convention**: when the per-lot row spans two physical lines, the BOTTOM physical line carries date_sold (the '1a–Date of sale or exchange' header is stacked below '1b–Date of acquisition'). This is the inverse of the Pershing convention where the sale date is typically on the same line as the disposition action.

Gross or net proceeds for this lot (1099-B Box 1d). Sources: 'Proceeds (Box 1d)', '1d-Proceeds', 'Sales price of stocks, bonds, etc.', '2a-Sales price'. Numeric USD; strip '$', commas; preserve sign (parentheses or trailing minus = negative); preserve cents. Strip footnote-marker asterisks ('100.00*' → 100.00). Do NOT confuse with cost_basis (immediately to the right) or with Security Subtotal / Sale Date Total / category-total rows.

Cost or other basis (1099-B Box 1e). Sources: 'Cost or Other Basis (Box 1e)', '1e-Cost or other basis', '3-Cost or other basis'. Numeric USD; strip '$', commas. May be null/blank legitimately on Box B / Box E noncovered lots where the broker doesn't report basis — return null (do NOT compute it yourself). May literally read 'Missing' / 'Not Provided' / '––' / '—' on no-basis sections — all of these map to null. May carry a single-letter footnote suffix like '(k)', '(e)', '(f)' indicating a basis adjustment note — strip the suffix and return only the numeric value.

Wash-sale loss disallowed for this lot (1099-B Box 1g). Sources: '1g-Wash Sale Loss Disallowed', '5-Wash sale loss disallowed', or a value tagged with 'W' indicator in a combined-adjustments column. Numeric, positive (it's a disallowed loss amount, not a signed gain). If the row has only a 'D' (market discount) or 'O' (option premium) indicator, this field is null. Do NOT confuse with accrued_market_discount or option_premium.

Accrued market discount for this lot (1099-B Box 1f). Sources: '1f-Accrued Market Discount', 'Accrued mkt disc', or a value tagged with 'D' indicator in a combined column. Numeric USD. Null if the indicator is 'O' or 'W' instead, or if the column is blank/dashed.

Option premium adjustment tagged with an 'O' indicator in the combined-adjustments column (or a dedicated 'Option Premium' column). Numeric. Null if no 'O' tag.

Realized gain or loss for this lot. Sources: 'Realized Gain or (Loss)', 'Gain/Loss(-)', '6-Gain or loss'. Numeric USD; losses negative (extract '(123.45)' or '-123.45' as -123.45). Preserve cents. For wash-sale-disallowed rows, the realized_gain_or_loss is typically 0 with the disallowed amount in wash_sale_loss_disallowed. Do NOT compute it from proceeds - cost_basis if the field is blank; return null.

Federal income tax withheld for THIS individual lot (1099-B Box 4). Sources: '4-Federal income tax withheld', 'Federal income tax withheld' column at the right of the per-lot row. Numeric USD. Null if the column is absent or blank for this row. Do NOT confuse with the top-level 1099-B total federal_tax_withheld scalar or with state_tax_withheld.

State 2-letter abbreviation for state tax withholding on this lot, when shown ('13-State', 'State'). E.g. 'CA', 'NY'. Null if no state withholding row.

State tax withheld for this lot ('15-State Tax Withheld', 'State tax withheld'). Numeric USD. Null if no state withholding row.

True if the lot row carries a '2b - Loss based on above amount in 2a is not allowed' or similar 'loss not allowed' annotation (some Fidelity rows). False or null otherwise. Affects Form 8949 reporting.

4-digit tax year for this statement, from the page header 'TAX YEAR YYYY' / '2025 TAX AND YEAR-END STATEMENT' / '2024 Consolidated 1099 Tax Statement'. Return null only if no tax year is printed (extremely rare on actual statements; common on explainer-only PDFs which should return null for all top-level fields).

Recipient's name as printed in 'Recipient's Name and Address'. May be in any casing as printed (e.g. 'JOHN Q. PUBLIC', 'dana JONES john JONES'). Extract VERBATIM. If multiple recipient names appear stacked (joint account), concatenate with ' / ' or capture as a single string preserving newlines. Do NOT include the address. Return null for pure-explainer PDFs without a recipient header.

Recipient's TIN as masked-printed (e.g. '***-**-6789', '***-**-9999', '123-45-XXXX'). Extract VERBATIM including the masking characters. Sources: 'Recipient's TIN', 'Recipient's Identification Number', 'Recipient's ID No.'. Return null on explainer PDFs.

Brokerage account number (e.g. '123-456789', '1111-9999', '123-45678'). Extract VERBATIM with any printed dashes or spaces. Sources: 'Account Number', 'Account No.'.

Payer (brokerage firm) name as printed in 'Payer Information' or the masthead. Examples: 'PERSHING LLC', 'Charles Schwab & Co., Inc.', 'Fidelity Brokerage Services LLC', 'BEAR STEARNS'. Extract VERBATIM (casing as printed).

Payer's Federal Identification Number (EIN), formatted as printed (e.g. '13-2741729', '04-3523567', '94-1737782'). Sources: 'Federal Identification Number', 'Federal ID Number', 'Payer's Federal ID Number', 'PAYER'S TIN'.

Statement preparation date as printed (e.g. '02/13/20XX', 'January 11, 2013'). Sources: 'Date Prepared', or the date next to the 'TAX AND YEAR-END STATEMENT' masthead. Extract VERBATIM. Do NOT confuse with any per-lot date_acquired/date_sold.

Summary box values from the 1099-DIV (Dividends and Distributions) section. Null if no 1099-DIV section is printed. **Box numbers shifted between the 2012 and 2024+ form revisions; this schema uses SEMANTIC field names where the box number changed, and the box-number aliases live inside each field description.** Subdivisions like 'Includes amount shown in box 1b' under box 1a are informational and do NOT make the value into a per-row list.

1099-DIV Box 1a 'Total Ordinary Dividends' (stable across form revisions). Numeric USD. Includes amounts shown in box 1b (qualified) but those are reported separately.

1099-DIV Box 1b 'Qualified Dividends' (stable). Subset of box 1a.

1099-DIV Box 2a 'Total Capital Gain Distributions' (stable). Includes amounts in boxes 2b, 2c, 2d, 2f.

1099-DIV Box 2b 'Unrecaptured Section 1250 Gain' (stable). Subset of box 2a; used for real estate / REIT depreciation recapture taxation.

1099-DIV Box 2c 'Section 1202 Gain' (qualified small business stock; stable). Subset of box 2a.

1099-DIV Box 2d 'Collectibles (28%) Gain' (stable). Subset of box 2a.

Section 897 Ordinary Dividends — Box 2e on 2024+ form (NEW after 2022; absent on Schwab 2012). Used for nonresident alien tax reporting.

Section 897 Capital Gain — Box 2f on 2024+ form (NEW after 2022; absent on Schwab 2012).

1099-DIV Box 3 'Nondividend Distributions' (stable). Return of capital; reduces cost basis, not taxable as dividend.

1099-DIV Box 4 'Federal Income Tax Withheld' (stable). The 1099-DIV summary total.

Section 199A Dividends — Box 5 on 2024+ form (NEW after 2018 with TCJA; absent on Schwab 2012). REIT dividends eligible for 199A deduction.

Investment Expenses pass-through. Box 5 on 2012 form, Box 6 on 2024+ form (renumbered after Section 199A was added). RIC/REMIC pass-through; rarely populated post-TCJA on individual statements.

Foreign Tax Paid. Box 6 on 2012 form, Box 7 on 2024+ form (renumbered). Used for the Foreign Tax Credit on Form 1116. Value is total USD across all foreign sources.

Cash Liquidation Distributions. Box 8 on 2012 form, Box 9 on 2024+ form.

Noncash Liquidation Distributions. Box 9 on 2012 form, Box 10 on 2024+ form.

Exempt-Interest Dividends (e.g. municipal-bond mutual fund dividends). Box 10 on 2012 form, Box 12 on 2024+ form. Federally tax-exempt but may be taxable at state level.

Specified Private Activity Bond Interest Dividends. Box 11 on 2012 form, Box 13 on 2024+ form. Subset of exempt_interest_dividends; subject to AMT.

Summary box values from the 1099-INT (Interest Income) section. Null if no 1099-INT section is printed. 1099-INT box numbers have been roughly stable across recent years; field names mirror the box numbers.

1099-INT Box 1 'Interest Income'. Does NOT include amounts in box 3 (US Treasury) or box 8 (tax-exempt).

1099-INT Box 3 'Interest on U.S. Savings Bonds and Treasury Obligations'. Generally exempt from state income tax.

1099-INT Box 4 'Federal Income Tax Withheld' (1099-INT summary).

1099-INT Box 5 'Investment Expenses' (pass-through). Rarely populated post-TCJA.

1099-INT Box 6 'Foreign Tax Paid'.

1099-INT Box 8 'Tax-Exempt Interest' (municipal bond interest etc.). Federally tax-exempt.

1099-INT Box 9 'Specified Private Activity Bond Interest'. Subset of box 8; subject to AMT.

1099-INT Box 10 'Market Discount' (for covered transactions only). Pershing shows this; Schwab 2012 form did not.

1099-INT Box 11 'Bond Premium' (for covered transactions only).

1099-INT Box 12 'Bond Premium on Treasury obligations' (for covered transactions only).

1099-INT Box 13 'Bond Premium on Tax-Exempt Bond' (for covered transactions only).

1099-INT State Tax Withheld summary across states. Box 13 on Schwab 2012 form, Box 17 on 2024+ form (renumbered to make room for bond-premium boxes).

Summary box values from the 1099-OID (Original Issue Discount) section. Null if no 1099-OID section is printed. Pershing also adds covered-transaction tracking fields (other periodic interest, acquisition premium, tax-exempt OID) — these live as semantic-named fields here.

1099-OID Box 1 'Total Original Issue Discount' (NOT on US Treasury — see box 6 for that).

1099-OID Box 4 'Federal Income Tax Withheld'.

1099-OID Box 6 'Original Issue Discount on U.S. Treasury Obligations'. Exempt from state and local income tax.

Other Periodic Interest (Pershing-specific summary; not a numbered IRS box but rolls into the broader OID reporting).

Market Discount for covered transactions (Pershing OID summary aggregates this).

Acquisition Premium for covered transactions (Pershing OID summary). Reduces taxable OID.

Tax-Exempt OID for covered transactions. OID on tax-exempt obligations.

Tax-Exempt OID on Specified Private Activity Bonds. Subset of tax_exempt_oid; subject to AMT.

Summary box values from the 1099-MISC (Miscellaneous Information) section. Null if no 1099-MISC section is printed. Box numbering has been stable for the major brokerage-relevant boxes (1, 2, 4, 8); state-withholding moved 16→17 in some years.

1099-MISC Box 1 'Rents'.

1099-MISC Box 2 'Royalties'.

1099-MISC Box 3 'Other Income'.

1099-MISC Box 4 'Federal Income Tax Withheld'.

1099-MISC Box 8 'Substitute payments in lieu of dividends or interest'.

1099-MISC State Tax Withheld summary. Box 16 on Schwab 2012 form, Box 16 on 2024+ form (stable for MISC).

The 1099-B long-doc list: every per-lot disposition row from the official 'Proceeds From Broker and Barter Exchange Transactions' section. EXCLUDE: (a) subtotal rows (Security Subtotal, Sale Date Total, Total Short-Term, Total Long-Term, category Total); (b) Year-End Summary / supplemental realized gain rows even if the same security appears there (the PDF usually says these are NOT reported to the IRS); (c) the blank-template row of a pure explainer PDF (a fully-blank template doesn't represent real lots). For doc-type 'pure explainer with no recipient header': return null. For doc-type 'filled composite with recipient' and 'guide+embedded filled sample': return the array of actual lot rows from the official 1099-B section.

Summary totals from the 1099-B section (separate from the per-lot list). On Pershing this appears as the 'Summary of Form 1099-B' panel on page 1. On Schwab this is the 'Total Sales Price' / 'Total Federal Income Tax Withheld' totals at the bottom of the per-section pages. On Fidelity sample, it's the TOTALS row at the bottom of the sample 1099-B table. Null when no 1099-B section is printed (pure-explainer PDFs).

1099-B total Gross Proceeds across all sections (covered + noncovered). Label aliases: 'Gross Proceeds (For Covered and Noncovered Transactions)', 'Total Sales Price of Stocks, Bonds, etc.', 'TOTALS' column under sales price. Should equal sum(form_1099_b_lots[].proceeds) for the same PDF.

1099-B total Cost or Other Basis (typically covered transactions only, sometimes also noncovered when basis is available). Label aliases: 'Cost or Other Basis (For Covered Transactions Only)', 'Total Cost or Other Basis', TOTALS column under cost basis.

1099-B Federal Income Tax Withheld summary (on Proceeds — distinct from per-lot or from the Reg Futures variant). Label aliases: 'Federal Income Tax Withheld – Proceeds', 'Total Federal Income Tax Withheld'. Numeric USD.

1099-B State Tax Withheld summary (on Proceeds — distinct from per-lot or from the Reg Futures variant). Label aliases: 'State Tax Withheld – Proceeds'. Numeric USD.

Total Box A Short-Term Realized Gain (positive amounts only). Often printed below the 1099-B table as 'Box A Short-Term Realized Gain'.

Total Short-Term Realized Loss (negative; printed as 'Box A Short-Term Realized Loss' or similar). Numeric — preserve negative sign.

Total Wash Sale Loss Disallowed summary across all sections. Label aliases: 'Box A Wash Sale Loss Disallowed', 'Total Wash Sale Loss Disallowed'.

Pershing-style 'Regulated Futures and Foreign Currency Forward Contracts' sub-section of 1099-B (Section 1256 contracts). Null if not present. This is a Pershing-specific layout — most Schwab/Fidelity samples don't have it.

'Profit or (Loss) Realized in 2025' (current-year realized). Numeric USD; preserve sign — parenthesized values are losses.

'Unrealized Profit or (Loss) on Open Contracts – 12/31/<prior year>'. Numeric USD; signed.

'Unrealized Profit or (Loss) on Open Contracts – 12/31/<current year>'. Numeric USD; signed.

Aggregate Profit or (Loss) across the realized + unrealized adjustments. Numeric USD; signed.

Federal Income Tax Withheld on Regulated Futures and Foreign Currency Forward Contracts.

State Tax Withheld on Regulated Futures and Foreign Currency Forward Contracts.

UNITED STATES TREAS NTS 4.25000% 11/15/2014

UNITED STATES TREAS NTS 4.25000% 11/15/2014

Aligned across extractor outputs by the composite (security, date_acquired, date_sold, proceeds) key. Single fields aren't unique because the same security can appear in multiple sub-sections and at multiple acquisition dates.