m2pfintech
API LibraryDispute Management

Upload Dispute Document

Uploads a supporting document for an existing dispute. Accepts file uploads via multipart form data.

Supported File Types

  • PDF, JPEG, PNG
  • Maximum file size: 10 MB
POST
/v1/disputes/upload-file/{id}

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

id*string

Dispute ID

Header Parameters

X-TENANT-ID*string

Your unique tenant identifier

Request Body

multipart/form-data

file*file

Document file to upload

Formatbinary

Response Body

application/json

application/json

application/json

curl -X POST "https://sandbox-api.m2pprepaid.com/prepaid/corporate/v1/disputes/upload-file/DISP-2026-001" \  -H "X-TENANT-ID: ACME_CORP" \  -F file="string"
{
  "result": [
    {
      "result": [],
      "pagination": {
        "list": true,
        "pageSize": 0,
        "pageNo": 0,
        "totalPages": 0,
        "totalElements": 0
      }
    }
  ],
  "pagination": {
    "list": true,
    "pageSize": 0,
    "pageNo": 0,
    "totalPages": 0,
    "totalElements": 0
  }
}

{
  "type": "https://www.m2pfintech.com/problem/constraint-violation",
  "title": "Method argument not valid",
  "status": 400,
  "message": "error.validation"
}

{
  "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": [
    {}
  ]
}

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

Calculate Forex Fee Summary POST

Calculates and returns a detailed fee breakdown for forex card operations. Use this API to preview all applicable fees, taxes, and the total payable amount **before** initiating an issuance, load, or reload transaction. ### How It Works 1. Specify which fee types to include (issuance, load, reload, etc.) using boolean flags 2. Provide the hierarchy ID (your corporate/branch identifier) and product details 3. The API calculates all applicable fees based on your configured fee structure 4. Returns a comprehensive breakdown including net value, fees, taxes, TCS, and total amount ### Key Business Rules - Fee structures are configured per hierarchy (corporate/branch level) - Product type and load amount affect the fee calculation - Promotional codes can modify fee structures if configured - Fee waiver flag allows authorized users to waive fees for specific transactions - Conversion GST is calculated on the forex markup and returned separately ### Common Use Cases | Scenario | Flags to Set | |----------|-------------| | New card issuance with initial load | `issuanceFeeApplied=true`, `loadFeeApplied=true`, `conversionGstApplied=true` | | Subsequent reload | `reLoadFeeApplied=true`, `conversionGstApplied=true` | | Card replacement | `cardReplacementFeeApplied=true` | | Card closure with pullback | `cardClosureFeeApplied=true`, `pullbackFeeApplied=true` |