m2pfintech

Fetch Dispute Reason Codes by Network

Retrieves dispute reason codes filtered by a specific card network. Use this endpoint when you know the card network (VISA, RuPay, Mastercard, etc.) and want to show only the applicable reason codes.

Network IDs

IDNetwork
1VISA
2RuPay
3UPI
4NETC (FASTag)
5NFS (ATM)
6Mastercard
GET
/v1/disputes/fetch-reason-codes/network/{networkId}

Authorization

bearerAuth tenantId
AuthorizationBearer <token>

JWT Bearer token from the Authentication API

In: header

X-TENANT-ID<token>

Your unique tenant identifier assigned during onboarding

In: header

Path Parameters

networkId*integer

Card network identifier. Use: 1=VISA, 2=RuPay, 3=UPI, 4=NETC, 5=NFS, 6=Mastercard

Value in1 | 2 | 3 | 4 | 5 | 6

Header Parameters

X-TENANT-ID*string

Your unique tenant identifier

Response Body

application/json

application/json

curl -X GET "https://sandbox-api.m2pprepaid.com/prepaid/corporate/v1/disputes/fetch-reason-codes/network/1" \  -H "X-TENANT-ID: ACME_CORP"

{
  "result": [
    {
      "id": 6,
      "reasonCode": "10.1",
      "reasonCodeDesc": "10.1 - EMV Liability Shift Counterfeit Fraud",
      "status": true
    },
    {
      "id": 7,
      "reasonCode": "10.2",
      "reasonCodeDesc": "10.2 - EMV Liability Shift Non-Counterfeit Fraud",
      "status": true
    },
    {
      "id": 8,
      "reasonCode": "10.3",
      "reasonCodeDesc": "10.3 - Other Fraud: Card Present Environment",
      "status": true
    },
    {
      "id": 17,
      "reasonCode": "11.2",
      "reasonCodeDesc": "11.2 - Declined Authorization",
      "status": true
    },
    {
      "id": 25,
      "reasonCode": "12.6.1",
      "reasonCodeDesc": "12.6.1 - Duplicate Processing",
      "status": true
    },
    {
      "id": 40,
      "reasonCode": "13.1",
      "reasonCodeDesc": "13.1 - Merchandise / Services Not Received",
      "status": true
    },
    {
      "id": 45,
      "reasonCode": "13.6",
      "reasonCodeDesc": "13.6 - Credit Not Processed",
      "status": true
    }
  ],
  "pagination": null
}

{
  "type": "https://www.m2pfintech.com/problem/problem-with-message",
  "title": "Duplicate Dispute Transaction Registration Attempt!",
  "status": 409,
  "detail": "Duplicate Dispute Transaction Registration Attempt!",
  "message": "error.http.400",
  "businessCode": "50009",
  "cause": {},
  "errorCode": "string",
  "errors": [
    "string"
  ],
  "languageCode": "string",
  "localizedMessage": "string",
  "suppressed": [
    {}
  ]
}

Fetch All Dispute Reason Codes GET

Retrieves the complete list of dispute reason codes across all card networks. Use this endpoint to populate a reason code dropdown in your dispute filing UI. ### Response Returns a flat list of all active reason codes. Each reason code includes: - `id`: Internal identifier - `reasonCode`: The network-specific reason code (e.g., "13.1" for VISA) - `reasonCodeDesc`: Human-readable description of the dispute reason - `status`: Whether the reason code is currently active ### Tip If you need reason codes for a specific network only, use the `/v1/disputes/fetch-reason-codes/network/{id}` endpoint instead.

Raise a Dispute POST

Raises a formal dispute for a specific transaction on behalf of a cardholder. The dispute is submitted to the card network for investigation and resolution. ### How It Works 1. **Identify the Transaction**: Get the transaction details from the Transaction History API 2. **Select Reason Code**: Use the Fetch Reason Codes API to get applicable codes for the card network 3. **Submit Dispute**: Call this API with the transaction details and reason code 4. **Track Status**: A complaint ID is returned for tracking; use webhooks for status updates ### Key Business Rules - Each transaction can only be disputed once (duplicate disputes are rejected) - The `reasonId` must be valid for the card's network type - The `customerIdentificationId` should be the cardholder's entity ID or unique customer ID - Transaction details (`transactionDtls`) must include the original transaction identifier (`tranId`) - The dispute amount can be equal to or less than the original transaction amount - Disputes must be raised within the network-specific time limit (typically 120 days from transaction) ### Required Fields in Transaction Details The `transactionDtls` object requires at minimum: - `tranId`: Original transaction ID (from transaction history) - `tranAmt`: Original transaction amount - `disputeAmt`: Amount being disputed (≤ transaction amount) - `custMobile`: Cardholder's mobile number - `entityId`: Cardholder's entity ID - `kitNo`: Card kit number