Documentación / Integración

Reembolsos

Un reembolso es una transferencia de vuelta al cliente: al cancelar un pedido, tras un sobrepago o tras un pago insuficiente fuera de plazo. Se crea mediante una solicitud por API o desde el panel.

Quién envía el dinero

Depende del campo executor de la solicitud:

  • merchant: el pago llegó a su billetera (el caso habitual). Coinetic no custodia sus fondos: usted mismo envía la transferencia al cliente y registra el hash de la transacción.
  • platform: el pago llegó a la billetera de la plataforma. Usted solo solicita el reembolso; un operador de Coinetic verifica la dirección, lo aprueba y lo envía.

Reglas

  • Solo en el activo del pago. Si el cliente pagó en USDT por TRON, recibirá USDT por TRON. No hay conversión.
  • Nunca más de lo pagado: consulte el refundable_amount de la factura. Se admiten reembolsos parciales, con hasta 20 solicitudes abiertas por factura.
  • La dirección, en la red del pago. Se valida según el formato de la red (EVM: suma de comprobación EIP-55). No se aceptan direcciones de Coinetic.
  • Una factura pagada sigue pagada. El importe reembolsado figura en refunded_amount.
  • Un reembolso cierra para siempre una factura impagada, aunque sea parcial: la factura pasa a cancelled y los pagos complementarios ya no pagarán el pedido. Compruebe el estado de la factura antes de la solicitud.

Crear una solicitud

POST/v1/refunds
HTTP
POST /v1/refunds
Idempotency-Key: refund-ORDER-1001-1
Content-Type: application/json

{"invoice_id":"inv_x7k2…","amount_minor":"10500000","address":"TQn9Y2khEsLJW1ChVWFMSMeRDow5KcbLSE","reason":"Cancelación del pedido ORDER-1001"}
CampoObligatorioValor
invoice_idsíFactura de su tienda
amount_minorsíUnidades mínimas como cadena ("10500000" = 10,5 USDT con 6 decimales) o "full" para todo el importe disponible
addresssíDirección del cliente en la red del pago
reasonnoMotivo, hasta 500 caracteres

Reembolso desde su billetera

  1. Envíe al cliente el amount de la solicitud en el activo y la red del pago desde su billetera (la comisión de red corre de su cuenta).
  2. Registre el hash de la transacción:
HTTP
POST /v1/refunds/{id}/executed
Idempotency-Key: refund-exec-ORDER-1001-1
Content-Type: application/json

{"tx_hash":"0x5c50…","ack_status_change":false}

La solicitud pasará a reported. En las redes EVM (Ethereum, BSC, Polygon, Base, Arbitrum), Coinetic localizará por sí mismo la transacción confirmada en la cadena de bloques y pasará la solicitud a sent, con el webhook refund.sent. En Bitcoin, Litecoin, TRON y Solana todavía no hay verificación automática: la solicitud se queda en reported.

¿Ha cambiado de opinión? POST /v1/refunds/{id}/cancel con un motivo: el importe vuelve a estar disponible para reembolso.

Estados

EstadoSignificado
requestedSolicitud aceptada
approvedAprobada por un operador (solo executor: platform)
reportedUsted ha comunicado el hash; esperando la confirmación en la red
sentDinero enviado; tx_hash es la transacción en la red
rejectedRechazada o cancelada; el motivo figura en reject_reason

Los rechazos no se notifican por webhook: revise periódicamente las solicitudes abiertas con GET /v1/refunds?status=requested.

En el sandbox

POST /v1/refunds/{id}/simulate recorre todo el proceso de una vez: la solicitud pasa a sent con un tx_hash de prueba y se envía refund.sent. Esta ruta no existe en producción.