P3: dated 1099 decisions, payment methods and the card exception (defects 23, 12, 18, D-40)
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:
1 parent
52555262a8
commit
249e216fc0
9 files changed
+848
-16
No files matched your search
@@ -103,9 +103,9 @@ the side gives the direction.
|
|||||||
- `cash_accounts`, `financing_accounts`, `investing_accounts` (in
|
- `cash_accounts`, `financing_accounts`, `investing_accounts` (in
|
||||||
`[setup]`): arrays of account codes, the statement of cash flows'
|
`[setup]`): arrays of account codes, the statement of cash flows'
|
||||||
account roles (ASC 230-10-45-10 to 45-15). The cash and financing
|
account roles (ASC 230-10-45-10 to 45-15). The cash and financing
|
||||||
accounts are also what a payee is paid from, for `vendor_1099_paid` (a
|
accounts are also what a payee is paid from, for `vendor_1099_paid` and
|
||||||
payment card is neither: its charges go on Form 1099-K; rules.md B-19);
|
`vendor_1099` (a payment card is neither: its charges go on Form
|
||||||
with the cards, what party money is, for
|
1099-K; rules.md B-19); with the cards, what party money is, for
|
||||||
`party_part` and `party_totals` (B-35 item 5: no `cash_accounts`, every
|
`party_part` and `party_totals` (B-35 item 5: no `cash_accounts`, every
|
||||||
asset account but receivables); the cash accounts are what the K-1
|
asset account but receivables); the cash accounts are what the K-1
|
||||||
worksheet reads as money (`k1`) and an IIF file's bank accounts (B-34).
|
worksheet reads as money (`k1`) and an IIF file's bank accounts (B-34).
|
||||||
@@ -138,6 +138,20 @@ the side gives the direction.
|
|||||||
return from the beginning, `form` `"1099-NEC"` or `"1099-MISC"`; each
|
return from the beginning, `form` `"1099-NEC"` or `"1099-MISC"`; each
|
||||||
name once. A payee in `setup.parties` with the `vendor` role is that
|
name once. A payee in `setup.parties` with the `vendor` role is that
|
||||||
party's vendor record; any other is a vendor record of its own.
|
party's vendor record; any other is a vendor record of its own.
|
||||||
|
- `[[setup.status_changes]]` `{ payee, effective, decision, reason_kind?,
|
||||||
|
reason? }`: a payee's 1099 decision from `effective` (`YYYY-MM-DD`) on
|
||||||
|
(rules.md B-19, D-40: an LLC's corporate election, say): `decision`
|
||||||
|
`"1099-NEC"`, `"1099-MISC"`, `"undetermined"` or `"not_reportable"`,
|
||||||
|
the last with `reason_kind` (`corporation`, `tax_exempt`,
|
||||||
|
`united_states`, `state`, `foreign_government`, `foreign_person`,
|
||||||
|
`merchandise`, `employee`, `other`) and the facts in words (`reason`).
|
||||||
|
Each payment takes the decision in force on its date.
|
||||||
|
- `[[setup.instruments]]` `{ label, kind, account, last4?, owner? }`: a
|
||||||
|
payment method (B-19): `kind` `bank`, `business_card`, `member_card`,
|
||||||
|
`member_cash_or_check` or `platform`; `account` the code it pays
|
||||||
|
through; `owner` a party's name (informational). A business card's
|
||||||
|
liability is a card account (B-35 item 5): while none is recorded, a
|
||||||
|
liability whose name says "card", not "gift card", is.
|
||||||
- `payee` on an event: the payee (by name, one of `setup.payees`) the
|
- `payee` on an event: the payee (by name, one of `setup.payees`) the
|
||||||
entry paid. Not on a reversal, which takes its original's, nor on a
|
entry paid. Not on a reversal, which takes its original's, nor on a
|
||||||
close.
|
close.
|
||||||
@@ -148,7 +162,9 @@ the side gives the direction.
|
|||||||
capital lines or income shares for several: B-35). An entry naming a
|
capital lines or income shares for several: B-35). An entry naming a
|
||||||
party with a vendor record is tagged with that payee too; with
|
party with a vendor record is tagged with that payee too; with
|
||||||
`payee` as well, the payee's party is one of the parties.
|
`payee` as well, the payee's party is one of the parties.
|
||||||
Not on a reversal, which takes its original's.
|
- `instrument` on an event: the payment method (a `setup.instruments`
|
||||||
|
label) the entry was paid with. Neither `parties` nor `instrument` on a
|
||||||
|
reversal, which takes its original's.
|
||||||
- `close = { start, to, rounding? }` as an event: closes the period from
|
- `close = { start, to, rounding? }` as an event: closes the period from
|
||||||
`start` through the event's `date` (rules.md B-11, B-13), `to`
|
`start` through the event's `date` (rules.md B-11, B-13), `to`
|
||||||
`"members"` (split by share, in the order listed) or
|
`"members"` (split by share, in the order listed) or
|
||||||
@@ -174,14 +190,22 @@ the side gives the direction.
|
|||||||
the changes made after it), not after the last event and every change
|
the changes made after it), not after the last event and every change
|
||||||
(1 to the number of events; not on a format query).
|
(1 to the number of events; not on a format query).
|
||||||
|
|
||||||
|
Party totals and the 1099 worksheet answer different questions (B-35
|
||||||
|
item 9): a member paying a contractor through the members' financing
|
||||||
|
account is, in party totals, paid to the contractor (money, the
|
||||||
|
members' financing being money) and nothing to the member until the
|
||||||
|
company reimburses them; on the 1099 worksheet it is the company's
|
||||||
|
payment, counted toward the contractor's 1099 unless it was made by card
|
||||||
|
(B-19), and undetermined until its payment method is recorded.
|
||||||
|
|
||||||
### Queries and their values
|
### Queries and their values
|
||||||
|
|
||||||
A query over a period takes `from` and `to`; a query as of a day takes
|
A query over a period takes `from` and `to`; a query as of a day takes
|
||||||
`as_of`; the other is refused. A date left out is resolved by the one
|
`as_of`; the other is refused. A date left out is resolved by the one
|
||||||
rule (rules.md B-30) on `setup.today`: an omitted `to` is today, an
|
rule (rules.md B-30) on `setup.today`: an omitted `to` is today, an
|
||||||
omitted `from` the first day of the fiscal year that holds `to`, an
|
omitted `from` the first day of the fiscal year that holds `to`, an
|
||||||
omitted `as_of` today (`vendor_1099_paid`, `party_totals` and the
|
omitted `as_of` today (`vendor_1099_paid`, `vendor_1099`,
|
||||||
format queries give theirs). A query no crate
|
`party_totals` and the format queries give theirs). A query no crate
|
||||||
answers is refused, never skipped.
|
answers is refused, never skipped.
|
||||||
|
|
||||||
| query | dates | values | checked by |
|
| query | dates | values | checked by |
|
||||||
@@ -194,6 +218,7 @@ answers is refused, never skipped.
|
|||||||
| `members_equity` | `from`, `to` | the statement of changes in members' equity (rules.md B-13): `"<member>.beginning"`, `.contributions`, `.net_income`, `.distributions`, `.other`, `.ending`; the example names the figures it shows | `ledger-core` `tests/bookspec.rs` |
|
| `members_equity` | `from`, `to` | the statement of changes in members' equity (rules.md B-13): `"<member>.beginning"`, `.contributions`, `.net_income`, `.distributions`, `.other`, `.ending`; the example names the figures it shows | `ledger-core` `tests/bookspec.rs` |
|
||||||
| `k1` | `from`, `to` | the K-1 worksheet (B-13; Schedule K-1 Item L): `"<member>.beginning"`, `.contributions_cash`, `.contributions_property`, `.net_income`, `.distributions`, `.other`, `.ending`; the example names the figures it shows (`cash_accounts` required) | `ledger-core` `tests/bookspec.rs` |
|
| `k1` | `from`, `to` | the K-1 worksheet (B-13; Schedule K-1 Item L): `"<member>.beginning"`, `.contributions_cash`, `.contributions_property`, `.net_income`, `.distributions`, `.other`, `.ending`; the example names the figures it shows (`cash_accounts` required) | `ledger-core` `tests/bookspec.rs` |
|
||||||
| `vendor_1099_paid` | `from` (January 1 of `to`'s year), `to` | each payee's payments that count toward its 1099, by name: out of the cash and financing accounts (`cash_accounts` required), a card's or payment network's left out (B-19), every payee listed | `ledger-core` `tests/bookspec.rs` |
|
| `vendor_1099_paid` | `from` (January 1 of `to`'s year), `to` | each payee's payments that count toward its 1099, by name: out of the cash and financing accounts (`cash_accounts` required), a card's or payment network's left out (B-19), every payee listed | `ledger-core` `tests/bookspec.rs` |
|
||||||
|
| `vendor_1099` | `payee`; `from` (January 1 of `to`'s year), `to` | one payee's line of the 1099 worksheet (B-19): `status` (`reportable`, `under_threshold`, `not_reportable` or `undetermined`), `threshold`, `paid` (counts toward its 1099), `excluded_card` (a card's or payment network's: Form 1099-K), `undetermined` (through a financing account, its payment method not recorded), `not_reportable` (paid while decided not reportable), every one given | `ledger-core` `tests/bookspec.rs` |
|
||||||
| `party_part` | `entry = N`, `party`, no dates | entry N's part for the party (B-35): `resolved`, signed as a line on the party's own account would be (paid or given positive, received negative), the entry's `direction` (`paid`, `received` or `neither`), and what of it moved as money (`cash`) and as property (`in_kind`), every one given | `ledger-core` `tests/bookspec.rs` |
|
| `party_part` | `entry = N`, `party`, no dates | entry N's part for the party (B-35): `resolved`, signed as a line on the party's own account would be (paid or given positive, received negative), the entry's `direction` (`paid`, `received` or `neither`), and what of it moved as money (`cash`) and as property (`in_kind`), every one given | `ledger-core` `tests/bookspec.rs` |
|
||||||
| `party_totals` | `party`, `basis` (`cash` or `all`), `from`, `to` | what was `paid` to the party and `received` from it over the period (B-35 item 4: basis `cash` money, `all` money and property in kind; each entry on its first original's side), both given | `ledger-core` `tests/bookspec.rs` |
|
| `party_totals` | `party`, `basis` (`cash` or `all`), `from`, `to` | what was `paid` to the party and `received` from it over the period (B-35 item 4: basis `cash` money, `all` money and property in kind; each entry on its first original's side), both given | `ledger-core` `tests/bookspec.rs` |
|
||||||
| `party_tin_last4` | `party`, no dates | `tin_last4`: the party's TIN facts' last four, else its W-9's, `""` for none (B-26) | `ledger-core` `tests/bookspec.rs` |
|
| `party_tin_last4` | `party`, no dates | `tin_last4`: the party's TIN facts' last four, else its W-9's, `""` for none (B-26) | `ledger-core` `tests/bookspec.rs` |
|
||||||
@@ -208,8 +233,8 @@ answers is refused, never skipped.
|
|||||||
A figure query is a table (`[expect.values]`, or `values = { ... }`); a
|
A figure query is a table (`[expect.values]`, or `values = { ... }`); a
|
||||||
format query, and `uncategorized_accounts`, an array (`values = [ ...
|
format query, and `uncategorized_accounts`, an array (`values = [ ...
|
||||||
]`). `period`, `day` and `calendar_year` give dates and a year,
|
]`). `period`, `day` and `calendar_year` give dates and a year,
|
||||||
`account_names` names, `party_part`'s `direction` and
|
`account_names` names, `party_part`'s `direction`, `vendor_1099`'s
|
||||||
`party_tin_last4` words, not figures.
|
`status` and `party_tin_last4` words, not figures.
|
||||||
|
|
||||||
A command is tried on a copy of the books, as the books' own command
|
A command is tried on a copy of the books, as the books' own command
|
||||||
does it, and changes nothing checked after it. It shows no values: it is
|
does it, and changes nothing checked after it. It shows no values: it is
|
||||||
|
|||||||
@@ -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
|
# P3 defect 24 and the card rule (found in review, 2026-10-21): with no
|
||||||
# company's cards are the liabilities whose names say "card", so a gift
|
# business card recorded, the company's cards are the liabilities whose
|
||||||
# card the company sold (deferred revenue) read as money: received when
|
# names say "card", so a gift card the company sold (deferred revenue)
|
||||||
# sold and again when redeemed. Regression
|
# read as money: received when sold and again when redeemed. Regression
|
||||||
# test: ledger-core tests/spec_party_totals.rs
|
# test: ledger-core tests/spec_party_totals.rs
|
||||||
# defect24_a_gift_card_sold_is_received_once.
|
# defect24_a_gift_card_sold_is_received_once.
|
||||||
# The shape: bookspec/README.md.
|
# The shape: bookspec/README.md.
|
||||||
@@ -9,10 +9,12 @@
|
|||||||
id = "p3-party-gift-card-is-a-promise"
|
id = "p3-party-gift-card-is-a-promise"
|
||||||
title = "A gift card the company sold is a promise, not a card it pays with"
|
title = "A gift card the company sold is a promise, not a card it pays with"
|
||||||
rule = """
|
rule = """
|
||||||
The company's cards are liability accounts whose names say "card", but not
|
The company's cards are the business cards its books record as payment
|
||||||
"gift card": gift cards the company sold are revenue it owes its customers
|
methods; while they record none, the liability accounts whose names say
|
||||||
in service (deferred revenue), a promise. Selling one is money received
|
"card", but not "gift card": gift cards the company sold are revenue it
|
||||||
from the buyer; redeeming it moves no money and counts nothing.
|
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"
|
status = "CONVENTION"
|
||||||
sources = [
|
sources = [
|
||||||
|
|||||||
Reference in new issue
Block a user