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

# Fleet Card Orders

Discover card products and create one-card charging key orders for fleet organizations through EMP mode.

Fleet card orders let you create physical charging card orders for fleet organizations through EMP mode. Use this flow when Plugsurfing handles card order fulfilment and the card should belong to a fleet organization instead of an individual Drive API user.

Each request creates one card order. For multiple cards, submit one request per card.

## Before you start

Before creating an order:

* Create the fleet with `POST /emp/v1/fleets`.
* Keep the customer-provided `fleetId`; you will use the same value when placing card orders.
* Discover available products with `GET /emp/v1/products`.
* If the selected product includes `printing.schema`, use that schema to understand the supported printing payload.

## Flow

### 1. Create or identify the fleet

The order request uses the `fleetId` you provided when creating the fleet.

```http theme={null}
POST /emp/v1/fleets
```

```json theme={null}
{
  "fleetId": "fleet-123",
  "fleetName": "Example Fleet"
}
```

The fleet must already exist before you create an order. The order endpoint does not create fleets.

### 2. Discover available products

Use product discovery to see which cards can be ordered.

```http theme={null}
GET /emp/v1/products
```

Products may include a `printing.schema` object. This schema describes the printing payload expected for that product.

```json theme={null}
{
  "products": [
    {
      "id": "Nk375yz7Gw",
      "name": "Personal card",
      "description": "Physical charging card for fleet drivers.",
      "printing": {
        "schema": {
          "type": "object",
          "required": ["driverName", "licensePlate"],
          "properties": {
            "driverName": {
              "type": "string",
              "description": "Full name printed on the card."
            },
            "licensePlate": {
              "type": "string",
              "description": "Vehicle license plate printed on the card."
            }
          }
        }
      }
    }
  ]
}
```

If a product has no `printing` field, create the order without a `printing` payload.

### 3. Create the order

Create one order for one card.

```http theme={null}
POST /emp/v1/orders
```

```json theme={null}
{
  "fleetId": "fleet-123",
  "productId": "Nk375yz7Gw",
  "address": {
    "firstName": "Jane",
    "lastName": "Doe",
    "addressLine1": "Example Street 1",
    "addressLine2": "Floor 2",
    "postalCode": "00100",
    "city": "Helsinki",
    "country": "FI",
    "companyName": "Example Ltd"
  },
  "printing": {
    "driverName": "Jane Doe",
    "licensePlate": "FI000AA"
  }
}
```

Do not include `quantity`. One request always represents one card order.

`printing` is optional at the Drive API level because requirements depend on the selected product. The fulfilment system validates the submitted payload against the product configuration.

### 4. Track and fulfil the order

Use the EMP order list to track created orders.

```http theme={null}
GET /emp/v1/orders
```

When the physical card has been produced and assigned, the assignment flow creates the charging key disabled. The card must be enabled before it can be used for charging.

## Error handling

Common client-facing errors:

* `400 Bad Request`: required fields are missing, the body is malformed JSON, or the printing payload does not match product requirements.
* `404 Not Found`: the `fleetId` does not exist, the fleet is not available to the calling EMP, or the decoded `productId` does not exist.
* `500 Internal Server Error`: an unexpected server-side error occurred.

## Related API reference

* [Create a fleet](/reference/createFleet)
* [List available products](/reference/getEmpProducts)
* [Create a fleet charging key order](/reference/createEmpChargingKeyOrder)
* [Fetch charging key orders](/reference/listEmpChargingKeyOrders)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.