---
id: ATS-ACC-TRX-006
scope: CAP-ACC-TRX-006
product_area: accounting
module: transactions
revision: 1
status: proposed
approved_by: null
approved_at: null
source_sha:
  services-accounting: f47cb263875bbc0c5640fba7dae6785ec32695f8
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
scenarios:
  - id: ATS-ACC-TRX-006-01
    title: Invalid money cannot become a receipt
    level: api
    proves:
      - BR-CAP-ACC-TRX-006-01
      - INV-DOM-ACC-TRX-003-01
    preconditions: The unit supports USD.
    steps:
      - do: Submit EUR value and noninteger minor-unit value.
        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)
    expected: Both requests fail before recording payment.
    negative: true
    data_needs: A USD financial context.
    bound_to:
      - >-
        services-accounting:modules/transactions/tests/integration/services/payments/receive-offline.integration.spec.js#it
        refuses an amount in another currency (currency_mismatch)
      - >-
        services-accounting:modules/transactions/tests/e2e/payments.e2e.spec.js#it
        refuses a float amount (400)
      - TST-ACC-TRX-081
      - TST-ACC-TRX-012
    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)
    category: boundary
    test_bindings:
      - file: >-
          services-accounting:modules/transactions/tests/integration/services/payments/receive-offline.integration.spec.js
        assertion: it refuses an amount in another currency (currency_mismatch)
        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)
      - file: >-
          services-accounting:modules/transactions/tests/e2e/payments.e2e.spec.js
        assertion: it refuses a float amount (400)
        provenance: test
        source: >-
          services-accounting:modules/transactions/tests/e2e/payments.e2e.spec.js#it
          refuses a float amount (400)
    binding_review: []
  - id: ATS-ACC-TRX-006-02
    title: Unavailable methods prevent receipt entry
    level: api
    proves:
      - BR-CAP-ACC-TRX-006-02
    preconditions: >-
      Unknown, inactive, channel-excluded and reference-required methods are
      available as cases.
    steps:
      - do: Enter receipts against each invalid choice.
        provenance: test
        source: >-
          services-accounting:modules/transactions/tests/integration/services/payments/payment-methods.integration.spec.js#it
          refuses a paper check named by id without its number, 400
          payment_reference_required, writing nothing
    expected: Each method refusal leaves payment data untouched.
    negative: true
    data_needs: Configured method variants.
    bound_to:
      - >-
        services-accounting:modules/transactions/tests/integration/services/payments/payment-methods.integration.spec.js#it
        refuses a method the tenant does not have, 404 payment_method_not_found,
        writing nothing
      - >-
        services-accounting:modules/transactions/tests/integration/services/payments/payment-methods.integration.spec.js#it
        refuses an inactive method, 409 payment_method_inactive, writing nothing
      - >-
        services-accounting:modules/transactions/tests/integration/services/payments/payment-methods.integration.spec.js#it
        refuses an offline method in the portal, 409 payment_method_unavailable,
        writing nothing
      - >-
        services-accounting:modules/transactions/tests/integration/services/payments/payment-methods.integration.spec.js#it
        refuses a paper check named by id without its number, 400
        payment_reference_required, writing nothing
      - TST-ACC-TRX-078
    provenance: test
    source: >-
      services-accounting:modules/transactions/tests/integration/services/payments/payment-methods.integration.spec.js#it
      refuses a paper check named by id without its number, 400
      payment_reference_required, writing nothing
    category: validation
    test_bindings:
      - file: >-
          services-accounting:modules/transactions/tests/integration/services/payments/payment-methods.integration.spec.js
        assertion: >-
          it refuses a method the tenant does not have, 404
          payment_method_not_found, writing nothing
        provenance: test
        source: >-
          services-accounting:modules/transactions/tests/integration/services/payments/payment-methods.integration.spec.js#it
          refuses a method the tenant does not have, 404
          payment_method_not_found, writing nothing
      - file: >-
          services-accounting:modules/transactions/tests/integration/services/payments/payment-methods.integration.spec.js
        assertion: >-
          it refuses an inactive method, 409 payment_method_inactive, writing
          nothing
        provenance: test
        source: >-
          services-accounting:modules/transactions/tests/integration/services/payments/payment-methods.integration.spec.js#it
          refuses an inactive method, 409 payment_method_inactive, writing
          nothing
      - file: >-
          services-accounting:modules/transactions/tests/integration/services/payments/payment-methods.integration.spec.js
        assertion: >-
          it refuses an offline method in the portal, 409
          payment_method_unavailable, writing nothing
        provenance: test
        source: >-
          services-accounting:modules/transactions/tests/integration/services/payments/payment-methods.integration.spec.js#it
          refuses an offline method in the portal, 409
          payment_method_unavailable, writing nothing
      - file: >-
          services-accounting:modules/transactions/tests/integration/services/payments/payment-methods.integration.spec.js
        assertion: >-
          it refuses a paper check named by id without its number, 400
          payment_reference_required, writing nothing
        provenance: test
        source: >-
          services-accounting:modules/transactions/tests/integration/services/payments/payment-methods.integration.spec.js#it
          refuses a paper check named by id without its number, 400
          payment_reference_required, writing nothing
    binding_review: []
  - id: ATS-ACC-TRX-006-03
    title: Offline destination matches the receipt context
    level: api
    proves:
      - BR-CAP-ACC-TRX-006-04
      - INV-DOM-ACC-TRX-003-02
    preconditions: Accounts belong to another unit or currency.
    steps:
      - do: 'Select each for a check, then omit an account.'
        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)
    expected: All choices fail the cash-destination check.
    negative: true
    data_needs: Bank destinations in multiple contexts.
    bound_to:
      - >-
        services-accounting:modules/transactions/tests/integration/services/payments/receive-offline.integration.spec.js#it
        refuses a bank account of another unit (cash_account_mismatch)
      - >-
        services-accounting:modules/transactions/tests/integration/services/payments/receive-offline.integration.spec.js#it
        refuses a bank account in another currency (cash_account_mismatch)
      - >-
        services-accounting:modules/transactions/tests/integration/services/payments/receive-offline.integration.spec.js#it
        refuses a check with no bank account (cash_account_mismatch)
      - TST-ACC-TRX-081
    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)
    category: validation
    test_bindings:
      - file: >-
          services-accounting:modules/transactions/tests/integration/services/payments/receive-offline.integration.spec.js
        assertion: it refuses a bank account of another unit (cash_account_mismatch)
        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)
      - file: >-
          services-accounting:modules/transactions/tests/integration/services/payments/receive-offline.integration.spec.js
        assertion: it refuses a bank account in another currency (cash_account_mismatch)
        provenance: test
        source: >-
          services-accounting:modules/transactions/tests/integration/services/payments/receive-offline.integration.spec.js#it
          refuses a bank account in another currency (cash_account_mismatch)
      - file: >-
          services-accounting:modules/transactions/tests/integration/services/payments/receive-offline.integration.spec.js
        assertion: it refuses a check with no bank account (cash_account_mismatch)
        provenance: test
        source: >-
          services-accounting:modules/transactions/tests/integration/services/payments/receive-offline.integration.spec.js#it
          refuses a check with no bank account (cash_account_mismatch)
    binding_review: []
  - id: ATS-ACC-TRX-006-04
    title: Receipt batching follows explicit or assigned choice
    level: api
    proves:
      - BR-CAP-ACC-TRX-006-05
    preconditions: One unit has assignment rules and another has none.
    steps:
      - do: >-
          Omit batch selection in both, then select an eligible batch
          explicitly.
        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
    expected: >-
      Assignment chooses the active batch, absence fails, and explicit selection
      is retained.
    negative: false
    data_needs: Recurring assignment configuration.
    bound_to:
      - >-
        services-accounting:modules/transactions/tests/integration/services/payments/payment-batch-facts.integration.spec.js#it
        puts a check that names no batch in the rule’s active batch, and a card
        in the default’s
      - >-
        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
      - >-
        services-accounting:modules/transactions/tests/integration/services/payments/payment-batch-facts.integration.spec.js#it
        keeps the batch a payment names, rules or not
      - TST-ACC-TRX-077
      - TST-ACC-TRX-081
    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
    category: rule
    test_bindings:
      - file: >-
          services-accounting:modules/transactions/tests/integration/services/payments/payment-batch-facts.integration.spec.js
        assertion: >-
          it puts a check that names no batch in the rule’s active batch, and a
          card in the default’s
        provenance: test
        source: >-
          services-accounting:modules/transactions/tests/integration/services/payments/payment-batch-facts.integration.spec.js#it
          puts a check that names no batch in the rule’s active batch, and a
          card in the default’s
      - file: >-
          services-accounting:modules/transactions/tests/integration/services/payments/receive-offline.integration.spec.js
        assertion: >-
          it refuses a payment naming no batch in a unit with no batch
          assignment rule (batch_required), writing nothing
        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
      - file: >-
          services-accounting:modules/transactions/tests/integration/services/payments/payment-batch-facts.integration.spec.js
        assertion: 'it keeps the batch a payment names, rules or not'
        provenance: test
        source: >-
          services-accounting:modules/transactions/tests/integration/services/payments/payment-batch-facts.integration.spec.js#it
          keeps the batch a payment names, rules or not
    binding_review: []
  - id: ATS-ACC-TRX-006-05
    title: Uncovered accounting dates prevent receipt entry
    level: api
    proves:
      - BR-CAP-ACC-TRX-006-06
    preconditions: The chosen date has no open period.
    steps:
      - do: Record the check using that date.
        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)
    expected: Period eligibility refuses the payment.
    negative: true
    data_needs: A fiscal calendar lacking the chosen date.
    bound_to:
      - >-
        services-accounting:modules/transactions/tests/integration/services/payments/receive-offline.integration.spec.js#it
        refuses a date in no open period (period_not_open)
      - TST-ACC-TRX-081
    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)
    category: failure
    test_bindings:
      - file: >-
          services-accounting:modules/transactions/tests/integration/services/payments/receive-offline.integration.spec.js
        assertion: it refuses a date in no open period (period_not_open)
        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)
    binding_review: []
  - id: ATS-ACC-TRX-006-06
    title: Receipt numbering advances in its own sequence
    level: api
    proves:
      - BR-CAP-ACC-TRX-006-07
      - INV-DOM-ACC-TRX-003-03
    preconditions: No receipt numbers have been allocated.
    steps:
      - do: Record two successful checks.
        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
    expected: References advance from one million to its next number.
    negative: false
    data_needs: A newly provisioned workspace.
    bound_to:
      - >-
        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
      - >-
        services-accounting:modules/transactions/tests/integration/services/payments/receive-offline.integration.spec.js#it
        numbers the next payment 1,000,001
      - TST-ACC-TRX-081
    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
    category: rule
    test_bindings:
      - file: >-
          services-accounting:modules/transactions/tests/integration/services/payments/receive-offline.integration.spec.js
        assertion: >-
          it numbers the tenant’s first payment 1,000,000, succeeded, in the
          bank account and the unit’s batch
        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
      - file: >-
          services-accounting:modules/transactions/tests/integration/services/payments/receive-offline.integration.spec.js
        assertion: 'it numbers the next payment 1,000,001'
        provenance: test
        source: >-
          services-accounting:modules/transactions/tests/integration/services/payments/receive-offline.integration.spec.js#it
          numbers the next payment 1,000,001
    binding_review: []
  - id: ATS-ACC-TRX-006-07
    title: Excess receipt value remains held
    level: api
    proves:
      - BR-CAP-ACC-TRX-006-08
    preconditions: 'An invoice owes 1,000.00.'
    steps:
      - do: 'Receive 2,500.00 and settle only the debt.'
        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
    expected: >-
      The remaining 1,500.00 agrees with the negative sum of payment receivable
      facts.
    negative: false
    data_needs: An issued outstanding invoice.
    bound_to:
      - >-
        services-accounting:modules/transactions/tests/integration/services/payments/receive-offline.integration.spec.js#it
        pays the rest of the invoice (1000) and leaves 1500 unapplied
      - >-
        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
      - >-
        react-console:acceptance/accounting/playwright/journeys/payments/ACT-ACC-0300.spec.ts#ACT-ACC-0300
      - TST-ACC-TRX-081
      - TST-ACC-TRX-239
    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
    category: invariant
    test_bindings:
      - file: >-
          services-accounting:modules/transactions/tests/integration/services/payments/receive-offline.integration.spec.js
        assertion: it pays the rest of the invoice (1000) and leaves 1500 unapplied
        provenance: test
        source: >-
          services-accounting:modules/transactions/tests/integration/services/payments/receive-offline.integration.spec.js#it
          pays the rest of the invoice (1000) and leaves 1500 unapplied
      - file: >-
          services-accounting:modules/transactions/tests/integration/services/payments/receive-offline.integration.spec.js
        assertion: >-
          it writes the payment item’s facts: minus the whole amount, then plus
          each allocation, summing to minus the unapplied money
        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
      - file: >-
          react-console:acceptance/accounting/playwright/journeys/payments/ACT-ACC-0300.spec.ts
        assertion: ACT-ACC-0300
        provenance: test
        source: >-
          react-console:acceptance/accounting/playwright/journeys/payments/ACT-ACC-0300.spec.ts#ACT-ACC-0300
    binding_review:
      - binding: >-
          react-console:acceptance/accounting/playwright/journeys/payments/ACT-ACC-0300.spec.ts#ACT-ACC-0300
        completeness: not-verified
        provenance: observed
        source: >-
          react-console:acceptance/accounting/playwright/journeys/payments/ACT-ACC-0300.spec.ts#ACT-ACC-0300
        note: >-
          This citation remains component evidence. A browser request driven
          through an API helper does not establish direct database checks or
          every branch of the combined scenario.
  - id: ATS-ACC-TRX-006-08
    title: Payer attribution is limited and immutable
    level: api
    proves:
      - BR-CAP-ACC-TRX-006-09
    preconditions: An organization can be identified as sender.
    steps:
      - do: >-
          Record CRM and named offline payers, attempt processor payer entry and
          later payer editing.
        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)
    expected: >-
      Offline attribution is retained, processor input fails and later mutation
      is blocked.
    negative: false
    data_needs: An employer organization.
    bound_to:
      - >-
        services-accounting:modules/transactions/tests/integration/services/payments/payment-payer.integration.spec.js#it
        records a CRM payer with CRM’s name as its snapshot
      - >-
        services-accounting:modules/transactions/tests/integration/services/payments/payment-payer.integration.spec.js#it
        records a payer by name alone, trimmed
      - >-
        services-accounting:modules/transactions/tests/integration/services/payments/payment-payer.integration.spec.js#it
        refuses a payer on a card payment, writing no intent: payer_offline_only
      - >-
        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)
      - TST-ACC-TRX-079
    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)
    category: edge
    test_bindings:
      - file: >-
          services-accounting:modules/transactions/tests/integration/services/payments/payment-payer.integration.spec.js
        assertion: it records a CRM payer with CRM’s name as its snapshot
        provenance: test
        source: >-
          services-accounting:modules/transactions/tests/integration/services/payments/payment-payer.integration.spec.js#it
          records a CRM payer with CRM’s name as its snapshot
      - file: >-
          services-accounting:modules/transactions/tests/integration/services/payments/payment-payer.integration.spec.js
        assertion: 'it records a payer by name alone, trimmed'
        provenance: test
        source: >-
          services-accounting:modules/transactions/tests/integration/services/payments/payment-payer.integration.spec.js#it
          records a payer by name alone, trimmed
      - file: >-
          services-accounting:modules/transactions/tests/integration/services/payments/payment-payer.integration.spec.js
        assertion: >-
          it refuses a payer on a card payment, writing no intent:
          payer_offline_only
        provenance: test
        source: >-
          services-accounting:modules/transactions/tests/integration/services/payments/payment-payer.integration.spec.js#it
          refuses a payer on a card payment, writing no intent:
          payer_offline_only
      - file: >-
          services-accounting:modules/transactions/tests/integration/services/payments/payment-payer.integration.spec.js
        assertion: >-
          it writes the payer once: the write-once trigger refuses a change
          (RHF01)
        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)
    binding_review: []
  - id: ATS-ACC-TRX-006-09
    title: Method identity cannot change after recording
    level: unit
    proves:
      - BR-CAP-ACC-TRX-006-10
      - INV-DOM-ACC-TRX-003-04
    preconditions: A payment already retains its method and behavior.
    steps:
      - do: >-
          Try method updates through the application and another database
          writer.
        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)
    expected: Grant restrictions and the write-once constraint prevent either change.
    negative: true
    data_needs: Database writer identities.
    bound_to:
      - >-
        services-accounting:modules/transactions/tests/integration/services/payments/payment-methods.integration.spec.js#it
        gives the application no UPDATE of a payment’s method or behaviour at
        all (42501)
      - >-
        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)
      - TST-ACC-TRX-078
    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)
    category: invariant
    test_bindings:
      - file: >-
          services-accounting:modules/transactions/tests/integration/services/payments/payment-methods.integration.spec.js
        assertion: >-
          it gives the application no UPDATE of a payment’s method or behaviour
          at all (42501)
        provenance: test
        source: >-
          services-accounting:modules/transactions/tests/integration/services/payments/payment-methods.integration.spec.js#it
          gives the application no UPDATE of a payment’s method or behaviour at
          all (42501)
      - file: >-
          services-accounting:modules/transactions/tests/integration/services/payments/payment-methods.integration.spec.js
        assertion: >-
          it refuses any other writer a change of a payment’s method (the
          write-once trigger, RHF01)
        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)
    binding_review: []
  - id: ATS-ACC-TRX-006-10
    title: A recorded receipt survives placement and later return
    category: interaction
    level: api
    proves:
      - BR-CAP-ACC-TRX-006-08
      - BR-CAP-ACC-TRX-006-10
      - BR-CAP-ACC-TRX-008-04
      - BR-CAP-ACC-TRX-008-06
      - BR-CAP-ACC-TRX-009-03
      - BR-CAP-ACC-TRX-009-05
      - BR-CAP-ACC-TRX-013-03
      - BR-CAP-ACC-TRX-013-04
      - BR-CAP-ACC-TRX-015-03
      - BR-CAP-ACC-TRX-015-04
    exercises:
      - CAP-ACC-TRX-006
      - CAP-ACC-TRX-008
      - CAP-ACC-TRX-009
      - CAP-ACC-TRX-013
      - CAP-ACC-TRX-015
    preconditions: >-
      An isolated workspace has eligible customers, products, matching accounts,
      an open period and two open batches. Each branch owns separate financial
      records.
    steps:
      - do: >-
          Receive 100.00 for an 80.00 bill, move the receipt to another open
          batch, reallocate its applied value to an equivalent bill, then void
          an eligible receipt in a separate branch. Complete another bill
          through credit and an offline settlement.
        provenance: proposed
        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;
          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);
          rhythm-v2-docs:specs/accounting/transactions/design/workflows/WF-ACC-TRX-005-record-money-received-by-hand-and-place-it.md#WF-ACC-TRX-005;
          rhythm-v2-docs:specs/accounting/transactions/planning/capabilities/CAP-ACC-TRX-006-record-money-received-by-hand.md#BR-CAP-ACC-TRX-006-08;
          rhythm-v2-docs:specs/accounting/transactions/planning/capabilities/CAP-ACC-TRX-006-record-money-received-by-hand.md#BR-CAP-ACC-TRX-006-10;
          rhythm-v2-docs:specs/accounting/transactions/planning/capabilities/CAP-ACC-TRX-008-put-a-payment-s-money-on-the-right-invoices.md#BR-CAP-ACC-TRX-008-04;
          rhythm-v2-docs:specs/accounting/transactions/planning/capabilities/CAP-ACC-TRX-008-put-a-payment-s-money-on-the-right-invoices.md#BR-CAP-ACC-TRX-008-06;
          rhythm-v2-docs:specs/accounting/transactions/planning/capabilities/CAP-ACC-TRX-009-settle-a-customer-s-invoices-in-one-step.md#BR-CAP-ACC-TRX-009-03;
          rhythm-v2-docs:specs/accounting/transactions/planning/capabilities/CAP-ACC-TRX-009-settle-a-customer-s-invoices-in-one-step.md#BR-CAP-ACC-TRX-009-05;
          rhythm-v2-docs:specs/accounting/transactions/planning/capabilities/CAP-ACC-TRX-013-undo-a-payment-whose-money-did-not-stay.md#BR-CAP-ACC-TRX-013-03;
          rhythm-v2-docs:specs/accounting/transactions/planning/capabilities/CAP-ACC-TRX-013-undo-a-payment-whose-money-did-not-stay.md#BR-CAP-ACC-TRX-013-04;
          rhythm-v2-docs:specs/accounting/transactions/planning/capabilities/CAP-ACC-TRX-015-move-a-transaction-to-another-batch-and-correct-its-details.md#BR-CAP-ACC-TRX-015-03;
          rhythm-v2-docs:specs/accounting/transactions/planning/capabilities/CAP-ACC-TRX-015-move-a-transaction-to-another-batch-and-correct-its-details.md#BR-CAP-ACC-TRX-015-04
    expected: >-
      The moved receipt and its allocations retain their value; relocation
      restores the first bill and pays the second; void restores debt;
      settlement keeps payment and credit application separate.
    negative: false
    data_needs: >-
      Separate command keys, two customers, invoice lines, receipts and credit;
      controlled processor outcomes and a fixed calendar where the branch
      requires them.
    bound_to: []
    provenance: proposed
    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;
      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);
      rhythm-v2-docs:specs/accounting/transactions/design/workflows/WF-ACC-TRX-005-record-money-received-by-hand-and-place-it.md#WF-ACC-TRX-005;
      rhythm-v2-docs:specs/accounting/transactions/planning/capabilities/CAP-ACC-TRX-006-record-money-received-by-hand.md#BR-CAP-ACC-TRX-006-08;
      rhythm-v2-docs:specs/accounting/transactions/planning/capabilities/CAP-ACC-TRX-006-record-money-received-by-hand.md#BR-CAP-ACC-TRX-006-10;
      rhythm-v2-docs:specs/accounting/transactions/planning/capabilities/CAP-ACC-TRX-008-put-a-payment-s-money-on-the-right-invoices.md#BR-CAP-ACC-TRX-008-04;
      rhythm-v2-docs:specs/accounting/transactions/planning/capabilities/CAP-ACC-TRX-008-put-a-payment-s-money-on-the-right-invoices.md#BR-CAP-ACC-TRX-008-06;
      rhythm-v2-docs:specs/accounting/transactions/planning/capabilities/CAP-ACC-TRX-009-settle-a-customer-s-invoices-in-one-step.md#BR-CAP-ACC-TRX-009-03;
      rhythm-v2-docs:specs/accounting/transactions/planning/capabilities/CAP-ACC-TRX-009-settle-a-customer-s-invoices-in-one-step.md#BR-CAP-ACC-TRX-009-05;
      rhythm-v2-docs:specs/accounting/transactions/planning/capabilities/CAP-ACC-TRX-013-undo-a-payment-whose-money-did-not-stay.md#BR-CAP-ACC-TRX-013-03;
      rhythm-v2-docs:specs/accounting/transactions/planning/capabilities/CAP-ACC-TRX-013-undo-a-payment-whose-money-did-not-stay.md#BR-CAP-ACC-TRX-013-04;
      rhythm-v2-docs:specs/accounting/transactions/planning/capabilities/CAP-ACC-TRX-015-move-a-transaction-to-another-batch-and-correct-its-details.md#BR-CAP-ACC-TRX-015-03;
      rhythm-v2-docs:specs/accounting/transactions/planning/capabilities/CAP-ACC-TRX-015-move-a-transaction-to-another-batch-and-correct-its-details.md#BR-CAP-ACC-TRX-015-04
    test_bindings: []
    binding_review: []
evidence:
  - >-
    services-accounting at f47cb263875bbc0c5640fba7dae6785ec32695f8: the test
    files named in bound_to.
  - >-
    react-console at baf6dae382d6f41dce976c7f848667ccc37e076f: the Playwright
    journey ACT-ACC-0300.
  - >-
    rhythm-v2-docs:specs/accounting/transactions/design: related workflows,
    domain invariants and state transitions examined for the back-fill.
coverage:
  rule: covered
  transition: 'gap: FND-ACC-TRX-071'
  validation: covered
  permission: 'gap: FND-ACC-TRX-071'
  edge: covered
  failure: covered
  boundary: covered
  concurrency: 'gap: FND-ACC-TRX-071'
  invariant: covered
  interaction: covered
coverage_notes:
  transition: >-
    No dedicated transition scenario covers the applicable conditions; the
    finding identifies the remaining specification work.
  permission: >-
    No dedicated permission scenario covers the applicable conditions; the
    finding identifies the remaining specification work.
  concurrency: >-
    No dedicated concurrency scenario covers the applicable conditions; the
    finding identifies the remaining specification work.
interaction_coverage:
  - to: CAP-ACC-TRX-008
    scenarios:
      - ATS-ACC-TRX-006-10
    provenance: proposed
    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;
      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);
      rhythm-v2-docs:specs/accounting/transactions/design/workflows/WF-ACC-TRX-005-record-money-received-by-hand-and-place-it.md#WF-ACC-TRX-005;
      rhythm-v2-docs:specs/accounting/transactions/planning/capabilities/CAP-ACC-TRX-006-record-money-received-by-hand.md#BR-CAP-ACC-TRX-006-08;
      rhythm-v2-docs:specs/accounting/transactions/planning/capabilities/CAP-ACC-TRX-006-record-money-received-by-hand.md#BR-CAP-ACC-TRX-006-10;
      rhythm-v2-docs:specs/accounting/transactions/planning/capabilities/CAP-ACC-TRX-008-put-a-payment-s-money-on-the-right-invoices.md#BR-CAP-ACC-TRX-008-04;
      rhythm-v2-docs:specs/accounting/transactions/planning/capabilities/CAP-ACC-TRX-008-put-a-payment-s-money-on-the-right-invoices.md#BR-CAP-ACC-TRX-008-06;
      rhythm-v2-docs:specs/accounting/transactions/planning/capabilities/CAP-ACC-TRX-009-settle-a-customer-s-invoices-in-one-step.md#BR-CAP-ACC-TRX-009-03;
      rhythm-v2-docs:specs/accounting/transactions/planning/capabilities/CAP-ACC-TRX-009-settle-a-customer-s-invoices-in-one-step.md#BR-CAP-ACC-TRX-009-05;
      rhythm-v2-docs:specs/accounting/transactions/planning/capabilities/CAP-ACC-TRX-013-undo-a-payment-whose-money-did-not-stay.md#BR-CAP-ACC-TRX-013-03;
      rhythm-v2-docs:specs/accounting/transactions/planning/capabilities/CAP-ACC-TRX-013-undo-a-payment-whose-money-did-not-stay.md#BR-CAP-ACC-TRX-013-04;
      rhythm-v2-docs:specs/accounting/transactions/planning/capabilities/CAP-ACC-TRX-015-move-a-transaction-to-another-batch-and-correct-its-details.md#BR-CAP-ACC-TRX-015-03;
      rhythm-v2-docs:specs/accounting/transactions/planning/capabilities/CAP-ACC-TRX-015-move-a-transaction-to-another-batch-and-correct-its-details.md#BR-CAP-ACC-TRX-015-04
  - to: CAP-ACC-TRX-009
    scenarios:
      - ATS-ACC-TRX-006-10
    provenance: proposed
    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;
      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);
      rhythm-v2-docs:specs/accounting/transactions/design/workflows/WF-ACC-TRX-005-record-money-received-by-hand-and-place-it.md#WF-ACC-TRX-005;
      rhythm-v2-docs:specs/accounting/transactions/planning/capabilities/CAP-ACC-TRX-006-record-money-received-by-hand.md#BR-CAP-ACC-TRX-006-08;
      rhythm-v2-docs:specs/accounting/transactions/planning/capabilities/CAP-ACC-TRX-006-record-money-received-by-hand.md#BR-CAP-ACC-TRX-006-10;
      rhythm-v2-docs:specs/accounting/transactions/planning/capabilities/CAP-ACC-TRX-008-put-a-payment-s-money-on-the-right-invoices.md#BR-CAP-ACC-TRX-008-04;
      rhythm-v2-docs:specs/accounting/transactions/planning/capabilities/CAP-ACC-TRX-008-put-a-payment-s-money-on-the-right-invoices.md#BR-CAP-ACC-TRX-008-06;
      rhythm-v2-docs:specs/accounting/transactions/planning/capabilities/CAP-ACC-TRX-009-settle-a-customer-s-invoices-in-one-step.md#BR-CAP-ACC-TRX-009-03;
      rhythm-v2-docs:specs/accounting/transactions/planning/capabilities/CAP-ACC-TRX-009-settle-a-customer-s-invoices-in-one-step.md#BR-CAP-ACC-TRX-009-05;
      rhythm-v2-docs:specs/accounting/transactions/planning/capabilities/CAP-ACC-TRX-013-undo-a-payment-whose-money-did-not-stay.md#BR-CAP-ACC-TRX-013-03;
      rhythm-v2-docs:specs/accounting/transactions/planning/capabilities/CAP-ACC-TRX-013-undo-a-payment-whose-money-did-not-stay.md#BR-CAP-ACC-TRX-013-04;
      rhythm-v2-docs:specs/accounting/transactions/planning/capabilities/CAP-ACC-TRX-015-move-a-transaction-to-another-batch-and-correct-its-details.md#BR-CAP-ACC-TRX-015-03;
      rhythm-v2-docs:specs/accounting/transactions/planning/capabilities/CAP-ACC-TRX-015-move-a-transaction-to-another-batch-and-correct-its-details.md#BR-CAP-ACC-TRX-015-04
  - to: CAP-ACC-TRX-013
    scenarios:
      - ATS-ACC-TRX-006-10
    provenance: proposed
    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;
      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);
      rhythm-v2-docs:specs/accounting/transactions/design/workflows/WF-ACC-TRX-005-record-money-received-by-hand-and-place-it.md#WF-ACC-TRX-005;
      rhythm-v2-docs:specs/accounting/transactions/planning/capabilities/CAP-ACC-TRX-006-record-money-received-by-hand.md#BR-CAP-ACC-TRX-006-08;
      rhythm-v2-docs:specs/accounting/transactions/planning/capabilities/CAP-ACC-TRX-006-record-money-received-by-hand.md#BR-CAP-ACC-TRX-006-10;
      rhythm-v2-docs:specs/accounting/transactions/planning/capabilities/CAP-ACC-TRX-008-put-a-payment-s-money-on-the-right-invoices.md#BR-CAP-ACC-TRX-008-04;
      rhythm-v2-docs:specs/accounting/transactions/planning/capabilities/CAP-ACC-TRX-008-put-a-payment-s-money-on-the-right-invoices.md#BR-CAP-ACC-TRX-008-06;
      rhythm-v2-docs:specs/accounting/transactions/planning/capabilities/CAP-ACC-TRX-009-settle-a-customer-s-invoices-in-one-step.md#BR-CAP-ACC-TRX-009-03;
      rhythm-v2-docs:specs/accounting/transactions/planning/capabilities/CAP-ACC-TRX-009-settle-a-customer-s-invoices-in-one-step.md#BR-CAP-ACC-TRX-009-05;
      rhythm-v2-docs:specs/accounting/transactions/planning/capabilities/CAP-ACC-TRX-013-undo-a-payment-whose-money-did-not-stay.md#BR-CAP-ACC-TRX-013-03;
      rhythm-v2-docs:specs/accounting/transactions/planning/capabilities/CAP-ACC-TRX-013-undo-a-payment-whose-money-did-not-stay.md#BR-CAP-ACC-TRX-013-04;
      rhythm-v2-docs:specs/accounting/transactions/planning/capabilities/CAP-ACC-TRX-015-move-a-transaction-to-another-batch-and-correct-its-details.md#BR-CAP-ACC-TRX-015-03;
      rhythm-v2-docs:specs/accounting/transactions/planning/capabilities/CAP-ACC-TRX-015-move-a-transaction-to-another-batch-and-correct-its-details.md#BR-CAP-ACC-TRX-015-04
  - to: CAP-ACC-TRX-015
    scenarios:
      - ATS-ACC-TRX-006-10
    provenance: proposed
    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;
      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);
      rhythm-v2-docs:specs/accounting/transactions/design/workflows/WF-ACC-TRX-005-record-money-received-by-hand-and-place-it.md#WF-ACC-TRX-005;
      rhythm-v2-docs:specs/accounting/transactions/planning/capabilities/CAP-ACC-TRX-006-record-money-received-by-hand.md#BR-CAP-ACC-TRX-006-08;
      rhythm-v2-docs:specs/accounting/transactions/planning/capabilities/CAP-ACC-TRX-006-record-money-received-by-hand.md#BR-CAP-ACC-TRX-006-10;
      rhythm-v2-docs:specs/accounting/transactions/planning/capabilities/CAP-ACC-TRX-008-put-a-payment-s-money-on-the-right-invoices.md#BR-CAP-ACC-TRX-008-04;
      rhythm-v2-docs:specs/accounting/transactions/planning/capabilities/CAP-ACC-TRX-008-put-a-payment-s-money-on-the-right-invoices.md#BR-CAP-ACC-TRX-008-06;
      rhythm-v2-docs:specs/accounting/transactions/planning/capabilities/CAP-ACC-TRX-009-settle-a-customer-s-invoices-in-one-step.md#BR-CAP-ACC-TRX-009-03;
      rhythm-v2-docs:specs/accounting/transactions/planning/capabilities/CAP-ACC-TRX-009-settle-a-customer-s-invoices-in-one-step.md#BR-CAP-ACC-TRX-009-05;
      rhythm-v2-docs:specs/accounting/transactions/planning/capabilities/CAP-ACC-TRX-013-undo-a-payment-whose-money-did-not-stay.md#BR-CAP-ACC-TRX-013-03;
      rhythm-v2-docs:specs/accounting/transactions/planning/capabilities/CAP-ACC-TRX-013-undo-a-payment-whose-money-did-not-stay.md#BR-CAP-ACC-TRX-013-04;
      rhythm-v2-docs:specs/accounting/transactions/planning/capabilities/CAP-ACC-TRX-015-move-a-transaction-to-another-batch-and-correct-its-details.md#BR-CAP-ACC-TRX-015-03;
      rhythm-v2-docs:specs/accounting/transactions/planning/capabilities/CAP-ACC-TRX-015-move-a-transaction-to-another-batch-and-correct-its-details.md#BR-CAP-ACC-TRX-015-04
transition_coverage: []
permission_coverage:
  - key: accounting.payments.create
    where_checked: api
    gap: FND-ACC-TRX-071
    provenance: unknown
    source: FND-ACC-TRX-071
    note: >-
      Existing permission scenarios are retained; assertion-level coverage of
      this grant at every declared surface remains unverified.
    evidence:
      - >-
        rhythm-v2-docs:specs/accounting/transactions/planning/capabilities/CAP-ACC-TRX-006-record-money-received-by-hand.md#CAP-ACC-TRX-006
  - key: accounting.payments.read
    where_checked: api
    gap: FND-ACC-TRX-071
    provenance: unknown
    source: FND-ACC-TRX-071
    note: >-
      Existing permission scenarios are retained; assertion-level coverage of
      this grant at every declared surface remains unverified.
    evidence:
      - >-
        rhythm-v2-docs:specs/accounting/transactions/planning/capabilities/CAP-ACC-TRX-006-record-money-received-by-hand.md#CAP-ACC-TRX-006
rule_coverage:
  - rule: BR-CAP-ACC-TRX-006-01
    scenarios:
      - ATS-ACC-TRX-006-01
    provenance: proposed
    source: >-
      services-accounting:modules/transactions/tests/integration/services/payments/receive-offline.integration.spec.js#it
      refuses an amount in another currency (currency_mismatch)
  - rule: BR-CAP-ACC-TRX-006-02
    scenarios:
      - ATS-ACC-TRX-006-02
    provenance: proposed
    source: >-
      services-accounting:modules/transactions/services/payments/payment-method-rules.ts:missingReferenceRefusal
  - rule: BR-CAP-ACC-TRX-006-04
    scenarios:
      - ATS-ACC-TRX-006-03
    provenance: proposed
    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)
  - rule: BR-CAP-ACC-TRX-006-05
    scenarios:
      - ATS-ACC-TRX-006-04
    provenance: proposed
    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
  - rule: BR-CAP-ACC-TRX-006-06
    scenarios:
      - ATS-ACC-TRX-006-05
    provenance: proposed
    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)
  - rule: BR-CAP-ACC-TRX-006-07
    scenarios:
      - ATS-ACC-TRX-006-06
    provenance: proposed
    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
  - rule: BR-CAP-ACC-TRX-006-08
    scenarios:
      - ATS-ACC-TRX-006-07
      - ATS-ACC-TRX-006-10
    provenance: proposed
    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
  - rule: BR-CAP-ACC-TRX-006-09
    scenarios:
      - ATS-ACC-TRX-006-08
    provenance: proposed
    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)
  - rule: BR-CAP-ACC-TRX-006-10
    scenarios:
      - ATS-ACC-TRX-006-09
      - ATS-ACC-TRX-006-10
    provenance: proposed
    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)
executable_gaps:
  - scenario: ATS-ACC-TRX-006-10
    gap: FND-ACC-TRX-071
    provenance: unknown
    source: FND-ACC-TRX-071
    evidence:
      - >-
        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;
        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);
        rhythm-v2-docs:specs/accounting/transactions/design/workflows/WF-ACC-TRX-005-record-money-received-by-hand-and-place-it.md#WF-ACC-TRX-005
invariant_coverage:
  - invariant: INV-DOM-ACC-TRX-003-01
    scenarios:
      - ATS-ACC-TRX-006-01
    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)
    note: >-
      The cited scenario and its constituent test assertions are the proof
      boundary.
  - invariant: INV-DOM-ACC-TRX-003-02
    scenarios:
      - ATS-ACC-TRX-006-03
    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)
    note: >-
      The cited scenario and its constituent test assertions are the proof
      boundary.
  - invariant: INV-DOM-ACC-TRX-003-03
    scenarios:
      - ATS-ACC-TRX-006-06
    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
    note: >-
      The cited scenario and its constituent test assertions are the proof
      boundary.
  - invariant: INV-DOM-ACC-TRX-003-04
    scenarios:
      - ATS-ACC-TRX-006-09
    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)
    note: >-
      The cited scenario and its constituent test assertions are the proof
      boundary.
  - invariant: INV-DOM-ACC-TRX-003-05
    gap: FND-ACC-TRX-071
    provenance: unknown
    source: FND-ACC-TRX-071
    evidence:
      - >-
        services-accounting:docs/architecture/accounting-2.0/06-integrity-model.md#2.
        Generated balances with CHECK bounds
    note: >-
      The complete invariant has no exact assertion binding in this
      specification; component evidence does not close the gap.
  - invariant: INV-DOM-ACC-TRX-003-20
    gap: FND-ACC-TRX-071
    provenance: unknown
    source: FND-ACC-TRX-071
    evidence:
      - >-
        services-accounting:docs/milestones/plans/ACCT-M2-plan.md#7a. Entity
        capabilities (R2-ARCH-001)
    note: >-
      The complete invariant has no exact assertion binding in this
      specification; component evidence does not close the gap.
---

# Record receipts collected outside Rhythm: Capability Test Specification

## Coverage

The category map separates specified examples from recorded gaps. The table lists a scenario or finding for each rule requiring proof; a listed scenario may still be proposed. Executable bindings cover their cited assertions, while the transition, permission and invariant registers identify combinations that need further proof.

| Required rule | Scenario or finding |
|---|---|
| `BR-CAP-ACC-TRX-006-01` | `ATS-ACC-TRX-006-01` |
| `BR-CAP-ACC-TRX-006-02` | `ATS-ACC-TRX-006-02` |
| `BR-CAP-ACC-TRX-006-04` | `ATS-ACC-TRX-006-03` |
| `BR-CAP-ACC-TRX-006-05` | `ATS-ACC-TRX-006-04` |
| `BR-CAP-ACC-TRX-006-06` | `ATS-ACC-TRX-006-05` |
| `BR-CAP-ACC-TRX-006-07` | `ATS-ACC-TRX-006-06` |
| `BR-CAP-ACC-TRX-006-08` | `ATS-ACC-TRX-006-07`, `ATS-ACC-TRX-006-10` |
| `BR-CAP-ACC-TRX-006-09` | `ATS-ACC-TRX-006-08` |
| `BR-CAP-ACC-TRX-006-10` | `ATS-ACC-TRX-006-09`, `ATS-ACC-TRX-006-10` |

## Interactions With Related Capabilities

Receive 100.00 for an 80.00 bill, move the receipt to another open batch, reallocate its applied value to an equivalent bill, then void an eligible receipt in a separate branch. Complete another bill through credit and an offline settlement.

The moved receipt and its allocations retain their value; relocation restores the first bill and pays the second; void restores debt; settlement keeps payment and credit application separate. The complete chain remains proposed until one executable run proves its combined outcomes.
