Skip to main content
GET

Intro

Returns a Khaime catalog product’s price converted to the customer’s detected or specified currency, including fee breakdown, available payment methods, and any active regional price adjustment.
The path is singular — /product/{product_id}/pricing, not /products/{product_id}/pricing.

Context

This is the product-based counterpart to Calculate Pricing, which does the same conversion for an arbitrary amount without a catalog product. Use this endpoint to render a localized price on a product page; use Calculate Pricing when you already know the amount (e.g. cart total) and just need conversion. The local.amount this returns is exactly what you’d pass as amount on Create Payment Intent for this product.

Hows

Path parameters

integer
required
The Khaime product ID.

Query parameters

string
Override auto-detected currency. 3-letter ISO code (e.g., NGN).
string
Override auto-detected customer country. 2-letter ISO code (e.g., NG). When omitted, the country is derived from the payment currency (e.g., NGNNG), with IP geolocation as a fallback. Only needed for ambiguous currencies like USD.

Response

Price discrimination (regional pricing)

If the merchant has configured a regional pricing rule for the customer’s country, the price_discrimination field is included in the response. The adjustment is applied to the base price before currency conversion, so pricing.local already reflects the discriminated amount. When no rule is active for the customer’s country, price_discrimination is null.

Error codes

Whys

Pricing is resolved per-product (rather than requiring you to fetch the catalog price and call Calculate Pricing yourself) because product pricing can carry a regional discrimination rule the generic conversion endpoint has no way to know about — this endpoint applies that adjustment before conversion so the returned local.amount is ready to charge as-is.

Why nots

  • The path is /product/{id}/pricing, singular — it is easy to guess wrong from List Products’ plural /products and get a 404.
  • This does not create a charge or reserve the price — it’s a read-only quote. Rates can drift between this call and an actual Create Payment Intent request; the intent endpoint uses the product’s live catalog price at charge time, not a value you pass back in from here.
  • Fee details are not returned here — this endpoint reports price and available payment methods, not a fee_details breakdown. Use Create Charge’s preview mode for that.