Issue Wallet/Prepaid Card
Creates a new card/wallet issuance for GPR or Wallet product types. This is the primary issuance endpoint for individual customer onboarding.
Flow
- Submit issuance request with customer details + product info
- System validates KYC, hierarchy, and product eligibility
- If auto-approval is configured → card is created immediately
- If maker-checker is enabled → request goes to
PENDING_APPROVAL - On success → customer profile + card/wallet are created
GPR Issuance
- Requires:
applicationNumber, customer details, product, issuer - Card types: Physical (Perso/Non-Perso) or Virtual
- Initial load amount optional
Wallet Issuance
- Requires:
applicationNumber, customer details (with entityId for existing), product, issuer - No physical card — wallet-only account
- Purchaser details supported (corporate buying for employee)
De-dupe Handling
If a customer with the same mobile/PAN already has an account for this product,
the system returns a 409 with de-dupe error.
Server
Use the middleware server URLs for this endpoint.
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. Unique application number
1 <= length"Single" | "Bulk"true for new customers, false for existing
Customer details for card issuance
Required. List of card beneficiaries
1 <= itemsIssuance fee and tax breakdown. All values must be obtained from the issuance fee summary API and echoed back — do not compute these fields independently.
Deprecated Fields (do not use for new integrations)
fees→ usefeeDetails.LOAD_FEEorfeeDetails.REGISTRATION_FEEissuanceFee→ usefeeDetails.REGISTRATION_FEE.feeAmountissuanceTax→ usefeeDetails.REGISTRATION_FEE.taxAmount
Issuer hierarchy details
Response Body
application/json
application/json
application/json
curl -X POST "https://sandbox-api.m2pprepaid.com/prepaid/middleware/v1/issuances/" \ -H "X-TENANT-ID: ACME_CORP" \ -H "Content-Type: application/json" \ -d '{ "applicationNumber": "508242014", "issuanceDetails": { "product": { "name": "TATAPROD", "productId": "s8RpmmrN9J", "productType": "GPR" }, "embosseType": "Perso", "cardType": "Virtual", "amount": 0, "customer": { "mobile": { "value": "7931002534", "countryCode": 91 }, "pan": "SDAZS2534Q", "firstName": "Indu", "lastName": "Priya", "dob": "16/01/1993", "gender": "Female", "email": "ip@m2pfintech.com", "customerId": "7904799901", "customerType": "ETB", "address": { "address1": "4/68F", "address2": "MAIN ROAD", "city": "Chennai", "state": "Tamilnadu", "pin": "600032", "country": "INDIA" }, "kyc": { "kycType": "Full KYC", "referenceId": "50082534" } } }, "issuer": { "hierarchyId": "qappregsepujc7ovbkpa", "issuerTenant": "qappregsep", "hierarchyLevel": "qappregsepujc7ovbkpa" } }'{
"result": {
"issuance": {
"currentStatus": "APPROVED",
"applicationNumber": "508242014",
"issuanceType": "Single",
"customer": {
"firstName": "Indu",
"lastName": "Priya",
"dob": "16/01/1993",
"gender": "Female",
"email": "ip@m2pfintech.com",
"mobile": {
"value": "7931002534",
"countryCode": 91
},
"pan": "SDAZS2534Q",
"customerId": "7904799901",
"customerType": "ETB"
},
"beneficiaries": [
{
"product": {
"productId": "s8RpmmrN9J",
"name": "TATAPROD",
"productType": "GPR"
},
"embosseType": "Perso",
"firstName": "Indu",
"lastName": "Priya",
"cardType": "Virtual",
"kit": "660000025",
"cardNumber": "736544XXXXXX0431",
"expDate": "2030-05-31"
}
],
"summary": {
"feeWaiver": "NOTALLOWED",
"value": 0,
"fees": 0,
"tax": 0,
"total": 0
},
"issuer": {
"hierarchyId": "qappregsepujc7ovbkpa",
"tenant": "qappregsepujc7ovbkpa",
"issuerTenant": "qappregsep",
"typeOfSOR": "M2P",
"typeOfFRM": "M2P"
}
}
},
"pagination": null
}{
"type": "https://www.m2pfintech.com/problem/problem-with-message",
"title": "Bad Request",
"status": 400,
"detail": "Application number is required",
"message": "error.http.400"
}{
"type": "https://www.m2pfintech.com/problem/problem-with-message",
"title": "De-Dupe Check Failed as MOBILE Already Exists",
"status": 409,
"detail": "De-Dupe Check Failed as MOBILE Already Exists",
"message": "error.business",
"businessCode": "PP_CORP_131"
}Issue Forex Card POST
Creates a new forex card issuance with multi-currency wallet allocations, customer details, travel information, and supporting documents. ### Key Features - Multi-currency wallets (USD, EUR, GBP, SGD, etc.) - Automatic TCS calculation based on LRS limits - Support for primary + backup cards - Comprehensive fee breakdown (issuance fee, forex margin, GST, TCS) - Document upload (passport, visa, air ticket, A2 form, purpose proof) ### Required Fields - `applicationNumber`: Unique per issuance - `customer`: Full customer profile with travel details - `product`: Valid forex product - `plasticCode`: Card design/BIN configuration - `walletAmount`: Currency allocation with conversion rates - `issuer`: Hierarchy details ### Issuance Modes | Mode | Description | |------|-------------| | `Online` | Self-service digital channel | | `Branch` | Branch-initiated with teller ID | | `Partner API` | Partner integration | ### Documents (Query Parameters) Upload supporting documents as binary files via query parameters: - `passport`, `visa`, `airTicket`, `applicationForm` - `purposeProof`, `educationalLoanLetter`, `a2Form` - `feeWaiverApproval`, `relationshipProof`, `discountProof` ### Server Use the **corporate** server URLs for this endpoint.
Issue Wallet POST
Creates a wallet issuance request for corporate beneficiaries. Supports single and bulk issuance scenarios. ### Use Cases - Corporate creating wallets for employees (meal cards, expense wallets) - Bulk wallet creation for campaign distribution - Gift wallets for events/promotions ### Maker-Checker Flow - Request goes through approval workflow - Use `state-transition` endpoint to approve/reject ### Server Use the **corporate** server URLs for this endpoint.
