Pagamentos em cripto para SaaS
Como uma empresa SaaS pode aceitar cripto: uma fatura por período em vez de cartão salvo, fluxo de renovação, pagamentos parciais, contabilidade em dólares e o que não prometer aos clientes.

O software por assinatura é construído em torno de um cartão salvo que é cobrado automaticamente. O cripto não funciona assim: o cliente envia cada pagamento por conta própria. Parece um problema, mas muitas empresas SaaS vendem a clientes que não podem ou preferem não pagar com cartão, e o modelo que funciona é simples: uma fatura por período de cobrança. Este guia mostra como montá-lo, o que esperar e onde ele difere da cobrança por cartão.
Por que empresas SaaS adicionam cripto
O cartão é o padrão, então adicionar cripto precisa de um motivo. Os mais comuns:
- Clientes que as vias de cartão deixam na mão. Equipes em países onde seu processador não opera, ou cujos cartões são recusados para software internacional, ainda podem pagar com uma stablecoin em dólar.
- Faturas anuais e maiores. Um cliente que paga uma fatura anual grande costuma preferir uma transferência a um cartão, e uma transferência em stablecoin é definitiva sem horário de corte bancário.
- Sem chargebacks. O remetente não pode reverter um pagamento em cripto, então a fraude amigável em uma assinatura sem cartão presente não é uma preocupação.
- Compradores atentos à privacidade e nativos de cripto. Ferramentas para desenvolvedores, infraestrutura e hospedagem costumam ter usuários que possuem stablecoins e gostam de pagar com elas.
Tenha claro o limite: o cripto adiciona um meio de pagamento para esses clientes. Não substitui a cobrança por cartão para os demais.
O modelo: uma fatura por período
A cobrança por cartão debita um cartão salvo em um calendário. Um pagamento em cripto precisa ser iniciado pelo cliente, então o modelo natural são as faturas pré-pagas:
- Pouco antes do fim de um período, seu sistema cria uma fatura para o próximo.
- O cliente recebe a fatura com um link de pagamento, abre a página de pagamento hospedada, escolhe um ativo e uma rede e paga.
- Quando o pagamento é concluído, seu sistema marca a fatura como paga e estende a assinatura.
Não há meio de pagamento salvo nem cobrança automática. A Qvard não oferece cobrança recorrente ou assinaturas como produto; a lógica de renovação, os lembretes e o período de carência são seus. Para muitas ferramentas B2B e para desenvolvedores isso basta, e é assim que os planos anuais costumam ser pagos de qualquer forma. Veja faturamento em cripto para SaaS B2B para os detalhes do lado do faturamento.
Criar o pagamento de uma fatura
Para cada fatura, crie um pagamento a partir do seu backend com um único POST para https://api.qvard.com/api/v1/payment. A requisição leva sua chave no cabeçalho Authorization: Bearer e um JSON com:
id: o número da sua fatura, como string. Ele volta no webhook, então use algo que você consiga localizar.price: o valor em dólares americanos.paymentSystemId(opcional): um método de pagamento do seu projeto, se quiser que a página abra com um ativo e uma rede selecionados.
A resposta é 201 com um redirectUrl, o endereço da página de pagamento hospedada. Coloque esse link no e-mail da fatura e na página de cobrança do cliente. Se uma requisição for enviada duas vezes com o mesmo id para o mesmo método de pagamento, você recebe o pagamento existente, então uma tarefa repetida não cria duplicatas.
Defina os preços dos planos em dólares. O cliente paga o equivalente no ativo que escolher, a uma cotação fixa por uma hora.
O fluxo de renovação, de ponta a ponta
Uma renovação precisa de duas pequenas peças de código, mostradas abaixo: uma tarefa que cria a fatura e o pagamento, e o tratador que reage quando ela é paga.
Um cronograma viável:
- Sete dias antes do fim: criar a fatura e enviar o link por e-mail.
- Três dias antes e no último dia: enviar lembretes se ainda estiver aberta.
- Depois do fim: manter a conta ativa por um curto período de carência à sua escolha e então reduzir o plano ou suspender. Essa é a sua política, não um recurso do gateway.
- Quando o webhook chega: marcar a fatura como paga e estender a assinatura a partir do fim do período anterior, não da data do pagamento, para que quem paga antes não perca dias.
O webhook é enviado quando o pagamento está concluído. Seu endpoint deve responder exatamente HTTP 200 (senão há novas tentativas: cinco em cerca de seis minutos) e ser seguro se executar duas vezes, do que a etapa markPaidIfOpen do exemplo cuida. Verifique a assinatura X-Qvard-Signature (HMAC-SHA256 com a sua chave secreta); veja como proteger webhooks de pagamentos em cripto.
// Called by your billing job a few days before a subscription period ends.
async function createRenewalInvoice(sub) {
const invoice = await db.invoices.create({ subscriptionId: sub.id, amountUsd: sub.planPriceUsd, status: 'open' });
const res = await fetch('https://api.qvard.com/api/v1/payment', {
method: 'POST',
headers: { Authorization: 'Bearer ' + process.env.QVARD_API_KEY, 'Content-Type': 'application/json' },
body: JSON.stringify({ id: String(invoice.id), price: invoice.amountUsd })
});
const { redirectUrl } = await res.json();
await mailer.send(sub.email, 'Your renewal invoice', 'Pay here: ' + redirectUrl);
}
// Called from the webhook handler when status is "completed".
async function onPaid(invoiceId) {
const invoice = await db.invoices.markPaidIfOpen(invoiceId); // null if already paid
if (invoice) await db.subscriptions.extend(invoice.subscriptionId, '1 month');
}Pagamentos parciais, mudanças de plano e contabilidade
A cobrança real tem casos limite. Decida-os antes do lançamento:
- Pagamento parcial. Se chegar menos que o valor total, o estado é
partiale nenhum webhook de conclusão é enviado. Mantenha a fatura aberta, diga ao cliente quanto falta e deixe-o enviar o restante, ou cancele e reembolse. Não estenda a assinatura com um pagamento parcial. - Upgrades e downgrades. O rateio é lógica sua. O mais simples é emitir uma nova fatura pela diferença ou aplicar a mudança a partir do próximo período.
- Reembolsos. Um pagamento em cripto não pode ser puxado de volta, então um reembolso é uma transferência que você mesmo envia. Coloque a regra nos seus termos.
- Contabilidade. Registre a receita em dólares pelo valor da fatura e guarde o
iddo pagamento junto à fatura para a conciliação. Consulte seus assessores sobre o tratamento fiscal e contábil de recebimentos em cripto.
Mantenha poucos e claros os estados da fatura: aberta, paga, anulada.
O que dizer aos clientes e o que não prometer
Descreva o cripto com honestidade na sua página de preços ou de cobrança:
- você paga cada período por conta própria, com uma fatura e um link de pagamento;
- quais ativos e redes você aceita (veja as moedas compatíveis) e que o pagamento deve ser feito na rede escolhida na página de pagamento;
- que o acesso é estendido quando o pagamento é concluído, não quando o cliente diz que pagou;
- sua regra de reembolso em uma linha.
Não prometa renovação automática, carteiras cripto salvas nem novas tentativas no estilo de cartão; nada disso existe neste modelo. Prometa o que funciona: uma fatura clara, uma página de pagamento e a extensão assim que o pagamento é concluído.
Quanto custa e o que está pronto hoje
Não há mensalidade pelo gateway. A comissão é individual para o seu projeto e, segundo a página de preços, começa em 1% e pode chegar a 0,1%. Sacar seu saldo para a sua própria carteira custa apenas a taxa de rede; o saque para conta bancária em moeda fiduciária não está disponível.
A integração é pela API, o que exige um desenvolvedor; ainda não há um plugin de cobrança pronto, e os clientes voltam ao seu site por conta própria depois de pagar, então dê a eles uma página de cobrança que mostre o estado real da fatura. Veja o caso de uso SaaS, a documentação para desenvolvedores e uma fatura de demonstração.
FAQ
A Qvard oferece cobrança recorrente ou assinaturas automáticas?
Não. Um pagamento em cripto é enviado pelo cliente a cada vez. O modelo que funciona é uma fatura por período de cobrança, com a lógica de renovação, os lembretes e o período de carência do seu lado.
Como sei que um cliente pagou?
A Qvard chama seu webhook quando o pagamento é concluído, com o id da fatura que você enviou e o estado. Marque a fatura como paga somente no estado completed e faça o tratador ser seguro se executar duas vezes.
E se o cliente pagar só parte da fatura?
O pagamento recebe o estado partial e nenhum webhook de conclusão é enviado. Mantenha a fatura aberta e peça o restante, ou cancele e reembolse. Não estenda a assinatura.
Posso definir os preços dos meus planos em dólares?
Sim. O preço é definido em dólares americanos e o cliente paga o equivalente no ativo e na rede que escolher, a uma cotação fixa por uma hora.


