v1

Criar uma cobrança

Cria a cobrança de um produto e devolve o que o pagador precisa para pagar. O valor sai do produto, nunca do corpo.

POSThttps://api.navenaut.com/v1/charges

Autenticação

Chave de API no cabeçalho Authorization: Bearer naut_live_….

O escopo exigido é charges:write. Uma credencial sem esse escopo recusa com 401, o mesmo código de uma credencial inválida: a recusa não diz se ela existe.

Exige chave de API no cabeçalho. A família da chave decide contra qual ambiente ela escreve, e a chave não fabrica sessão: ela não alcança nenhuma rota fora de /v1.

Parâmetros

Cabeçalho

NomeTipoDescrição
idempotency-keyobrigatóriotextoOBRIGATÓRIA. A chamada sem ela é recusada com 400 antes de qualquer escrita. Ela é escopada pela chave de API que a apresentou: o mesmo valor, vindo de duas chaves de API diferentes, abre duas reservas distintas: duas integrações não colidem por escolher a mesma string. Aceita no máximo 41 caracteres, e um UUID cabe; a maior é recusada com 400 antes de qualquer escrita.

Corpo da requisição

application/json.

CampoTipoDescrição
affiliateReftexto—
buyerobrigatórioobjetoQuem está comprando. O documento é guardado para conciliação e nunca volta inteiro.
cardobjetoO cartão, e só o blob cifrado dele. Quem cifra é o SDK do adquirente, no navegador do comprador, com a chave pública do adquirente: o seu servidor recebe o blob pronto e só o repassa aqui. Número, código de segurança, validade e titular não têm campo nesta API e não devem passar pelo seu servidor. Na venda parcelada, mande também a bandeira: é ela que indexa a tabela de parcelamento do adquirente.
currencyum de: `BRL`, `USD`, `EUR`A moeda da cobrança. Opcional: ausente, vale a moeda do produto. Se vier, precisa ser exatamente a do produto (BRL, USD ou EUR, em maiúsculas); outra moeda é recusada com 400 V1_CHARGE_CURRENCY_MISMATCH, antes de qualquer escrita. A cobrança nunca sai em moeda diferente da que você pediu.
installmentsinteiroQuantidade de parcelas, só para cartão.
methodobrigatórioum de: `pix`, `card`, `boleto`, `wallet`Como a cobrança vai ser paga. O produto declara os métodos que aceita.
productRefobrigatóriotextoA referência pública do produto a cobrar.
{
  "affiliateRef": "referencia-de-exemplo",
  "buyer": {
    "document": "000.000.000-00",
    "email": "comprador@exemplo.com.br",
    "name": "Loja Exemplo",
    "phone": "+55 11 90000-0000"
  },
  "card": {
    "authenticationId": "0f2a4e6c-91c4-4e1b-9a3d-5b7c2e8f4a06",
    "brand": "exemplo",
    "encrypted": "exemplo"
  },
  "currency": "BRL",
  "installments": 1,
  "method": "pix",
  "productRef": "referencia-de-exemplo"
}

Respostas

200 · sucesso

{
  "amountCents": 129900,
  "chargeId": "0f2a4e6c-91c4-4e1b-9a3d-5b7c2e8f4a06",
  "createdAt": "2026-01-15T12:00:00.000Z",
  "currency": "BRL",
  "method": "pix",
  "payable": {
    "emv": "exemplo",
    "kind": "pix",
    "qrImageUrl": "https://loja.exemplo.com.br/webhooks"
  },
  "refundedAmountCents": 129900,
  "status": "pending"
}

400 · requisição inválida

Falta a chave de idempotência ou ela passa de 41 caracteres, o cartão veio sem o blob cifrado, a moeda do corpo não é a do produto, o método não é aceito, ou a cobrança foi recusada na origem.

401 · não autenticado

A chave de API não foi apresentada, ou não vale.

402 · pagamento não autorizado

O emissor não autorizou o cartão. A cobrança existe e segue pendente; nada foi capturado.

404 · não encontrado

O produto não existe, não está publicado, ou não é desta conta.

409 · conflito

A mesma chave de idempotência já está em uso nesta conta, ou já foi usada com um corpo diferente.

429 · excesso de chamadas

Excesso de chamadas para esta chave.

503 · indisponível

A sua chave é de sandbox e o ambiente de teste desta instalação não está provisionado. Chaves de produção seguem funcionando; repetir a chamada não resolve, e nenhuma cobrança foi criada.

Erros desta rota

StatusCódigoQuandoO que fazer
400V1_IDEMPOTENCY_KEY_REQUIREDChamada sem idempotency-key.Gere um UUID por tentativa de criar e envie no cabeçalho.
400V1_IDEMPOTENCY_KEY_TOO_LONGO cabeçalho idempotency-key passa de 41 caracteres. A recusa vem antes de qualquer escrita: nada foi reservado e nenhuma cobrança existe.Reenvie com uma chave de até 41 caracteres. Um UUID cabe.
400V1_CHARGE_CARD_DATA_MISSINGO método é cartão e o blob cifrado não veio, ou a venda é parcelada e a bandeira não veio. A recusa vem antes de qualquer escrita: nada foi reservado e nenhuma cobrança existe.Cifre o cartão com o SDK do adquirente no navegador do comprador e reenvie com a mesma chave de idempotência. Na venda parcelada, mande a bandeira junto.
402V1_CHARGE_CARD_DECLINEDO emissor não autorizou o cartão. A cobrança foi criada e segue pendente, e nenhum valor foi capturado. Repetir a mesma chave devolve esta mesma recusa.Mostre a recusa ao pagador e peça outro cartão. O cartão novo é uma cobrança nova, com chave de idempotência nova.
400V1_CHARGE_CURRENCY_MISMATCHO campo currency do corpo não é a moeda do produto. A recusa vem antes de qualquer escrita: nada foi reservado, nenhuma cobrança existe e o saldo não se mexe.Omita o campo currency ou envie a moeda do produto, em maiúsculas. Pode reenviar com a mesma chave de idempotência.
400V1_CHARGE_REFUSEDA cobrança foi recusada na origem.Mostre a recusa ao pagador; não repita com a mesma chave.
401UNAUTHORIZEDChave ausente ou inválida.Confira o ambiente da chave e o escopo exigido.
404V1_CHARGE_NOT_FOUNDProduto inexistente, não publicado ou de outra conta.Confira o productRef no painel.
409V1_CHARGE_IN_PROGRESSA mesma chave ainda está sendo processada.Aguarde e repita com a mesma chave.
409V1_IDEMPOTENCY_BODY_MISMATCHMesma chave, corpo diferente.Use uma chave nova para um corpo novo.
429API_KEY_RATE_LIMITEDExcesso de chamadas para esta chave.Respeite Retry-After.
503SANDBOX_UNAVAILABLESandbox não provisionado.Use uma chave de produção ou aguarde o provisionamento.

Os códigos são estáveis e fazem parte do contrato. A lista completa, com todos os vocabulários, está na tabela de erros.

Próximo passo