> ## Documentation Index
> Fetch the complete documentation index at: https://docs.oneclickdz.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Check Order Status

> Get order status and retrieve cards when fulfilled

## Overview

Check order status and retrieve card codes when order is fulfilled.

## Path Parameters

<ParamField path="orderId" type="string" required>
  Order ID from `/placeOrder` response
</ParamField>

## Response

<ResponseField name="data" type="object">
  <Expandable title="properties">
    <ResponseField name="status" type="string">
      * **HANDLING:** Processing - **FULFILLED:** Complete, cards available ✅ -
        **PARTIALLY\_FILLED:** Some cards delivered ⚠️ - **REFUNDED:** Failed and
        refunded ❌
    </ResponseField>

    <ResponseField name="quantity" type="number">
      Original order quantity
    </ResponseField>

    <ResponseField name="fulfilled_quantity" type="number">
      Number of cards delivered
    </ResponseField>

    <ResponseField name="fulfilled_amount" type="number">
      Total amount charged
    </ResponseField>

    <ResponseField name="price_per_card" type="number">
      Price per card
    </ResponseField>

    <ResponseField name="cards" type="array">
      Array of card objects (when FULFILLED or PARTIALLY\_FILLED)

      <Expandable title="card object">
        <ResponseField name="value" type="string">
          Card code/PIN (main credential)
        </ResponseField>

        <ResponseField name="serial" type="string">
          Card serial number (secondary credential)
        </ResponseField>
      </Expandable>
    </ResponseField>
  </Expandable>
</ResponseField>

## Examples

<CodeGroup>
  ```bash cURL theme={null}
  curl https://api.oneclickdz.com/v3/gift-cards/checkOrder/6901616fe9e88196b4eb64b3 \
    -H "X-Access-Token: YOUR_API_KEY"
  ```

  ```javascript Node.js theme={null}
  const orderId = "6901616fe9e88196b4eb64b3";
  const response = await fetch(
    `https://api.oneclickdz.com/v3/gift-cards/checkOrder/${orderId}`,
    { headers: { "X-Access-Token": "YOUR_API_KEY" } }
  );
  const { data } = await response.json();

  if (data.status === "FULFILLED") {
    console.log("Cards:", data.cards);
  }
  ```

  ```python Python theme={null}
  response = requests.get(
      f'https://api.oneclickdz.com/v3/gift-cards/checkOrder/{order_id}',
      headers={'X-Access-Token': 'YOUR_API_KEY'}
  )
  data = response.json()['data']

  if data['status'] == 'FULFILLED':
      for card in data['cards']:
          print(f"Code: {card['value']}, Serial: {card['serial']}")
  ```

  ```php PHP theme={null}
  <?php
  $orderId = '6901616fe9e88196b4eb64b3';
  $ch = curl_init("https://api.oneclickdz.com/v3/gift-cards/checkOrder/{$orderId}");
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  curl_setopt($ch, CURLOPT_HTTPHEADER, ['X-Access-Token: YOUR_API_KEY']);
  $response = curl_exec($ch);
  $result = json_decode($response, true);
  $data = $result['data'];

  if ($data['status'] === 'FULFILLED') {
      foreach ($data['cards'] as $card) {
          echo "Code: " . $card['value'] . ", Serial: " . $card['serial'] . "\n";
      }
  }
  ?>
  ```
</CodeGroup>

### Handling Response

```json theme={null}
{
  "success": true,
  "data": {
    "_id": "6901616fe9e88196b4eb64b3",
    "status": "HANDLING",
    "quantity": 2,
    "product": "507f1f77bcf86cd799439011",
    "type": "type_001",
    "time": "2025-10-29T01:00:00.000Z"
  }
}
```

### Fulfilled Response

```json theme={null}
{
  "success": true,
  "data": {
    "_id": "6901616fe9e88196b4eb64b3",
    "status": "FULFILLED",
    "quantity": 2,
    "fulfilled_quantity": 2,
    "fulfilled_amount": 980,
    "price_per_card": 490,
    "cards": [
      {
        "value": "XXXX-XXXX-XXXX-XXXX",
        "serial": "123456789"
      },
      {
        "value": "YYYY-YYYY-YYYY-YYYY",
        "serial": "987654321"
      }
    ],
    "time": "2025-10-29T01:00:00.000Z"
  }
}
```

## Polling Example

```javascript theme={null}
async function pollOrder(orderId) {
  const maxAttempts = 60;

  for (let i = 0; i < maxAttempts; i++) {
    const response = await fetch(
      `https://api.oneclickdz.com/v3/gift-cards/checkOrder/${orderId}`,
      { headers: { "X-Access-Token": process.env.API_KEY } }
    );

    const { data } = await response.json();

    if (["FULFILLED", "PARTIALLY_FILLED", "REFUNDED"].includes(data.status)) {
      return data;
    }

    await new Promise((resolve) => setTimeout(resolve, 5000));
  }

  throw new Error("Timeout");
}
```

## Status Handling

<AccordionGroup>
  <Accordion title="FULFILLED">
    All cards delivered successfully

    * `fulfilled_quantity === quantity`
    * All cards available in `cards` array
    * Deliver to customer
  </Accordion>

  <Accordion title="PARTIALLY_FILLED">
    Some cards delivered, rest cancelled

    * `fulfilled_quantity < quantity`
    * Partial refund issued
    * Deliver available cards
    * Refund difference to customer
  </Accordion>

  <Accordion title="REFUNDED">
    Order completely failed

    * `fulfilled_quantity === 0`
    * Full refund issued
    * Notify customer of failure
  </Accordion>
</AccordionGroup>

## Secure Card Delivery

<Warning>Handle cards securely. Never log card codes in plain text.</Warning>

```javascript theme={null}
// Good: Secure delivery
async function deliverCards(userId, cards) {
  // Store encrypted
  await db.deliveredCards.insertMany(
    cards.map((c) => ({
      userId,
      value: encrypt(c.value),
      serial: encrypt(c.serial),
      deliveredAt: new Date(),
    }))
  );

  // Send via secure channel
  await sendSecureEmail(userId, cards);

  // Log without sensitive data
  logger.info("Cards delivered", { userId, count: cards.length });
}
```

## Related

<CardGroup cols={2}>
  <Card title="Place Order" icon="cart-shopping" href="/en/api-reference/gift-cards/place-order">
    Create new order
  </Card>

  <Card title="List Orders" icon="list" href="/en/api-reference/gift-cards/list-orders">
    View all orders
  </Card>
</CardGroup>
