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 —New, Processing, Settled, Expired— y relaciónala con el pedido y el pago antes de entregar nada.

🐥 Tutorial práctico · BTCPay Server

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.

⏱ 20–30 min🌱 Intermedio🧪 Puede hacerse sin pagar
TRES OBJETOS DISTINTOS

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.

LOS ESTADOS DE UNA FACTURA

Qué significa cada palabra

ESPERANDO

New

Factura emitida, sin pago completo todavía. Si nadie paga antes del plazo, pasará a Expired.

PAGO RECIBIDO

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).

COBRADA

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).

ANTES DE EMPEZAR

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.

PROCEDIMIENTO

Siete pasos de la factura al cobro comprobado

  1. 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).
  2. 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.
  3. 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.
  4. 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.
  5. PASO 5 · Sin pagar: deja pasar el plazo. La factura pasará a Expired. Has demostrado que una factura, por sí sola, no aporta fondos.
  6. 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.
  7. 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.
Comprueba

¿Puedes enseñar qué pedido, qué factura y qué pago forman una venta, y qué estado tenía la factura cuando decidiste entregar?

LA REGLA QUE DECIDES TÚ

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.

CUANDO EL ESTADO NO ES EL ESPERADO

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.

COMPROBACIÓN FINAL

¿Sabes cuándo una factura está realmente cobrada?

  1. Objetos: distingo pedido, factura y pago.
  2. Estados: sé qué significan New, Processing, Settled, Expired e Invalid.
  3. Excepciones: sé tratar Paid partial, Paid late, Paid over y Marked.
  4. Política: conozco cuántas confirmaciones exige mi tienda y su riesgo.
  5. Entrega: solo entrego con la factura en Settled y el pago relacionado.
HAS COMPROBADO

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.

FUENTES OFICIALES

Verifica los nombres en tu versión

Siguiente práctica: configura notificaciones de pagos BTCPay sin exponer tu servidor.

Pajarito explica cómo comprobar el estado de un cobro creado con BTCPay Server.