Skip to main content

Visão Geral

A SDK Node.js da Garu permite integrar pagamentos PIX, Cartão de Crédito e Boleto no seu projeto com poucas linhas de código. A SDK abstrai a API REST, com tipos prontos e status simplificados.
Os valores em dinheiro na SDK são em Reais (BRL decimal): 49.90 é R49,90.Issovaleparao‘value‘deprodutoseofertas,o‘amount‘decobranc\casagendadasedeestornos.Nuncausecentavos:‘4990‘seriaR 49,90. Isso vale para o `value` de produtos e ofertas, o `amount` de cobranças agendadas e de estornos. Nunca use centavos: `4990` seria R 4.990,00.
Pré-requisito: Você precisa de uma chave de API. Veja como obter em Autenticação.

Instalação

Inicialização

Nunca coloque sua chave de API diretamente no código. Use variáveis de ambiente.

Produtos

Criar um produto

A API exige name, image e value na criação. O value segue esta regra: Um produto sem preço serve para quem cobra de outro jeito, como por cobranças agendadas. Em um produto de assinatura (isSubscription: true), envie value: 0: o preço fica nos preços de assinatura, que também têm mínimo de R$ 5,00.

Atualizar um produto

A atualização é parcial. O mínimo de R5,00soˊvalequandovoce^envia‘value‘:semele,oprec\coatualficacomoestaˊ,mesmoquesejamenorqueR 5,00 só vale quando você envia `value`: sem ele, o preço atual fica como está, mesmo que seja menor que R 5,00.

Ofertas

Uma oferta vende o mesmo produto por outro preço, com link próprio. Ela muda só o preço; o resto continua o do produto.
O value de uma oferta precisa ser de pelo menos R$ 5,00. Diferente do produto, uma oferta não pode ficar sem preço: 0 é recusado.

Cobranças

A cobrança é sempre de um produto: o preço vem do produto (ou da oferta), nunca da requisição.

Criar uma cobrança PIX

Criar uma cobrança com cartão de crédito

Listar cobranças

Consultar uma cobrança

Reembolsar uma cobrança

Cancelar uma cobrança não paga

Clientes

Criar um cliente

Listar clientes

Consultar um cliente

Atualizar um cliente

Remover um cliente

Filtrar clientes em atraso

Cobranças agendadas

PIX e Boleto agendados para uma data futura. A Garu envia o e-mail no vencimento e alerta o time se atrasar. Disponível a partir do @garuhq/node 0.5.

Criar uma cobrança agendada

Passe idempotencyKey (derivada de algo estável no seu sistema, como o id do pedido) para que um retry após falha de rede não crie uma segunda série. Sem ela, a SDK não envia chave nenhuma. O amount precisa ser de pelo menos R$ 5,00, na cobrança avulsa e na recorrente. Abaixo disso a API responde 400 (GaruValidationError). As cobranças criadas antes dessa regra mantêm o valor e continuam sendo cobradas.

Listar e filtrar

Detalhes (cobrança + linha do tempo + transações)

Ações no ciclo de vida

Em changePaymentMethod, o cartão precisa ser do mesmo cliente da série e já cobrar uma cobrança sua para esse cliente: uma assinatura, uma cobrança agendada ou uma tentativa anterior. Um cartão de outro cliente, ou que você nunca cobrou, responde 404 (GaruNotFoundError), como um cartão que não existe.
Veja Cobranças agendadas para o ciclo de vida completo e a tabela de status permitidos por ação.

Chaves de Idempotência

Use chaves de idempotência para garantir que uma operação não seja executada duas vezes, mesmo em caso de retry:
A SDK não inventa uma chave quando você não passa idempotencyKey: uma chave nova a cada chamada não protege nada, porque o retry levaria outra chave.
Use o ID do pedido no seu sistema como chave de idempotência. Assim, mesmo que a requisição seja enviada duas vezes, apenas uma cobrança será criada.

Tratamento de Erros

Códigos de erro comuns:
Verifique os campos enviados. A resposta inclui detalhes sobre quais campos estão incorretos.
Confira se a variável GARU_API_KEY está definida e se a chave é válida.
O ID informado não corresponde a nenhum recurso existente.
A chave de idempotência já foi usada com dados diferentes. Use uma chave única por operação.
A requisição é válida mas viola uma regra de negócio (ex: status incompatível). Um preço abaixo do mínimo de R$ 5,00 responde 400, não 422.
Aguarde alguns segundos e tente novamente. Implemente backoff exponencial em automações.

Recursos

Repositório GitHub

Código-fonte e documentação técnica

Pacote npm

@garuhq/node no npm

Próximos Passos

MCP Server

Conecte agentes de IA à API

Webhooks

Receba notificações de pagamento