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
Authorization
bearerAuth tenantId JWT Bearer token from the Authentication API
In: header
Your unique tenant identifier assigned during onboarding
In: header
Header Parameters
Your unique tenant identifier
Request Body
application/json
Customer identification to fetch all their cards
Cardholder's mobile number (optional if entityId is provided)
Unique entity identifier for the cardholder. Either entityId or mobile must be provided.
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.
