---
id: CAP-ACC-TRX-006
title: Record receipts collected outside Rhythm
feature: FEAT-ACC-TRX-03
product_area: accounting
module: transactions
revision: 1
status: draft
product_intent: proposed
implementation_evidence: observed
supersedes:
  - CAP-ACC-PAY-001
  - CAP-ACC-PAY-003
  - CAP-ACC-PAY-024
source_sha:
  services-accounting: f47cb263875bbc0c5640fba7dae6785ec32695f8
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
intent_sources:
  - 'services-accounting:docs/milestones/plans/ACCT-M2-plan.md#D4'
  - 'services-accounting:docs/milestones/plans/ACCT-M2-plan.md#D5'
  - 'services-accounting:docs/milestones/plans/ACCT-M2-plan.md#D6'
  - 'services-accounting:docs/milestones/plans/ACCT-M2-plan.md#D12'
  - 'services-accounting:docs/architecture/accounting-2.0/02-decisions.md#A-9'
  - 'services-accounting:docs/architecture/accounting-2.0/02-decisions.md#D-01'
purpose: 'Staff record checks, cash and transfers as identifiable customer money.'
outcomes:
  - 'Staff record checks, cash and transfers as identifiable customer money.'
  - >-
    Invalid account, currency, period or batch choices prevent recording. The receipt’s core financial
    identity remains protected afterward.
concepts:
  - CON-ACC-TRX-003
  - CON-ACC-TRX-006
actors:
  - ACT-ACC-012
  - ACT-ACC-021
surfaces:
  - console
  - api
permissions:
  - key: accounting.payments.create
    where_checked: api
    scope: tenant
  - key: accounting.payments.read
    where_checked: api
    scope: tenant
rules:
  - id: BR-CAP-ACC-TRX-006-01
    proved_by: [ATS-ACC-TRX-006-01, TST-ACC-TRX-012, TST-ACC-TRX-081]
    statement: Received money must be positive and denominated in a currency supported by its business unit.
    kind: validation
    enforced_at:
      - api
      - service
      - database
    must_prove: true
    provenance: test
    source: >-
      services-accounting:modules/transactions/tests/integration/services/payments/receive-offline.integration.spec.js#it
      refuses an amount in another currency (currency_mismatch)
    origin: none
    note: >-
      The cited build recommendation does not establish Product approval; the authority gap remains open in
      FND-ACC-TRX-035.
  - id: BR-CAP-ACC-TRX-006-02
    proved_by: [ATS-ACC-TRX-006-02, TST-ACC-TRX-078]
    statement: >-
      A method must exist, be active and support the selected channel; a required reference applies to direct
      method selection except imports, while legacy aliases retain reference-free entry.
    kind: validation
    enforced_at:
      - service
    must_prove: true
    provenance: observed
    source: >-
      services-accounting:modules/transactions/services/payments/payment-method-rules.ts:missingReferenceRefusal
    origin: 'services-accounting:docs/architecture/accounting-2.0/02-decisions.md#D-01'
  - id: BR-CAP-ACC-TRX-006-03
    proved_by: []
    statement: >-
      During compatibility support, retired method values map to configured methods, and conflicting direct
      and alias selections are rejected.
    kind: policy
    enforced_at:
      - service
    must_prove: false
    provenance: test
    source: >-
      services-accounting:modules/transactions/tests/integration/services/payments/payment-methods.integration.spec.js#it
      records a payment on the retired check value as the paper check method
    origin: 'services-accounting:docs/architecture/accounting-2.0/02-decisions.md#D-01'
  - id: BR-CAP-ACC-TRX-006-04
    proved_by: [ATS-ACC-TRX-006-03, TST-ACC-TRX-081]
    statement: Offline receipts require a bank account in the receipt’s unit and currency.
    kind: validation
    enforced_at:
      - api
      - service
    must_prove: true
    provenance: test
    source: >-
      services-accounting:modules/transactions/tests/integration/services/payments/receive-offline.integration.spec.js#it
      refuses a bank account of another unit (cash_account_mismatch)
    origin: none
    note: >-
      The cited build recommendation does not establish Product approval; the authority gap remains open in
      FND-ACC-TRX-035.
  - id: BR-CAP-ACC-TRX-006-05
    proved_by: [ATS-ACC-TRX-006-04, TST-ACC-TRX-077, TST-ACC-TRX-081]
    statement: >-
      A receipt requires an eligible explicit batch or an assignment-rule selection; failure to find either
      records nothing.
    kind: validation
    enforced_at:
      - service
      - database
    must_prove: true
    provenance: test
    source: >-
      services-accounting:modules/transactions/tests/integration/services/payments/receive-offline.integration.spec.js#it
      refuses a payment naming no batch in a unit with no batch assignment rule (batch_required), writing
      nothing
    origin: none
    note: >-
      The cited build recommendation does not establish Product approval; the authority gap remains open in
      FND-ACC-TRX-035.
  - id: BR-CAP-ACC-TRX-006-06
    proved_by: [ATS-ACC-TRX-006-05, TST-ACC-TRX-081]
    statement: >-
      Offline receipts succeed immediately, default to today and use an accounting date covered by an open
      fiscal period.
    kind: validation
    enforced_at:
      - service
    must_prove: true
    provenance: test
    source: >-
      services-accounting:modules/transactions/tests/integration/services/payments/receive-offline.integration.spec.js#it
      refuses a date in no open period (period_not_open)
    origin: none
    note: >-
      The cited build recommendation does not establish Product approval; the authority gap remains open in
      FND-ACC-TRX-035.
  - id: BR-CAP-ACC-TRX-006-07
    proved_by: [ATS-ACC-TRX-006-06, TST-ACC-TRX-081]
    statement: The payment sequence begins at one million and allows unused numbers.
    kind: policy
    enforced_at:
      - service
      - database
    must_prove: true
    provenance: test
    source: >-
      services-accounting:modules/transactions/tests/integration/services/payments/receive-offline.integration.spec.js#it
      numbers the tenant’s first payment 1,000,000, succeeded, in the bank account and the unit’s batch
    origin: none
    note: >-
      The cited build recommendation does not establish Product approval; the authority gap remains open in
      FND-ACC-TRX-035.
  - id: BR-CAP-ACC-TRX-006-08
    proved_by: [ATS-ACC-TRX-006-07, ATS-ACC-TRX-006-10, ATS-ACC-TRX-008-09, ATS-ACC-TRX-011-10, TST-ACC-TRX-081, TST-ACC-TRX-239]
    statement: >-
      Unallocated value remains on the receipt and reduces the customer’s net debt until someone explicitly
      turns it into credit.
    kind: calculation
    enforced_at:
      - service
      - database
    must_prove: true
    provenance: test
    source: >-
      services-accounting:modules/transactions/tests/integration/services/payments/receive-offline.integration.spec.js#it
      writes the payment item’s facts: minus the whole amount, then plus each allocation, summing to minus the
      unapplied money
    origin: 'services-accounting:docs/architecture/accounting-2.0/02-decisions.md#A-9'
  - id: BR-CAP-ACC-TRX-006-09
    proved_by: [ATS-ACC-TRX-006-08, TST-ACC-TRX-079]
    statement: >-
      An offline receipt may identify a different payer by CRM identity or name; that write-once attribution
      does not expand the eligible invoice population.
    kind: policy
    enforced_at:
      - service
      - database
    must_prove: true
    provenance: test
    source: >-
      services-accounting:modules/transactions/tests/integration/services/payments/payment-payer.integration.spec.js#it
      writes the payer once: the write-once trigger refuses a change (RHF01)
    origin: none
    note: >-
      The cited build recommendation does not establish Product approval; the authority gap remains open in
      FND-ACC-TRX-035.
  - id: BR-CAP-ACC-TRX-006-10
    proved_by: [ATS-ACC-TRX-006-09, ATS-ACC-TRX-006-10, ATS-ACC-TRX-011-10, TST-ACC-TRX-078]
    statement: 'Recorded method, behavior, amount, customer and cash destination cannot be changed.'
    kind: invariant
    enforced_at:
      - database
    must_prove: true
    provenance: test
    source: >-
      services-accounting:modules/transactions/tests/integration/services/payments/payment-methods.integration.spec.js#it
      refuses any other writer a change of a payment’s method (the write-once trigger, RHF01)
    origin: 'services-accounting:docs/architecture/accounting-2.0/02-decisions.md#A-7'
  - id: BR-CAP-ACC-TRX-006-11
    proved_by: []
    statement: >-
      The payment form prevents mixed-currency invoice selection and filters bank choices to the payment
      currency.
    kind: validation
    enforced_at:
      - console
    must_prove: false
    provenance: observed
    source: 'react-console:components/accounting/payments/settle-currency.ts:MIXED_CURRENCY_MESSAGE'
    origin: none
    note: >-
      The cited build recommendation does not establish Product approval; the authority gap remains open in
      FND-ACC-TRX-035.
scenarios:
  - id: SC-CAP-ACC-TRX-006-01
    given: A member’s check arrives without allocation instructions.
    when: Record the entire receipt without invoice targets.
    then: The numbered successful payment belongs to the unit’s batch with its full value available.
    provenance: test
    source: 'react-console:acceptance/accounting/playwright/journeys/payments/ACT-ACC-0300.spec.ts#ACT-ACC-0300'
  - id: SC-CAP-ACC-TRX-006-02
    given: An employer supplies a check for the member’s dues.
    when: Record the member as customer and the employer as payer.
    then: >-
      Payer attribution identifies the employer and financial standing separately counts the third-party
      money.
    provenance: test
    source: >-
      services-accounting:modules/transactions/tests/integration/services/payments/payment-payer.integration.spec.js#it
      counts the unapplied money another party sent in Ada’s summary: Metro’s and the lockbox’s, not her own
edge_cases: []
depends_on: []
related:
  - CAP-ACC-TRX-008
  - CAP-ACC-TRX-009
  - CAP-ACC-TRX-013
  - CAP-ACC-TRX-015
journeys:
  - JNY-ACC-TRX-002
  - JNY-ACC-TRX-004
evidence:
  - >-
    services-accounting at f47cb263875bbc0c5640fba7dae6785ec32695f8:
    modules/transactions/aws/api/payments.routes.ts (receivePayment, getPayment, listPayments),
    payments.schemas.ts; services/payments/payment-receive.ts, payment-method-rules.ts, payment-reads.ts,
    payment-answers.ts; services/persistence/payments.ts, payment-events.ts; db/payments.table.ts,
    payment-events.table.ts, payment-vocabularies.ts; docs/accounting/payments.md;
    docs/milestones/plans/ACCT-M2-plan.md; tests e2e/payments.e2e.spec.js;
    integration/services/payments/receive-offline, payment-methods, payment-payer, payment-batch-facts.
  - >-
    react-console at baf6dae382d6f41dce976c7f848667ccc37e076f:
    app/(console)/console/[tenantId]/accounting/payments/**;
    components/accounting/payments/receive-payment-screen.tsx, settle-currency.ts, payment-detail-screen.tsx;
    journeys ACT-ACC-0300, 0339, 0352; inventory rules RUL-ACC-PAY-001 to 004, 007, 058, 070, 071.
controls: [TC-IAM-001, TC-IAM-002, TC-IAM-004, TC-IAM-005, 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-002, TC-LOG-003, TC-LOG-004, TC-PI-001, TC-PI-003, TC-PI-005, TC-PRV-001, TC-PRV-002]
exercised_by: [FAS-ACC-TRX-03-01, FAS-ACC-TRX-03-03, FAS-ACC-TRX-03-04]
suites: [TST-ACC-TRX-012, TST-ACC-TRX-077, TST-ACC-TRX-078, TST-ACC-TRX-079, TST-ACC-TRX-081, TST-ACC-TRX-239]
---

# Record receipts collected outside Rhythm

## Purpose

Staff record checks, cash and transfers as identifiable customer money.

## How It Works

Staff enter the customer, amount, method and financial destination for money already received. Accounting checks the selected method and applicable reference requirement. The receipt receives its number and eligible batch within the successful operation. Staff can apply it immediately or leave value available. A different sender can be retained as payer attribution. Invalid account, currency, period or batch choices prevent recording. The receipt’s core financial identity remains protected afterward.

## Relationships

- Allocate and relocate received money supplies or continues the related financial work.
- Complete invoice settlement with credit and money supplies or continues the related financial work.
- Record receipts that were voided or returned supplies or continues the related financial work.
- Keep transaction batches and details correct supplies or continues the related financial work.
