Skip to content

Credit Disputes

Access Prerequisites

  • Permission (module): creditDispute (open/update disputes).
  • License/Feature: CREDIT_INVESTMENTS enabled on the tenant license (Vault).
  • Menu container: TOKENIZATION → group Tokenized Credit

What it is / when to use

The Disputes screen records and resolves contestations linked to a Charge — for example, the debtor claims they have already paid, or that the charge is fraudulent or duplicated. Each dispute has a type, reason, who opened it, a progress status, and, upon resolution, who resolved it and the resolution notes.

Use this screen to open a dispute against a specific charge and to update/resolve existing disputes (under review, resolved valid, resolved invalid).

Prerequisites

  • Permission: creditDispute (double permission — CPM enum + dynamic module in DB).
  • License/Feature: CREDIT_INVESTMENTS enabled. Without it the group does not appear in the menu at all.
  • Dependencies from other screens: selecting an existing Charge (Charges) is required — the dispute is always linked by chargeId.

Step by step

  1. Go to the menu Tokenized Credit → Disputes.
  2. Search and select a Charge (the search filters by reference code/ID).
  3. The disputes for that charge are loaded.
  4. To open a new one: choose the Type and describe the Reason, then click Create dispute (confirmed in the bottom-sheet).
  5. To handle an existing one: ⋮ → Update opens the dialog to change the Status and record Resolution Notes.

Filters and columns

Filter/ColumnWhat it showsData source
Charge (selector)Charge selected to list its disputessearch over getCharges(); required
Charge (column)Charge code/IDDispute.chargeId (resolved via chargeMap)
TypeDEBTOR_CLAIM, FRAUD, DUPLICATE, OTHERDispute.disputeType
StatusProgress: UNDER_REVIEW, RESOLVED_VALID, RESOLVED_INVALID (among other backend statuses)Dispute.status
Opened atOpening dateDispute.openedAt
Resolved atResolution dateDispute.resolvedAt

Fields (dispute opening)

FieldWhat it isRequired?System/backend effect
TypeNature of the contestationYesStored in disputeType; default DEBTOR_CLAIM.
ReasonFree text describing the disputeNoStored in disputeReason.
Opened byOperator who opened itAutomaticopenedBy = logged-in operator ID (or system).

Update (dialog)

FieldWhat it isRequired?System/backend effect
StatusUNDER_REVIEW / RESOLVED_VALID / RESOLVED_INVALIDYesupdateDispute(id, { status }); without a status the update is blocked.
Resolution NotesJustification for the decisionNoStored in resolutionNotes; resolvedBy = logged-in operator.

Actions and modals

  • Select charge / Clear: sets the chargeId that filters/opens disputes.
  • Create dispute: createDispute(chargeId, { disputeType, disputeReason, openedBy }) after confirmation. Requires a selected charge.
  • Update (dialog): updateDispute(id, { status, resolutionNotes, resolvedBy }); resolving as RESOLVED_VALID/RESOLVED_INVALID closes the dispute.

Opening/resolving disputes may trigger step-up (password + MFA, X-Step-Up-Token) depending on the environment.

Business rules / cautions

Attention

  • Charge is required. A dispute is always tied to a charge; without selecting one, the screen blocks creation/listing.
  • Resolving is a merit decision. RESOLVED_VALID (the contestation is upheld) vs RESOLVED_INVALID (dismissed) have distinct downstream effects — record the resolution notes for audit purposes.
  • A valid resolution may trigger a buyback/adjustment. A valid fraud/duplicate dispute frequently leads to a Buyback or deal cancellation.