> ## Documentation Index
> Fetch the complete documentation index at: https://docs.onepay.la/llms.txt
> Use this file to discover all available pages before exploring further.

# Listado de precios

> Obtiene los precios del catálogo de tu empresa con filtros y paginación.

Obtiene los precios registrados en tu cuenta de OnePay. Solo se devuelven los precios del catálogo (aquellos asociados a un producto), ordenados del más reciente al más antiguo, dentro de un envelope de paginación.

### Query Parameters

<ParamField query="product" type="string" placeholder="9f5d85a0-1111-7000-aaaa-000000000001">
  Filtra los precios por el ID de un producto tuyo. [Ver productos](/client/products/index).
</ParamField>

<ParamField query="active" type="boolean" placeholder="true">
  Filtra por estado. `true` devuelve solo los precios vigentes.
</ParamField>

<ParamField query="lookup_keys" type="array" placeholder="pro_monthly">
  Resuelve uno o varios precios por su `lookup_key`. Se envía como arreglo, por ejemplo `?lookup_keys[]=pro_monthly&lookup_keys[]=pro_yearly`.
</ParamField>

<ParamField query="per_page" type="integer" default="15">
  Cantidad de registros por página.
</ParamField>

<ParamField query="page" type="integer" default="1">
  Número de página a consultar.
</ParamField>

<RequestExample>
  ```bash cURL theme={null}
  curl "https://api.onepay.la/v1/prices?product=9f5d85a0-1111-7000-aaaa-000000000001&active=true&per_page=15&page=1" \
    -H "Authorization: Bearer sk_test_xxx"
  ```

  ```javascript JavaScript theme={null}
  const params = new URLSearchParams({
    product: '9f5d85a0-1111-7000-aaaa-000000000001',
    active: 'true',
    per_page: '15',
    page: '1'
  });

  const response = await fetch(`https://api.onepay.la/v1/prices?${params}`, {
    method: 'GET',
    headers: {
      'Authorization': 'Bearer sk_test_xxx'
    }
  });

  const data = await response.json();
  console.log(data.data); // Array de precios
  console.log(data.current_page); // Página actual
  ```

  ```python Python theme={null}
  import requests

  response = requests.get(
      'https://api.onepay.la/v1/prices',
      params={
          'product': '9f5d85a0-1111-7000-aaaa-000000000001',
          'active': True,
          'per_page': 15,
          'page': 1
      },
      headers={
          'Authorization': 'Bearer sk_test_xxx'
      }
  )

  data = response.json()
  print(data['data'])          # Array de precios
  print(data['current_page'])  # Página actual
  ```

  ```php PHP theme={null}
  <?php
  $curl = curl_init();

  $query = http_build_query([
      "product" => "9f5d85a0-1111-7000-aaaa-000000000001",
      "active" => "true",
      "per_page" => 15,
      "page" => 1
  ]);

  curl_setopt_array($curl, [
      CURLOPT_URL => "https://api.onepay.la/v1/prices?" . $query,
      CURLOPT_RETURNTRANSFER => true,
      CURLOPT_HTTPHEADER => [
          "Authorization: Bearer sk_test_xxx"
      ]
  ]);

  $data = json_decode(curl_exec($curl), true);
  print_r($data["data"]);       // Array de precios
  echo $data["current_page"];   // Página actual
  ?>
  ```
</RequestExample>

### Response

<ResponseField name="data" type="array">
  Colección de precios de la página actual.

  <Expandable title="Propiedades">
    <ResponseField name="id" type="string">
      Identificador único del precio (UUID).
    </ResponseField>

    <ResponseField name="object" type="string">
      Tipo de objeto, siempre `price`.
    </ResponseField>

    <ResponseField name="product" type="string">
      ID del producto padre al que pertenece el precio.
    </ResponseField>

    <ResponseField name="active" type="boolean">
      Indica si el precio está vigente. Un precio archivado es `false`.
    </ResponseField>

    <ResponseField name="nickname" type="string">
      Etiqueta interna del precio. Puede ser `null`.
    </ResponseField>

    <ResponseField name="lookup_key" type="string">
      Clave estable para re-apuntar el precio vigente sin cambiar tu código. Puede ser `null`.
    </ResponseField>

    <ResponseField name="currency" type="string">
      Moneda ISO del cobro (por ejemplo `COP`).
    </ResponseField>

    <ResponseField name="unit_amount_in_cents" type="integer">
      Monto a cobrar, expresado en centavos.
    </ResponseField>

    <ResponseField name="type" type="string">
      Tipo de precio, siempre `recurring`.
    </ResponseField>

    <ResponseField name="recurring" type="object">
      Configuración de recurrencia del cobro.

      <Expandable title="recurring">
        <ResponseField name="interval" type="string">
          Unidad del ciclo: `day` o `month`.
        </ResponseField>

        <ResponseField name="interval_count" type="integer">
          Número de intervalos por ciclo.
        </ResponseField>

        <ResponseField name="total_cycles" type="integer">
          Número total de ciclos. `null` cuando es indefinido.
        </ResponseField>

        <ResponseField name="trial_period_days" type="integer">
          Días de prueba antes del primer cobro.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="created_at" type="string">
      Fecha de creación en formato ISO 8601.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="current_page" type="integer">
  Página actual devuelta.
</ResponseField>

<ResponseField name="from" type="integer">
  Índice del primer registro de la página.
</ResponseField>

<ResponseField name="last_page" type="integer">
  Última página disponible.
</ResponseField>

<ResponseField name="per_page" type="integer">
  Cantidad de registros por página.
</ResponseField>

<ResponseField name="to" type="integer">
  Índice del último registro de la página.
</ResponseField>

<ResponseField name="total" type="integer">
  Total de precios que coinciden con el filtro.
</ResponseField>

<ResponseExample>
  ```json 200 theme={null}
  {
    "data": [
      {
        "id": "9f5d85a0-2222-7000-aaaa-000000000002",
        "object": "price",
        "product": "9f5d85a0-1111-7000-aaaa-000000000001",
        "active": true,
        "nickname": "Mensual",
        "lookup_key": "pro_monthly",
        "currency": "COP",
        "unit_amount_in_cents": 7990000,
        "type": "recurring",
        "recurring": {
          "interval": "month",
          "interval_count": 1,
          "total_cycles": null,
          "trial_period_days": 0
        },
        "created_at": "2026-07-13T12:00:00.000000Z"
      }
    ],
    "current_page": 1,
    "from": 1,
    "last_page": 1,
    "per_page": 15,
    "to": 1,
    "total": 1
  }
  ```
</ResponseExample>
