m2pfintech
API LibraryCard Lifecycle

Set PIN V2

Enhanced version of Set PIN that uses AES-GCM encryption for the PIN block. The PIN must be encrypted using a three-step process. Step 1 - PIN Block Generation using ISO 9564 Format 0 encoding where the PIN is XORed with the PAN (card number). Step 2 - AES-GCM Encryption where the PIN block from step 1 is encrypted using the shared set-PIN key with a random 16-byte IV and 128-bit authentication tag. Step 3 - The final encrypted PIN block is Base64 encoded containing the IV prepended to the ciphertext. The expiryDate must match the card expiry date in MMYY format.

POST
/kit-manager/v2/setPin

Authorization

tenantAuth
tenant<token>

The DCMS tenant name for multi-tenant isolation. Every API call must include this header to identify the client organization.

In: header

Header Parameters

tenant*string

The DCMS client or tenant name for multi-tenant isolation.

Request Body

application/json

pin*string

AES-GCM encrypted PIN block. Generated by creating a Format 0 PIN block (PIN XORed with PAN), then encrypting with AES-GCM using the shared key, and finally Base64 encoding the result (IV + ciphertext).

kitNo*string

Kit number of the card for which PIN is being set.

entityId*string

Customer entity identifier who owns the card.

expiryDate*string

Card expiry date in MMYY format for validation.

Response Body

application/json

curl -X POST "https://api.dcms.example.com/v1/kit-manager/v2/setPin" \  -H "tenant: ACME_BANK" \  -H "Content-Type: application/json" \  -d '{    "entityId": "validatePin0",    "expiryDate": 729,    "kitNo": "4240181647",    "pin": "4faN/yNdT8E+5wVy/GlfTWYsVPHAYFPaPWDn+SSL59w="  }'
{
  "result": true,
  "exception": null,
  "pagination": null
}