Skip to main content
Antes de cobrar por algo, esse algo precisa existir no catálogo e estar publicado. São três chamadas. Sem elas, links.create responde 422.

De onde vem o productId

Toda página de cobrança pede um productId. Ele vem de um destes três lugares:

A corrente

products.create já devolve a versão 1 em draft — você não cria versão na mão, só lista e publica.
Sem versão publicada, 422. Pular o passo 3 dá isto:
Desde o @beinfi/sdk@0.10.0 esse detalhe chega até você: InfiError.errors[] carrega { field, description }. Se estiver num SDK anterior, sobe só a mensagem genérica “One or more fields are invalid” — e falta de publish é a primeira suspeita.

Preço: você provavelmente não precisa de prices.add

Para produto avulso de valor fixo, o basePrice do produto é o preço — a fatura e o link já saem com ele. products.prices.add existe para taxa por meter (por token, por request), não para preço flat. Meter só entra quando você cobra por uso:

Vender da sua própria página: checkout()

Se você não quer mandar link e sim ter um botão “Comprar” no seu app, é uma chamada. Ela cria a fatura e devolve a URL hospedada onde a pessoa paga (Pix, boleto, cartão):
O valor sai do preço publicado do produto — passe amount só para sobrescrever. A pessoa é inscrita no produto no processo, então você recebe uma fatura ligada ao produto (e não uma cobrança solta).
Pix e boleto exigem CPF/CNPJ do pagador. Sem documento, a cobrança para em 422 customer_tax_id_required. Passe taxId junto do cliente — a partir de @beinfi/sdk@0.10.1 o checkout() repassa:
Use a url que volta — não monte o endereço à mão. Ela já sai no host certo do seu modo (app-sandbox com sk_test_, app com sk_live_).
Chamando via curl. Todo POST/PUT/DELETE da API autenticada exige header Idempotency-Key — sem ele volta 400 idempotency_key_required. O SDK gera um por chamada; no curl você manda o seu.

Próximo passo

Link de pagamento

Com a versão publicada, o link é uma linha.

Entregar o produto

Anexe o arquivo ou o link; a entrega sai sozinha quando o pagamento confirma.

Testar no sandbox

Pagar a fatura de teste e ver o status virar paid.

Saber que pagou

Webhook em produção, polling em sandbox.