> For the complete documentation index, see [llms.txt](https://docs.payments.thalescloud.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.payments.thalescloud.io/central-issuance/implement-central-issuance/card-order/graphical-personalization.md).

# Graphical personalization

<figure><img src="/spaces/ol7FqojHqm5it3effNc4/files/IAGdssO31iLC24y4eUnn" alt="Example of printed fields on a physical card (graphical personalization)."><figcaption><p>Example of graphical personalization on a physical card</p></figcaption></figure>

D1 prints text, images, and barcodes on the front and back of a physical card during personalization. D1 uses your D1 API request and the graphical configuration defined during D1 onboarding.

### What D1 can print

Typical printed fields include:

* End user name
* Primary Account Number (PAN)
* Expiry date
* Card security code (CSC, also known as CVV2)
* Optional elements such as logos, product mentions (for example, `"Credit"`), support phone numbers, and member IDs

Whether a field is required depends on your card product and graphical configuration. Placement (front/back), fonts, and render types are set during D1 onboarding.

{% hint style="warning" %}
Treat PAN and CSC as sensitive card data.

* Do not log these values.
* Do not expose them outside controlled channels.
* Do not expose them digitally (for example, in logs, analytics, monitoring, or support tooling).
* Never store CSC after personalization.
  {% endhint %}

### Inputs used for personalization

Required D1 API inputs:

* `cardProductId`: Card product identifier configured during D1 onboarding.
* `encryptedData.pan`: Primary Account Number (PAN).
* `encryptedData.exp`: Expiry date, typically `YYMM` (for example, `2906`).
* `encryptedData.name`: End user name to print on the card.

Optional D1 API inputs:

* `encryptedData.secondName`: Secondary printed name line (if supported by the artwork).
* `cardDesign`: Object controlling artwork and dynamic graphical content.
  * `cardImage` (Optional): Identifier of an end user image for picture card programs (for example, AllAboutMe, SketchMyCard, and BrandMyCard).
  * `images` (Optional): Additional image identifiers to print on the card (for example, program logos).
  * `customLines` (Optional): Extra text lines to print (for example, `"Credit"`).
  * `memberId` (Optional): Program, affinity, or membership identifier to print as text or a barcode. Barcode formats depend on your configuration (for example, Code 39 and Code 128).

Conditional D1 API inputs:

* `encryptedData.cvv2`: Card security code (CSC, also known as CVV2). If omitted, D1 computes it using CVK.
* `paymentApplication.cvKeyIndex`: CVK index used when computing `encryptedData.cvv2`.

### How D1 selects printed values

D1 prints a field only if it is mapped in your graphical configuration.

For each mapped field, D1 uses:

* The value you send in the D1 API request, when present.
* A computed value, when configured (for example, `cvv2`).

### Example payload

This example shows the typical input shape. Field names depend on the specific endpoint you call.

```json
{
  "cardProductId": "my-card-product",
  "encryptedData": {
    "pan": "5413330089012345",
    "exp": "2906",
    "cvv2": "000",
    "name": "Alice Doe",
    "secondName": "Company Name"
  },
  "cardDesign": {
    "artworkId": "standard-01",
    "images": ["logoName.jpg"],
    "customLines": ["Credit"],
    "memberId": "1234567890"
  }
}
```

### Configuration in D1

For each `cardProductId` (and optionally `artworkId`), D1 onboarding defines the graphical configuration.

Configuration typically defines:

* Printing technology (for example, embossing, indent, inkjet, laser, or thermal color)
* Color
* Optional overlays (for example, overlay or cardguard)
* Per input field:
  * Side (front/back)
  * Render type (text, image, or barcode)
  * Font and font size (for text)
  * Position on the card

Barcode rendering supports common formats such as Code 39 and Code 128 (depending on your configuration).

### Example mapping

<figure><img src="/spaces/ol7FqojHqm5it3effNc4/files/TAsHUqnfOGDRWlMRaFEz" alt="Example graphical configuration mapping input fields to printed locations."><figcaption><p>Example graphical configuration for printed fields.</p></figcaption></figure>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.payments.thalescloud.io/central-issuance/implement-central-issuance/card-order/graphical-personalization.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
