Skip to main content
POST
/
api
/
subscription-prices
Criar Preço de Assinatura
curl --request POST \
  --url https://garu.com.br/api/subscription-prices \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "productId": "<string>",
  "name": "<string>",
  "amount": 123,
  "billingInterval": "<string>",
  "trialDays": 123,
  "isActive": true
}
'
{
  "id": 123,
  "uuid": "<string>",
  "productId": "<string>",
  "name": "<string>",
  "amount": 123,
  "billingInterval": "<string>",
  "trialDays": 123,
  "isActive": true
}

Visão Geral

Crie um preço de assinatura para definir quanto e com que frequência os clientes serão cobrados. Um produto pode ter múltiplos preços (ex: mensal, anual).

Parâmetros

Campos Obrigatórios

productId
string
required
UUID do produto pai (ex: prod_abc123xyz). O produto deve ser do tipo subscription.
name
string
required
Nome do plano exibido ao cliente (ex: “Plano Mensal”).
amount
number
required
Valor em Reais (ex: 49.90).
billingInterval
string
required
Intervalo de cobrança: daily, weekly, monthly, annually.

Campos Opcionais

trialDays
integer
default:"0"
Dias de teste gratuito antes da primeira cobrança.
isActive
boolean
default:"true"
Se o plano está disponível para novos assinantes.
A moeda padrão é BRL (Real Brasileiro). Não é necessário enviar o campo currency na requisição.

Exemplo de Requisição

curl -X POST https://garu.com.br/api/subscription-prices \
  -H "Authorization: Bearer sk_test_sua_chave" \
  -H "Content-Type: application/json" \
  -d '{
    "productId": "prod_abc123xyz",
    "name": "Plano Mensal",
    "amount": 49.90,
    "billingInterval": "monthly",
    "trialDays": 7
  }'

Resposta de Sucesso

id
number
ID interno do preço.
uuid
string
Identificador único usado no link de checkout.
productId
string
UUID do produto pai.
name
string
Nome do plano.
amount
number
Valor em Reais.
billingInterval
string
Intervalo de cobrança.
trialDays
number
Dias de teste gratuito.
isActive
boolean
Se o plano está ativo.

Exemplo de Resposta (201 Created)

{
  "id": "price_def456uvw",
  "productId": "prod_abc123xyz",
  "sellerId": 1,
  "name": "Plano Mensal",
  "amount": 49.90,
  "currency": "BRL",
  "billingInterval": "monthly",
  "trialDays": 7,
  "isActive": true,
  "createdAt": "2024-01-15T10:35:00.000Z",
  "updatedAt": "2024-01-15T10:35:00.000Z"
}

Intervalos de Cobrança

IntervaloValorDescrição
DiáriodailyCobrança a cada dia
SemanalweeklyCobrança a cada 7 dias
MensalmonthlyCobrança no mesmo dia todo mês
AnualannuallyCobrança uma vez por ano
Após criar o preço de assinatura, você pode gerar o link de pagamento combinando o UUID do produto com o ID do preço.
https://garu.com.br/pay/{product_uuid}?priceId={price_id}
ParâmetroOrigemDescrição
product_uuidResposta de POST /api/productsUUID do produto (campo uuid)
price_idResposta de POST /api/subscription-pricesID do preço (campo id)

Exemplo

Considerando:
  • Produto criado com uuid: c69c63d2-4207-4613-ad69-28e7e902544b
  • Preço criado com id: price_gNgQVRrG5goab0Ql
O link de pagamento será:
https://garu.com.br/pay/c69c63d2-4207-4613-ad69-28e7e902544b?priceId=price_gNgQVRrG5goab0Ql

Exemplo Completo em Código

// 1. Criar produto de assinatura
const produto = await fetch('https://garu.com.br/api/products', {
  method: 'POST',
  headers: {
    'Authorization': `Bearer ${process.env.GARU_API_KEY}`,
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    name: 'Plano Premium',
    isSubscription: true
  })
}).then(r => r.json());

// 2. Criar preço de assinatura
const preco = await fetch('https://garu.com.br/api/subscription-prices', {
  method: 'POST',
  headers: {
    'Authorization': `Bearer ${process.env.GARU_API_KEY}`,
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    productId: produto.uuid,
    name: 'Mensal',
    amount: 49.90,
    billingInterval: 'monthly'
  })
}).then(r => r.json());

// 3. Gerar link de pagamento
const linkPagamento = `https://garu.com.br/pay/${produto.uuid}?priceId=${preco.id}`;
console.log(linkPagamento);
// https://garu.com.br/pay/c69c63d2-4207-4613-ad69-28e7e902544b?priceId=price_gNgQVRrG5goab0Ql
Salve o uuid do produto e o id do preço no seu banco de dados para poder gerar links de pagamento a qualquer momento.

Múltiplos Planos

Crie diferentes planos para o mesmo produto:
// Plano Básico - Mensal
await criarPreco({
  productId: 'prod_abc123xyz',
  name: 'Básico Mensal',
  amount: 29.90,
  billingInterval: 'monthly'
});

// Plano Pro - Mensal
await criarPreco({
  productId: 'prod_abc123xyz',
  name: 'Pro Mensal',
  amount: 49.90,
  billingInterval: 'monthly',
  trialDays: 7
});

// Plano Pro - Anual (com desconto de 20%)
await criarPreco({
  productId: 'prod_abc123xyz',
  name: 'Pro Anual',
  amount: 479.00, // 12 meses com 20% de desconto
  billingInterval: 'annually',
  trialDays: 14
});

Próximos Passos

Listar Preços

Consulte todos os preços cadastrados

Listar Assinaturas

Consulte as assinaturas ativas