REST previsível
Recursos no plural, verbos HTTP corretos, erro com código semântico e mensagem em português. Resposta em menos de 200ms no p95.
Para desenvolvedores
A mesma conta que o time comercial usa no painel é a que sua aplicação consome por API. Chave de sandbox no cadastro, produção depois da aprovação do cadastro.
// cobrança Pix, do zero — sem dependência nenhuma
const res = await fetch("https://api.dvpay.com.br/charges", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.DVPAY_API_KEY}`,
"Content-Type": "application/json",
"Idempotency-Key": "pedido-10428",
},
body: JSON.stringify({
amount: "349.00",
paymentMethodKind: "pix",
}),
});
const { data: charge } = await res.json();
// charge.paymentInstructions.pixCopyPaste vai pro cliente{
"data": {
"id": "b319b649-9eeb-4f6c-a3b4-54bbaf936813",
"status": "pending",
"amount": "349.00",
"currency": "BRL",
"paymentMethodKind": "pix",
"paymentInstructions": {
"pixCopyPaste": "00020126..."
},
"createdAt": "2026-08-18T14:00:00.000Z"
}
}Recursos no plural, verbos HTTP corretos, erro com código semântico e mensagem em português. Resposta em menos de 200ms no p95.
Entrega com HMAC-SHA256, retry exponencial por até 72h e replay idempotente pelo painel — com a timeline de cada tentativa.
Toda criação aceita Idempotency-Key. Repetiu a chamada por timeout? Você recebe a mesma cobrança, não uma segunda.
Chave de teste no cadastro, sem fila de aprovação. Pix, cartão e boleto simulados com os mesmos payloads da produção.
Ainda não publicamos SDKs — e preferimos dizer isso a listar pacote que não existe. A API é HTTP com JSON, então o cliente que a sua linguagem já tem basta.
Exemplos de chamada, eventos de webhook e ambiente de testes na documentação. Precisa de um SDK pra fechar a integração? Fala com a gente — isso pauta o roadmap.