---
title: "Get the effective price for a product"
method: GET
path: "/v1/organization/billing/prices/resolve"
tags: ["billing"]
---

# Get the effective price for a product

`GET /v1/organization/billing/prices/resolve`

## Request

- Base URL: `https://us1.platform.bird.com`
- URL: `https://us1.platform.bird.com/v1/organization/billing/prices/resolve`
- Auth: one of:
  - HTTP bearer
  - API key in cookie `bird_session`

Returns the effective unit price, tax, and gross price for a product after organization- and plan-specific pricing. Provide exactly one of `product_id` or `product_slug`. You can also provide pricing dimensions and a currency. Pass `plan_id` to price under a published self-serve plan in place of your current plan; organization-specific rates still take precedence. The currency defaults to the organization's billing currency; if necessary, the price is converted from the product's base currency. Requires a delegated user OAuth token with `org:billing:read`; workspace and organization master API keys are refused with `403`.

## Query parameters

- `product_id` string
- `product_slug` string
- `plan_id` string
- `dimensions` object
- `currency` string

## Headers

- `X-Organization-Id` string

## Response `200`

The resolved price.

- BillingResolvedPrice
  - `unit_price` Money, required
    - `amount` string, required: Decimal amount as a string, in major currency units.
    - `currency_code` string, required: ISO 4217 three-letter currency code.
  - `tax_rate` string, required: The tax rate applied to this price for your organization, as a decimal (for example `0.21` for 21%). `0` if your organization is tax-exempt or no tax applies.
  - `tax_amount` Money, required
    - `amount` string, required: Decimal amount as a string, in major currency units.
    - `currency_code` string, required: ISO 4217 three-letter currency code.
  - `gross_price` Money, required
    - `amount` string, required: Decimal amount as a string, in major currency units.
    - `currency_code` string, required: ISO 4217 three-letter currency code.
  - `billing_unit_size` integer, required: Number of units that form one chargeable block. Overage usage is ceiling-rounded to the nearest multiple of this value before the unit price is applied. A value of 1 charges per individual unit.
  - `increment` string, nullable: The billing rounding window for time-based products, expressed as `{initial_seconds}/{continuation_seconds}`. For example, `60/60` means each unit covers 60 seconds. `null` for per-unit products.
  - `dimensions` object, required: Pricing dimensions that determined this price (for example, `country_code`, `sender_type`).
  - `name` string, required: Display name of the product this price was resolved for.
  - `external_description` string, nullable: Customer-facing description of the product this price was resolved for, when set.
  - `pricing_model` 'plan' | 'metered' | 'rate_card' | 'unit_subscription' | 'custom' | 'counter', required: How this product is priced. - `plan`: it comes with the organization's subscribed plan, with usage tracked against that plan's included allowance. - `metered`: it is billed per unit beyond any included allowance. - `rate_card`: the per-unit price varies by attributes of the usage, such as destination, instead of being flat. - `unit_subscription`: it is a standalone add-on billed as its own recurring subscription, independent of the plan. - `custom`: a pricing arrangement that does not fit the other models. - `counter`: usage is recorded without enforcing a spending cap or blocking requests.
  - `billing_interval` 'day' | 'month' | 'year': The recurring interval one subscription charge covers.
  - `billing_interval_count` integer: Compatibility alias for `intervals_per_charge`. Only present when `pricing_model` is `unit_subscription`, or `plan` with configured recurring terms. Omitted for other pricing models and plans without configured terms.
  - `pricing_interval` BillingPricingInterval: A period: a unit and a count. A day is a fixed 24-hour UTC period. A larger `count` lengthens the period without multiplying the amount quoted for it.
    - `unit` 'day' | 'month' | 'year', required: The recurring interval one subscription charge covers.
    - `count` integer, required: Number of units in the period.
  - `intervals_per_charge` integer: Number of complete pricing intervals bought by each recurring charge. Renewal duration is `pricing_interval.count` multiplied by this value. Present alongside `pricing_interval` for `unit_subscription` products and plans with configured recurring terms; omitted otherwise.

## Other responses

- `400`: Bad request
- `401`: Authentication required
- `403`: Insufficient permissions
- `404`: Resource not found
- `422`: The request has invalid field values, violates a business rule, or carries a query parameter the endpoint does not declare. Field validation errors use `type: validation_error` and include the affected fields in `details`. Business-rule errors identify the failed rule in `type`.
- `429`: Rate limit exceeded
- `500`: Internal server error

## Changes

- **2026-10-20** `a1977645a499`: 1 info
  - endpoint added
- **2026-10-20** `6cec81ac4862`: 1 breaking
  - api path removed without deprecation
- **2026-10-20** `3e2a50466454`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/messagebird/apis/bird-api/changes/v1/organization/billing/prices/resolve/get.md)

---

[API](https://skmtc.dev/messagebird/apis/bird-api.md) · [All operations](https://skmtc.dev/messagebird/apis/bird-api/llms.txt) · [OpenAPI document](https://skmtc.dev/messagebird/apis/bird-api/revisions/a1977645a499?raw)
