Products in Paid follow a soft-archival lifecycle. Archiving a product hides it from places where you would set up something new — product pickers, listings, onboarding flows — but it does not invalidate existing references to that product. Customers who already have an order or subscription for an archived product continue to bill normally.
Archiving sets archivedAt on the product. The intent is “this product is no longer offered to new customers”. It is not a soft delete, and it is not a signal that existing customer relationships should stop.
POST /v2/orders does not reject orders that reference an archived product. This protects integrations that hardcode product IDs.OrderLine.productId, which keeps pointing at the archived product. Order amendments and upgrades on those lines also continue to work.POST /v2/signals, OTLP, or other ingest paths) continue to resolve to the customer’s existing order line and deduct credits or accrue usage as expected.POST /v2/cost accepts cost records that reference an archived product so that in-flight integrations keep working.GET /v2/products excludes archived products from the default listing. Frontend pickers (onboarding pricing, checkout link creation, HubSpot product picker) hide them.Setting archivedAt back to null (via POST /v2/products/:id/unarchive) restores the product to active state. Existing customer relationships were never disturbed, so unarchiving is purely a UI/listing operation.
You can safely hardcode product IDs in your integration. If a product is archived on Paid’s side: