Tutorial: Dispute Management API

This tutorial will guide you through the process of managing the dispute using Mbanq Cloud APIs and explain the flow for raising the dispute for transactions with below-mentioned supported four payment rails.

  • ACH
  • Debit Card
  • Credit Card
  • External Card

In this tutorial, we will walk you through the steps involved in creating the dispute and performing various operations using the MBanq Cloud Dispute API.

📘

API References for Dispute Management in this tutorial:

The curl statements below will demonstrate the API requests and responses. Let's get started!

Step 1: Retrieve Dispute Reasons

Fetch the dispute reasons configured in the platform use the Get Dispute Reasons API

The response of this API will include the details of the dispute reasons.

{
  "totalFilteredRecords": 2,
  "pageItems": [
    {
      "id": 1,
      "name": "POS UNAUTHORIZED FRAUD",
      "supportRecognizedTransaction": true,
      "description": "Dispute Reason For POS_UNAUTHORIZED_FRAUD",
      "reasonIdentifier": "POS_UNAUTHORIZED_FRAUD",
      "supportMultipleTransactions": true,
      "paymentRail": "DEBIT_CARD"
    },
    {
      "id": 2,
      "name": "POS Incorrect Amount",
      "supportRecognizedTransaction": true,
      "description": "Incorrect Amount Charged",
      "reasonIdentifier": "Incorrect Amount Charged",
      "supportMultipleTransactions": true,
      "paymentRail": "CREDIT_CARD"
    }
  ]
}
ParameterValue TypeExample ValueExplanation
idInteger1Unique Id for each dispute reason.
nameStringPOS UNAUTHORIZED FRAUDName of the .dispute reason.
descriptionStringPOS UNAUTHORIZED FRAUDDescription of the dispute reason.
reasonIdentifierStringPOS_UNAUTHORIZED_FRAUDUnique Identifier for dispute reason, used for dispute creation.
paymentRailStringDEBIT_CARD, CREDIT_CARDAssociated payment rail for the dispute reason.
supportMultipleTransactionsBooleanfalseFlag for dispute reason support for multiple transactions.
supportRecognizedTransactionBooleanfalseFlag for dispute reason for support of recognized transactions.

Step 2: Retrieve Dispute Reason Workflow

Fetch the workflow configured in the platform for the particular dispute reason use the Get Dispute Reason Workflow API using the reasonIdentifier fetched from the Step 1 API response .

The response of this API includes the details of the workflow step configured for the dispute.

{
  "id": 1,
  "name": "POS UNAUTHORIZED FRAUD",
  "supportRecognizedTransaction": true,
  "description": "Non receipt of merchandise",
  "reasonIdentifier": "POS_UNAUTHORIZED_FRAUD",
  "supportMultipleTransactions": true,
  "paymentRail": "DEBIT_CARD",
  "workflow": [
    {
      "step": 1,
      "type": "NORMAL",
      "fields": [
        {
          "id": 1,
          "label": "Please provide amount of the dispute",
          "required": true,
          "inputTypeName": "INPUT_AMOUNT",
          "note": "a note for the field",
          "fieldIdentifier": "duplicate_charge_dispute_description",
          "disputeConfigurationRadioOptions": []
        },
        {
          "id": 2,
          "label": "input date",
          "required": true,
          "inputTypeName": "INPUT_DATE",
          "fieldIdentifier": "input_date_field",
          "disputeConfigurationRadioOptions": []
        },
        {
          "id": 3,
          "label": "input file is always optional",
          "required": true,
          "inputTypeName": "INPUT_FILE",
          "note": "File Input",
          "fieldIdentifier": "input_file",
          "disputeConfigurationRadioOptions": []
        },
        {
          "id": 4,
          "label": "Options",
          "required": false,
          "inputTypeName": "INPUT_RADIO",
          "note": "Options",
          "fieldIdentifier": "radio_options",
          "disputeConfigurationRadioOptions": [
            {
              "label": "xx",
              "value": "VAL"
            }
          ]
        }
      ],
      "nextStep": 2
    },
    {
      "step": 2,
      "type": "SUBMIT",
      "fields": [
        {
          "id": 5,
          "label": "Thank you for submitting your dispute. You should now receive a confirmation via telephone that we have on file. If you do not receive a confirmation during next 5 minutes, please reach out to our user care.",
          "required": false,
          "fieldIdentifier": "field_identifier_for_submit",
          "disputeConfigurationRadioOptions": []
        }
      ]
    }
  ]
}

Step 3: Create Dispute

Use the Create Dispute API for the dispute initiated based on the workflow step fetch from the Step 2 API response.

ParameterValue TypeExample ValueExplanation
reasonIdentifierIntegerPOS_UNAUTHORIZED_FRAUDUnique identifier of the dispute reason.
transactionsJSON[{"transactionId": 2}]Details for the dispute transaction
accountTypeStringDEPOSITType of the account for the disputed transaction.
accountIdInteger12Unique Identifier for the account associated with the transaction.
workflowDataJSON[{"fieldIdentifier": "disputeDate","value" : "2024-01-01"}]Workflow data for the entered by the user for dispute.

On the successful response will include the details of the unique identifier created for the dispute in the platform.

{
  "resourceId": "DISP-G1722-B5045-C7550-X8"
}