---
id: JNY-PFM-INT-004
title: Resolve a payment after its response is lost
feature: FEAT-PFM-INT-03
product_area: platform
module: integrations
revision: 1
status: draft
product_intent: confirmed
implementation_evidence: observed
supersedes:
  - INT-ACC-0039
  - INT-ACC-0297
  - INT-ACC-0621
source_sha:
  services-platform: ad3f6a6582843008ed0f5a17b131878d15829af1
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
actor: ACT-PFM-017
goal: Establish a payment outcome through lookup or an operator decision without repeating the original payment.
capabilities:
  - CAP-PFM-INT-009
  - CAP-PFM-INT-010
  - CAP-PFM-INT-011
screens:
  - '/console/{tenantId}/configuration/platform/integrations/activity/{executionId}'
  - '/console/{tenantId}/configuration/platform/integrations/needs-attention'
steps:
  - 'n': 1
    surface: invokeIntegrationCapability
    action: Send a payment authorization from Accounting whose response disappears after dispatch.
    capability: CAP-PFM-INT-009
    expected: Accounting receives an unknown outcome and the original payment is not dispatched again.
    provenance: test
    source: >-
      services-platform:modules/integrations/tests/e2e-adapters/gateway-dummy.adapters.spec.js#answers the
      invoke client unknown, never a retry
  - 'n': 2
    surface: '/console/{tenantId}/configuration/platform/integrations/activity/{executionId}'
    action: Inspect the payment call.
    capability: CAP-PFM-INT-010
    expected: The detail shows settlement in progress and the next planned lookup.
    provenance: test
    source: 'react-console:lib/integrations/settling.test.ts#says when Rhythm checks again, as a time'
  - 'n': 3
    surface: platform.integrations.executions.reconcile
    action: Query the provider for the original payment.
    capability: CAP-PFM-INT-010
    expected: A conclusive result settles the call and produces one completion for Accounting.
    provenance: test
    source: >-
      services-platform:modules/integrations/tests/integration/services/executions/reconciler.integration.spec.js#settles
      a found operation succeeded, with the provider’s answer as the stored response
  - 'n': 4
    surface: '/console/{tenantId}/configuration/platform/integrations/needs-attention'
    action: 'If lookup remains inconclusive, resolve the payment with an operator note.'
    capability: CAP-PFM-INT-011
    expected: The final record identifies the operator and creates one completion for Accounting.
    provenance: test
    source: >-
      services-platform:modules/integrations/tests/integration/services/executions/execution-settlement.integration.spec.js#resolve
      of a sync execution the caller was never answered for writes exactly one completion
alternates:
  - from_step: 3
    condition: Five provider lookups remain inconclusive
    path: Escalate the payment and send administrators one notice
    outcome: An operator determines the outcome through the manual branch
    provenance: test
    source: >-
      services-platform:modules/integrations/tests/integration/services/executions/reconciler.integration.spec.js#sends
      the execution to needs_attention after the fifth lookup that cannot tell, with one notice to the
      administrators
failures:
  - from_step: 3
    condition: The provider reports no matching payment
    path: Continue lookup and escalate after the last attempt
    outcome: Do not infer a failed payment solely from absence
    provenance: test
    source: >-
      services-platform:modules/integrations/tests/integration/services/executions/reconciler.integration.spec.js#sends
      a payment to needs_attention at the last lookup, with one notice, never failing it
rules_in_play:
  - BR-CAP-PFM-INT-010-01
  - BR-CAP-PFM-INT-010-02
  - BR-CAP-PFM-INT-010-03
  - BR-CAP-PFM-INT-010-05
  - BR-CAP-PFM-INT-010-07
  - BR-CAP-PFM-INT-011-06
assertions:
  - id: AS-JNY-PFM-INT-004-01
    statement: Unknown payment outcomes use lookup rather than a second payment dispatch.
    provenance: test
    source: 'react-console:acceptance/integrations/playwright/journeys/library/INT-ACC-0039.spec.ts#INT-ACC-0039'
  - id: AS-JNY-PFM-INT-004-02
    statement: Manual settlement writes one completion for the calling application.
    provenance: test
    source: >-
      services-platform:modules/integrations/tests/integration/services/executions/execution-settlement.integration.spec.js#resolve
      of a sync execution the caller was never answered for writes exactly one completion
e2e_policy: optional
e2e_reason: >-
  Browser evidence covers settlement displays; service tests with a controlled clock establish the delayed
  lookup sequence.
evidence:
  - >-
    Steps, alternates, failures and assertions cite the acceptance journeys and service tests at the commits
    in source_sha.
intent_sources:
  - 'services-platform:docs/milestones/INTG-M2-calls-through-the-gateway.md#M2-D2'
  - 'services-platform:docs/milestones/INTG-M2-calls-through-the-gateway.md#M2-D6'
proved_by: []
---
# Resolve a payment after its response is lost

## Story

Accounting loses the response to a dispatched payment. The administrator sees settlement in progress while Rhythm looks up the original transaction. A conclusive response finishes that branch. If lookup cannot establish the outcome, an operator reviews external evidence and records a decision with a note. These are alternative endings for an unresolved call, rather than successive settlements of one payment.
