m2pfintech

Fetch All Cards for a Customer

Retrieves all prepaid cards associated with a customer. This returns a list of all cards (active, inactive, blocked, expired) linked to the customer's account.

Response Includes (per card)

  • Card identifiers (kit number, masked card number)
  • Card product details (product name, type, network)
  • Card status (ACTIVE, LOCKED, BLOCKED, etc.)
  • Card expiry date
  • Associated wallet/account details
  • Card preferences (international transactions, contactless, etc.)

When to Use

  • Card Listing: Display all cards for a customer in your app
  • Card Selection: Let the customer choose which card to perform operations on
  • Multi-Card Dashboard: Show card portfolio with status and balances
POST
/v1/customers/fetch-all-cards

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

Header Parameters

X-TENANT-ID*string

Your unique tenant identifier

Request Body

application/json

Customer identification to fetch all their cards

mobile?

Cardholder's mobile number (optional if entityId is provided)

entityId?string

Unique entity identifier for the cardholder. Either entityId or mobile must be provided.

issuedBy?string
tenant?string
type?string

Response Body

application/json

application/json

application/json

curl -X POST "https://sandbox-api.m2pprepaid.com/prepaid/customer/v1/customers/fetch-all-cards" \  -H "X-TENANT-ID: ACME_CORP" \  -H "Content-Type: application/json" \  -d '{    "entityId": "798782647420001622070825"  }'

{
  "result": [
    {
      "kitNo": "910000031",
      "maskedCardNumber": "5231XXXXXXXX0015",
      "productName": "Forex Travel Card",
      "productType": "Forex",
      "cardNetwork": "VISA",
      "cardStatus": "ACTIVE",
      "expiryDate": "11/2029",
      "issuedDate": "2025-01-15",
      "wallets": [
        {
          "accountId": "17556437212850072",
          "currency": "USD",
          "balance": 1250,
          "status": "ACTIVE"
        },
        {
          "accountId": "28667548323960183",
          "currency": "EUR",
          "balance": 500,
          "status": "ACTIVE"
        }
      ]
    },
    {
      "kitNo": "910000032",
      "maskedCardNumber": "5231XXXXXXXX0028",
      "productName": "GPR Prepaid Card",
      "productType": "GPR",
      "cardNetwork": "RuPay",
      "cardStatus": "ACTIVE",
      "expiryDate": "06/2028",
      "issuedDate": "2024-06-01",
      "wallets": [
        {
          "accountId": "39778659434071294",
          "currency": "INR",
          "balance": 8500,
          "status": "ACTIVE"
        }
      ]
    }
  ],
  "pagination": null
}

{
  "type": "https://www.m2pfintech.com/problem/problem-with-message",
  "title": "Customer does not exist",
  "status": 409,
  "detail": "No customer found for the given search criteria",
  "message": "error.http.400",
  "businessCode": "PPCUST_002",
  "cause": {},
  "errorCode": "string",
  "errors": [
    "string"
  ],
  "languageCode": "string",
  "localizedMessage": "string",
  "suppressed": [
    {}
  ]
}
{
  "type": "https://www.m2pfintech.com/problem/problem-with-message",
  "title": "Customer does not exist",
  "status": 409,
  "detail": "Customer does not exist for id: 798782647420001622070825",
  "message": "error.business",
  "businessCode": "PPCUST_002"
}

Perform Card Action (Unified API) POST

A unified API to perform various card actions. This is the **maker** step in the maker-checker workflow — the request is created and may require approval before execution. ### Supported Actions (requestStatus) | Action | Description | |--------|-------------| | `ACTIVE` | Activate a newly issued card | | `LOCKED` | Temporarily lock a card | | `UNLOCKED` | Unlock a previously locked card | | `BLOCKED` | Permanently block a card | | `REPLACED` | Replace a damaged/lost card | | `UPDATE_PREFERENCE` | Update card transaction preferences | ### Maker-Checker Flow 1. **Create Request** (this API): Creates a card action request with `currentStatus: CREATED` 2. **Approve/Reject** (State Transition API): Authorized user approves or rejects the request 3. **Execution**: Approved requests are automatically processed ### When to Use Use this API when your organization requires **approval workflows** for card operations. For direct card operations without approval, use the simpler Card Status Update API. ### reasonCode in Maker-Checker - Provide `reasonCode` + `reasonMsg` for actions with card-usage impact: `LOCKED`, `UNLOCKED`, `BLOCKED`, `REPLACED`. - For `UPDATE_PREFERENCE`, use policy-centric codes like `LIMIT_TUNING`, `RISK_POLICY_UPDATE`, `CUSTOMER_REQUEST`. - `requestStatus` drives execution; `reasonCode` is for audit/reporting and operational context.

Check Card Balance POST

Retrieves the real-time balance for a specific card. For multi-currency cards (forex), returns the balance across all wallets/currencies. ### Key Differences from Wallet Balance API - This API works at the **card level** — returns balances for all wallets on the card - The Wallet Balance API works at the **wallet level** — returns balance for a specific wallet - Use this API for a card overview; use Wallet Balance for specific currency lookups ### Response Returns the available balance, held amounts, and wallet details for the specified card.