Credit/Debit Prepaid Card
Loads (credits) or debits a GPR (General Purpose Reloadable) card holder's wallet. This is the primary API for managing card balances for GPR, Gift, and NCMC products.
Supported Operations
- CREDIT: Add funds to the cardholder's wallet
- DEBIT: Remove funds from the cardholder's wallet (partial or full)
Debit Types
For debit operations, specify debitTransactionType:
PARTIAL_DEBIT— Withdraw a specific amountFULL_DEBIT— Withdraw entire balanceFULL_DEBIT_WITH_CLOSURE— Withdraw entire balance and close the account
Maker-Checker
This API creates a load request that may go through maker-checker approval.
The currentStatus in the response indicates the processing state:
CREATED→ Pending approvalAPPROVED→ Processed successfully
Key Fields
hierarchyId: The branch/corporate ID initiating the loadkitNo: The card kit number to be loadedwallet.accountId: The specific wallet to creditproduct.productType: GPR, Gift, or GPR+NCMC
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
Required. Branch/corporate hierarchy ID
1 <= lengthSingle for individual load, Bulk for batch processing
"Single" | "Bulk"Overall transaction type
"CREDIT" | "DEBIT"Array of individual card load details
Required when feeWaiver = ALLOWED. Upload the approval document using the
file upload API and pass the returned fileName and filePath here.
The platform validates the document exists before processing the transaction.
Ignored when feeWaiver = NOTALLOWED.
Custom attributes for additional metadata
int32int32Response Body
application/json
application/json
application/json
curl -X POST "https://sandbox-api.m2pprepaid.com/prepaid/customer/v1/card-holder-loads/" \ -H "X-TENANT-ID: ACME_CORP" \ -H "Content-Type: application/json" \ -d '{ "hierarchyId": "90009", "cardTypeEnum": "Single", "transactionType": "CREDIT", "cardHolderLoadDetails": [ { "mobile": { "value": "9876543210", "countryCode": 91 }, "entityId": "476843769320000001160925", "kitNo": "320000001", "amount": 10000, "description": "Monthly salary load", "product": { "productId": "PROD001", "productType": "GPR" }, "wallet": { "accountId": "17556437212850072" }, "transactionType": "CREDIT" } ] }'{
"result": {
"id": "QED4hfJBh2",
"currentStatus": "CREATED",
"cardHolderLoadDetails": [
{
"entityId": "476843769320000001160925",
"kitNo": "320000001",
"amount": 10000,
"status": "CREATED",
"txnStatus": "SUCCESS"
}
]
},
"pagination": null
}{
"type": "https://www.m2pfintech.com/problem/problem-with-message",
"title": "Bad Request",
"status": 400,
"detail": "Unable to convert http message",
"message": "error.http.400"
}{
"type": "https://www.m2pfintech.com/problem/problem-with-message",
"title": "Hierarchy does not exist for the given Id",
"status": 409,
"detail": "Hierarchy does not exist for the given Id",
"message": "error.business",
"businessCode": "PP_CORP_002"
}Approve/Reject Unified Issuance (v2) POST
Maker-checker state transition endpoint for v2 unified issuances. Use this to approve or reject issuances that are in `CREATED` or `PENDING_APPROVAL` status. ### Flow 1. Fetch issuance by status to get the `id` 2. Submit state-transition with `id` and `action` (APPROVED/REJECTED) 3. On APPROVED → system processes issuance → status becomes SUCCESS 4. On REJECTED → issuance is rejected and no cards are created ### Server Use the **corporate** server URLs for this endpoint.
Load Corporate Pool Wallet POST
Creates a new load transaction for crediting or debiting **corporate hierarchy pool wallets**. This is used to manage the master pool from which individual cardholder loads are funded. ### Corporate Pool vs Card Holder Load - **Corporate Pool Load**: Funds the corporate/branch wallet (the "pool") - **Card Holder Load**: Loads an individual cardholder's card from the pool ### Flow 1. Bank credits the corporate pool wallet (this API) 2. Corporate/branch loads individual cards from the pool (Card Holder Load API) ### Maker-Checker Pool loads typically require approval. The response `currentStatus` will be `CREATED` until approved by a checker.
