Skip to content
Select themeSelect language

`GET /api/marketplace/purchases/{id}` — fetch a single purchase by ID. Only accessible to the buyer who owns the purchase.

GET
/api/marketplace/purchases/{id}
curl --request GET \
--url https://example.com/api/marketplace/purchases/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0
id
required
string format: uuid
Media typeapplication/json

A purchase record tying a buyer (user + workspace) to a specific item version via a price row. All monetary amounts are in minor units (cents). fee_policy_snapshot captures the fee settings at purchase time for audit.

object
amount_minor
required
integer format: int32
buyer_user_id
required
string format: uuid
buyer_workspace_id
required
string format: uuid
cancel_at_period_end
required
boolean
canceled_at
string | null format: date-time
created_at
required
string format: date-time
currency
required
string
current_period_end

Stripe’s truth: the end of the period that is currently paid for.

string | null format: date-time
disputed_at
string | null format: date-time
fee_policy_snapshot
required
id
required
string format: uuid
item_version_id
required
string format: uuid
license_expires_at

The single enforcement instant the license gate reads. None = perpetual (a one-time purchase). See migration 350 for why it is derived from current_period_end plus the grace window rather than equal to it.

string | null format: date-time
platform_fee_minor
required
integer format: int32
price_id
required
string format: uuid
provider_checkout_id
string | null
provider_fee_minor
required
integer format: int32
provider_payment_id
string | null
provider_subscription_id

The Stripe subscription (sub_...) this license is driven by. Also the routing key that CLAIMS an invoice.* / customer.subscription.* event for the marketplace instead of org billing.

string | null
purchased_at
string | null format: date-time
refunded_at
string | null format: date-time
seller_profile_id
required
string format: uuid
status
required

Purchase lifecycle status (marketplace_purchases.status CHECK). Runtime stays String; the spec narrows it to the closed [PurchaseStatusSpec].

string
Allowed values: pending active refunded partially_refunded disputed revoked past_due suspended canceled
updated_at
required
string format: date-time
Example
{
"status": "pending"
}