Crea un cobro de prueba con BTCPay Server y comprueba su estado
Crear una factura en BTCPay Server no es cobrar. Recorre una factura de prueba de principio a fin —New, Processing, Settled o Expired— y aprende a relacionarla con el pedido y con el pago real sin entregar nada antes de tiempo.
Pedido, factura y pago
El pedido vive en tu tienda o en tu sistema de ventas. La factura (invoice) vive en BTCPay y tiene su propio identificador. El pago es una transacción con TXID o un pago Lightning. Una factura puede recibir varios pagos (por ejemplo, uno corto y otro que completa el importe), y un pago puede llegar tarde, después de que la factura haya caducado.
Si no relacionas los tres, aparecen los errores clásicos: entregar con una captura de «Enviado», cobrar dos veces el mismo pedido o no saber a qué pedido corresponde un pago. El punto de vista del cliente está en Paga con Bitcoin en un comercio.
Qué significa cada palabra
New
Factura emitida, sin pago completo todavía. Si nadie paga antes del plazo, pasará a Expired.
Processing
El pago cubre el importe, pero aún no cumple las reglas de liquidación (por ejemplo, las confirmaciones on-chain que exige tu tienda).
Settled
Pago completo y reglas cumplidas. Es el estado que debe autorizar la entrega.
Además existen Expired (caducada sin pago completo) e Invalid (marcada como no válida), y estados adicionales que exigen revisión manual: Paid partial (se pagó menos), Paid over (se pagó de más), Paid late (el pago completo llegó tras caducar; el estado base sigue siendo Expired hasta que alguien actúe) y Marked (un usuario de la tienda cambió el estado a mano, lo que no prueba ningún pago).
Qué necesitas
Una instancia de BTCPay Server con una tienda y al menos un método de cobro configurado: una wallet on-chain (idealmente de solo lectura, con xpub) o un nodo Lightning. Si tienes una instancia de pruebas en testnet o regtest, mejor todavía. Necesitas un usuario con permisos sobre esa tienda.
Siete pasos de la factura al cobro comprobado
- PASO 1 · Revisa la tienda: entra con tu usuario, selecciona la tienda y comprueba en Wallets qué métodos de cobro están activos (Bitcoin on-chain, Lightning o ambos).
- PASO 2 · Crea la factura: ve a Payments → Invoices y crea una factura nueva con un importe pequeño, la moneda que quieras y un identificador de pedido ficticio, por ejemplo
PRUEBA-001. - PASO 3 · Anota sus datos: en el detalle de la factura apunta el Invoice ID, el estado (New), la hora de caducidad, el importe en BTC o sats y el tipo de cambio aplicado si la creaste en euros.
- PASO 4 · Abre el checkout: abre el enlace de pago de la factura y comprueba qué ofrece al cliente: una dirección on-chain, una invoice Lightning o ambas.
- PASO 5 · Sin pagar: deja pasar el plazo. La factura pasará a Expired. Has demostrado que una factura, por sí sola, no aporta fondos.
- PASO 6 · Pago real opcional: crea otra factura y págala con un importe pequeño desde otra wallet. En on-chain verás Processing hasta que la transacción alcance las confirmaciones que exige tu tienda y luego Settled; en Lightning pasará a Settled al liquidarse el pago.
- PASO 7 · Relaciona: comprueba que Invoice ID, identificador de pedido y TXID (o pago Lightning) coinciden, y que el importe recibido es el pedido. Solo entonces marcarías el pedido como pagado.
¿Puedes enseñar qué pedido, qué factura y qué pago forman una venta, y qué estado tenía la factura cuando decidiste entregar?
Cuántas confirmaciones convierten Processing en Settled
En la configuración de la tienda puedes decidir cuántas confirmaciones on-chain necesita un pago para que la factura pase a Settled. Menos confirmaciones significan entregas más rápidas y más riesgo; más confirmaciones, más espera y menos riesgo.
Ten en cuenta que, desde Bitcoin Core 28.0, los nodos aceptan por defecto sustituir transacciones no confirmadas aunque no lo señalicen (full-RBF). Eso hace más fácil que un pagador intente reemplazar un pago todavía sin confirmar, así que aceptar cero confirmaciones solo tiene sentido en importes pequeños y cuando aceptas ese riesgo. Lo explicamos en RBF en Bitcoin. En Lightning no hay confirmaciones: el pago se liquida o no.
Cuatro casos de prueba
🐥 El cliente enseña una TXID pero la factura sigue en New
Comprueba que la transacción paga la dirección de esa factura, por el importe correcto y en la red correcta. Puede que la haya enviado a otra dirección o que BTCPay aún no la haya detectado. No entregues por una captura.
🐥 La factura muestra Paid partial
El cliente pagó menos; a menudo porque su exchange descontó la comisión del importe. Decide si pides el resto o si devuelves lo recibido, y deja constancia en la factura.
🐥 El pago llegó cuando la factura ya había caducado
Aparecerá como Paid late. La transacción no se revierte sola: decide si entregas al precio original o devuelves, y no generes otra factura que el cliente pueda pagar por segunda vez.
🐥 El cliente pagó de más o pagó dos veces
Verás Paid over. Desde el detalle de la factura puedes iniciar una devolución con Issue Refund, que crea un enlace para que el cliente indique su dirección. Sigue cómo realizar una devolución.
¿Sabes cuándo una factura está realmente cobrada?
- Objetos: distingo pedido, factura y pago.
- Estados: sé qué significan New, Processing, Settled, Expired e Invalid.
- Excepciones: sé tratar Paid partial, Paid late, Paid over y Marked.
- Política: conozco cuántas confirmaciones exige mi tienda y su riesgo.
- Entrega: solo entrego con la factura en Settled y el pago relacionado.
Cobrar es una factura liquidada, no un checkout abierto
Has recorrido una factura de prueba y has visto que crearla no aporta fondos, que Processing todavía no es Settled y que las excepciones exigen una decisión. Con eso puedes definir cuándo entrega tu negocio.
Verifica los nombres en tu versión
Siguiente práctica: configura notificaciones de pagos BTCPay sin exponer tu servidor.

Hay más piezas que encajan con esta
Continúa por contenidos relacionados con el tema que acabas de estudiar.









