Skip to main content

Add EU Product Identifier Data to EU Shipments

Written by Harneet Kaur

Plan: Pro, Enterprise | Platform: AfterShip Shipping API

Overview

The EU Product Identifier (PID) requirement adds product-level codes to customs declarations for business-to-consumer (B2C) goods imported into the European Union.

Learn how to add PID data to your EU-bound labels using AfterShip Shipping. This guide walks you through identifying in-scope shipments, preparing your product identifiers, checking carrier support, adding PID data through the API, and testing your shipments. Once set up, your carrier can file complete customs declarations, which helps you avoid rejected declarations and border holds.

Before you begin

Requirements

  • An AfterShip Shipping account that creates labels through the Labels API

  • A supported carrier for your EU-bound shipments: FedEx, UPS, DHL Express, DHL eCommerce US, DPD UK, Royal Mail, or Quantium

  • A product catalog with a unique SKU or variant ID for every product variant

Limitations

  • AfterShip Shipping accepts PID data through the Labels API only. If you create EU-bound labels in the AfterShip Shipping portal, contact AfterShip Support.

  • AfterShip Shipping doesn’t check whether your PID values are correct

Setup steps

Step 1: Identify your EU-bound B2C shipments

Your shipments need PID data only when they're B2C sales from outside the EU to a consumer inside the EU.

  1. Check that the shipment's origin is outside the EU and its destination is inside the EU.

  2. Confirm the shipment is a sale to a private consumer through your storefront, a marketplace, or social commerce.

  3. Exclude business-to-business (B2B) shipments to VAT-registered consignees.

  4. Exclude non-sale shipments, such as gifts, samples, personal effects, documents, and returns.

Important: EU customs requires PID data on declarations filed from November 1, 2026. EU customs has accepted PID data voluntarily since July 1, 2026, so you can start sending it now.

Step 2: Assign a variant-level merchant product ID

The Merchant Product Identifier (M-PID) is your own code for each product, declared under customs code C127.

  1. Review the SKUs or variant IDs in your product catalog.

  2. Give every color, size, and configuration its own unique ID.

  3. Confirm the ID appears in the order data that reaches AfterShip Shipping.

Note:A blue medium T-shirt and a red medium T-shirt need different M-PIDs, for example TSHIRT-BLUE-M and TSHIRT-RED-M.

Step 3: Collect your manufacturer product IDs

Manufacturer codes are the most common data gap, so request them from your suppliers early.

Identifier

Customs code

Who assigns it

What it is

Example

Merchant Product Identifier (M-PID)

C127

You (the seller or marketplace)

Your SKU, variant ID, or catalog code

TOTE-WHITE-01

Non-Standardized Manufacturer Product Identifier (NS-PID)

C128

The manufacturer or supplier

The manufacturer’s model, part, or style number

ACME-FKS453

Standardized Manufacturer Product Identifier (S-PID)

C129

GS1 or another standards body

A global code such as GTIN, EAN, UPC, ISBN, or IMEI

5012345678900

  1. Request the model, part, or style number for each product from your manufacturer or supplier.

  2. Use the supplier's own reference as the NS-PID if the manufacturer has no formal coding scheme.

  3. Add the GTIN, EAN, UPC, or ISBN as the S-PID for products that already have one.

  4. Add these values to your e-commerce backend so your integration can send them.

Tip: Keep each NS-PID stable over time. Changing it between shipments can trigger extra customs checks.

Step 4: Check your carrier support

AfterShip Shipping passes PID data only to carriers that support it, so confirm your carrier’s status before you update your integration.

Carrier

FedEx

DHL Express

DPD UK

UPS

DHL eCommerce US

Royal Mail

Quantium

  1. Find your carrier in the table.

  2. For any other carrier that handles your EU-bound B2C shipments, contact AfterShip Support before you send PID data.

Warning: Sending regulatory_data to a carrier not listed above returns this error: data.shipment.parcels.0.items.0 should NOT have additional properties ['regulatory_data']. Remove the field for that carrier to create the label.

Step 5: Add PID data to your API requests

Add a regulatory_data entry to every item in your EU-bound B2C label requests. The entry is optional, but when you include it, regulation_code, merchant_product_id, and non_standard_manufacturer_product_id are required. You can start now, since EU customs has accepted PID data voluntarily since July 1, 2026.

  1. Locate each item at shipment.parcels[].items[].regulatory_data[] in your Create a label request.

  2. Set regulation_code to EU_DE_MINIMIS.

  3. Set merchant_product_id to the item’s variant-level M-PID.

  4. Set non_standard_manufacturer_product_id to the item’s NS-PID.

  5. Set standard_manufacturer_product_id to the item’s S-PID, or omit the field if the product has none.

Field

Type

Required

Description

regulation_code

string

Yes

Fixed value: EU_DE_MINIMIS

merchant_product_id

string

Yes

Your SKU, variant ID, or catalog code (M-PID)

non_standard_manufacturer_product_id

string

Yes

The manufacturer's model or part number (NS-PID)

standard_manufacturer_product_id

string

No

GTIN-14, EAN, UPC, or ISBN (S-PID). Omit when the product has none.

"items": [
{
"description": "Cotton Tote Bag",
"regulatory_data": [
{
"regulation_code": "EU_DE_MINIMIS",
"merchant_product_id": "TOTE-WHITE-01",
"non_standard_manufacturer_product_id": "ACME-FKS453",
"standard_manufacturer_product_id": "05012345678900"
}
]
}
]

For the full specification, see Create a label in the AfterShip Shipping API documentation.

Important: AfterShip Shipping creates your label even when PID data is missing or invalid. Your carrier and EU customs can still reject, hold, or return the shipment.

How AfterShip Shipping handles PID data

Situation

What AfterShip Shipping does

You don’t include regulatory_data

Creates the label without PID data

You include regulatory_data with all required fields

Creates the label and passes the data to your carrier

You include regulatory_data but leave out a required field

Rejects the request with a validation error

Your PID values are incorrect

Creates the label without checking the values

You send regulatory_data to a carrier not listed in Step 4

Returns a validation error

Important: A successful label doesn’t mean your shipment is compliant, because AfterShip Shipping doesn’t check whether your PID values are correct. Your carrier and EU customs can still reject, hold, or return the shipment, and some carriers enforce PID fields in their own systems from November 1, 2026.

Step 6: Test your EU shipments

Confirm your carrier receives your PID data before November 1, 2026.

  1. Create a test label for an EU-bound B2C shipment with each carrier you use.

  2. Confirm the label request succeeds with your regulatory_data values.

  3. Repeat the test for each shipment type you send.

  4. Check with your carrier that your PID values reach the customs declaration.

To stop sending PID data for a product, remove its regulatory_data entry from your API requests.

What your users will experience

After completing these steps:

  • AfterShip Shipping sends your PID data to your carrier with each EU-bound B2C shipment

  • Your carrier files the PID data with EU customs on your customs declaration

  • You avoid rejected declarations and border holds caused by missing PID data

  • Shoppers in the EU receive their orders without delays caused by missing PID data

Troubleshooting

Problem

Cause

Solution

My label request fails after I add PID data

The regulatory_data entry is missing a required field

Include regulation_code, merchant_product_id, and non_standard_manufacturer_product_id

My label request fails with an “additional properties” error

Your carrier isn’t supported for PID data

Remove regulatory_data from requests for that carrier

My EU shipment is held, rejected, or returned at the border

The customs declaration is missing valid PID data

Add PID data for the product and contact your carrier about the shipment

My label succeeds, but my carrier rejects the shipment

AfterShip Shipping doesn’t check your PID values, but your carrier does

Check your PID values against your carrier’s requirements

I can’t add PID data in the AfterShip Shipping portal

The portal doesn’t support PID data

Contact AfterShip Support

FAQs

1. Why does the EU require Product Identifiers?

The European Commission introduced the PID requirement in Commission Delegated Regulation (EU) 2026/1022 on June 30, 2026. The regulation amends the Union Customs Code as part of the EU’s 2026 e-commerce customs reform. EU customs uses PIDs for risk analysis and product safety controls. PIDs also help customs detect undervalued and non-compliant goods.

2. Does the PID requirement apply only to orders under €150?

No. The same customs reform removed the €150 low-value relief and introduced a €3 flat duty on July 1, 2026, but the PID requirement isn’t limited to low-value orders. PID data applies to EU B2C sales regardless of order value, across customs declaration datasets H1, H6, and H7.

3. Do I need PID data for B2B shipments?

No. B2B shipments to VAT-registered consignees are out of scope. Gifts, samples, personal effects, documents, and returns are also out of scope.

4. Do I need PID data for return shipments?

No. The PID requirement applies to B2C sales imported into the EU, so return shipments don’t need PID data. If customs holds one of your return shipments, contact AfterShip Support for help.

5. Do I need to buy a GTIN for my products?

No. Provide an S-PID only when your product already has one.

What if my manufacturer doesn’t have a product code?

Use the reference your supplier uses for the product as the NS-PID. Keep that reference stable over time.

6. Will AfterShip Shipping block my label if PID data is missing?

No. AfterShip Shipping creates the label when you leave out the regulatory_data entry. If you include the entry, it must contain all required fields. A successful label doesn’t confirm compliance, because your carrier and EU customs can still reject, hold, or return the shipment.

7. When does the PID requirement start?

EU customs requires PID data on declarations filed from November 1, 2026. EU customs has accepted PID data voluntarily since July 1, 2026.

8. Who is responsible for the accuracy of my PID data?

You are. As the seller of record, you’re responsible for accurate, stable identifiers, for collecting NS-PID and S-PID values from suppliers, and for deciding whether a shipment is in scope. AfterShip Shipping is responsible for passing the data you provide to your carrier.

Key takeaways

  • AfterShip Shipping sends your EU PID data to your carrier for B2C shipments into the EU

  • Every product needs a variant-level M-PID and an NS-PID; add an S-PID only where one exists

  • PID data works through the Labels API with FedEx, UPS, DHL Express, DHL eCommerce US, and DPD UK

  • Shoppers in the EU receive orders without border delays caused by missing PID data

  • AfterShip Shipping accepts labels without PID data, but carriers and EU customs can still reject them

Related resources

Did this answer your question?