docs(arap): B-41, the bookspec examples, and the four registers (P4b S7)
rules.md B-41 states the write-off: the direct method the owner chose (A-5), Dr 6990 / Cr 1200 with the receivable tagged, at most what is owed and at most the least owed from that day on (a partial write-off as §1.166-3(a) allows), refused on cash-basis books (§1.166-1(e)), its evidence filed in the same call (§1.166-2(a)); bills are never written off (ASC 405-20-40-1); and a recovery is not a new movement (D-49): the same year, reverse the write-off and record the payment; a later year, a plain entry to a bad-debt-recoveries revenue account, the invoice staying written off (IRC §111). bookspec states B-41 for the first time and gives B-38 its example: two new examples, bad-debt-direct-write-off (two partial write-offs of one invoice, the balances and the trial balance worked by hand) and arap-hand-control-posting-refused (a hand line an earlier version wrote replays, the same line written today is refused). The example schema gains the dated write_off event, lets a refused entry say so (an entry posts whole or not at all; older and refused never combine), and its refusal vocabulary gains untagged_control_line, B-38's control guard. The registers: docs/architecture.md names the new tool group; docs/receipt-store.md lists invoice.written_off and what replay does with it; docs/parity.md records the slice (no row changes status, the floor stands); docs/testing.md records every test and what P12 must mutate; docs/verification.md the two Lean theorems and what they cover. No figure moves: no golden file changed.
This commit is contained in:
1 parent
a4c70dd3b1
commit
73fc712647
6 files changed
+239
-16
No files matched your search
@@ -0,0 +1,76 @@
|
||||
id = "bad-debt-direct-write-off"
|
||||
title = "An invoice that will not be collected is written off, in parts"
|
||||
rule = "A debt that becomes worthless MUST be written off in the year it becomes worthless, a partial write-off MUST be deductible to the extent charged off, and no write-off may exceed what is owed."
|
||||
status = "CHOICE"
|
||||
sources = [
|
||||
"IRC §166(a)",
|
||||
"IRC §111",
|
||||
"Treas. Reg. §1.166-1(e)",
|
||||
"Treas. Reg. §1.166-2(a)",
|
||||
"Treas. Reg. §1.166-3(a)",
|
||||
"plan/served.md 8.3.1 A-5: the direct write-off method",
|
||||
"ASC 326-20 (noted: an allowance is the GAAP preference)",
|
||||
]
|
||||
tags = ["accrual", "book", "us", "receivables"]
|
||||
|
||||
[setup]
|
||||
currency = "USD"
|
||||
fiscal_year_start = "01-01"
|
||||
basis = "accrual"
|
||||
rounding = "half-even"
|
||||
|
||||
[[setup.accounts]]
|
||||
code = "1000"
|
||||
name = "Checking"
|
||||
type = "asset"
|
||||
|
||||
[[setup.accounts]]
|
||||
code = "1200"
|
||||
name = "Accounts Receivable"
|
||||
type = "asset"
|
||||
|
||||
[[setup.accounts]]
|
||||
code = "4000"
|
||||
name = "Revenue"
|
||||
type = "revenue"
|
||||
|
||||
[[setup.accounts]]
|
||||
code = "6990"
|
||||
name = "Bad Debt Expense"
|
||||
type = "expense"
|
||||
tax_category = "bad_debts"
|
||||
|
||||
# The work was done and billed: the invoice is income already counted.
|
||||
[[events]]
|
||||
date = "2026-01-10"
|
||||
description = "Survey work"
|
||||
invoice = { customer = "Ridgeway Co", amount = "100.00" }
|
||||
|
||||
# Part of it is charged off when the collection efforts end; the rest
|
||||
# stays owed and aged.
|
||||
[[events]]
|
||||
date = "2026-03-15"
|
||||
write_off = { invoice = 1, amount = "40.00", reason = "No answer; the collection agency closed the file" }
|
||||
|
||||
# The liquidation notice makes the rest worthless, and it is written off.
|
||||
[[events]]
|
||||
date = "2026-04-20"
|
||||
write_off = { invoice = 1, amount = "60.00", reason = "Liquidation notice received" }
|
||||
|
||||
[[expect]]
|
||||
query = "balances"
|
||||
as_of = "2026-12-31"
|
||||
[expect.values]
|
||||
"1000" = "0.00"
|
||||
"1200" = "0.00"
|
||||
"4000" = "100.00"
|
||||
"6990" = "100.00"
|
||||
|
||||
[[expect]]
|
||||
query = "trial_balance"
|
||||
as_of = "2026-12-31"
|
||||
[expect.values]
|
||||
"1000" = "0.00"
|
||||
"1200" = "0.00"
|
||||
"4000" = "-100.00"
|
||||
"6990" = "100.00"
|
||||
Reference in new issue
Block a user