Skip to main content
Optimization Protection

Generate a Zone PIN Key

Use the POST /keys endpoint to create a Zone PIN Key (ZPK), which is used to securely encrypt PIN data between trusted zones.

Key configuration requirements:

  • Set keyType to AES (Advanced Encryption standard).
  • Set keyCategory to ZPK (Zone PIN Key - Symmetric key used to encrypt PINs between zones).

The following table shows the required and optional fields for generating a ZPK:

ZPK required fields
Field name Description Required (R) or Optional (O)
keyType

The cryptographic key type. Valid value is:

  • AES - Advanced Encryption Standard
R
keyCategory

Key categories supported for key creation. Valid value is:

  • ZPK - Zone PIN Key
R
keyPurpose

The cryptographic purpose of the key. Valid value is:

  • ENCRYPTION - Key is used to encrypt/decrypt data. (default value)
O
futureActivationTimestamp

Indicates when the key becomes active and available for use.

Activation date/time as EPOCH timestamp (milliseconds since 1970-01-01T00:00:00Z). 

O
keyRotation.expirationTimestamp Expiry date for the key as EPOCH timestamp (milliseconds since 1970-01-01T00:00:00Z) O
keyRotation.count Number of records processed before rotation. O
metaData Optional custom metadata key-value pairs for keys. O

HTTP Method: POST
Endpoint: /keys
Scenario: Generating a ZPK

{
  "keyType": "AES",
  "keyCategory": "ZPK",
  "keyPurpose": "ENCRYPTION",
  "futureActivationTimestamp": 2752499200000,
  "keyRotation": {
    "expirationTimestamp": 2784035200000,
    "count": 1000000
  },
  "metadata": {
    "zone": "acquirer-network-A",
    "environment": "prod"
  }
}

Response:

{
  "activationTimestamp": 2752499200000,
  "keyCategory": "ZPK",
  "keyCreationTimestamp": 1791809608413,
  "keyExpirationTimestamp": 2784035200000,
  "keyId": "E5D1D7",
  "keyMaterial": {
    "keyBlock": "RD0144P0AB00E0000A0FE28EE269E8BB2DF3C242F9514BC18DBF52A41214531F2EEC06E1D2986BF7878AD24F91A2034BDA695FED2AA99CF5A66740214ABB8A93D1085A40706F77C97E5D1D7"
  },
  "keyPurpose": "ENCRYPTION",
  "keyRotation": {
    "count": 1000000,
    "expirationTimestamp": 2784035200000
  },
  "keyType": "AES",
  "owner": "JPMC",
  "requestId": "8200ea86-e0f8-41f8-bf48-0974ba461523",
  "responseCode": "ACCEPTED",
  "responseMessage": "Request completed",
  "status": "PENDING_ACTIVATION",
  "timestamp": 1791809608416
}
Is this page helpful?