---
id: JNY-ACC-TRX-005
title: Cancel paid ticket value and follow its return
feature: FEAT-ACC-TRX-02
product_area: accounting
module: transactions
revision: 1
status: draft
product_intent: proposed
implementation_evidence: observed
supersedes:
  - ACT-ACC-0197
  - ACT-ACC-0327
  - ACT-ACC-0328
source_sha:
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
  services-accounting: f47cb263875bbc0c5640fba7dae6785ec32695f8
actor: ACT-ACC-012
goal: Reduce a paid purchase and return released value to the contributing receipts.
capabilities:
  - CAP-ACC-TRX-014
  - CAP-ACC-TRX-003
  - CAP-ACC-TRX-012
screens:
  - '/console/{tenantId}/accounting/invoices/{invoiceId}'
  - '/console/{tenantId}/accounting/invoices/{invoiceId}/reverse'
  - '/console/{tenantId}/accounting/reversals/{reversalId}'
  - '/console/{tenantId}/accounting/creditMemos/new'
steps:
  - 'n': 1
    surface: '/console/{tenantId}/accounting/invoices/{invoiceId}/reverse'
    action: Select two of four paid tickets on the reversal page.
    capability: CAP-ACC-TRX-014
    expected: Preview identifies the reduction and per-receipt return figures without retained financial records.
    provenance: test
    source: 'react-console:acceptance/accounting/playwright/journeys/payments/ACT-ACC-0327.spec.ts#ACT-ACC-0327'
  - 'n': 2
    surface: '/console/{tenantId}/accounting/invoices/{invoiceId}/reverse'
    action: Confirm the cancellation with refund treatment.
    capability: CAP-ACC-TRX-014
    expected: A memo releases the ticket value and starts its card return.
    provenance: test
    source: 'react-console:acceptance/accounting/playwright/journeys/payments/ACT-ACC-0327.spec.ts#ACT-ACC-0327'
  - 'n': 3
    surface: '/console/{tenantId}/accounting/reversals/{reversalId}'
    action: Follow the reversal record through processor confirmation.
    capability: CAP-ACC-TRX-014
    expected: Unresolved refund work is pending and confirmed payment completes the return.
    provenance: test
    source: >-
      services-accounting:modules/transactions/tests/integration/services/reversals/reversal-refund-status.integration.spec.js#it
      turns succeeded and completed when the signed event settles the refund
alternates:
  - from_step: 1
    condition: Check and card receipts both contributed.
    path: Create separate source-specific returns with processor and staff execution responsibilities.
    outcome: Each receipt accounts for the value it contributed.
    provenance: test
    source: 'react-console:acceptance/accounting/playwright/journeys/payments/ACT-ACC-0328.spec.ts#ACT-ACC-0328'
  - from_step: 1
    condition: Staff choose a plain credit memo instead.
    path: The memo releases unneeded paid value to the newest applicable receipt.
    outcome: Refunding remains a separate staff operation.
    provenance: test
    source: 'react-console:acceptance/accounting/playwright/journeys/invoices/ACT-ACC-0197.spec.ts#ACT-ACC-0197'
failures:
  - from_step: 2
    condition: The processor definitely rejects return.
    path: The refund fails and the reversal records a completion exception.
    outcome: Booked adjustment remains and finance must resolve the return.
    provenance: test
    source: >-
      services-accounting:modules/transactions/tests/integration/services/reversals/reversal-refund-status.integration.spec.js#it
      turns failed and completed_with_exception with the processor’s code
rules_in_play:
  - BR-CAP-ACC-TRX-014-02
  - BR-CAP-ACC-TRX-014-04
  - BR-CAP-ACC-TRX-014-06
  - BR-CAP-ACC-TRX-014-07
  - BR-CAP-ACC-TRX-003-04
  - BR-CAP-ACC-TRX-012-03
assertions:
  - id: AS-JNY-ACC-TRX-005-01
    statement: Preview retains no financial rows while document-number allocations can advance.
    provenance: observed
    source: 'services-accounting:modules/transactions/services/reversals/reversal-commands.ts:previewReversal'
  - id: AS-JNY-ACC-TRX-005-02
    statement: Reduction releases only allocated value no longer needed by the line.
    provenance: test
    source: >-
      services-accounting:modules/transactions/tests/integration/services/reversals/reversals.integration.spec.js#it
      reverses the allocation a credited line no longer needs: the money back on the payment as unapplied
  - id: AS-JNY-ACC-TRX-005-03
    statement: Each contributing receipt receives its own return request.
    provenance: test
    source: >-
      services-accounting:modules/transactions/tests/integration/services/reversals/reversal-two-payments.integration.spec.js#it
      requests one refund per payment, 7000 and 3000, each from its own payment
  - id: AS-JNY-ACC-TRX-005-04
    statement: The adjustment books before external refund completion.
    provenance: test
    source: >-
      services-accounting:modules/transactions/tests/integration/services/reversals/reversal-refund-status.integration.spec.js#it
      books the credit memo at once although the refund is not paid
e2e_policy: required
e2e_reason: >-
  Browser coverage exercises reversal preview, confirmation and related records; service proof follows
  asynchronous refund completion.
proved_by: []
---

# Cancel paid ticket value and follow its return

## Story

Staff review cancellation of two paid tickets through the reversal preview. Confirmation retains the credit memo and starts returning released value to the card. The reversal remains pending until the processor establishes completion. A purchase paid by check and card produces separate source-specific return work, with the check portion awaiting staff payment. Definite refund failure leaves a visible exception alongside the already booked adjustment.
