---
title: "Get nominal encrypted card data for embossing V2 [beta]"
method: POST
path: "/embossing/v2/cards/generate-embossing"
tags: ["Embossing encrypted"]
---

# Get nominal encrypted card data for embossing V2 [beta]

`POST /embossing/v2/cards/generate-embossing`

Get encrypted card embossing data. 

Issuers who do their own embossing can use this endpoint to get a card's data, which needs to be encrypted as per regulations.

This endpoint uses AES256 with the GCM mode, and randomly generates the initialization vector, returning it in the response. AES-256 GCM is an authenticated encryption mode that uses the Advanced Encryption Standard (AES) with a 256-bit key in Galois/Counter Mode (GCM) to provide both confidentiality and integrity for data. The Additional Authenticated Data (AAD) parameter used is the organization/tenant ID.  AAD, in AES-GCM, is unencrypted data that is authenticated alongside the ciphertext to ensure the message's integrity and authenticity. 



**To use this endpoint:**
  * Open a [Jira ticket](https://developers.pismo.io/pismo-docs/docs/opening-a-service-desk-ticket) with type = **Settings** and ask to use on-demand embossing.
  * Generate and register a symmetric key with Pismo: open a Jira ticket with type = **Settings** and request an asymmetric key (RSA 2048 PKCS1) to send the symmetric key.

While the return values are shown as JSON, they are encrypted and not returned as clear text.

The endpoint generates a [Card embossing notification received](https://developers.pismo.io/events/docs/cards-embossing-1) event.

**Notes:** 

 * This endpoint requires an account token - an access token encoded with a Pismo account ID. 

 * This is a PCI endpoint, use the https://gw-pci.pismolabs.io environment.

## Request body

- GetEncryptedCardDataRequest2
  - `card_id` integer, required — Enrolled card ID
  - `key_id` string, required — Encryption key ID to embossing, used in conjunction with the initial vector value.

## Response `200`

Encrypted card embossing data (shown here as unencrypted JSON)

- EncryptedCardContent2
  - `org_id` string — Organization ID
  - `card_id` integer — ID of card to create relationship for
  - `account_id` integer — Account ID
  - `customer_id` integer — Pismo customer ID.
  - `program_id` number — Pismo program ID.
  - `embossing_custom_field` string — For physical cards. Additional information for embossing company. For example: tracking number or whether the card should be plastic or metal. You can use this field for any embossing needs specific to your business. Whatever is sent must be agreed upon with the embosser&mdash;what to send, what values to send, what format to send, what size to send for each value, and so on.
  - `iv` string — Initial vector (IV) value, needs to be 16 bytes and hexadecimal. An IV is a random or pseudo-random value used as the starting point for an encryption algorithm to generate a unique cipher text for each message. The IV is used in combination with a secret key (`key_id`) to ensure that the same message encrypted with the same key does not result in the same cipher text.
  - `encrypted_card_data` string — Encrypted card data When decrypted, this field will have the following JSON: * **`card_number`** type: string description: Primary Account Number (PAN) * **`printed_name`** type: string description: Printed/embossed card holder name. * **`expiration_date`** type: string description: Card expiration date (format:yymm) * **`pinblock`** type: string description: PINBlocks are 64-bit strings that encode a PIN ready for encryption and secure transmission in banking networks. PIN block ISO 9564-1 format 0. It contains both the PIN and additional data needed to encrypt it for transmission. The PIN block is typically encrypted using a secure cryptographic algorithm to prevent unauthorized access or tampering during transmission. * **`cvv`** type: string description: | Card Verification Value (CVV) is a three- or four-digit security code that is printed on payment cards to help verify that the cardholder is the one making a transaction. * **`cvv2`**: type: string description: | Card Verification Value 2 (CVV2) is also a three-digit code printed on the back of the card. While CVV and CVV2 are both three-digit codes, CVV is numeric only, while CVV2 can contain letters and numbers. * **`service_code_cvv1`**: type: string description: | Service code for the card verification value 1 (CVV1) is a three-digit code that is encoded on the magnetic stripe of a payment card and is used to verify the card's authenticity during a transaction. It is different from the CVV2 or CVC2 codes, which are three- or four-digit codes printed on the back of the card and used for online or phone transactions. * **`service_code_cvv2`**: type: string description: | Service code for the card verification value 2 (CVV2) is a three- or four-digit security code. It is a security feature that helps verify that the card is physically present during card-not-present transactions. It is not encoded on the card's magnetic stripe. * **`service_code_icvv`**: type: string description: | Service code for the ICVV (Issuer Controlled Card Verification Value) is a dynamic security code the issuing bank generates generated and is used to verify the payment card authenticity during transactions. * **`track2_chip`**: type: string description: | Analogous to the `track2_magnetic_stripe`, but instead of being recorded on the magnetic stripe it is stored inside the chip. Instead of the CVV2, which is included on the magnetic stripe's track 2, the chip (and therefore this field) contains the iCVV. The same applies for the service code: on the magnetic track2 it `service_code_cvv2`, but here it is `service_code_icvv`. * **`track1_magnetic_stripe`**: type: string description: | Track 1 of the card's magnetic stripe located on the back of the card and is read by card readers and point-of-sale (POS) terminals. It contains several fields of information, including the cardholder's name, account number, expiration date, and other identifying information. * **`track2_magnetic_stripe`**: type: string description: | Track 2 of the magnetic stripe is similar to track 1 magnetic stripes but contains less information and include only the cardholder's account number, expiration date, and a discretionary data field.

## Other responses

- `400` — Bad Request
- `401` — Access token is missing or invalid
- `404` — Not found
- `500` — Internal server error

---

[API](https://skmtc.net/pismo/apis/platform-authentication.md) · [All operations](https://skmtc.net/pismo/apis/platform-authentication/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/pismo/platform-authentication/revisions/935b62e16de4/schema)
