m2pfintech

Upgrade Virtual Card to Physical

Upgrades an existing virtual card to a physical card. A physical card is embossed and dispatched against the supplied communication address, while the card account and balance are retained.

What this does

  • Maps the existing virtual card account to a new physical kit (kitNo).
  • Optionally applies a specific plastic design (plasticCodeDto).
  • Optionally locks the card on upgrade until the customer activates it (lockOnUpgrade).
  • Optionally seeds transaction preferences (domestic / international limits).

Notes

  • kitNo is mandatory — it identifies the physical kit being assigned.
  • If communicationAddress.usePrimaryAddress is true, the customer's primary address on file is used and the other address fields may be omitted.
  • Address fields are encrypted/masked in transit per PCI/PII handling.
PUT
/v1/cards/upgrade/physical

Authorization

bearerAuth tenantId
AuthorizationBearer <token>

JWT Bearer token from the Authentication API

In: header

X-TENANT-ID<token>

Your unique tenant identifier assigned during onboarding

In: header

Header Parameters

X-TENANT-ID*string

Your unique tenant identifier

Request Body

application/json

Physical card upgrade details

kitNo*string

Required. Physical kit number being assigned to the card.

Length1 <= length
communicationAddress?

Communication / mailing address. Address lines are encrypted and masked in transit.

plasticCodeDto?

Plastic design / code applied to the physical card.

lockOnUpgrade?boolean

When true, the card is locked on upgrade until the customer activates it.

Defaultfalse
preferences?

Domestic and international preference categories

Response Body

application/json

application/json

application/json

curl -X PUT "https://sandbox-api.m2pprepaid.com/prepaid/customer/v1/cards/upgrade/physical" \  -H "X-TENANT-ID: ACME_CORP" \  -H "Content-Type: application/json" \  -d '{    "kitNo": "20004574",    "lockOnUpgrade": false,    "communicationAddress": {      "address1": "123 Main Street",      "address2": "Apt 4B",      "city": "Chennai",      "state": "Tamil Nadu",      "country": "India",      "pin": "600001",      "usePrimaryAddress": false    },    "plasticCodeDto": {      "code": "PLASTIC001",      "description": "Standard card design"    }  }'
{
  "result": {
    "message": "Card upgraded to physical successfully"
  },
  "pagination": null
}

{
  "type": "https://www.m2pfintech.com/problem/constraint-violation",
  "title": "Method argument not valid",
  "status": 400,
  "message": "error.validation",
  "fieldErrors": [
    {
      "field": "mobile",
      "message": "Invalid contact",
      "objectName": "changeCardPin"
    }
  ]
}

{
  "type": "https://www.m2pfintech.com/problem/problem-with-message",
  "title": "Invalid Kit",
  "status": 409,
  "detail": "Invalid Kit",
  "message": "error.business",
  "businessCode": "PPCUST_018"
}