Prices
Use this reference for exact request attributes, response envelopes, object shape, and examples. For catalog modeling, product-price relationships, and selling patterns, start with Manage your product catalog.
Price and product IDs from another application are treated as unavailable. Use the response error code rather than the HTTP status alone when choosing a recovery path.
Operations
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 an active price with a specific currency and amount. The amount, currency, and product relationship are immutable after creation—if any of them needs to change, create a replacement price and retire the old one.
If you provide product_id, choose an existing product from your catalog. This endpoint currently permits attachment to an archived product and still creates the price as active; price eligibility does not consult the product's archive state. amount.value must be a positive integer in the currency's smallest unit, and currency codes are normalized to lowercase.
Request attributes
Request
- cURL
- TypeScript
- Go
- Python
- PHP
- Ruby
- Java
- C#
curl https://api.inttegro.com/prices/create \
-H "Authorization: Bearer $INTTEGRO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"amount": {
"currency": "usd",
"value": 2999
},
"label": "Monthly",
"about": "Standard monthly subscription price",
"product_id": "prod_abc123xyz789"
}'
import * as Inttegro from '@inttegro/inttegro-sdk'
const inttegro = new Inttegro.InttegroClient({
apiKey: process.env.INTTEGRO_API_KEY!,
})
const result = await inttegro.prices.create({
amount: {
currency: "usd",
value: 2999,
},
label: "Monthly",
about: "Standard monthly subscription price",
productId: "prod_abc123xyz789",
})
package main
import (
"context"
"log"
"os"
inttegro "github.com/zebodotdev/inttegro-sdk-go/v4"
"github.com/zebodotdev/inttegro-sdk-go/v4/money"
)
func main() {
ctx := context.Background()
client := inttegro.NewClient(os.Getenv("INTTEGRO_API_KEY"))
params := inttegro.CatalogPriceParams{
Amount: money.AmountParams{
Currency: money.USD,
Value: 2999,
},
Label: "Monthly",
About: "Standard monthly subscription price",
ProductID: "prod_abc123xyz789",
}
result, err := client.Prices.Create(ctx, params)
if err != nil {
log.Fatal(err)
}
_ = result
}
import os
import inttegro
client = inttegro.InttegroClient(api_key=os.environ["INTTEGRO_API_KEY"])
result = client.prices.create(inttegro.prices.CreateRequest(
amount=inttegro.prices.Amount(
currency=inttegro.Currency.USD,
value=2999,
),
label="Monthly",
about="Standard monthly subscription price",
product_id="prod_abc123xyz789",
))
<?php
use Inttegro\Client;
$client = new Client($_ENV['INTTEGRO_API_KEY']);
$result = $client->prices->create([
'amount' => [
'currency' => 'usd',
'value' => 2999,
],
'label' => 'Monthly',
'about' => 'Standard monthly subscription price',
'product_id' => 'prod_abc123xyz789',
]);
require "inttegro"
client = Inttegro::Client.new(api_key: ENV.fetch("INTTEGRO_API_KEY"))
result = client.prices.create(
amount: {
currency: "usd",
value: 2999,
},
label: "Monthly",
about: "Standard monthly subscription price",
product_id: "prod_abc123xyz789"
)
import com.inttegro.Client;
import com.inttegro.prices.CatalogPriceParams;
import com.inttegro.money.AmountParams;
import com.inttegro.money.Currency;
public class Example {
public static void main(String[] args) throws Exception {
var client = new Client(System.getenv("INTTEGRO_API_KEY"));
var params = CatalogPriceParams.builder()
.amount(AmountParams.of(Currency.USD, 2999))
.label("Monthly")
.about("Standard monthly subscription price")
.productId("prod_abc123xyz789")
.build();
var result = client.prices().create(params);
}
}
using Inttegro;
using var inttegro = new InttegroClient(
Environment.GetEnvironmentVariable("INTTEGRO_API_KEY")!
);
var result = await inttegro.Prices.CreateAsync(new {
amount = new {
currency = "usd",
value = 2999,
},
label = "Monthly",
about = "Standard monthly subscription price",
product_id = "prod_abc123xyz789",
});
Archive a price
Permanently retire a price. Archiving sets active to false, records archived_at, and advances updated_at. The amount, optional product relationship, and historical order snapshots remain unchanged.
Archived prices remain available through lookup and pagination but cannot be activated or selected by new catalog-priced order and purchase-intent flows. An already-archived price returns a lifecycle conflict; create a new price if you later need the same amount again.
Request attributes
Request
- cURL
- SDK coverage
curl https://api.inttegro.com/prices/archive \
-H "Authorization: Bearer $INTTEGRO_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: archive-price-pr_k8m2x9v4n7p1" \
-d '{"price_id":"pr_k8m2x9v4n7p1"}'
Official SDK coverage for POST /prices/archive is pending.
Add this operation to the checked-in SDKs before publishing a runnable sample here.
Response
- Object
- JSON
PriceResponse {
price: { … },
}
{
"price": {
"id": "pr_k8m2x9v4n7p1",
"about": "Standard monthly subscription price",
"active": false,
"archived_at": "2026-03-01T09:00:00Z",
"created_at": "2026-02-13T02:00:00Z",
"label": "Monthly",
"nominal": { … },
"product": { … },
"updated_at": "2026-03-01T09:00:00Z"
}
}
Lookup a price
Retrieve an existing price by its ID. Active, inactive, and archived prices can all be read. The response includes the immutable nominal amount, any associated product snapshot, and lifecycle timestamps; a standalone price omits product.
AI clients can use get_price for this operation. MCP read tools return minimized business data and do not change Inttegro state.
Request attributes
Request
- cURL
- TypeScript
- Go
- Python
- PHP
- Ruby
- Java
- C#
curl https://api.inttegro.com/prices/lookup \
-H "Authorization: Bearer $INTTEGRO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"price_id": "pr_k8m2x9v4n7p1"
}'
import * as Inttegro from '@inttegro/inttegro-sdk'
const inttegro = new Inttegro.InttegroClient({
apiKey: process.env.INTTEGRO_API_KEY!,
})
const result = await inttegro.prices.lookup({
priceId: "pr_k8m2x9v4n7p1",
})
package main
import (
"context"
"log"
"os"
inttegro "github.com/zebodotdev/inttegro-sdk-go/v4"
)
func main() {
ctx := context.Background()
client := inttegro.NewClient(os.Getenv("INTTEGRO_API_KEY"))
result, err := client.Prices.Lookup(ctx, "pr_k8m2x9v4n7p1")
if err != nil {
log.Fatal(err)
}
_ = result
}
import os
import inttegro
client = inttegro.InttegroClient(api_key=os.environ["INTTEGRO_API_KEY"])
result = client.prices.lookup("pr_k8m2x9v4n7p1")
<?php
use Inttegro\Client;
$client = new Client($_ENV['INTTEGRO_API_KEY']);
$result = $client->prices->lookup("pr_k8m2x9v4n7p1");
require "inttegro"
client = Inttegro::Client.new(api_key: ENV.fetch("INTTEGRO_API_KEY"))
result = client.prices.lookup(price_id: "pr_k8m2x9v4n7p1")
import com.inttegro.Client;
public class Example {
public static void main(String[] args) throws Exception {
var client = new Client(System.getenv("INTTEGRO_API_KEY"));
var result = client.prices().lookup("pr_k8m2x9v4n7p1");
}
}
using Inttegro;
using var inttegro = new InttegroClient(
Environment.GetEnvironmentVariable("INTTEGRO_API_KEY")!
);
var result = await inttegro.Prices.LookupAsync("pr_k8m2x9v4n7p1");
Page through prices
Retrieve a paginated list of your prices. 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.
AI clients can use list_prices for this operation. MCP read tools return minimized business data and do not change Inttegro state.
Request attributes
Request
- cURL
- TypeScript
- Go
- Python
- PHP
- Ruby
- Java
- C#
curl https://api.inttegro.com/prices/page \
-H "Authorization: Bearer $INTTEGRO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"page_number": 1,
"page_size": 2,
"product_id": "prod_abc123xyz789"
}'
import * as Inttegro from '@inttegro/inttegro-sdk'
const inttegro = new Inttegro.InttegroClient({
apiKey: process.env.INTTEGRO_API_KEY!,
})
const result = await inttegro.prices.page({
pageNumber: 1,
pageSize: 2,
productId: "prod_abc123xyz789",
})
package main
import (
"context"
"log"
"os"
inttegro "github.com/zebodotdev/inttegro-sdk-go/v4"
)
func main() {
ctx := context.Background()
client := inttegro.NewClient(os.Getenv("INTTEGRO_API_KEY"))
params := inttegro.PricePageParams{
PageNumber: 1,
PageSize: 2,
ProductID: "prod_abc123xyz789",
}
result, err := client.Prices.Page(ctx, params)
if err != nil {
log.Fatal(err)
}
_ = result
}
import os
import inttegro
client = inttegro.InttegroClient(api_key=os.environ["INTTEGRO_API_KEY"])
result = client.prices.page(inttegro.prices.PageRequest(
page_number=1,
page_size=2,
product_id="prod_abc123xyz789",
))
<?php
use Inttegro\Client;
$client = new Client($_ENV['INTTEGRO_API_KEY']);
$result = $client->prices->page([
'page_number' => 1,
'page_size' => 2,
'product_id' => 'prod_abc123xyz789',
]);
require "inttegro"
client = Inttegro::Client.new(api_key: ENV.fetch("INTTEGRO_API_KEY"))
result = client.prices.page(
page_number: 1,
page_size: 2,
product_id: "prod_abc123xyz789"
)
import com.inttegro.Client;
import com.inttegro.prices.PagePricesParams;
public class Example {
public static void main(String[] args) throws Exception {
var client = new Client(System.getenv("INTTEGRO_API_KEY"));
var params = PagePricesParams.builder()
.pageNumber(1)
.pageSize(2)
.productId("prod_abc123xyz789")
.build();
var result = client.prices().page(params);
}
}
using Inttegro;
using var inttegro = new InttegroClient(
Environment.GetEnvironmentVariable("INTTEGRO_API_KEY")!
);
var result = await inttegro.Prices.PageAsync(new {
page_number = 1,
page_size = 2,
product_id = "prod_abc123xyz789",
});
Update a price
Update an existing price's descriptive fields. Only about and label are mutable. The product association and nominal amount remain fixed after creation, so create a new price when either needs to change.
Do not send amount or product_id: they are not supported updates. Updating an archived price's descriptive fields is currently allowed and does not reactivate it. Sending no changed descriptive fields returns the current price without advancing updated_at.
Request attributes
Request
- cURL
- TypeScript
- Go
- Python
- PHP
- Ruby
- Java
- C#
curl https://api.inttegro.com/prices/update \
-H "Authorization: Bearer $INTTEGRO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"price_id": "pr_k8m2x9v4n7p1",
"label": "Monthly (discounted)",
"about": "Promotional monthly rate for early adopters"
}'
import * as Inttegro from '@inttegro/inttegro-sdk'
const inttegro = new Inttegro.InttegroClient({
apiKey: process.env.INTTEGRO_API_KEY!,
})
const result = await inttegro.prices.update({
priceId: "pr_k8m2x9v4n7p1",
label: "Monthly (discounted)",
about: "Promotional monthly rate for early adopters",
})
package main
import (
"context"
"log"
"os"
inttegro "github.com/zebodotdev/inttegro-sdk-go/v4"
)
func main() {
ctx := context.Background()
client := inttegro.NewClient(os.Getenv("INTTEGRO_API_KEY"))
params := inttegro.UpdatePriceParams{
PriceID: "pr_k8m2x9v4n7p1",
Label: "Monthly (discounted)",
About: "Promotional monthly rate for early adopters",
}
result, err := client.Prices.Update(ctx, params)
if err != nil {
log.Fatal(err)
}
_ = result
}
import os
import inttegro
client = inttegro.InttegroClient(api_key=os.environ["INTTEGRO_API_KEY"])
result = client.prices.update(inttegro.prices.UpdateRequest(
price_id="pr_k8m2x9v4n7p1",
label="Monthly (discounted)",
about="Promotional monthly rate for early adopters",
))
<?php
use Inttegro\Client;
$client = new Client($_ENV['INTTEGRO_API_KEY']);
$result = $client->prices->update([
'price_id' => 'pr_k8m2x9v4n7p1',
'label' => 'Monthly (discounted)',
'about' => 'Promotional monthly rate for early adopters',
]);
require "inttegro"
client = Inttegro::Client.new(api_key: ENV.fetch("INTTEGRO_API_KEY"))
result = client.prices.update(
price_id: "pr_k8m2x9v4n7p1",
label: "Monthly (discounted)",
about: "Promotional monthly rate for early adopters"
)
import com.inttegro.Client;
import com.inttegro.prices.UpdatePriceParams;
public class Example {
public static void main(String[] args) throws Exception {
var client = new Client(System.getenv("INTTEGRO_API_KEY"));
var params = UpdatePriceParams.builder()
.priceId("pr_k8m2x9v4n7p1")
.label("Monthly (discounted)")
.about("Promotional monthly rate for early adopters")
.build();
var result = client.prices().update(params);
}
}
using Inttegro;
using var inttegro = new InttegroClient(
Environment.GetEnvironmentVariable("INTTEGRO_API_KEY")!
);
var result = await inttegro.Prices.UpdateAsync(new Inttegro.UpdatePriceRequest {
PriceId = "pr_k8m2x9v4n7p1",
Label = "Monthly (discounted)",
About = "Promotional monthly rate for early adopters",
});
Response
- Object
- JSON
PriceResponse {
price: { … },
}
{
"price": {
"id": "pr_k8m2x9v4n7p1",
"about": "Promotional monthly rate for early adopters",
"active": true,
"nominal": { … },
"created_at": "2026-02-13T02:00:00Z",
"label": "Monthly (discounted)",
"product": { … },
"updated_at": "2026-02-13T03:00:00Z"
}
}
Activate a price
Reactivate a previously deactivated price so it can be selected by new catalog-priced order and purchase-intent flows. Activation does not change the amount or product association; it sets active to true and advances updated_at.
Archived prices cannot be activated, and an already-active price returns a lifecycle conflict.
Request attributes
Request
- cURL
- TypeScript
- Go
- Python
- PHP
- Ruby
- Java
- C#
curl https://api.inttegro.com/prices/activate -H "Authorization: Bearer $INTTEGRO_API_KEY" -H "Content-Type: application/json" -d '{
"price_id": "pr_k8m2x9v4n7p1"
}'
import * as Inttegro from '@inttegro/inttegro-sdk'
const inttegro = new Inttegro.InttegroClient({
apiKey: process.env.INTTEGRO_API_KEY!,
})
const result = await inttegro.prices.activate({
priceId: "pr_k8m2x9v4n7p1",
})
package main
import (
"context"
"log"
"os"
inttegro "github.com/zebodotdev/inttegro-sdk-go/v4"
)
func main() {
ctx := context.Background()
client := inttegro.NewClient(os.Getenv("INTTEGRO_API_KEY"))
result, err := client.Prices.Activate(ctx, "pr_k8m2x9v4n7p1")
if err != nil {
log.Fatal(err)
}
_ = result
}
import os
import inttegro
client = inttegro.InttegroClient(api_key=os.environ["INTTEGRO_API_KEY"])
result = client.prices.activate("pr_k8m2x9v4n7p1")
<?php
use Inttegro\Client;
$client = new Client($_ENV['INTTEGRO_API_KEY']);
$result = $client->prices->activate("pr_k8m2x9v4n7p1");
require "inttegro"
client = Inttegro::Client.new(api_key: ENV.fetch("INTTEGRO_API_KEY"))
result = client.prices.activate(price_id: "pr_k8m2x9v4n7p1")
import com.inttegro.Client;
public class Example {
public static void main(String[] args) throws Exception {
var client = new Client(System.getenv("INTTEGRO_API_KEY"));
var result = client.prices().activate("pr_k8m2x9v4n7p1");
}
}
using Inttegro;
using var inttegro = new InttegroClient(
Environment.GetEnvironmentVariable("INTTEGRO_API_KEY")!
);
var result = await inttegro.Prices.ActivateAsync("pr_k8m2x9v4n7p1");
Response
- Object
- JSON
Deactivate a price
Deactivate a price so it is rejected by new catalog-priced order and purchase-intent flows. This is the reversible alternative to archiving: the price remains visible through lookup and pagination and can be reactivated later.
Deactivation only affects future selections. Existing orders that already reference the price keep their recorded amount. Archived and already-inactive prices return lifecycle conflicts.
Request attributes
Request
- cURL
- TypeScript
- Go
- Python
- PHP
- Ruby
- Java
- C#
curl https://api.inttegro.com/prices/deactivate -H "Authorization: Bearer $INTTEGRO_API_KEY" -H "Content-Type: application/json" -d '{
"price_id": "pr_k8m2x9v4n7p1"
}'
import * as Inttegro from '@inttegro/inttegro-sdk'
const inttegro = new Inttegro.InttegroClient({
apiKey: process.env.INTTEGRO_API_KEY!,
})
const result = await inttegro.prices.deactivate({
priceId: "pr_k8m2x9v4n7p1",
})
package main
import (
"context"
"log"
"os"
inttegro "github.com/zebodotdev/inttegro-sdk-go/v4"
)
func main() {
ctx := context.Background()
client := inttegro.NewClient(os.Getenv("INTTEGRO_API_KEY"))
result, err := client.Prices.Deactivate(ctx, "pr_k8m2x9v4n7p1")
if err != nil {
log.Fatal(err)
}
_ = result
}
import os
import inttegro
client = inttegro.InttegroClient(api_key=os.environ["INTTEGRO_API_KEY"])
result = client.prices.deactivate("pr_k8m2x9v4n7p1")
<?php
use Inttegro\Client;
$client = new Client($_ENV['INTTEGRO_API_KEY']);
$result = $client->prices->deactivate("pr_k8m2x9v4n7p1");
require "inttegro"
client = Inttegro::Client.new(api_key: ENV.fetch("INTTEGRO_API_KEY"))
result = client.prices.deactivate(price_id: "pr_k8m2x9v4n7p1")
import com.inttegro.Client;
public class Example {
public static void main(String[] args) throws Exception {
var client = new Client(System.getenv("INTTEGRO_API_KEY"));
var result = client.prices().deactivate("pr_k8m2x9v4n7p1");
}
}
using Inttegro;
using var inttegro = new InttegroClient(
Environment.GetEnvironmentVariable("INTTEGRO_API_KEY")!
);
var result = await inttegro.Prices.DeactivateAsync("pr_k8m2x9v4n7p1");
Response
- Object
- JSON
PriceResponse {
price: { … },
}
{
"price": {
"id": "pr_k8m2x9v4n7p1",
"about": "Standard monthly subscription price",
"active": false,
"nominal": { … },
"created_at": "2026-02-13T02:00:00Z",
"label": "Monthly",
"product": { … },
"updated_at": "2026-02-13T04:20:00Z"
}
}