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

# EU Product Identifiers

Part of the [EU Customs Reform - Product Identifiers (PID)](/eu-product-identifiers-pid).

On Global-e Module, Global-e does not read identifiers from your catalog or add them from a Global-e screen. Global-e Module passes your GetCart response through as-is: whatever you place on each cart line is exactly what Global-e sends to customs. This means all setup happens in your cart API or middleware.

For what each identifier is, see [The three identifiers](/eu-product-identifiers-pid#the-three-identifiers) on the overview page.

## What you need to do

1. Keep your identifiers in your catalog or PIM under whatever field names you already use (for example `ean`, `gtin`, `upc`, manufacturer SKU).
2. When Global-e calls your GetCart endpoint at checkout, map those values onto each product line inside `MetaData.Attributes`, using the exact keys below.

| Sent as             | What it holds                                 | When to leave it out                                                                 |
| ------------------- | --------------------------------------------- | ------------------------------------------------------------------------------------ |
| **`standardcode`**  | The barcode for that line (GTIN, EAN or UPC)  | When the item has no barcode. Global-e declares the "no barcode" code automatically. |
| **`mididentifier`** | The manufacturer's product code for that line | Never. This is required on every line.                                               |

```json theme={null}
"MetaData": {
  "Attributes": [
    { "AttributeKey": "standardcode",  "AttributeValue": "5901234123457" },
    { "AttributeKey": "mididentifier", "AttributeValue": "MFG-JKT-4471" }
  ]
}
```

## Key points

**One set of values per cart line or variant.** Each size or colour that appears as its own line must carry its own values, not just the parent product.

**Map from your own fields.** Your catalog can name the barcode anything (`ean`, `gtin`, `barcode`); the response must still send it under `standardcode`.

**Omit, don't fake.** When you have no value, leave the key out entirely. Never send an empty string, NA, 0 or -.

**Use the right bag.** These go on `MetaData.Attributes` (with `AttributeKey` / `AttributeValue`), not the separate per-product `Attributes` collection used for display and duties.

**US MID keeps working alongside it.** If you already send `midcode` / `midname` / `midaddress`, keep sending them and add `standardcode` and `mididentifier` to the same list.

<h2 id="quick-check-before-go-live">
  Quick check before go-live
</h2>

| Check                                                                                   | Done |
| --------------------------------------------------------------------------------------- | ---- |
| Each cart line carries `standardcode` when it has a barcode, and `mididentifier` always | ☐    |
| Lines with no barcode omit the key (no empty string or placeholder)                     | ☐    |
| Every variant SKU has its own values, not just the parent product                       | ☐    |
| The keys sit on `MetaData.Attributes`, separate from the US MID keys                    | ☐    |
