> 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-tracking.md).

# Card order tracking

D1 sends real-time production and shipment updates for physical cards to your issuer backend.

Use notifications (webhooks), on-demand status, or both.

### High-level flow

<figure><img src="/files/3pwzu5pW0SxAzX4ASQGX" alt=""><figcaption><p>High-level flow of physical card production and shipment events.</p></figcaption></figure>

### Status transitions

This diagram shows typical transitions from request to shipment.

It also includes exception and on-hold paths.

<figure><img src="/files/nWPsX4S7mnoomoA4vzqh" alt=""><figcaption><p>Status transitions including exceptions and on-hold states.</p></figcaption></figure>

<details>

<summary>More diagrams</summary>

<figure><img src="/files/1cVz0s02KgHMWbhSaDyH" alt=""><figcaption><p>Operational view of issuance steps and state changes.</p></figcaption></figure>

<figure><img src="/files/mR539AB9YqLrMKI0tnoN" alt=""><figcaption><p>Sequence diagram for notifications and status changes during physical card issuance.</p></figcaption></figure>

</details>

### How it works

Use one or both approaches.

{% tabs %}
{% tab title="Notifications (recommended)" %}

* Receive notifications for each production step and shipment update.
* Handle at-least-once delivery. Expect retries and duplicates.
* Implement the callback endpoint defined in [Backend notifications](/central-issuance/integrate-d1-notifications/backend-notifications.md).
  {% endtab %}

{% tab title="On-demand" %}

* Query the current production/shipment status at any time.
* See [Track orders on demand](/central-issuance/implement-central-issuance/card-order-tracking/track-orders-on-demand.md).
  {% endtab %}
  {% endtabs %}

### Required APIs

<table><thead><tr><th width="140.79998779296875">API</th><th width="180.79998779296875">Inbound/Outbound</th><th>Description</th></tr></thead><tbody><tr><td><a href="/pages/7jYOB2jnWMpMRZ8vM6au#post-notifications-d1-v2-issuers-issuerid-cards">Notifications</a></td><td>Issuer &#x3C;- Thales D1</td><td>Receive notifications for the <code>PRODUCE</code> operation.</td></tr></tbody></table>

### API content

Notifications and on-demand responses use the same operation object.

They can include:

<table><thead><tr><th width="153.5999755859375">Field</th><th width="420.7999267578125">Description</th><th>Presence</th></tr></thead><tbody><tr><td><code>operationId</code></td><td>Unique identifier for the operation instance. Use it for de-duplication and correlation.</td><td>Required</td></tr><tr><td><code>operation</code></td><td>Operation type. Always <code>PRODUCE</code> for physical card issuance tracking.</td><td>Required</td></tr><tr><td><code>status</code></td><td>Operation status: <code>PENDING</code>, <code>SUCCESSFUL</code>, or <code>FAILED</code>.</td><td>Required</td></tr><tr><td><code>startTime</code></td><td>ISO 8601 timestamp when the operation started.</td><td>Required</td></tr><tr><td><code>endTime</code></td><td>ISO 8601 timestamp when the operation completed.</td><td>Conditional</td></tr><tr><td><code>cardId</code></td><td>Internal card identifier in D1.</td><td>Required</td></tr><tr><td><code>details</code></td><td><p>Issuance-specific payload.</p><p>See <a href="/spaces/WhgSoXgpjZJxLx4cDHB1/pages/7i2Fb9Nac7h89nSDu9EN">Track production</a> and <a href="/spaces/WhgSoXgpjZJxLx4cDHB1/pages/sn2tOWZoigdlebJymxZ7">Track shipment</a>.</p></td><td>Required</td></tr><tr><td><code>errorCode</code></td><td>Machine-readable failure cause.</td><td>Conditional</td></tr><tr><td><code>error</code></td><td>Short human-readable failure description.</td><td>Conditional</td></tr><tr><td><code>inputFileName</code></td><td>File name containing card issuance requests.</td><td>Conditional</td></tr><tr><td><code>issuerRequestId</code></td><td>Correlation identifier provided by your issuer backend.</td><td>Conditional</td></tr></tbody></table>

Top-level `status` is the operation status.

`details.status` is the physical card issuance status.

### Delivery and idempotency

Notifications can arrive out of order, and more than once.

* Use `operationId` to de-duplicate and correlate events.
* Use `startTime`/`endTime` to decide which event is the latest.
* Use the on-demand API to reconcile state if you detect gaps.


---

# 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-tracking.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.
