Integración BReB

POST

Llave Dinámica

Antes de iniciar un cobro mediante Llave Dinámica debes reservar la transacción en el endpoint de reservas. La reserva devuelve un identificador único y temporal (key.value) ligado a un monto exacto: el pagador transfiere a esa llave y la plataforma concilia automáticamente.

POSThttps://backcredi.vepay.com.co/v1/dynamic-keys/reservations

Ciclo de vida de la llave

El diagrama muestra el recorrido completo: desde la reserva hasta la conciliación del pago contra el monto reservado.

Diagrama de flujo
COMERCIO / TU APPPAYMENTSWAY + VEPAYPAGADORBANCO / ACH1. POST Reservamerchant_code + amount2. Genera llavereserva monto + expiración3. key.value+ transaction_id + expires_atmuestra la llave4. Transfierea @PWSAJF6PWEGHA44XDMRP5. Procesa pagotransferencia inmediata6. Valida y conciliamonto exacto + vigencia7. ConfirmaciónWebHook / consulta1234567⏱ expires_atfuera de ventana → rechazoBase URL: https://backcredi.vepay.com.coAuth: Bearer tokenRegla: monto exacto + llave vigente

Headers

HeaderValorReq.
AuthorizationBearer {token}Sí
Content-Typeapplication/jsonSí

Cuerpo de la petición

CampoTipoDescripciónReq.
merchant_codestringCódigo identificador único del comercio que procesa la transacción (ej. COM-001).Sí
amountstringMonto exacto a cobrar, con dos decimales (ej. 50000.00).Sí
JSON — Body
{
  "merchant_code": "COM-001",
  "amount": "50000.00"
}

cURL

cURL
curl --location 'https://backcredi.vepay.com.co/v1/dynamic-keys/reservations' \
--header 'Authorization: Bearer [REDACTED]' \
--header 'Content-Type: application/json' \
--data '{
  "merchant_code": "COM-001",
  "amount": "50000.00"
}'

Respuesta del servidor

CampoTipoDescripción
successbooleanIndica si la reserva se creó correctamente.
transaction_idstringUUID de la transacción asociada a la reserva.
key.typestringTipo de llave generada.
key.valuestringLlave dinámica a la que el pagador debe transferir.
amountstringMonto reservado. El pago debe coincidir exactamente.
expires_atstringFecha y hora de expiración en formato ISO UTC.
messagestringMensaje descriptivo para mostrar al pagador.
JSON — 200 OK
{
  "success": true,
  "transaction_id": "a8700742-4930-41fd-ad7a-c5d17a5d7238",
  "key": {
    "type": "O",
    "value": "@PWSAJF6PWEGHA44XDMRP"
  },
  "amount": "50000.00",
  "expires_at": "2026-08-11T15:00:37.007Z",
  "message": "Pagá a esta llave por el monto exacto. Un importe distinto será rechazado."
}

Reglas y consideraciones clave

Identificador / llave (key.value) — Es el código único generado (ej. @PWSAJF6PWEGHA44XDMRP) al cual el pagador debe realizar la transferencia o pago.

Monto exacto requerido — La transacción queda ligada estrictamente al monto reservado (50000.00). Cualquier intento de pago por un valor diferente será rechazado automáticamente por la plataforma.

Expiración (expires_at) — La llave dinámica tiene una ventana de tiempo limitada expresada en formato ISO UTC. La transacción debe completarse antes de esa fecha y hora.

Simulador de reserva

Simula localmente la respuesta del endpoint para ver la estructura de la llave y el comportamiento de la expiración. No realiza llamadas reales.

Completa los datos y pulsa «Reservar llave» para ver la respuesta simulada.

Ejemplo JavaScript

JavaScript
const res = await fetch(
  'https://backcredi.vepay.com.co/v1/dynamic-keys/reservations',
  {
    method : 'POST',
    headers: {
      'Authorization': `Bearer ${token}`,
      'Content-Type' : 'application/json'
    },
    body: JSON.stringify({
      merchant_code: 'COM-001',
      amount       : '50000.00'
    })
  }
);
const reserva = await res.json();

// Muestra la llave al pagador junto con el monto exacto
console.log(reserva.key.value, reserva.amount, reserva.expires_at);

En esta página