Transaction Dispute Management Use Case

Transaction dispute management provides a streamlined process for users to capture and submit customer disputes related to financial transactions. You can use the Service Process connect API resource to create all the records related to a transaction dispute.

Transaction dispute management uses a dedicated data model with entities such as Dispute, mapping base attributes to fields in Dispute data model entities.

The optional Assessment Questions portion of transaction dispute management isn’t included in this use case.

Note

Configure Objects, Permissions, and Mulesoft Integration

Before you can create transaction disputes using the Service Process connect API resource, you must create or modify objects, set user permissions, and connect to Mulesoft. Perform these tasks described in the Financial Services Cloud Administration Guide:

These tasks are optional but helpful for viewing Case records in your Salesforce org:

Review the Dispute Management Objects and Fields

Transaction dispute management uses Dispute and Dispute Item records in addition to the Case and Document Checklist Item records common to all service processes. Setting values for the following fields is required. You can include additional fields.

  • Dispute object — AccountId, ActualAmount, ApprovedAmount, AssessmentId, Description, DisputeSubtype, DisputeType, DisputedAmount, FinancialAccountId, ReceivedDate, Status
  • Dispute Item object, one record for each disputed transaction — TransactionAmount, TransactionDate, TransactionDescription, TransactionIdentifier
  • Case object — Subject, Origin, AccountId
  • Document Checklist Item object — No requirements specific to transaction disputes

The TransactionIdentifier value typically references an ID in an external banking system. If you include the Case record’s Type field, setting its value to Dispute is recommended. You can use Document Checklist Item fields to specify documentation such as bank statements or receipts.

Set Up the Service Process Request Payload

The Service Process POST payload has four top-level properties: attributes, caseInfo, documentInfo, and svcCatalogItemDefApiName. For the transaction dispute management process, certain attributes are mapped to specific objects:

  • Under the attributes property, configure a dispute_info property for the Dispute record and a disputed_transactions_info property for the list of Dispute Item records.
  • Configure caseInfo and documentInfo as you do for any service process.
  • Set svcCatalogItemDefApiName to Dispute_Management.

Arrange the properties in JSON format as shown in the following example. Within this structure, all attributes are of type Text except for these fields:

  • Amount Fields (type Number)
    • disputed_amount
    • transaction_amount
    • actual_amount
    • approved_amount
  • Date Fields (type Date)
    • received_date
    • transaction_date
{
  "attributes": {
    "data": {
      "dispute_info": {
        "data": {
          "dispute_type": {
            "value": "Consumer Dispute"
          },
          "dispute_subtype": {
            "value": "Undelivered Product or Service"
          },
          "description": {
            "value": "Order from acmemerchant.com not delivered but credit card charged."
          },
          "received_date": {
            "value": "2023-07-14"
          },
          "account_id": {
            "value": "001DI000001o10QYAQ"
          },
          "assessment_id": {
            "value": "0U3DI000000018m0AA"
          },
          "financial_account_id": {
            "value": "a0EDI000000Ce6W2AS"
          },
          "actual_amount": {
            "value": 593.63
          },
          "disputed_amount": {
            "value": 400
          },
          "approved_amount": {
            "value": 100
          },
          "status": {
            "value": "Submitted"
          }
        }
      },
      "disputed_transactions_info": {
        "value": [
          {
            "transaction_date": "2023-01-01",
            "transaction_identifier": "1",
            "transaction_amount": 213.1,
            "transaction_description": "t1"
          },
          {
            "transaction_date": "2023-01-01",
            "transaction_identifier": "2",
            "transaction_amount": 150.94,
            "transaction_description": "t2"
          },
          {
            "transaction_date": "2023-01-01",
            "transaction_identifier": "3",
            "transaction_amount": 199.0,
            "transaction_description": "t3"
          },
          {
            "transaction_date": "2023-01-01",
            "transaction_identifier": "4",
            "transaction_amount": 30.59,
            "transaction_description": "t4"
          }
        ]
      }
    }
  },
  "caseInfo": {
    "data": {
      "Subject": {
        "value": "Julia Green Transaction Dispute Request"
      },
      "Origin": {
        "value": "Phone"
      },
      "AccountId": {
        "value": "001DI000001o10QYAQ"
      }
    }
  },
  "documentInfo": {
    "data": [
      {
        "id": "content document id-1",
        "name": "Julia Green credit card statement"
      },
      {
        "id": "content document id-2",
        "name": "acmemerchant.com receipt"
      }
    ]
  },
  "svcCatalogItemDefApiName": "Dispute_Management"
}

Invoke the Service Process Resource

After you assemble the payload, you’re ready to invoke the Service Process resource using your favorite REST client. This resource creates all the object records related to a transaction dispute record and returns a response like this:

{
  "caseId": "500SM000000ecOLYAY",
  "caseNumber": "00001035",
  "svcCatalogRequestId": "946SM00000000CvYAI"
}

All records related to the transaction dispute directly or indirectly reference the Case record or the SvcCatalogRequest record.