Pagos cripto para SaaS
Cómo una empresa SaaS puede aceptar cripto: una factura por periodo en lugar de tarjeta guardada, flujo de renovación, pagos parciales, contabilidad en dólares y qué no prometer a los clientes.

El software por suscripción se construye en torno a una tarjeta guardada que se cobra automáticamente. Las criptomonedas no funcionan así: el cliente envía cada pago por sí mismo. Suena a problema, pero muchas empresas SaaS venden a clientes que no pueden o prefieren no pagar con tarjeta, y el modelo que funciona es sencillo: una factura por periodo de facturación. Esta guía muestra cómo construirlo, qué esperar y en qué se diferencia de la facturación con tarjeta.
Por qué las empresas SaaS añaden cripto
Las tarjetas son lo habitual, así que añadir cripto necesita un motivo. Los más frecuentes:
- Clientes a los que fallan los carriles de tarjeta. Equipos en países donde tu procesador no opera, o cuyas tarjetas se rechazan para software transfronterizo, pueden pagar igualmente con una stablecoin en dólares.
- Facturas anuales y grandes. Un cliente que paga una factura anual elevada suele preferir una transferencia a una tarjeta, y una transferencia en stablecoin es definitiva sin hora de cierre bancaria.
- Sin contracargos. El remitente no puede revertir un pago cripto, así que el fraude amistoso en una suscripción sin tarjeta presente no es una preocupación.
- Compradores atentos a la privacidad y nativos cripto. Las herramientas para desarrolladores, la infraestructura y el hosting suelen tener usuarios que poseen stablecoins y les gusta pagar con ellas.
Ten claro el límite: la cripto añade un método de pago para esos clientes. No sustituye la facturación con tarjeta para el resto.
El modelo: una factura por periodo
La facturación con tarjeta cobra una tarjeta guardada según un calendario. Un pago cripto lo tiene que iniciar el cliente, así que el modelo natural son las facturas prepagadas:
- Poco antes de que termine un periodo, tu sistema crea una factura para el siguiente.
- El cliente recibe la factura con un enlace de pago, abre la página de pago alojada, elige un activo y una red y paga.
- Cuando el pago se completa, tu sistema marca la factura como pagada y prolonga la suscripción.
No hay método de pago guardado ni cobro automático. Qvard no ofrece facturación recurrente ni suscripciones como producto; la lógica de renovación, los recordatorios y el periodo de gracia son tuyos. Para muchas herramientas B2B y de desarrolladores esto es suficiente, y así se suelen pagar los planes anuales de todos modos. Consulta facturación cripto para SaaS B2B para el detalle del lado de facturación.
Crear el pago de una factura
Para cada factura, crea un pago desde tu backend con un único POST a https://api.qvard.com/api/v1/payment. La solicitud lleva tu clave en la cabecera Authorization: Bearer y un JSON con:
id: el número de tu factura, como cadena. Vuelve en el webhook, así que usa algo que puedas buscar.price: el importe en dólares estadounidenses.paymentSystemId(opcional): un método de pago de tu proyecto, si quieres que la página se abra con un activo y una red seleccionados.
La respuesta es 201 con un redirectUrl, la dirección de la página de pago alojada. Pon ese enlace en el correo de la factura y en la página de facturación del cliente. Si una solicitud se envía dos veces con el mismo id para el mismo método de pago, recibes el pago existente, así que una tarea reintentada no crea duplicados.
Fija los precios de tus planes en dólares. El cliente paga el equivalente en el activo que elija, a un tipo de cambio fijado durante una hora.
El flujo de renovación, de principio a fin
Una renovación necesita dos pequeñas piezas de código, mostradas abajo: una tarea que crea la factura y el pago, y el manejador que reacciona cuando se paga.
Un calendario viable:
- Siete días antes del final: crear la factura y enviar el enlace por correo.
- Tres días antes y el último día: enviar recordatorios si sigue abierta.
- Tras el final: mantener la cuenta activa durante un breve periodo de gracia que elijas, y luego bajar de plan o suspender. Es tu política, no una función de la pasarela.
- Cuando llega el webhook: marcar la factura como pagada y prolongar la suscripción desde el final del periodo anterior, no desde la fecha del pago, para que quien paga antes no pierda días.
El webhook se envía cuando el pago está completado. Tu endpoint debe responder exactamente HTTP 200 (si no, se reintenta: cinco intentos en unos seis minutos) y ser seguro si se ejecuta dos veces, de lo cual se encarga el paso markPaidIfOpen del ejemplo. Verifica la firma X-Qvard-Signature (HMAC-SHA256 con tu clave secreta); consulta cómo proteger los webhooks de pagos 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');
}Pagos parciales, cambios de plan y contabilidad
La facturación real tiene casos límite. Decídelos antes del lanzamiento:
- Pago parcial. Si llega menos del importe completo, el estado es
partialy no se envía el webhook de finalización. Mantén la factura abierta, indica al cliente cuánto falta y deja que envíe el resto, o cancela y reembolsa. No prolongues la suscripción con un pago parcial. - Subidas y bajadas de plan. El prorrateo es lógica tuya. Lo más sencillo es emitir una nueva factura por la diferencia, o aplicar el cambio desde el siguiente periodo.
- Reembolsos. Un pago cripto no se puede retirar, así que un reembolso es una transferencia que envías tú. Pon la regla en tus condiciones.
- Contabilidad. Registra los ingresos en dólares por el importe de la factura y conserva el
iddel pago junto a la factura para la conciliación. Consulta con tus asesores el tratamiento fiscal y contable de los cobros en cripto.
Mantén pocos y claros los estados de la factura: abierta, pagada, anulada.
Qué decir a los clientes y qué no prometer
Describe la cripto con honestidad en tu página de precios o de facturación:
- pagas cada periodo tú mismo, con una factura y un enlace de pago;
- qué activos y redes aceptas (consulta las monedas admitidas) y que el pago debe hacerse en la red elegida en la página de pago;
- que el acceso se prolonga cuando el pago se completa, no cuando el cliente dice que ha pagado;
- tu regla de reembolso en una línea.
No prometas renovación automática, billeteras cripto guardadas ni reintentos al estilo de las tarjetas; nada de eso existe en este modelo. Promete lo que funciona: una factura clara, una página de pago y una prórroga en cuanto el pago se completa.
Qué cuesta y qué está listo hoy
No hay cuota de suscripción por la pasarela. La comisión es individual para tu proyecto y, según la página de precios, parte del 1% y puede bajar hasta el 0,1%. Retirar tu saldo a tu propia billetera cuesta solo la comisión de red; el retiro a una cuenta bancaria en moneda fiat no está disponible.
La integración es por la API, lo que requiere un desarrollador; todavía no hay un plugin de facturación listo, y los clientes vuelven a tu sitio por su cuenta tras pagar, así que dales una página de facturación que muestre el estado real de la factura. Consulta el caso de uso SaaS, la documentación para desarrolladores y una factura de demostración.
FAQ
¿Admite Qvard la facturación recurrente o las suscripciones automáticas?
No. Un pago cripto lo envía el cliente cada vez. El modelo que funciona es una factura por periodo de facturación, con la lógica de renovación, los recordatorios y el periodo de gracia de tu lado.
¿Cómo sé que un cliente ha pagado?
Qvard llama a tu webhook cuando el pago se completa, con el id de factura que enviaste y el estado. Marca la factura como pagada solo con el estado completed y haz que el manejador sea seguro si se ejecuta dos veces.
¿Y si el cliente paga solo una parte de la factura?
El pago recibe el estado partial y no se envía el webhook de finalización. Mantén la factura abierta y pide el resto, o cancela y reembolsa. No prolongues la suscripción.
¿Puedo fijar los precios de mis planes en dólares?
Sí. El precio se fija en dólares estadounidenses y el cliente paga el equivalente en el activo y la red que elija, a un tipo de cambio fijado durante una hora.


