m2pfintech
API LibraryCustomer Management

Update customer details

Update an existing customer profile. Only the fields provided in the request body will be updated. All other fields remain unchanged. The entityId field is the only mandatory field for identifying the customer.

Important - Do not use this API to modify KYC details. This API is intended for updating contact information such as email, phone number, address, and name fields.

The profileId field can optionally be used to update the fee or limit profile associated with the customer card.

POST
/Yappay/business-entity-manager/updateentity

Authorization

BearerAuth TenantHeader
AuthorizationBearer <token>

JWT Bearer token obtained from the /auth/login endpoint

In: header

TENANT<token>

Tenant identifier provided by M2P (e.g. ENBDTABBY)

In: header

Request Body

application/json

entityId*string

Customer ID used for entity lookup. This is the only mandatory field.

Lengthlength <= 16
emailAddress?string

Updated email address. Only updated if provided in the request.

Lengthlength <= 50
contactNo?string

Updated contact number with dial code. Only updated if provided.

Lengthlength <= 15
firstName?string

Updated first name. Optional.

Lengthlength <= 30
lastName?string

Updated last name. Optional.

Lengthlength <= 30
address?string

Updated street address. Optional.

Lengthlength <= 100
city?string

Updated city. Optional.

Lengthlength <= 20
state?string

Updated state. Optional.

Lengthlength <= 20
country?string

Updated country. Optional.

Lengthlength <= 20
pincode?integer

Updated postal code. Optional.

specialDate?string

Updated date of birth in YYYY-MM-DD format. Optional.

Formatdate
profileId?string

Account or card profile ID. Updates the fee and limit profile associated with the customer card. Optional.

Lengthlength <= 30

Response Body

application/json

application/json

application/json

curl -X POST "https://api.m2p.com/Yappay/business-entity-manager/updateentity" \  -H "Content-Type: application/json" \  -d '{    "entityId": "ABCDEF",    "emailAddress": "abcdef@gmail.com",    "contactNo": "+9711111111"  }'
{
  "result": true,
  "exception": null,
  "pagination": null
}
{
  "result": null,
  "exception": {
    "detailMessage": "Customer Id should not be empty",
    "shortMessage": "Customer Id should not be empty",
    "errorCode": "Y1001",
    "languageCode": "en"
  },
  "pagination": null
}
{
  "result": null,
  "exception": {
    "detailMessage": "Not a registered Customer",
    "shortMessage": "Not a registered Customer",
    "errorCode": "Y109",
    "languageCode": "en"
  },
  "pagination": null
}

Register a new customer with card and wallet POST

Register and activate a customer in the prepaid program. This single API call creates a customer profile, issues a card (virtual or physical), and sets up a wallet. Field requirements are configuration-driven per tenant. Fields marked as Conditional depend on your tenant BusinessCustomFields settings including sor.model, customer.id.type, and unique.field configurations. For new card issuance, provide cardType as V (Virtual) or P (Physical). For activating a pre-printed card, provide the kitNo instead. Do not send both cardType and kitNo together for pre-printed card activation. If neither cardType nor kitNo is provided, the API returns an error. Idempotent on contactNo plus idNumber combination when tenant-level uniqueness check is enabled. Always Mandatory Fields - contactNo (always validated for uniqueness), business or businessType (at least one required), entityId. SOR Flow Dependent Fields - When SOR integration is enabled (sor.model = SOR_REG_REQUIRED or SOR_KYC_REQUIRED or SOR_KYC_OPTIONAL), firstName, lastName, gender, specialDate, emailAddress, address, city, state, pincode, kycStatus, programName, programType, and partnerCustomerId become mandatory. ID Validation - When BusinessCustomField customer.id.type is configured, idType and idNumber become mandatory. Validation rules apply per document type (e.g. Aadhaar uses Verhoeff algorithm). Uniqueness Validation - Configured via BusinessCustomField unique.field, controls how many registrations are allowed per contactNo or idNumber per day, month, year, or overall. Click to Pay Auto-Enrollment - When Click to Pay (CTP) is enabled for the tenant (BUSINESSCUSTOMFIELD click.to.pay.enable = Y|ALL), successful registration automatically triggers CTP enrollment with Visa. The CTP registration happens asynchronously and the customer's CTP status can be tracked via the CTP fetchEntityDetails or fetchRequestStatus APIs.

Get foreign exchange rate for currency conversion POST

Retrieve the current foreign exchange rate for converting between two currencies. The response includes the base exchange rate, applied markup percentage, effective rate after markup, and a validity window for the quoted rate. The rate quote is time-limited. Use it within the validTill timestamp to ensure the quoted rate is honored. After expiry, request a fresh rate. Common use cases include displaying conversion rates to customers before international transactions, calculating forex charges, and pre-authorization amount estimation.