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.
Check that the shipment's origin is outside the EU and its destination is inside the EU.
Confirm the shipment is a sale to a private consumer through your storefront, a marketplace, or social commerce.
Exclude business-to-business (B2B) shipments to VAT-registered consignees.
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.
Review the SKUs or variant IDs in your product catalog.
Give every color, size, and configuration its own unique ID.
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 |
|
Non-Standardized Manufacturer Product Identifier (NS-PID) | C128 | The manufacturer or supplier | The manufacturer’s model, part, or style number |
|
Standardized Manufacturer Product Identifier (S-PID) | C129 | GS1 or another standards body | A global code such as GTIN, EAN, UPC, ISBN, or IMEI |
|
Request the model, part, or style number for each product from your manufacturer or supplier.
Use the supplier's own reference as the NS-PID if the manufacturer has no formal coding scheme.
Add the GTIN, EAN, UPC, or ISBN as the S-PID for products that already have one.
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 |
Find your carrier in the table.
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.
Locate each item at
shipment.parcels[].items[].regulatory_data[]in your Create a label request.Set
regulation_codetoEU_DE_MINIMIS.Set
merchant_product_idto the item’s variant-level M-PID.Set
non_standard_manufacturer_product_idto the item’s NS-PID.Set
standard_manufacturer_product_idto the item’s S-PID, or omit the field if the product has none.
Field | Type | Required | Description |
| string | Yes | Fixed value: |
| string | Yes | Your SKU, variant ID, or catalog code (M-PID) |
| string | Yes | The manufacturer's model or part number (NS-PID) |
| 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 | Creates the label without PID data |
You include | Creates the label and passes the data to your carrier |
You include | Rejects the request with a validation error |
Your PID values are incorrect | Creates the label without checking the values |
You send | 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.
Create a test label for an EU-bound B2C shipment with each carrier you use.
Confirm the label request succeeds with your
regulatory_datavalues.Repeat the test for each shipment type you send.
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 | Include |
My label request fails with an “additional properties” error | Your carrier isn’t supported for PID data | Remove |
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