Skip to content

CAP-ACC-REC-010Document processor deductions and corrections

Markdown

CAP-ACC-REC-010

Document processor deductions and corrections

Markdown
  • DocumentDraft
  • Product intentConfirmed
  • ImplementationObserved

KindCapabilityProduct areaAccountingModuleReconciliationRevision2

Read atservices-accounting f47cb263react-console baf6dae3

The Formal Contract

The narrative above explains; the sections below are authoritative — the rules, scenarios and tests this document binds.

Outcomes
Processor adjustments retain their supporting documentation.Fee-only and zero bank movements remain explainable.
Surfaces
consoleapi
Intent sources
services-accounting:docs/milestones/plans/ACCT-M8-plan.md#D10 (§2: hand-entered fees, reserves and corrections with their accounts)services-accounting:docs/milestones/plans/ACCT-M8-plan.md#D6 (architecture §3.4 U4, U5, U6, U9)services-accounting:docs/milestones/plans/ACCT-M8-plan.md#D10 (§4: the architecture §6 invariants hold; INV-18, INV-19)

Controls

25 controls apply, from the corpus control catalogue.

TC-IAM-001 TC-IAM-002 TC-IAM-004 TC-IAM-005 TC-IAM-006 TC-AZ-001 TC-AZ-002 TC-AZ-003 TC-AZ-004 TC-AZ-006 TC-TEN-001 TC-TEN-002 TC-TEN-003 TC-TEN-004 TC-DAT-001 TC-DAT-002 TC-DAT-003 TC-LOG-004 TC-LOG-005 TC-PI-001 TC-PI-002 TC-PI-003 TC-PI-005 TC-PRV-001 TC-PRV-002

Permissions

KeyChecked atScope
accounting.reconciliation-batches.updateapitenant
accounting.reconciliation-batches.updateconsoletenant

Business Rules

11 rules, 10 to be proved before approval. A rule's product intent is derived from its origin: 11 confirmed by a product decision, the rest inheriting this capability's confirmed.

IdRuleKindEnforced atProvenance
01must prove
Confirmed
Manual entries are restricted to fees, fee refunds, reserve holds or releases and adjustments with the required sign, reporting invalid kind, sign and documentation together.
origin: services-accounting:docs/milestones/plans/ACCT-M8-plan.md#D6 (architecture §3.4 U4, U6)
validationapi, service, databasetest
02must prove
Confirmed
Each manual entry needs a note or evidence at commit, and its final evidence cannot be removed without a note remaining.
origin: services-accounting:docs/milestones/plans/ACCT-M8-plan.md#D10 (§4: the architecture §6 invariants hold; INV-18)
validationdatabasetest
03must prove
Confirmed
An adjustment selects a ledger account in the reconciliation’s business unit, while fee and reserve recognition uses that unit’s default accounts at finalization.
origin: services-accounting:docs/milestones/plans/ACCT-M8-plan.md#D6 (architecture §3.4 U5: “other” also names a GL account)
validationservice, databasetest
04must prove
Confirmed
Adding a manual entry creates a settlement item already claimed by its reconciliation and updates totals and version.
lifecycleservicetest
05must prove
Confirmed
A manual entry’s occurrence is local midnight on the earliest linked payout’s accounting day.
calculationserviceobserved
06must prove
Confirmed
Manual addition replays the first entry for an identical request key and body, and rejects a different body under that key.
origin: services-accounting:docs/milestones/plans/ACCT-M8-plan.md#D10 (§2: idempotency of every money command)
validationapi, servicetest
07must prove
Confirmed
Removal withdraws the manual item, identifies its reconciliation, updates current totals and version but retains the lifetime manual-entry count; repeating removal finds no active entry.
lifecycleservicetest
08must prove
Confirmed
The lifetime manual-entry limit is two hundred per reconciliation.
origin: services-accounting:docs/milestones/plans/ACCT-M8-plan.md#D10 (§4: the architecture §6 invariants hold; INV-19)
invariantdatabasetest
09must prove
Confirmed
Manual entries can explain a negative fee-only deposit or help reconcile a deposit whose net amount is zero.
calculationservicetest
10
Confirmed
The adjustment dialog leaves the amount for staff to enter, explains its sign, requests kind and note plus an adjustment account when needed, and has no working evidence upload.
origin: services-accounting:docs/milestones/plans/ACCT-M8-plan.md#D6 (architecture §3.4 U5, U6)
policyconsoleobserved
11must prove
Confirmed
Reconciliation update permission is required to add or remove manual entries.
permissionapiobserved

Scenarios

IdGivenWhenThenProvenance
01Ten thousand dollars of claimed money explains a $9,725.00 deposit before deductions.Add the documented two-hundred-twenty-five-dollar fee and fifty-dollar reserve hold.The open explanation becomes Balanced at zero difference.test
services-accounting:modules/reconciliation/tests/e2e/reconciliation-scenario.e2e.spec.js#step 6: balances to a difference of 0 with the fee and the reserve hold, and shows Balanced
02The processor debits fifteen dollars for fees alone.Enter the negative-fifteen-dollar fee.The explanation balances for approval.test
services-accounting:modules/reconciliation/tests/e2e/reconciliation-scenario.e2e.spec.js#step 14: reconciles and finalizes a negative payout of −1500 made of fees only

Edge Cases

IdGivenWhenThenProvenance
03A three-hundred-fifty-dollar capture is entirely consumed by its fee, producing a zero payout.Claim the capture and add its negative fee.Approval recognizes the fee without a bank transfer.test
services-accounting:modules/reconciliation/tests/e2e/reconciliation-scenario.e2e.spec.js#step 14: reconciles and finalizes a zero payout whose fee took the whole capture

The Markdown files under specs/ in rhythmsoftware/rhythm-v2-docs are the canonical source of truth. This reader is a generated, read-only projection of them.