De-Duplicate Check (PAN & Mobile)
Checks if a customer with the given PAN and/or mobile number already exists. This is a pre-issuance validation step to prevent duplicate forex card issuance.
Response Interpretation
| Mobile | PAN | Meaning |
|---|---|---|
null | null | ✅ No duplicate — safe to proceed |
| Masked mobile | null | ⚠️ Mobile match found, no PAN match |
null | Masked PAN | ⚠️ PAN match found, no mobile match |
| Masked mobile | Masked PAN | ⚠️ Both match — same customer exists |
Masked Values
Returned PAN/mobile values are partially masked for privacy:
- Mobile:
709****999 - PAN:
BMX****23B
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. PAN number (format: ABCDE1234F)
1 <= lengthDate of birth
Card kit number
Customer entity ID
Response Body
application/json
application/json
curl -X POST "https://sandbox-api.m2pprepaid.com/prepaid/customer/v1/customers/de-dupe/mobile-pan-details" \ -H "X-TENANT-ID: ACME_CORP" \ -H "Content-Type: application/json" \ -d '{ "mobile": { "value": "7099101999", "countryCode": 91 }, "pan": "ARXPB1111Q" }'{
"result": {
"mobile": null,
"pan": null,
"dob": null
},
"pagination": null
}{
"type": "https://www.m2pfintech.com/problem/constraint-violation",
"title": "Method argument not valid",
"status": 400,
"message": "error.validation",
"fieldErrors": [
{
"field": "pan",
"message": "PAN is not valid"
}
]
}Create Account Action Request (Maker) POST
Creates an account action request as the **maker** step of a maker-checker workflow. The request is created in a `PENDING` state and stays pending until a separate **checker** approves or rejects it via the account state-transition API. ### Action Types | `actionType` | Description | |--------------|-------------| | `CLOSURE` | Close the account. Optionally pull back the residual balance to a bank account (`bankDetails` + `autoPullback`). | | `STATUS_UPDATE` | Change the account status. | | `FREEZE` | Freeze the account (block debits/credits per product config). | | `UNFREEZE` | Reverse a freeze and restore the account. | | `LIMIT_UPDATE` | Update account-level limits. | ### Notes - `customerEntityId` and `accountEntityId` are mandatory. - For `CLOSURE` with balance pull-back, supply `bankDetails` and set `autoPullback: true`. - `updateReason` is free text, capped at 512 characters.
Fetch Customer by UniqueId or EntityId POST
Retrieves customer details using either the **customer unique ID** or the **entity ID**. Returns the same comprehensive profile as the Fetch Customer endpoint. ### Use Case - When you have the entity ID from a webhook or transaction response - Quick lookup without needing mobile/PAN details
