Prices
Prices represent fixed monetary amounts in a specific currency that you can attach to products or use independently in order line items. Unlike inline pricing on products, standalone prices let you reuse the same price definition across multiple contexts—different order configurations, A/B pricing tests, or multi-currency catalogs. Each price is immutable in its amount: once created, the currency and value cannot change. Update the label or description, or create a new price when your pricing changes.
Create, update, activate, and deactivate support idempotency. A successful response can be replayed with the same idempotency key and request body for 24 hours. Lookup and page do not opt in to idempotent replay.
The price object
A price object captures a specific monetary amount in a single currency, with optional metadata for display and organization. Prices can be associated with a product or exist independently. Each price also exposes whether it is currently active for new flows. The amount is set at creation and cannot be modified afterward—this immutability ensures that historical orders always reference the exact price that was charged.
Properties
Create a price
Create a new price with a specific currency and amount. The amount and currency are immutable after creation—if your pricing changes, create a new price and archive the old one. You can optionally associate the price with an existing product and add a label or description for display purposes.
If you provide a product_id, the product must exist. The amount.value must be greater than zero, specified in the smallest currency unit (cents for USD, pesewas for GHS).
Request attributes
Request
curl https://api.zebo.dev/prices/create \
-H "Authorization: Bearer $COMMERCE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"amount": {
"currency": "usd",
"value": 2999
},
"label": "Monthly",
"about": "Standard monthly subscription price",
"product_id": "prod_abc123xyz789"
}'
{
"price": {
"id": "pr_k8m2x9v4n7p1",
"about": "Standard monthly subscription price",
"active": true,
"nominal": {
"currency": "usd",
"value": 2999
},
"created_at": "2026-02-13T02:00:00Z",
"label": "Monthly",
"product": {
"id": "prod_abc123xyz789",
"about": "Starter plan for solo businesses",
"active": true,
"attributes": [
{
"name": "tier",
"value": "starter"
}
],
"category": "software",
"created_at": "2026-02-13T01:45:00Z",
"custom_data": {
"plan": "starter"
},
"description": "Standard monthly subscription",
"name": "Starter plan",
"published_at": "2026-02-13T02:05:00Z",
"reference": "plan-starter-monthly",
"tax_code": "txcd_software",
"type": "digital"
}
}
}
Lookup a price
Retrieve an existing price by its ID. The response includes the immutable nominal amount, any associated product details, and lifecycle timestamps.
Request attributes
Request
curl https://api.zebo.dev/prices/lookup \
-H "Authorization: Bearer $COMMERCE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"price_id": "pr_k8m2x9v4n7p1"
}'
{
"price": {
"id": "pr_k8m2x9v4n7p1",
"about": "Standard monthly subscription price",
"active": true,
"nominal": {
"currency": "usd",
"value": 2999
},
"created_at": "2026-02-13T02:00:00Z",
"label": "Monthly",
"product": {
"id": "prod_abc123xyz789",
"about": "Starter plan for solo businesses",
"active": true,
"attributes": [
{
"name": "tier",
"value": "starter"
}
],
"category": "software",
"created_at": "2026-02-13T01:45:00Z",
"custom_data": {
"plan": "starter"
},
"description": "Standard monthly subscription",
"name": "Starter plan",
"published_at": "2026-02-13T02:05:00Z",
"reference": "plan-starter-monthly",
"tax_code": "txcd_software",
"type": "digital"
}
}
}
Page through prices
Retrieve a paginated list of prices for your authenticated application. Results are sorted by created_at in descending order, so page 1 contains the most recently created prices.
If you provide product_id, the page is scoped to prices belonging to that product only. This includes active, inactive, and archived prices, which lets you inspect the full pricing history for a product or for your broader catalog.
Request attributes
Request
curl https://api.zebo.dev/prices/page \
-H "Authorization: Bearer $COMMERCE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"page_number": 1,
"page_size": 2,
"product_id": "prod_abc123xyz789"
}'
{
"page": {
"number": 1,
"size": 2,
"prices": [
{
"id": "pr_k8m2x9v4n7p1",
"about": "Standard monthly subscription price",
"active": true,
"nominal": {
"currency": "usd",
"value": 2999
},
"created_at": "2026-02-13T02:00:00Z",
"label": "Monthly",
"product": {
"id": "prod_abc123xyz789",
"about": "Starter plan for solo businesses",
"active": true,
"attributes": [
{
"name": "tier",
"value": "starter"
}
],
"category": "software",
"created_at": "2026-02-13T01:45:00Z",
"custom_data": {
"plan": "starter"
},
"description": "Standard monthly subscription",
"name": "Starter plan",
"published_at": "2026-02-13T02:05:00Z",
"reference": "plan-starter-monthly",
"tax_code": "txcd_software",
"type": "digital"
},
"updated_at": "2026-02-13T04:10:00Z"
},
{
"id": "pr_b1n9q2e5m6r7",
"about": "Legacy promotional price",
"active": false,
"nominal": {
"currency": "usd",
"value": 2499
},
"archived_at": "2026-03-01T09:00:00Z",
"created_at": "2026-01-10T08:00:00Z",
"label": "Promo",
"product": {
"id": "prod_abc123xyz789",
"about": "Starter plan for solo businesses",
"active": true,
"attributes": [
{
"name": "tier",
"value": "starter"
}
],
"category": "software",
"created_at": "2026-02-13T01:45:00Z",
"custom_data": {
"plan": "starter"
},
"description": "Standard monthly subscription",
"name": "Starter plan",
"published_at": "2026-02-13T02:05:00Z",
"reference": "plan-starter-monthly",
"tax_code": "txcd_software",
"type": "digital"
},
"updated_at": "2026-03-01T09:00:00Z"
}
]
}
}
Update a price
Update an existing price's descriptive fields. Only label and about are mutable. The product association and the price's nominal amount remain fixed after creation, so create a new price when either needs to change.
Updating a price never reassigns it to a different product. If the price is already attached to a product, that relationship remains unchanged.
Request attributes
Request
curl https://api.zebo.dev/prices/update \
-H "Authorization: Bearer $COMMERCE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"price_id": "pr_k8m2x9v4n7p1",
"label": "Monthly (discounted)",
"about": "Promotional monthly rate for early adopters"
}'
{
"price": {
"id": "pr_k8m2x9v4n7p1",
"about": "Promotional monthly rate for early adopters",
"active": true,
"nominal": {
"currency": "usd",
"value": 2999
},
"created_at": "2026-02-13T02:00:00Z",
"label": "Monthly (discounted)",
"product": {
"id": "prod_abc123xyz789",
"about": "Starter plan for solo businesses",
"active": true,
"attributes": [
{
"name": "tier",
"value": "starter"
}
],
"category": "software",
"created_at": "2026-02-13T01:45:00Z",
"custom_data": {
"plan": "starter"
},
"description": "Standard monthly subscription",
"name": "Starter plan",
"published_at": "2026-02-13T02:05:00Z",
"reference": "plan-starter-monthly",
"tax_code": "txcd_software",
"type": "digital"
},
"updated_at": "2026-02-13T03:00:00Z"
}
}
Activate a price
Reactivate a previously deactivated price so it can be used again in new catalog flows. Activation does not change the amount, product association, or archive state—it only flips the price back to active: true.
Archived prices cannot be activated. If the price belongs to your authenticated application and is merely inactive, this endpoint makes it usable again immediately.
Request attributes
Request
curl https://api.zebo.dev/prices/activate -H "Authorization: Bearer $COMMERCE_API_KEY" -H "Content-Type: application/json" -d '{
"price_id": "pr_k8m2x9v4n7p1"
}'
{
"price": {
"id": "pr_k8m2x9v4n7p1",
"about": "Standard monthly subscription price",
"active": true,
"nominal": {
"currency": "usd",
"value": 2999
},
"created_at": "2026-02-13T02:00:00Z",
"label": "Monthly",
"product": {
"id": "prod_abc123xyz789",
"about": "Starter plan for solo businesses",
"active": true,
"attributes": [
{
"name": "tier",
"value": "starter"
}
],
"category": "software",
"created_at": "2026-02-13T01:45:00Z",
"custom_data": {
"plan": "starter"
},
"description": "Standard monthly subscription",
"name": "Starter plan",
"published_at": "2026-02-13T02:05:00Z",
"reference": "plan-starter-monthly",
"tax_code": "txcd_software",
"type": "digital"
},
"updated_at": "2026-02-13T04:10:00Z"
}
}
Deactivate a price
Deactivate a price so it is no longer usable in new flows. This is the reversible alternative to archiving: the price remains visible and can be reactivated later, but it stops being eligible for active catalog operations.
Deactivation only affects future catalog flows. Existing orders that already reference the price keep their recorded amount, and you can reactivate the same price later if you need to reuse it.
Request attributes
Request
curl https://api.zebo.dev/prices/deactivate -H "Authorization: Bearer $COMMERCE_API_KEY" -H "Content-Type: application/json" -d '{
"price_id": "pr_k8m2x9v4n7p1"
}'
{
"price": {
"id": "pr_k8m2x9v4n7p1",
"about": "Standard monthly subscription price",
"active": false,
"nominal": {
"currency": "usd",
"value": 2999
},
"created_at": "2026-02-13T02:00:00Z",
"label": "Monthly",
"product": {
"id": "prod_abc123xyz789",
"about": "Starter plan for solo businesses",
"active": true,
"attributes": [
{
"name": "tier",
"value": "starter"
}
],
"category": "software",
"created_at": "2026-02-13T01:45:00Z",
"custom_data": {
"plan": "starter"
},
"description": "Standard monthly subscription",
"name": "Starter plan",
"published_at": "2026-02-13T02:05:00Z",
"reference": "plan-starter-monthly",
"tax_code": "txcd_software",
"type": "digital"
},
"updated_at": "2026-02-13T04:20:00Z"
}
}