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"
}Get Forex Conversion Rate for Issuance POST
Retrieves the currency conversion rate for use during forex card issuance. The rate includes product-level markups and any applicable promotional discounts. ### Response Fields - `conversionRate`: The effective rate applied to the transaction - `netAmount`: Total INR equivalent after applying the rate - `conversionGst`: GST on the currency conversion - `discountAmount`: Discount applied (if promotional rate active) ### Note Use this rate when populating the `walletAmount` array in the issuance request.
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.
