Reembolsos
Crear un reembolso
const url = 'https://api.timbro.do/v1/refunds';const options = { method: 'POST', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"paymentId":"example","source":{"id":"example","version":"example"},"refundReference":"example","amount":{"currency":"DOP","value":"example"},"taxAmount":{"currency":"DOP","value":"example"},"voluntaryTipAmount":{"currency":"DOP","value":"example"},"allocationIds":["example"]}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://api.timbro.do/v1/refunds \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "paymentId": "example", "source": { "id": "example", "version": "example" }, "refundReference": "example", "amount": { "currency": "DOP", "value": "example" }, "taxAmount": { "currency": "DOP", "value": "example" }, "voluntaryTipAmount": { "currency": "DOP", "value": "example" }, "allocationIds": [ "example" ] }'Solicita el reembolso de dinero capturado por un pago. refundReference identifica el reembolso dentro del comercio y del modo. Repetir la misma referencia y los mismos datos devuelve el reembolso vigente; cambiar los datos genera un conflicto. Si omites amount, se reserva una sola vez el saldo capturado restante de las asignaciones seleccionadas. Timbro guarda a qué asignaciones corresponde el reembolso antes de enviarlo al adquirente.
voluntaryTipAmount indica la parte de propina voluntaria que reembolsas. En un reembolso parcial, omitirla declara cero; al reembolsar todo el saldo restante, se incluye la propina restante. Cada parte debe caber en su saldo capturado. La propina voluntaria no forma parte del monto de la nota de crédito.
Un reembolso mueve dinero sin intervención del equipo de Timbro solo cuando reembolsa el monto capturado completo de un pago de tarjeta DOP, sin división, en modo de prueba y sin reembolsos anteriores, salvo los rechazados. Azul usa las credenciales e impuesto de la captura original, una referencia de reembolso única y la consulta VerifyPayment. CardNet reembolsa la captura Ztrans con la credencial de reembolso activa de la afiliación. Un pago de venta Azul DOP en modo de prueba también puede admitir un reembolso parcial con ITBIS exacto en taxAmount, dentro de refundable.automaticPartial. El impuesto queda ligado a la solicitud y no se estima como una proporción. Los reembolsos parciales de capturas de autorización o por CardNet, los parciales sin impuesto exacto y los de pagos divididos, en vivo, con Apple Pay o Google Pay y simulados se crean en operator_required antes de mover dinero con el adquirente. Consulta refundable.automaticAmount para el monto completo y refundable.automaticPartial para los límites parciales. Un reembolso enviado todavía puede terminar en declined o operator_required.
Un reembolso no emite una nota de crédito: asocia por separado la factura E34 aceptada. source es opcional para coordinar con un ERP; su id y versión no pueden identificar otro reembolso. Si omites Idempotency-Key, la referencia proporciona una clave estable; si lo envías, repítelo en los reintentos. Consulta el reembolso para confirmar el resultado.
Autenticación
Sección titulada «Autenticación»Parámetros
Sección titulada «Parámetros»Parámetros de cabecera
Sección titulada «Parámetros de cabecera»Cuerpo de la solicitudobligatorio
Sección titulada «Cuerpo de la solicitudobligatorio»Crea un reembolso total cuando el importe equivale al saldo capturado restante, o un reembolso parcial cuando es menor.
object
Pago con dinero capturado que quieres reembolsar.
Identidad estable del reembolso. Repetir la misma intención devuelve el recurso vigente; cambiar la intención genera un conflicto.
Campos opcionales
Referencia inmutable de la venta en el sistema de origen, que envía la integración del comercio.
object
Monto monetario decimal exacto.
object
Ejemplo
DOPMonto decimal exacto y no negativo, con un máximo de dos cifras decimales.
ITBIS exacto reembolsado, sin estimar una proporción. Si lo omites al reembolsar el pago original completo, Timbro usa el impuesto capturado.
object
Ejemplo
DOPMonto decimal exacto y no negativo, con un máximo de dos cifras decimales.
Parte exacta de propina voluntaria devuelta en el reembolso. No forma parte del importe de la nota de crédito fiscal.
object
Ejemplo
DOPMonto decimal exacto y no negativo, con un máximo de dos cifras decimales.
Respuestas
Sección titulada «Respuestas»Solicitud de reembolso total o parcial. El movimiento de dinero con el adquirente y la coordinación de la nota de crédito son máquinas de estado independientes.
Campos y códigos de la respuesta
Solicitud de reembolso total o parcial. El movimiento de dinero con el adquirente y la coordinación de la nota de crédito son máquinas de estado independientes.
object
Identificador del reembolso.
Pago cuyo dinero capturado se está reembolsando.
Referencia inmutable de la venta en el sistema de origen, que envía la integración del comercio.
object
Identidad inmutable del reembolso dentro de este comercio y modo, Prueba o En vivo.
Monto monetario decimal exacto.
object
Ejemplo
DOPMonto decimal exacto y no negativo, con un máximo de dos cifras decimales.
ITBIS exacto reembolsado, sin estimar una proporción. Si lo omites al reembolsar el pago original completo, Timbro usa el impuesto capturado.
object
Ejemplo
DOPMonto decimal exacto y no negativo, con un máximo de dos cifras decimales.
object
Asignación capturada atribuida a este reembolso.
Monto monetario decimal exacto.
object
Ejemplo
DOPMonto decimal exacto y no negativo, con un máximo de dos cifras decimales.
Ciclo de vida del reembolso. verifying significa que el resultado del adquirente es ambiguo y se está recuperando sin volver a enviar el reembolso.
Resultado del adquirente, separado de la coordinación de la nota de crédito fiscal. Las referencias específicas del adquirente no se exponen.
object
Identificador del evento de webhook relacionado con este reembolso.
Campos opcionales
Etiqueta del comercio conservada de la solicitud original del reembolso.
object
object
Clasificación normalizada de un reembolso sin resolver.
Cabeceras
Sección titulada «Cabeceras»Identifica esta solicitud. Indícalo cuando contactes a soporte.
true cuando esta respuesta repite el resultado guardado de una solicitud anterior con la misma clave de idempotencia (Idempotency-Key).
Solicitud de reembolso total o parcial. El movimiento de dinero con el adquirente y la coordinación de la nota de crédito son máquinas de estado independientes.
Campos y códigos de la respuesta
Solicitud de reembolso total o parcial. El movimiento de dinero con el adquirente y la coordinación de la nota de crédito son máquinas de estado independientes.
object
Identificador del reembolso.
Pago cuyo dinero capturado se está reembolsando.
Referencia inmutable de la venta en el sistema de origen, que envía la integración del comercio.
object
Identidad inmutable del reembolso dentro de este comercio y modo, Prueba o En vivo.
Monto monetario decimal exacto.
object
Ejemplo
DOPMonto decimal exacto y no negativo, con un máximo de dos cifras decimales.
ITBIS exacto reembolsado, sin estimar una proporción. Si lo omites al reembolsar el pago original completo, Timbro usa el impuesto capturado.
object
Ejemplo
DOPMonto decimal exacto y no negativo, con un máximo de dos cifras decimales.
object
Asignación capturada atribuida a este reembolso.
Monto monetario decimal exacto.
object
Ejemplo
DOPMonto decimal exacto y no negativo, con un máximo de dos cifras decimales.
Ciclo de vida del reembolso. verifying significa que el resultado del adquirente es ambiguo y se está recuperando sin volver a enviar el reembolso.
Resultado del adquirente, separado de la coordinación de la nota de crédito fiscal. Las referencias específicas del adquirente no se exponen.
object
Identificador del evento de webhook relacionado con este reembolso.
Campos opcionales
Etiqueta del comercio conservada de la solicitud original del reembolso.
object
object
Clasificación normalizada de un reembolso sin resolver.
Cabeceras
Sección titulada «Cabeceras»Identifica esta solicitud. Indícalo cuando contactes a soporte.
true cuando esta respuesta repite el resultado guardado de una solicitud anterior con la misma clave de idempotencia (Idempotency-Key).
No se pudo entender la solicitud.
Ejemplo
{ "type": "about:blank", "title": "No se pudo entender la solicitud.", "status": 400, "code": "parameter_missing", "requestId": "request_000000000000000000000001"}Campos y códigos de la respuesta
Detalles de problema RFC 9457. Cada fallo de esta API es uno de estos objetos y cada operación limita code al subconjunto que puede emitir.
object
Código estable legible por máquinas. Toma decisiones con este código, nunca con title.
Campos opcionales
Solo aparece si la solicitud rechazada produjo una operación fiscal.
Solo aparece cuando las reglas oficiales de emisión rechazan la emisión.
Solo aparece cuando el rechazo señala un valor incluido en la solicitud.
Un problema público estable del documento, guardado para una admisión rechazada.
object
Cabeceras
Sección titulada «Cabeceras»Identifica esta solicitud. Indícalo cuando contactes a soporte.
La credencial falta, tiene un formato incorrecto o ya no es válida.
Ejemplo
{ "type": "about:blank", "title": "La credencial falta, tiene un formato incorrecto o ya no es válida.", "status": 401, "code": "api_key_missing", "requestId": "request_000000000000000000000001"}Campos y códigos de la respuesta
Detalles de problema RFC 9457. Cada fallo de esta API es uno de estos objetos y cada operación limita code al subconjunto que puede emitir.
object
Código estable legible por máquinas. Toma decisiones con este código, nunca con title.
Campos opcionales
Solo aparece si la solicitud rechazada produjo una operación fiscal.
Solo aparece cuando las reglas oficiales de emisión rechazan la emisión.
Solo aparece cuando el rechazo señala un valor incluido en la solicitud.
Un problema público estable del documento, guardado para una admisión rechazada.
object
Cabeceras
Sección titulada «Cabeceras»Identifica esta solicitud. Indícalo cuando contactes a soporte.
La credencial es válida, pero no tiene permiso para realizar esta operación.
Ejemplo
{ "type": "about:blank", "title": "La credencial es válida, pero no tiene permiso para realizar esta operación.", "status": 403, "code": "operation_not_permitted", "requestId": "request_000000000000000000000001"}Campos y códigos de la respuesta
Detalles de problema RFC 9457. Cada fallo de esta API es uno de estos objetos y cada operación limita code al subconjunto que puede emitir.
object
Código estable legible por máquinas. Toma decisiones con este código, nunca con title.
Campos opcionales
Solo aparece si la solicitud rechazada produjo una operación fiscal.
Solo aparece cuando las reglas oficiales de emisión rechazan la emisión.
Solo aparece cuando el rechazo señala un valor incluido en la solicitud.
Un problema público estable del documento, guardado para una admisión rechazada.
object
Cabeceras
Sección titulada «Cabeceras»Identifica esta solicitud. Indícalo cuando contactes a soporte.
Ningún endpoint sirve este método y ruta, o no existe un recurso con este identificador dentro del alcance del solicitante.
Ejemplo
{ "type": "about:blank", "title": "Ningún endpoint sirve este método y ruta, o no existe un recurso con este identificador dentro del alcance del solicitante.", "status": 404, "code": "payment_not_found", "requestId": "request_000000000000000000000001"}Campos y códigos de la respuesta
Detalles de problema RFC 9457. Cada fallo de esta API es uno de estos objetos y cada operación limita code al subconjunto que puede emitir.
object
Código estable legible por máquinas. Toma decisiones con este código, nunca con title.
Campos opcionales
Solo aparece si la solicitud rechazada produjo una operación fiscal.
Solo aparece cuando las reglas oficiales de emisión rechazan la emisión.
Solo aparece cuando el rechazo señala un valor incluido en la solicitud.
Un problema público estable del documento, guardado para una admisión rechazada.
object
Cabeceras
Sección titulada «Cabeceras»Identifica esta solicitud. Indícalo cuando contactes a soporte.
La solicitud entra en conflicto con el estado actual del recurso o con una solicitud anterior que usó la misma clave de idempotencia (Idempotency-Key).
Ejemplo
{ "type": "about:blank", "title": "La solicitud entra en conflicto con el estado actual del recurso o con una solicitud anterior que usó la misma clave de idempotencia (`Idempotency-Key`).", "status": 409, "code": "refund_reference_conflict", "requestId": "request_000000000000000000000001"}Campos y códigos de la respuesta
Detalles de problema RFC 9457. Cada fallo de esta API es uno de estos objetos y cada operación limita code al subconjunto que puede emitir.
object
Código estable legible por máquinas. Toma decisiones con este código, nunca con title.
Campos opcionales
Solo aparece si la solicitud rechazada produjo una operación fiscal.
Solo aparece cuando las reglas oficiales de emisión rechazan la emisión.
Solo aparece cuando el rechazo señala un valor incluido en la solicitud.
Un problema público estable del documento, guardado para una admisión rechazada.
object
Cabeceras
Sección titulada «Cabeceras»Identifica esta solicitud. Indícalo cuando contactes a soporte.
Segundos que debes esperar antes de repetir esta solicitud o volver a consultar el recurso.
El cuerpo de la solicitud es más grande de lo que acepta este endpoint.
Ejemplo
{ "type": "about:blank", "title": "El cuerpo de la solicitud es más grande de lo que acepta este endpoint.", "status": 413, "code": "request_body_too_large", "requestId": "request_000000000000000000000001"}Campos y códigos de la respuesta
Detalles de problema RFC 9457. Cada fallo de esta API es uno de estos objetos y cada operación limita code al subconjunto que puede emitir.
object
Código estable legible por máquinas. Toma decisiones con este código, nunca con title.
Campos opcionales
Solo aparece si la solicitud rechazada produjo una operación fiscal.
Solo aparece cuando las reglas oficiales de emisión rechazan la emisión.
Solo aparece cuando el rechazo señala un valor incluido en la solicitud.
Un problema público estable del documento, guardado para una admisión rechazada.
object
Cabeceras
Sección titulada «Cabeceras»Identifica esta solicitud. Indícalo cuando contactes a soporte.
El cuerpo de la solicitud tiene un tipo de contenido que este endpoint no acepta.
Ejemplo
{ "type": "about:blank", "title": "El cuerpo de la solicitud tiene un tipo de contenido que este endpoint no acepta.", "status": 415, "code": "unsupported_media_type", "requestId": "request_000000000000000000000001"}Campos y códigos de la respuesta
Detalles de problema RFC 9457. Cada fallo de esta API es uno de estos objetos y cada operación limita code al subconjunto que puede emitir.
object
Código estable legible por máquinas. Toma decisiones con este código, nunca con title.
Campos opcionales
Solo aparece si la solicitud rechazada produjo una operación fiscal.
Solo aparece cuando las reglas oficiales de emisión rechazan la emisión.
Solo aparece cuando el rechazo señala un valor incluido en la solicitud.
Un problema público estable del documento, guardado para una admisión rechazada.
object
Cabeceras
Sección titulada «Cabeceras»Identifica esta solicitud. Indícalo cuando contactes a soporte.
La solicitud tiene un formato válido, pero no se puede ejecutar.
Ejemplo
{ "type": "about:blank", "title": "La solicitud tiene un formato válido, pero no se puede ejecutar.", "status": 422, "code": "refund_tip_amount_invalid", "requestId": "request_000000000000000000000001"}Campos y códigos de la respuesta
Detalles de problema RFC 9457. Cada fallo de esta API es uno de estos objetos y cada operación limita code al subconjunto que puede emitir.
object
Código estable legible por máquinas. Toma decisiones con este código, nunca con title.
Campos opcionales
Solo aparece si la solicitud rechazada produjo una operación fiscal.
Solo aparece cuando las reglas oficiales de emisión rechazan la emisión.
Solo aparece cuando el rechazo señala un valor incluido en la solicitud.
Un problema público estable del documento, guardado para una admisión rechazada.
object
Cabeceras
Sección titulada «Cabeceras»Identifica esta solicitud. Indícalo cuando contactes a soporte.
La solicitud no pudo completarse. Recupera el resultado con la referencia guardada o repite la solicitud con la misma clave de idempotencia.
Ejemplo
{ "type": "about:blank", "title": "La solicitud no pudo completarse. Recupera el resultado con la referencia guardada o repite la solicitud con la misma clave de idempotencia.", "status": 500, "code": "internal_error", "requestId": "request_000000000000000000000001"}Campos y códigos de la respuesta
Detalles de problema RFC 9457. Cada fallo de esta API es uno de estos objetos y cada operación limita code al subconjunto que puede emitir.
object
Código estable legible por máquinas. Toma decisiones con este código, nunca con title.
Campos opcionales
Solo aparece si la solicitud rechazada produjo una operación fiscal.
Solo aparece cuando las reglas oficiales de emisión rechazan la emisión.
Solo aparece cuando el rechazo señala un valor incluido en la solicitud.
Un problema público estable del documento, guardado para una admisión rechazada.
object
Cabeceras
Sección titulada «Cabeceras»Identifica esta solicitud. Indícalo cuando contactes a soporte.
Un servicio requerido no está disponible temporalmente. Inténtalo de nuevo con la misma referencia o la misma clave de idempotencia.
Ejemplo
{ "type": "about:blank", "title": "Un servicio requerido no está disponible temporalmente. Inténtalo de nuevo con la misma referencia o la misma clave de idempotencia.", "status": 503, "code": "integration_authorization_unavailable", "requestId": "request_000000000000000000000001"}Campos y códigos de la respuesta
Detalles de problema RFC 9457. Cada fallo de esta API es uno de estos objetos y cada operación limita code al subconjunto que puede emitir.
object
Código estable legible por máquinas. Toma decisiones con este código, nunca con title.
Campos opcionales
Solo aparece si la solicitud rechazada produjo una operación fiscal.
Solo aparece cuando las reglas oficiales de emisión rechazan la emisión.
Solo aparece cuando el rechazo señala un valor incluido en la solicitud.
Un problema público estable del documento, guardado para una admisión rechazada.
object
Cabeceras
Sección titulada «Cabeceras»Identifica esta solicitud. Indícalo cuando contactes a soporte.
Segundos que debes esperar antes de repetir esta solicitud o volver a consultar el recurso.