Ir al contenido

Estados de pago

CódigoNombreDescripciónTerminal
NRNot ReadyOrden creada sin input_currency asignada.No
PEPendingEsperando que el cliente pague.No
ACAwaiting CompletionPago recibido, esperando confirmación blockchain. Verifique safe.No
IAInsufficient AmountImporte recibido menor que el esperado.
COCompletedPago exitoso, confirmado en blockchain. Libere producto.
CMCompleted by MerchantCompletado manualmente por el merchant.
CACancelledExpiración superior a 24 h sin pago.
EXExpiredSin recepción en 15 o 60 minutos según red.
OCOut of ConditionPrecio cambió desfavorablemente; recibido no cubre el importe.
FAFailedTransacción no confirmada o rechazada.
DEDeletedOrden eliminada.

Cuando una orden está en AC, el campo booleano safe indica si el pago ya tiene una confirmación blockchain y es seguro liberar producto/servicio.

  • safe: false → aún mempool / 0 confirmaciones. No libere.
  • safe: true → pago estable, libere.
stateDiagram-v2
[*] --> NR: orden creada sin input_currency
[*] --> PE: orden creada con input_currency
NR --> PE: cliente elige moneda
PE --> AC: se detecta pago en mempool
PE --> EX: timeout sin recepción (15/60 min)
PE --> CA: expiración >24h
AC --> CO: confirmación blockchain
AC --> OC: importe menor que esperado
AC --> IA: importe insuficiente
AC --> FA: fallo de confirmación
CO --> [*]
CA --> [*]
EX --> [*]
OC --> [*]
IA --> [*]
FA --> [*]
DE --> [*]
CM --> [*]

B4bit Pay expone 11 estados granulares, pero la mayoría de merchants solo necesitan ≤4. Mapping recomendado:

Estado B4bit PayEstado merchant
NR · PE · AC(safe=false)Pending
CO · AC(safe=true) · CMProcessing (o Paid)
CA · EXCancelled
FA · OC · IAFailed
DEDeleted
  • EX (Expired): se dispara tras 15 o 60 minutos sin recepción, dependiente de la moneda y la red.
  • CA (Cancelled): tras 24 horas sin pago.

Todos los cambios de estado generan un webhook, excepto IA (insufficient amount) que algunas veces se consolida con el siguiente cambio. Si necesita reaccionar a IA, haga polling con GET /orders/info/{identifier} o asuma que el siguiente webhook trae el estado definitivo.

Ver webhook y webhook-ordering.