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.
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. 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 and belong to your application. 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 {token}" \
-H "Content-Type: application/json" \
-d '{
"amount": {
"currency": "usd",
"value": 2999
},
"label": "Monthly",
"about": "Standard monthly subscription price",
"product_id": "prod_abc123xyz789"
}'
Response
{
"price": {
"id": "pr_k8m2x9v4n7p1",
"about": "Standard monthly subscription price",
"amount": {
"currency": "usd",
"value": 2999
},
"archived_at": null,
"created_at": "2026-02-13T02:00:00Z",
"label": "Monthly",
"product_id": "prod_abc123xyz789",
"updated_at": null
}
}
Lookup a price
Retrieve the details of an existing price by its ID. Returns the full price object including its amount, currency, product association, and timestamps.
Request attributes
Request
curl https://api.zebo.dev/prices/lookup \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{
"price_id": "pr_k8m2x9v4n7p1"
}'
Response
{
"price": {
"id": "pr_k8m2x9v4n7p1",
"about": "Standard monthly subscription price",
"amount": {
"currency": "usd",
"value": 2999
},
"archived_at": null,
"created_at": "2026-02-13T02:00:00Z",
"label": "Monthly",
"product_id": "prod_abc123xyz789",
"updated_at": null
}
}
Update a price
Update the mutable fields of an existing price. You can change the label, description, and product association—but the amount and currency are immutable. If you need a different amount, create a new price.
Product association has a one-way constraint: a price without a product can be associated with one, but once set, the product_id cannot be changed to a different product. The referenced product must exist and belong to your application.
Request attributes
Request
curl https://api.zebo.dev/prices/update \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{
"price_id": "pr_k8m2x9v4n7p1",
"label": "Monthly (discounted)",
"about": "Promotional monthly rate for early adopters"
}'
Response
{
"price": {
"id": "pr_k8m2x9v4n7p1",
"about": "Promotional monthly rate for early adopters",
"amount": {
"currency": "usd",
"value": 2999
},
"archived_at": null,
"created_at": "2026-02-13T02:00:00Z",
"label": "Monthly (discounted)",
"product_id": "prod_abc123xyz789",
"updated_at": "2026-02-13T03:00:00Z"
}
}