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

# Atualizar Preço de Assinatura

> Atualize um preço de assinatura existente

## Visão Geral

Atualize um preço de assinatura existente. Alterações de valor e período de teste afetam apenas **novas assinaturas**. Assinaturas existentes mantêm os valores originais.

## Exemplo de Requisição

<CodeGroup>
  ```bash cURL theme={null}
  curl -X PATCH https://garu.com.br/api/subscription-prices/456 \
    -H "Authorization: Bearer sk_test_sua_chave" \
    -H "Content-Type: application/json" \
    -d '{
      "name": "Plano Mensal Premium",
      "unitAmount": 59.90,
      "isActive": true
    }'
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch(
    'https://garu.com.br/api/subscription-prices/456',
    {
      method: 'PATCH',
      headers: {
        'Authorization': `Bearer ${process.env.GARU_API_KEY}`,
        'Content-Type': 'application/json'
      },
      body: JSON.stringify({
        name: 'Plano Mensal Premium',
        unitAmount: 59.90,
        isActive: true
      })
    }
  );

  const preco = await response.json();
  console.log(`Preço atualizado: ${preco.name}`);
  ```

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

  url = "https://garu.com.br/api/subscription-prices/456"
  headers = {
      "Authorization": f"Bearer {os.environ['GARU_API_KEY']}",
      "Content-Type": "application/json"
  }
  payload = {
      "name": "Plano Mensal Premium",
      "unitAmount": 59.90,
      "isActive": True
  }

  response = requests.patch(url, json=payload, headers=headers)
  preco = response.json()
  print(f"Preço atualizado: {preco['name']}")
  ```
</CodeGroup>

## Parâmetros

<ParamField body="name" type="string">
  Nome do plano.
</ParamField>

<ParamField body="unitAmount" type="number">
  Novo valor em **Reais** (BRL decimal, ex: `59.90`), nunca em centavos. Afeta apenas novas assinaturas. Precisa ser de **pelo menos R\$ 5,00**: um valor menor, inclusive `0`, é recusado com `400`. Omita o campo para manter o valor atual.

  Na atualização o campo se chama `unitAmount`, não `amount` (o nome usado na criação). Um `amount` enviado aqui é ignorado, e o valor não muda.
</ParamField>

<ParamField body="billingInterval" type="string">
  Intervalo de cobrança: `daily`, `weekly`, `monthly`, `annually` (afeta apenas novas assinaturas).
</ParamField>

<ParamField body="trialPeriodDays" type="integer">
  Dias de teste gratuito (afeta apenas novas assinaturas). Na atualização o campo se chama `trialPeriodDays`, não `trialDays`.
</ParamField>

<ParamField body="isActive" type="boolean">
  Se o plano está disponível para novos assinantes.
</ParamField>

## Campos Atualizáveis

| Campo | Descrição | Afeta assinaturas existentes? |
| - | - | - |
| `name` | Nome do plano | Não |
| `unitAmount` | Valor em Reais (mínimo R\$ 5,00) | **Não** - apenas novas |
| `billingInterval` | Intervalo de cobrança | **Não** - apenas novas |
| `trialPeriodDays` | Dias de teste | **Não** - apenas novas |
| `isActive` | Disponibilidade | Não |

<Warning>
  Alterações de `unitAmount` e `trialPeriodDays` afetam apenas **novas** assinaturas. Assinaturas existentes mantêm os valores originais contratados.
</Warning>

## Resposta de Sucesso (200 OK)

```json theme={null}
{
  "id": "price_def456uvw",
  "productId": "prod_abc123xyz",
  "sellerId": 1,
  "name": "Plano Mensal Premium",
  "unitAmount": 59.90,
  "currency": "BRL",
  "billingInterval": "monthly",
  "trialPeriodDays": 7,
  "isActive": true,
  "createdAt": "2024-01-15T10:35:00.000Z",
  "updatedAt": "2024-01-20T15:00:00.000Z"
}
```

## Desativar um Plano

Para impedir novas assinaturas em um plano sem excluí-lo:

```bash theme={null}
curl -X PATCH https://garu.com.br/api/subscription-prices/456 \
  -H "Authorization: Bearer sk_test_sua_chave" \
  -H "Content-Type: application/json" \
  -d '{"isActive": false}'
```

<Note>
  Desativar um plano não afeta assinaturas existentes. Elas continuam sendo cobradas normalmente.
</Note>

## Erros Comuns

<AccordionGroup>
  <Accordion title="404 - Preço não encontrado">
    ```json theme={null}
    {
      "statusCode": 404,
      "message": "Subscription price not found"
    }
    ```

    **Solução:** Verifique se o ID do preço está correto.
  </Accordion>

  <Accordion title="400 - Valor abaixo do mínimo">
    ```json theme={null}
    {
      "statusCode": 400,
      "timestamp": "2026-09-30T21:00:00.000Z",
      "path": "/api/subscription-prices/456",
      "message": "O preço mínimo de um produto é R$ 5,00."
    }
    ```

    **Solução:** Envie um `unitAmount` de pelo menos `5.00`, em Reais. Um preço de assinatura não pode ser `0`.
  </Accordion>
</AccordionGroup>

## Próximos Passos

<CardGroup cols={2}>
  <Card title="Excluir Preço" icon="trash" href="/api-reference/assinaturas/precos/excluir">
    Remova um preço
  </Card>

  <Card title="Listar Assinaturas" icon="users" href="/api-reference/assinaturas/listar">
    Consulte assinaturas ativas
  </Card>
</CardGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.