---
id: FAS-ACC-TRX-04
feature: FEAT-ACC-TRX-04
product_area: accounting
module: transactions
revision: 1
status: proposed
product_intent: proposed
source_sha:
  services-accounting: f47cb263875bbc0c5640fba7dae6785ec32695f8
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
capabilities:
  - CAP-ACC-TRX-011
  - CAP-ACC-TRX-012
  - CAP-ACC-TRX-013
scenarios:
  - id: FAS-ACC-TRX-04-01
    title: Held money can become credit or return without double spending
    kind: behaviour
    exercises:
      - CAP-ACC-TRX-011
      - CAP-ACC-TRX-012
      - CAP-ACC-TRX-013
    relies_on:
      - ATS-ACC-TRX-011-02
      - ATS-ACC-TRX-012-02
      - ATS-ACC-TRX-013-04
    preconditions: A receipt has 50.00 available after paying its customer’s bill.
    steps:
      - do: >-
          Reserve 30.00 for a refund, turn the remaining 20.00 into credit,
          attempt reuse of held money and attempt source void.
        provenance: proposed
        source: >-
          rhythm-v2-docs:specs/accounting/transactions/design/tests/ATS-ACC-TRX-011-give-a-customer-credit-and-apply-it.md#ATS-ACC-TRX-011-02;
          rhythm-v2-docs:specs/accounting/transactions/design/tests/ATS-ACC-TRX-012-pay-money-back-with-refunds.md#ATS-ACC-TRX-012-02;
          rhythm-v2-docs:specs/accounting/transactions/design/tests/ATS-ACC-TRX-013-undo-a-payment-whose-money-did-not-stay.md#ATS-ACC-TRX-013-04
    expected: >-
      Held value remains unavailable, the credit consumes exactly 20.00 and the
      live credit prevents source reversal.
    negative: false
    data_needs: >-
      An isolated workspace, matching unit and currency, eligible accounts,
      products and open periods; branch-owned financial records and distinct
      caller identities.
    bound_to: []
    provenance: proposed
    source: >-
      rhythm-v2-docs:specs/accounting/transactions/design/tests/ATS-ACC-TRX-011-give-a-customer-credit-and-apply-it.md#ATS-ACC-TRX-011-02;
      rhythm-v2-docs:specs/accounting/transactions/design/tests/ATS-ACC-TRX-012-pay-money-back-with-refunds.md#ATS-ACC-TRX-012-02;
      rhythm-v2-docs:specs/accounting/transactions/design/tests/ATS-ACC-TRX-013-undo-a-payment-whose-money-did-not-stay.md#ATS-ACC-TRX-013-04
  - id: FAS-ACC-TRX-04-02
    title: Receipt credit and refund holds prevent source reversal
    kind: interaction
    exercises:
      - CAP-ACC-TRX-011
      - CAP-ACC-TRX-012
      - CAP-ACC-TRX-013
    relies_on:
      - ATS-ACC-TRX-011-02
      - ATS-ACC-TRX-013-04
      - ATS-ACC-TRX-012-02
    preconditions: An offline receipt has 3.00 unapplied in an eligible open batch.
    steps:
      - do: >-
          Create 1.00 of receipt-derived credit, reserve another 1.00 for refund
          and attempt to void the source receipt. Inspect each held and
          available amount.
        provenance: proposed
        source: >-
          rhythm-v2-docs:specs/accounting/transactions/design/tests#ATS-ACC-TRX-011-02;
          ATS-ACC-TRX-012-02; ATS-ACC-TRX-013-04
    expected: >-
      The void is refused while the grant remains live; the 1.00 refund
      reservation remains held and only the remaining 1.00 is available on the
      receipt.
    negative: false
    data_needs: >-
      An isolated workspace, matching unit and currency, eligible accounts,
      products and open periods; branch-owned financial records and distinct
      caller identities.
    bound_to: []
    provenance: proposed
    source: >-
      rhythm-v2-docs:specs/accounting/transactions/design/tests#ATS-ACC-TRX-011-02;
      ATS-ACC-TRX-012-02; ATS-ACC-TRX-013-04
  - id: FAS-ACC-TRX-04-03
    title: Return approval and payment use separate people and stages
    kind: lifecycle
    exercises:
      - CAP-ACC-TRX-011
      - CAP-ACC-TRX-012
    relies_on:
      - ATS-ACC-TRX-011-02
      - ATS-ACC-TRX-012-05
      - ATS-ACC-TRX-012-07
    preconditions: Approval is enabled and a receipt has 50.00 available.
    steps:
      - do: >-
          Request 30.00 back, reject requester approval, approve independently
          and pay the refund; issue credit from the remaining 20.00.
        provenance: proposed
        source: >-
          rhythm-v2-docs:specs/accounting/transactions/design/tests/ATS-ACC-TRX-011-give-a-customer-credit-and-apply-it.md#ATS-ACC-TRX-011-02;
          rhythm-v2-docs:specs/accounting/transactions/design/tests/ATS-ACC-TRX-012-pay-money-back-with-refunds.md#ATS-ACC-TRX-012-05;
          rhythm-v2-docs:specs/accounting/transactions/design/tests/ATS-ACC-TRX-012-pay-money-back-with-refunds.md#ATS-ACC-TRX-012-07
    expected: >-
      The refund becomes paid only after independent approval, and credit
      accounts for the rest without another use of the returned money.
    negative: false
    data_needs: >-
      An isolated workspace, matching unit and currency, eligible accounts,
      products and open periods; branch-owned financial records and distinct
      caller identities.
    bound_to: []
    provenance: proposed
    source: >-
      rhythm-v2-docs:specs/accounting/transactions/design/tests/ATS-ACC-TRX-011-give-a-customer-credit-and-apply-it.md#ATS-ACC-TRX-011-02;
      rhythm-v2-docs:specs/accounting/transactions/design/tests/ATS-ACC-TRX-012-pay-money-back-with-refunds.md#ATS-ACC-TRX-012-05;
      rhythm-v2-docs:specs/accounting/transactions/design/tests/ATS-ACC-TRX-012-pay-money-back-with-refunds.md#ATS-ACC-TRX-012-07
  - id: FAS-ACC-TRX-04-04
    title: Return and credit authority remain separate
    kind: permission
    exercises:
      - CAP-ACC-TRX-011
      - CAP-ACC-TRX-012
      - CAP-ACC-TRX-013
    relies_on:
      - ATS-ACC-TRX-011-09
      - ATS-ACC-TRX-012-11
      - ATS-ACC-TRX-013-01
    preconditions: A reader can inspect the source records without sensitive mutation grants.
    steps:
      - do: >-
          Attempt credit issue and application, refund request and execution,
          and payment void and reversal.
        provenance: proposed
        source: >-
          rhythm-v2-docs:specs/accounting/transactions/design/tests/ATS-ACC-TRX-011-give-a-customer-credit-and-apply-it.md#ATS-ACC-TRX-011-09;
          rhythm-v2-docs:specs/accounting/transactions/design/tests/ATS-ACC-TRX-012-pay-money-back-with-refunds.md#ATS-ACC-TRX-012-11;
          rhythm-v2-docs:specs/accounting/transactions/design/tests/ATS-ACC-TRX-013-undo-a-payment-whose-money-did-not-stay.md#ATS-ACC-TRX-013-01
    expected: >-
      Every mutation fails and the original available, held and settled values
      remain unchanged.
    negative: true
    data_needs: >-
      An isolated workspace, matching unit and currency, eligible accounts,
      products and open periods; branch-owned financial records and distinct
      caller identities.
    bound_to: []
    provenance: proposed
    source: >-
      rhythm-v2-docs:specs/accounting/transactions/design/tests/ATS-ACC-TRX-011-give-a-customer-credit-and-apply-it.md#ATS-ACC-TRX-011-09;
      rhythm-v2-docs:specs/accounting/transactions/design/tests/ATS-ACC-TRX-012-pay-money-back-with-refunds.md#ATS-ACC-TRX-012-11;
      rhythm-v2-docs:specs/accounting/transactions/design/tests/ATS-ACC-TRX-013-undo-a-payment-whose-money-did-not-stay.md#ATS-ACC-TRX-013-01
  - id: FAS-ACC-TRX-04-05
    title: A refund cannot consume money held for customer credit
    kind: regression
    exercises:
      - CAP-ACC-TRX-011
      - CAP-ACC-TRX-012
    relies_on:
      - ATS-ACC-TRX-011-02
      - ATS-ACC-TRX-012-01
      - ATS-ACC-TRX-012-02
    preconditions: A 30.00 receipt has supplied a live 20.00 customer credit.
    steps:
      - do: >-
          Request a 10.01 refund from its unapplied money, then request exactly
          10.00.
        provenance: proposed
        source: >-
          rhythm-v2-docs:specs/accounting/transactions/design/tests/ATS-ACC-TRX-011-give-a-customer-credit-and-apply-it.md#ATS-ACC-TRX-011-02;
          rhythm-v2-docs:specs/accounting/transactions/design/tests/ATS-ACC-TRX-012-pay-money-back-with-refunds.md#ATS-ACC-TRX-012-01;
          rhythm-v2-docs:specs/accounting/transactions/design/tests/ATS-ACC-TRX-012-pay-money-back-with-refunds.md#ATS-ACC-TRX-012-02
    expected: >-
      The excessive request fails and the exact request reserves the remaining
      money without changing the grant.
    negative: true
    data_needs: >-
      An isolated workspace, matching unit and currency, eligible accounts,
      products and open periods; branch-owned financial records and distinct
      caller identities.
    bound_to: []
    provenance: proposed
    source: >-
      rhythm-v2-docs:specs/accounting/transactions/design/tests/ATS-ACC-TRX-011-give-a-customer-credit-and-apply-it.md#ATS-ACC-TRX-011-02;
      rhythm-v2-docs:specs/accounting/transactions/design/tests/ATS-ACC-TRX-012-pay-money-back-with-refunds.md#ATS-ACC-TRX-012-01;
      rhythm-v2-docs:specs/accounting/transactions/design/tests/ATS-ACC-TRX-012-pay-money-back-with-refunds.md#ATS-ACC-TRX-012-02
evidence:
  - >-
    rhythm-v2-docs:specs/accounting/transactions/planning/features/FEAT-ACC-TRX-04-credits-refunds-and-returned-money.md:
    feature membership and linked capabilities, journeys and capability test
    specifications.
regression_record:
  - revision: 1
    change: initial
    scenarios:
      - FAS-ACC-TRX-04-01
      - FAS-ACC-TRX-04-02
      - FAS-ACC-TRX-04-03
      - FAS-ACC-TRX-04-04
      - FAS-ACC-TRX-04-05
    why: Initial cumulative acceptance specification for the landed feature.
    provenance: documented
    source: 'rhythm-v2-docs:specs/CONVENTIONS.md#5.3 Feature Acceptance Suite (FAS)'
---

# Credits, Refunds and Returned Money: Feature Acceptance Suite

## What the Feature Must Do as a Whole

Finance can retain available money as credit, return it through an accountable request or record that a receipt did not remain. Acceptance follows the same source value through those competing uses.

## Interactions Between Capabilities

Credit creation reduces source availability and protects the receipt from reversal. Refund reservation excludes competing spending until cancellation, failure or payment resolves the request.

## Regression Record

Revision one establishes the initial cumulative suite. Later changes revisit dependent scenarios, and retired scenarios retain their identities and reasons.
