P3: dated 1099 decisions, payment methods and the card exception (defects 23, 12, 18, D-40)
check / check (push) Canceled after 0s

A vendor's 1099 decision is its own dated fact (files NEC or MISC, not
reportable with its reason, or undetermined), applied by each payment's
date. Payment methods are recorded; card and network payments are left
out and listed; a member's check through financing counts; a bank payment
with no method counts (D-40); $2,000 for payments after 2025. One
worksheet for the tool, the viewer and the CPA package.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01T3gXMVt7XJPi6ens1or9Dj
This commit is contained in:
swaitsandClaude Opus 5.5 committed 2026-10-21 12:12:26 -06:00
1 parent c2ceabbae9
commit 1304b9c0ad
77 files changed
+11455 -970

No files matched your search

@@ -0,0 +1,94 @@
id = "1099-a-dated-status-applies-by-payment-date"
title = "A payee's 1099 status applies to each payment as of the payment's date"
rule = """
Whether a payee is exempt (a corporation) is judged as of each payment: the
payer may treat a payee as a corporation when the condition is met before
the payment is made. An LLC that elects to be taxed as a corporation keeps
its EIN and becomes a corporation on the election's effective date (the
date its Form 8832 specifies). Payments before that date count toward its
1099-NEC; payments from it on are payments to a corporation, for which no
return is required. (A payee that incorporates is a new legal person: a new
payee, with its own W-9.)
"""
status = "AUTHORITY"
sources = [
"Treas. Reg. §1.6041-3(p)(1) (docs/spec/sources/irs-1099-payment-method.md)",
"Treas. Reg. §1.6049-4(c)(1)(ii)(A) (\"before a payment is made\")",
"Treas. Reg. §301.7701-2(b)(2), §301.7701-3(c)(1)(iii)",
"DECISION D-40 (wanderbooks owner, 2026-10-20): dated statuses",
]
tags = ["1099", "dated-status", "corporation", "election"]
[setup]
currency = "USD"
fiscal_year_start = "01-01"
basis = "cash"
rounding = "half-away-from-zero"
cash_accounts = ["1000"]
[[setup.accounts]]
code = "1000"
name = "Bank"
type = "asset"
[[setup.accounts]]
code = "6000"
name = "Contract Labor"
type = "expense"
[[setup.payees]]
name = "Harbor Design LLC"
form = "1099-NEC"
[[setup.status_changes]]
payee = "Harbor Design LLC"
effective = "2026-07-01"
decision = "not_reportable"
reason_kind = "corporation"
reason = "elected to be taxed as a corporation (Form 8832), effective July 1"
[[events]]
date = "2026-03-01"
description = "Design work"
payee = "Harbor Design LLC"
lines = [
{ account = "6000", side = "debit", amount = "1500.00" },
{ account = "1000", side = "credit", amount = "1500.00" },
]
[[events]]
date = "2026-06-30"
description = "Design work, the day before the election"
payee = "Harbor Design LLC"
lines = [
{ account = "6000", side = "debit", amount = "1000.00" },
{ account = "1000", side = "credit", amount = "1000.00" },
]
[[events]]
date = "2026-07-01"
description = "Design work, the election's day"
payee = "Harbor Design LLC"
lines = [
{ account = "6000", side = "debit", amount = "800.00" },
{ account = "1000", side = "credit", amount = "800.00" },
]
[[events]]
date = "2026-09-15"
description = "Design work"
payee = "Harbor Design LLC"
lines = [
{ account = "6000", side = "debit", amount = "1200.00" },
{ account = "1000", side = "credit", amount = "1200.00" },
]
# By hand: before July 1, 1,500.00 + 1,000.00 = 2,500.00 counts (at least
# 2,000.00: reportable); from July 1 on, 800.00 + 1,200.00 = 2,000.00 paid
# to a corporation, not reportable.
[[expect]]
query = "vendor_1099"
payee = "Harbor Design LLC"
from = "2026-01-01"
to = "2026-12-31"
values = { status = "reportable", threshold = "2000.00", paid = "2500.00", excluded_card = "0.00", undetermined = "0.00", not_reportable = "2000.00" }
@@ -0,0 +1,99 @@
id = "1099-a-members-check-through-financing-counts"
title = "A member's own check for the company counts toward the payee's 1099; their card doesn't; unknown stays unknown"
rule = """
The payer is the person who makes the payment in the course of its trade or
business. A person paying on another's behalf is the payer only if it
performs management or oversight functions or has a significant economic
interest; writing checks at another's direction is neither. A member who
pays a company bill from their own funds at the company's direction, the
company bearing the cost through its liability to the member, leaves the
company the payer: the member's check counts toward the payee's 1099. The
member's personal card is a payment card: excluded (Form 1099-K). A
member's payment whose method isn't recorded is undetermined, never
guessed; the payee is reportable only if what certainly counts reaches the
threshold.
"""
status = "AUTHORITY"
sources = [
"Treas. Reg. §1.6041-1(a)(1)(i), (e)(1) (docs/spec/sources/irs-1099-payment-method.md)",
"Treas. Reg. §1.6041-1(a)(1)(iv)",
"26 U.S.C. §6041(a), as amended by Pub. L. 119-21 §70433 (docs/spec/sources/irs-1099-thresholds.md)",
]
tags = ["1099", "financing", "member-paid", "instruments"]
[setup]
currency = "USD"
fiscal_year_start = "01-01"
basis = "cash"
rounding = "half-away-from-zero"
cash_accounts = ["1000"]
financing_accounts = ["2100"]
[[setup.accounts]]
code = "1000"
name = "Bank"
type = "asset"
[[setup.accounts]]
code = "2100"
name = "Due to Members"
type = "liability"
[[setup.accounts]]
code = "6000"
name = "Contract Labor"
type = "expense"
[[setup.instruments]]
label = "Riley's checks"
kind = "member_cash_or_check"
account = "2100"
[[setup.instruments]]
label = "Riley's Visa"
kind = "member_card"
account = "2100"
[[setup.payees]]
name = "Dana Studio"
form = "1099-NEC"
[[events]]
date = "2026-05-01"
description = "Logo, paid by a member's personal check"
payee = "Dana Studio"
instrument = "Riley's checks"
lines = [
{ account = "6000", side = "debit", amount = "2500.00" },
{ account = "2100", side = "credit", amount = "2500.00" },
]
[[events]]
date = "2026-06-01"
description = "Icons, charged to a member's personal card"
payee = "Dana Studio"
instrument = "Riley's Visa"
lines = [
{ account = "6000", side = "debit", amount = "800.00" },
{ account = "2100", side = "credit", amount = "800.00" },
]
[[events]]
date = "2026-07-01"
description = "Revisions, paid by a member (how not recorded)"
payee = "Dana Studio"
lines = [
{ account = "6000", side = "debit", amount = "300.00" },
{ account = "2100", side = "credit", amount = "300.00" },
]
# By hand: counts 2,500.00 (the member's check); excluded 800.00 (their
# card); undetermined 300.00. What certainly counts, 2,500.00, is at least
# 2,000.00 however the 300.00 turns out: reportable, on 2,500.00 (or
# 2,800.00 once the 300.00 is known to be a check).
[[expect]]
query = "vendor_1099"
payee = "Dana Studio"
from = "2026-01-01"
to = "2026-12-31"
values = { status = "reportable", threshold = "2000.00", paid = "2500.00", excluded_card = "800.00", undetermined = "300.00", not_reportable = "0.00" }
@@ -0,0 +1,219 @@
# How a payee's party totals and its 1099 amount relate (wanderbooks
# rules.md B-35 item 9, B-19): a member paying a contractor for the
# company through the members' financing account, by check, by their own
# card and with no method recorded; a company card charge; a company
# check; then the member reimbursed. Party totals count every payment as
# paid to the contractor, in money; the 1099 worksheet counts the
# company's payments that aren't by card, and holds the unrecorded one
# undetermined. The shape: bookspec/README.md.
id = "1099-and-party-totals-for-a-members-payment"
title = "A payee's party total is its 1099 amount plus its card payments plus its payments of unknown method"
rule = """
A member who pays a payee for the company from their own funds, the
company owing them for it through its financing account, leaves the
company the payer: on the 1099 worksheet the member's own cash or check
counts toward the payee's 1099, the member's own card is excluded (Form
1099-K), and a payment whose method isn't recorded is undetermined. Party
totals report what moved with each party, whoever handled the money: every
one of those payments is paid to the payee, in money, on its date, and the
member is paid when the company reimburses them. So the payee's party
total paid is its 1099 amount plus what was paid by card or payment
network plus what is undetermined; the reimbursement is paid to the
member and pays no payee.
"""
status = "CHOICE"
sources = [
"Treas. Reg. §1.6041-1(e)(1): a person paying on another's behalf who only writes the check at its direction isn't the payor (wanderbooks docs/spec/sources/irs-1099-payment-method.md)",
"Treas. Reg. §1.6041-1(a)(1)(iv): a payment card transaction is reported under §6050W, not §6041 (docs/spec/sources/irs-1099-payment-method.md)",
"DECISION (owner, 2026-10-20): money is cash, cards, the members' financing and loans (wanderbooks rules.md B-35 item 5)",
"DECISION D-40 (owner, 2026-10-20): payment methods; an untagged payment through financing is undetermined (rules.md B-19)",
]
tags = ["1099", "parties", "member-paid", "instruments", "cards"]
[setup]
currency = "USD"
fiscal_year_start = "01-01"
basis = "cash"
rounding = "half-away-from-zero"
cash_accounts = ["1000"]
financing_accounts = ["2100"]
[[setup.accounts]]
code = "1000"
name = "Checking"
type = "asset"
[[setup.accounts]]
code = "2050"
name = "Company Visa"
type = "liability"
[[setup.accounts]]
code = "2100"
name = "Due to Members"
type = "liability"
[[setup.accounts]]
code = "3000"
name = "Capital — Tobin Harlow"
type = "equity"
[[setup.accounts]]
code = "3001"
name = "Capital — Morgan Ellis"
type = "equity"
[[setup.accounts]]
code = "6000"
name = "Contract Labor"
type = "expense"
[[setup.parties]]
name = "Tobin Harlow"
roles = ["member"]
[[setup.parties]]
name = "Morgan Ellis"
roles = ["member"]
[[setup.parties]]
name = "Dana Studio"
roles = ["vendor", "contractor"]
[[setup.members]]
name = "Tobin Harlow"
capital_account = "3000"
share = "0.5"
[[setup.members]]
name = "Morgan Ellis"
capital_account = "3001"
share = "0.5"
# The contractor's vendor record, marked for a 1099-NEC.
[[setup.payees]]
name = "Dana Studio"
form = "1099-NEC"
[[setup.instruments]]
label = "Company Visa"
kind = "business_card"
account = "2050"
[[setup.instruments]]
label = "Tobin's checks"
kind = "member_cash_or_check"
account = "2100"
owner = "Tobin Harlow"
[[setup.instruments]]
label = "Tobin's Visa"
kind = "member_card"
account = "2100"
owner = "Tobin Harlow"
# 1. Tobin pays the contractor by personal check.
[[events]]
date = "2026-03-02"
description = "Design work, paid by Tobin's check"
parties = [{ party = "Dana Studio" }]
instrument = "Tobin's checks"
lines = [
{ account = "6000", side = "debit", amount = "1500.00" },
{ account = "2100", side = "credit", amount = "1500.00" },
]
# 2. Tobin pays on his own card.
[[events]]
date = "2026-04-01"
description = "Icons, charged to Tobin's own card"
parties = [{ party = "Dana Studio" }]
instrument = "Tobin's Visa"
lines = [
{ account = "6000", side = "debit", amount = "400.00" },
{ account = "2100", side = "credit", amount = "400.00" },
]
# 3. Tobin pays; how is not recorded.
[[events]]
date = "2026-05-01"
description = "Revisions, paid by Tobin"
parties = [{ party = "Dana Studio" }]
lines = [
{ account = "6000", side = "debit", amount = "300.00" },
{ account = "2100", side = "credit", amount = "300.00" },
]
# 4. Charged to the company card.
[[events]]
date = "2026-06-01"
description = "Banner, on the company card"
parties = [{ party = "Dana Studio" }]
lines = [
{ account = "6000", side = "debit", amount = "200.00" },
{ account = "2050", side = "credit", amount = "200.00" },
]
# 5. The company's own check.
[[events]]
date = "2026-06-15"
description = "Brochure, company check"
parties = [{ party = "Dana Studio" }]
lines = [
{ account = "6000", side = "debit", amount = "600.00" },
{ account = "1000", side = "credit", amount = "600.00" },
]
# 6. The company reimburses Tobin for events 1 to 3.
[[events]]
date = "2026-07-01"
description = "Tobin reimbursed"
parties = [{ party = "Tobin Harlow" }]
lines = [
{ account = "2100", side = "debit", amount = "2200.00" },
{ account = "1000", side = "credit", amount = "2200.00" },
]
[[expect]]
query = "party_part"
entry = 2
party = "Dana Studio"
values = { resolved = "400.00", direction = "paid", cash = "400.00", in_kind = "0.00" }
# By hand: 1,500.00 + 400.00 + 300.00 + 200.00 + 600.00 = 3,000.00, every
# payment paid to the contractor, in money.
[[expect]]
query = "party_totals"
party = "Dana Studio"
basis = "cash"
from = "2026-01-01"
to = "2026-12-31"
values = { paid = "3000.00", received = "0.00" }
# By hand: counts 1,500.00 (Tobin's check) + 600.00 (the company's check)
# = 2,100.00; excluded 400.00 (Tobin's card) + 200.00 (the company card)
# = 600.00; undetermined 300.00. 2,100.00 + 600.00 + 300.00 = 3,000.00,
# the party total. What certainly counts, 2,100.00, is at least 2,000.00:
# reportable.
[[expect]]
query = "vendor_1099"
payee = "Dana Studio"
from = "2026-01-01"
to = "2026-12-31"
values = { status = "reportable", threshold = "2000.00", paid = "2100.00", excluded_card = "600.00", undetermined = "300.00", not_reportable = "0.00" }
# The reimbursement is paid to Tobin, and pays no payee.
[[expect]]
query = "party_totals"
party = "Tobin Harlow"
basis = "cash"
from = "2026-01-01"
to = "2026-12-31"
values = { paid = "2200.00", received = "0.00" }
[[expect]]
query = "vendor_1099_paid"
from = "2026-01-01"
to = "2026-12-31"
values = { "Dana Studio" = "2100.00" }
@@ -0,0 +1,101 @@
id = "1099-card-payments-are-excluded"
title = "Payments by card are left off Form 1099-NEC, and listed"
rule = """
A payment made by payment card (credit, debit or stored-value) or through a
third party payment network that section 6041 would otherwise cover is
reported by the payment settlement entity on Form 1099-K under section 6050W,
not by the payer on Form 1099-NEC or 1099-MISC, whoever's card it was. A
payment by check, ACH or transfer counts toward the payee's 1099-NEC. A
bank payment with no payment method recorded is presumed a check, ACH or
transfer; a debit-card payment from the bank is excluded once tagged with
the card.
"""
status = "AUTHORITY"
sources = [
"Treas. Reg. §1.6041-1(a)(1)(iv) (docs/spec/sources/irs-1099-payment-method.md)",
"Treas. Reg. §1.6050W-1(b)(1), (b)(3) (payment card; accepted as payment)",
"IRS, Understanding your Form 1099-K (credit, debit or stored value cards)",
"Instructions for Forms 1099-MISC and 1099-NEC (Rev. 12/2026), Form 1099-K",
"DECISION D-40 (wanderbooks owner, 2026-10-20): an untagged bank payment counts",
]
tags = ["1099", "payment-card", "instruments"]
[setup]
currency = "USD"
fiscal_year_start = "01-01"
basis = "cash"
rounding = "half-away-from-zero"
cash_accounts = ["1000"]
financing_accounts = ["2100"]
[[setup.accounts]]
code = "1000"
name = "Bank"
type = "asset"
[[setup.accounts]]
code = "2050"
name = "Company card"
type = "liability"
[[setup.accounts]]
code = "2100"
name = "Due to Members"
type = "liability"
[[setup.accounts]]
code = "6000"
name = "Contract Labor"
type = "expense"
[[setup.instruments]]
label = "Harbor Visa"
kind = "business_card"
account = "2050"
[[setup.instruments]]
label = "Harbor debit card"
kind = "business_card"
account = "1000"
[[setup.payees]]
name = "Harbor Design LLC"
form = "1099-NEC"
[[events]]
date = "2026-02-10"
description = "Design work, charged to the company card"
payee = "Harbor Design LLC"
lines = [
{ account = "6000", side = "debit", amount = "2500.00" },
{ account = "2050", side = "credit", amount = "2500.00" },
]
[[events]]
date = "2026-03-10"
description = "Design work, paid with the debit card"
payee = "Harbor Design LLC"
instrument = "Harbor debit card"
lines = [
{ account = "6000", side = "debit", amount = "1200.00" },
{ account = "1000", side = "credit", amount = "1200.00" },
]
[[events]]
date = "2026-04-10"
description = "Design work, paid by check"
payee = "Harbor Design LLC"
lines = [
{ account = "6000", side = "debit", amount = "900.00" },
{ account = "1000", side = "credit", amount = "900.00" },
]
# By hand: counts 900.00 (the check); excluded 2,500.00 + 1,200.00 =
# 3,700.00 (the card's account, and the bank payment tagged with the debit
# card); 900.00 < 2,000.00: no 1099 is due.
[[expect]]
query = "vendor_1099"
payee = "Harbor Design LLC"
from = "2026-01-01"
to = "2026-12-31"
values = { status = "under_threshold", threshold = "2000.00", paid = "900.00", excluded_card = "3700.00", undetermined = "0.00", not_reportable = "0.00" }
@@ -0,0 +1,92 @@
id = "1099-money-between-own-accounts-pays-no-one"
title = "Paying the card bill, reimbursing a member, or paying down a loan pays no payee"
rule = """
A 1099 reports payments made to the payee. Money moved between the payer's
own payment sources (its bank paying its card's balance, reimbursing a
member who paid for it, paying down a loan's principal) pays no payee, even
when the entry is tagged with the card issuer, the member's payee record or
the lender: the movement out of one source is offset by the movement into
the other.
"""
status = "CONVENTION"
sources = [
"26 U.S.C. §6041(a) (payments made to the payee: docs/spec/sources/irs-1099-thresholds.md)",
"wanderbooks P3 review R1 (2026-10-20): netting an entry's payment buckets",
]
tags = ["1099", "netting"]
[setup]
currency = "USD"
fiscal_year_start = "01-01"
basis = "cash"
rounding = "half-away-from-zero"
cash_accounts = ["1000"]
financing_accounts = ["2100", "2500"]
[[setup.accounts]]
code = "1000"
name = "Bank"
type = "asset"
[[setup.accounts]]
code = "2050"
name = "Company card"
type = "liability"
[[setup.accounts]]
code = "2100"
name = "Due to Members"
type = "liability"
[[setup.accounts]]
code = "2500"
name = "Equipment loan"
type = "liability"
[[setup.instruments]]
label = "Harbor Visa"
kind = "business_card"
account = "2050"
[[setup.payees]]
name = "Harbor Card Services"
form = "1099-NEC"
[[setup.payees]]
name = "Harbor Equipment Finance"
form = "1099-NEC"
[[events]]
date = "2026-05-25"
description = "Card bill paid from the bank"
payee = "Harbor Card Services"
lines = [
{ account = "2050", side = "debit", amount = "1200.00" },
{ account = "1000", side = "credit", amount = "1200.00" },
]
[[events]]
date = "2026-06-01"
description = "Loan principal"
payee = "Harbor Equipment Finance"
lines = [
{ account = "2500", side = "debit", amount = "3000.00" },
{ account = "1000", side = "credit", amount = "3000.00" },
]
# By hand: the bill: +1,200.00 out of the bank, −1,200.00 into the card's
# account: nets to 0.00 in every bucket. The loan: +3,000.00 out of the
# bank, −3,000.00 into the loan (a financing account): 0.00.
[[expect]]
query = "vendor_1099"
payee = "Harbor Card Services"
from = "2026-01-01"
to = "2026-12-31"
values = { status = "under_threshold", threshold = "2000.00", paid = "0.00", excluded_card = "0.00", undetermined = "0.00", not_reportable = "0.00" }
[[expect]]
query = "vendor_1099"
payee = "Harbor Equipment Finance"
from = "2026-01-01"
to = "2026-12-31"
values = { status = "under_threshold", threshold = "2000.00", paid = "0.00", excluded_card = "0.00", undetermined = "0.00", not_reportable = "0.00" }
@@ -0,0 +1,108 @@
id = "1099-money-from-a-payee-is-netted-only-as-a-refund"
title = "Money received from a payee lowers its 1099 only when it refunds what was paid"
rule = """
A 1099 reports the payments the payer made to the payee in the calendar
year. Money the payee gives back of a payment (a refund crediting the
expense, or a deposit returned) reduces what was paid. Money received from
the payee for anything else (its payment of the payer's invoice, a sale to
it, an asset disposed of to it, a loan from it) is not a refund of a
payment and is not netted against the payments; it is listed beside them.
"""
status = "CONVENTION"
sources = [
"26 U.S.C. §6041(a) (payments made in the course of the trade or business: docs/spec/sources/irs-1099-thresholds.md)",
"wanderbooks P3 review R6 (2026-10-20): a sale to a payee doesn't lower its 1099",
]
tags = ["1099", "netting", "refund"]
[setup]
currency = "USD"
fiscal_year_start = "01-01"
basis = "cash"
rounding = "half-away-from-zero"
cash_accounts = ["1000"]
[[setup.accounts]]
code = "1000"
name = "Bank"
type = "asset"
[[setup.accounts]]
code = "1200"
name = "Accounts Receivable"
type = "asset"
[[setup.accounts]]
code = "1400"
name = "Deposits"
type = "asset"
[[setup.accounts]]
code = "2600"
name = "Loan payable"
type = "liability"
[[setup.accounts]]
code = "6000"
name = "Contract Labor"
type = "expense"
[[setup.payees]]
name = "Dana Studio"
form = "1099-NEC"
[[events]]
date = "2026-02-01"
description = "Design work"
payee = "Dana Studio"
lines = [
{ account = "6000", side = "debit", amount = "3000.00" },
{ account = "1000", side = "credit", amount = "3000.00" },
]
[[events]]
date = "2026-03-01"
description = "Dana Studio pays the company's invoice"
payee = "Dana Studio"
lines = [
{ account = "1000", side = "debit", amount = "450.00" },
{ account = "1200", side = "credit", amount = "450.00" },
]
[[events]]
date = "2026-04-01"
description = "Dana Studio lends the company money"
payee = "Dana Studio"
lines = [
{ account = "1000", side = "debit", amount = "1000.00" },
{ account = "2600", side = "credit", amount = "1000.00" },
]
[[events]]
date = "2026-05-01"
description = "Deposit for the next project"
payee = "Dana Studio"
lines = [
{ account = "1400", side = "debit", amount = "500.00" },
{ account = "1000", side = "credit", amount = "500.00" },
]
[[events]]
date = "2026-06-01"
description = "Deposit returned: the project was cancelled"
payee = "Dana Studio"
lines = [
{ account = "1000", side = "debit", amount = "500.00" },
{ account = "1400", side = "credit", amount = "500.00" },
]
# By hand: paid 3,000.00 + 500.00 (the deposit, paid when made) − 500.00
# (its return, a refund) = 3,000.00: reportable. The invoice payment
# (450.00) and the loan (1,000.00) are listed, not netted (netting them
# would leave 1,550.00, under the threshold).
[[expect]]
query = "vendor_1099"
payee = "Dana Studio"
from = "2026-01-01"
to = "2026-12-31"
values = { status = "reportable", threshold = "2000.00", paid = "3000.00", excluded_card = "0.00", undetermined = "0.00", not_reportable = "0.00" }
@@ -0,0 +1,92 @@
id = "1099-the-threshold-is-the-years"
title = "The 1099-NEC threshold is the one in force for the year the payments were made"
rule = """
A payer reports payments to a payee aggregating the threshold or more in a
calendar year: $600 for payments made through December 31, 2025, and
$2,000 ("of $2,000 or more") for payments made after it (indexed for
inflation for calendar years after 2026, not yet known: never guessed). The
threshold is met at exactly the amount.
"""
status = "AUTHORITY"
sources = [
"26 U.S.C. §6041(a), (h), §6041A(a)(2) (docs/spec/sources/irs-1099-thresholds.md)",
"Pub. L. 119-21 §70433(a), (f): \"shall apply with respect to payments made after December 31, 2025\" (docs/spec/sources/irs-1099-payment-method.md)",
"Instructions for Forms 1099-MISC and 1099-NEC (Rev. April 2025): $600",
]
tags = ["1099", "threshold"]
[setup]
currency = "USD"
fiscal_year_start = "01-01"
basis = "cash"
rounding = "half-away-from-zero"
cash_accounts = ["1000"]
[[setup.accounts]]
code = "1000"
name = "Bank"
type = "asset"
[[setup.accounts]]
code = "6000"
name = "Contract Labor"
type = "expense"
[[setup.payees]]
name = "Riley Chen"
form = "1099-NEC"
[[setup.payees]]
name = "Cedar Studio"
form = "1099-NEC"
[[events]]
date = "2025-11-01"
description = "Illustration"
payee = "Riley Chen"
lines = [
{ account = "6000", side = "debit", amount = "600.00" },
{ account = "1000", side = "credit", amount = "600.00" },
]
[[events]]
date = "2026-02-01"
description = "Illustration"
payee = "Riley Chen"
lines = [
{ account = "6000", side = "debit", amount = "1999.99" },
{ account = "1000", side = "credit", amount = "1999.99" },
]
[[events]]
date = "2026-02-01"
description = "Photography"
payee = "Cedar Studio"
lines = [
{ account = "6000", side = "debit", amount = "2000.00" },
{ account = "1000", side = "credit", amount = "2000.00" },
]
# By hand: 2025, Riley 600.00 against $600: reportable (exactly the
# threshold). 2026, Riley 1,999.99 against $2,000: under; Cedar 2,000.00:
# reportable.
[[expect]]
query = "vendor_1099"
payee = "Riley Chen"
from = "2025-01-01"
to = "2025-12-31"
values = { status = "reportable", threshold = "600.00", paid = "600.00", excluded_card = "0.00", undetermined = "0.00", not_reportable = "0.00" }
[[expect]]
query = "vendor_1099"
payee = "Riley Chen"
from = "2026-01-01"
to = "2026-12-31"
values = { status = "under_threshold", threshold = "2000.00", paid = "1999.99", excluded_card = "0.00", undetermined = "0.00", not_reportable = "0.00" }
[[expect]]
query = "vendor_1099"
payee = "Cedar Studio"
from = "2026-01-01"
to = "2026-12-31"
values = { status = "reportable", threshold = "2000.00", paid = "2000.00", excluded_card = "0.00", undetermined = "0.00", not_reportable = "0.00" }
@@ -1,7 +1,7 @@
# P3 defect 24 and the card rule (found in review, 2026-10-21): the
# company's cards are the liabilities whose names say "card", so a gift
# card the company sold (deferred revenue) read as money: received when
# sold and again when redeemed. Regression
# P3 defect 24 and the card rule (found in review, 2026-10-21): with no
# business card recorded, the company's cards are the liabilities whose
# names say "card", so a gift card the company sold (deferred revenue)
# read as money: received when sold and again when redeemed. Regression
# test: ledger-core tests/spec_party_totals.rs
# defect24_a_gift_card_sold_is_received_once.
# The shape: bookspec/README.md.
@@ -9,10 +9,12 @@
id = "p3-party-gift-card-is-a-promise"
title = "A gift card the company sold is a promise, not a card it pays with"
rule = """
The company's cards are liability accounts whose names say "card", but not
"gift card": gift cards the company sold are revenue it owes its customers
in service (deferred revenue), a promise. Selling one is money received
from the buyer; redeeming it moves no money and counts nothing.
The company's cards are the business cards its books record as payment
methods; while they record none, the liability accounts whose names say
"card", but not "gift card": gift cards the company sold are revenue it
owes its customers in service (deferred revenue), a promise. Selling one
is money received from the buyer; redeeming it moves no money and counts
nothing.
"""
status = "CONVENTION"
sources = [