Update Customer Account Status
Changes the customer's account status. Only valid status transitions are allowed.
Valid Statuses
| Status | Description |
|---|---|
ACTIVE | Account is fully operational |
LOCKED | Temporarily locked (can unlock) |
BLOCKED | Blocked by admin (terminal for some transitions) |
FRAUD | Flagged for fraud |
INACTIVE | Account inactive |
CUSTOMER_BLOCKED | Blocked at customer request |
CREDIT_FREEZE | Credits blocked, debits allowed |
DEBIT_FREEZE | Debits blocked, credits allowed |
REFUND_ONLY | Only refund transactions allowed |
CLOSED | Account permanently closed |
EXPIRED | Account expired |
Invalid Transitions
Attempting an invalid transition (e.g., CREDIT_FREEZE → CREDIT_FREEZE) returns error
code PPCUST_032.
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. Customer entity ID
1 <= lengthRequired. Target status
"ACTIVE" | "LOCKED" | "BLOCKED" | "FRAUD" | "INACTIVE" | "CUSTOMER_BLOCKED" | "CREDIT_FREEZE" | "DEBIT_FREEZE" | "REFUND_ONLY" | "CLOSED" | "EXPIRED"Response Body
application/json
application/json
application/json
curl -X POST "https://sandbox-api.m2pprepaid.com/prepaid/customer/v1/customers/update/status" \ -H "X-TENANT-ID: ACME_CORP" \ -H "Content-Type: application/json" \ -d '{ "entityId": "750244137320000234050825", "status": "CREDIT_FREEZE" }'{
"result": {
"entityId": "750244137320000234050825",
"status": "CREDIT_FREEZE"
},
"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": "Invalid Status Transition from : CREDIT_FREEZE to CREDIT_FREEZE",
"status": 409,
"detail": "Invalid Status Transition from : CREDIT_FREEZE to CREDIT_FREEZE",
"message": "error.business",
"businessCode": "PPCUST_032"
}Process Account Action State Transition (Checker) POST
Approves or rejects a **pending** account action request as the **checker** step of the maker-checker workflow. The checker must be a different user than the one who created the original request (maker). ### State Machine ``` PENDING ──(APPROVED)──▶ APPROVED PENDING ──(REJECTED)──▶ REJECTED ``` Any other transition (e.g. trying to approve an already-approved request) returns a 409 `invalidStateTransitionError`. ### Notes - `id` is the unique maker-checker record ID returned in the `result.id` field of the `/v1/accounts/update` response. - `userId` must be the checker's user ID and **cannot** match the maker's `sourceUser`. - `reason` is an optional free-text array explaining the checker's decision.
Update Customer Profile POST
Updates customer profile details including personal information, address, communication preferences, and identity documents. ### Updatable Fields - **Personal**: firstName, lastName, gender, DOB, email - **Address**: permanentAddress, communicationAddress - **Identity**: PAN, nationalIdentity documents - **Banking**: cbsAccountNumber, CIF, customerId - **Risk**: riskRating, customerOccupation, politicallyExposed - **Custom**: customerAdditionalDetails (key-value metadata) ### Important Notes - `entityId` is required and identifies which customer to update - Only provided fields are updated — omitted fields remain unchanged - Status changes should use the dedicated Update Status endpoint
