m2pfintech
API LibraryCard Management

Request a physical card for delivery

Request a physical card for a customer who currently has only a virtual card. The physical card will be manufactured and mailed to the provided delivery address.

The entityId and kitNo fields are explicitly validated by the backend. If requesting physical delivery, provide a complete delivery address in the addressDto.

The virtual card remains active until the physical card is activated by the customer. The same kitNo is used for both the virtual and physical card.

Address field constraints - Each address line (address1, address2, address3) allows maximum 35 characters, alphanumeric with spaces. City accepts only alphabetic characters without spaces. State accepts alphabetic characters with spaces. Postal code is 6 digits for India. The aliasName field (max 30 characters) is printed on the physical card.

Address formation for card printing - Version 1 (Indian card printers) - Each field max 35 chars. If any field exceeds limit, first 140 chars of address1 + address2 + city, plus first 35 chars of state. Version 2 (Non-Indian card printers) - Total 175 characters with tilde separator for line breaks, includes address1, address2, address3, city, state, country.

POST
/Yappay/business-entity-manager/requestPhysicalCard

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. Mandatory and explicitly validated.

Lengthlength <= 50
kitNo*string

Kit number of the existing virtual card. Mandatory and explicitly validated.

Lengthlength <= 20
addressDto?

Address details for physical card delivery. Conditional - required for delivery.

Response Body

application/json

application/json

curl -X POST "https://api.m2p.com/Yappay/business-entity-manager/requestPhysicalCard" \  -H "Content-Type: application/json" \  -d '{    "entityId": "123456789012",    "kitNo": "1234567890",    "addressDto": {      "address": [        {          "title": "DELIVERY",          "address1": "address1",          "address2": "address2",          "address3": "address3",          "fourthLine": "address4",          "city": "deliverycity",          "state": "deliverystate",          "country": "deliverycountry",          "pinCode": "123456",          "aliasName": "customer name"        }      ]    }  }'
{
  "result": true,
  "exception": null,
  "pagination": null
}

{
  "result": null,
  "exception": {
    "detailMessage": "Customer Id should not be empty",
    "shortMessage": "Empty EntityId",
    "errorCode": "Y1001",
    "languageCode": "en"
  },
  "pagination": null
}

Replace a lost or damaged card POST

Initiate card replacement when a card is lost, stolen, or damaged. Important - The old card MUST be blocked (using the block API with flag BL) before calling this API. The system automatically transfers the balance and transaction history from the old card to the new card. Digital wallet tokens remain linked to the customer. The new card inherits the same customer preferences as the old card. Card replacement process - Step 1: Block the old card using the lock/unlock/block API with flag BL. Step 2: Call this API with old and new kit numbers. Step 3: System automatically transfers balance and transaction history. Step 4: Digital wallet tokens are updated automatically.

Set multiple card preferences at once POST

Update multiple transaction channel preferences simultaneously for a customer card. This is the bulk alternative to the updatePreferenceExternal API and is recommended for initial preference setup to minimize the number of API calls. Only include the preferences you want to modify in the request body. Preferences not included will remain unchanged. All included preferences are updated at the same time. Changes take effect immediately. Boolean values control each channel - true to enable, false to disable. At least one preference should be provided in the request. Comparison with updatePreferenceExternal - setPreferences updates multiple preferences at once using boolean true/false values. updatePreferenceExternal updates one preference at a time using ALLOWED/NOTALLOWED strings. setPreferences requires fewer API calls for multiple changes.