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_amountde 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
cancelledy 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
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"}| Campo | Obligatorio | Valor |
|---|---|---|
invoice_id | sí | Factura de su tienda |
amount_minor | sí | Unidades mínimas como cadena ("10500000" = 10,5 USDT con 6 decimales) o "full" para todo el importe disponible |
address | sí | Dirección del cliente en la red del pago |
reason | no | Motivo, hasta 500 caracteres |
Reembolso desde su billetera
- Envíe al cliente el
amountde la solicitud en el activo y la red del pago desde su billetera (la comisión de red corre de su cuenta). - Registre el hash de la transacción:
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
| Estado | Significado |
|---|---|
requested | Solicitud aceptada |
approved | Aprobada por un operador (solo executor: platform) |
reported | Usted ha comunicado el hash; esperando la confirmación en la red |
sent | Dinero enviado; tx_hash es la transacción en la red |
rejected | Rechazada 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.