Cómo enviar a Bre-b

Origen y destino de la transferencia

Las transferencias reguladas se definen como transferencias de cuenta a cuenta. Estas transacciones no deberían diferenciarse de las transferencias actuales entre cuentas en ACH En Línea.

Nota: La resolución de llaves debe realizarse antes de crear una transferencia.

Concepto Transfers

ACH En Línea utiliza el concepto de “transfers” para iniciar pagos en el sistema agnósticos al caso de uso o tipo de transferencia.

Identificador de flujo

Cuando se inicia un transfer se activa uno de los flujos de pago orquestados por la plataforma.

El flujo es definido por el campo movementType dentro del Transfers, que para el caso de transferencias reguladas debe ser alguno de estos valores: P2P-BREB, P2B-BREB, B2B-BREB y B2P-BREB.

Ejemplo de una transferencia regulada

 

Campos de entrada creación de transferencia

Campos de entrada (Headers)

Campo Tipo Validación Descripción Obligatoriedad
x-hash String Min 64 – Máx 64 Cadena de comprobación de integridad de la trama. Se obtiene al serializar el objeto data y aplicar SHA256. Si

Campos de entrada (Body)

Campo Tipo Validación Longitud Obligatoriedad
meta objeto N/A N/A SI
requestId cadena UUID que identifica el mensaje. Min 36 - Max 36 SI
version cadena versión del protocolo de mensajería. valor fijo "1.0.0" Min 1 Max 15 SI
timestamp fecha Marca de tiempo de envío del mensaje Ver tabla “REGLAS PARA LOS VALORES DE TIPO FECHA” SI
data objeto N/A N/A SI
id cadena Identificador único de la transacción. según el valor del movementType - [P2P-BREB, P2B-BREB]: Responde al id regulatorio Bre-B, ver la especificación de la tabla “FORMATO DE ID REGULATORIO – BREB”, para estos esquemas debe ser obligatorio, para los demás es opcional. Min 1 Max 36 NO
movementType lista Identificador del schema del flujo transaccional. Ver tabla “VALORES PARA LAS LOS MOVEMENT TYPE” Lista SI
amountInformation objeto N/A N/A SI
amount decimal Valor de la transacción. 13 enteros, 2 decimales, siempre mayor que cero. El monto máximo por transacción corresponde a 250 MM. Ver tabla “REGLAS PARA LOS VALORES DE TIPO DECIMAL” (13,2) SI
currency lista Símbolo de la moneda de la transacción. Ver tabla “VALORES PARA TIPOS DE MONEDA (CURENCY)” Lista SI
source objeto N/A N/A SI
personType lista Tipo de persona que hace la transacción. Ver tabla “VALORES PARA TIPOS DE PERSONA (PERSONTYPE)” lista SI
document Objeto N/A N/A SI
number entero Número de identificación del ordenante del pago. Solo números Entero SI
type lista Tipo de identificación del ordenante del pago. Ver tabla “VALORES PARA EL TIPO DE DOCUMENTO” Lista SI
fullName cadena Nombre comercial, se usa para persona jurídica Min 1 Max 160 COND Obligatorio si personType es LEGAL
firstName cadena Primer nombre Min 1 Max 40 Obligatorio si personType es NATURAL
secondName cadena Segundo nombre Min 1 Max 40 NO
firstLastName cadena Primer apellido Min 1 Max 40 Obligatorio si personType es NATURAL
secondLastName cadena segundo apellido Min 1 Max 40 NO
location objeto N/A N/A NO
city cadena Código de la ciudad (códigos DANE) Min 1 Max 5 SI
postalCode cadena Código postal de la ciudad Min 1 Max 10 SI
accountInformation objeto N/A N/A SI
accountId cadena Número de cuenta del origen de la transacción Min 1 Max 34 SI
accountType lista Tipo de cuenta del origen de la transacción. Ver tabla “VALORES PARA EL TIPO DE CUENTA” lista SI
financialInstitutionId entero Identificador de la entidad origen. Número NIT sin digito de verificación. Min 1 Max 9 SI
target objeto N/A N/A  
personType lista Tipo de persona que recibe la transacción. Ver tabla “VALORES PARA TIPOS DE PERSONA (PERSONTYPE)” Lista SI
document Objeto N/A N/A SI
number entero Número de identificación del beneficiario del pago. Solo números. entero SI
type lista Tipo de identificación del beneficiario del pago. Ver tabla “VALORES PARA EL TIPO DE DOCUMENTO” lista SI
fullName cadena Nombre comercial, se usa para persona jurídica Min 1 Max 160 COND Obligatorio si personType es LEGAL
firstName cadena Primer nombre Min 1 Max 40 COND Obligatorio si personType es NATURAL
secondName cadena Segundo nombre Min 1 Max 40 NO
firstLastName cadena Primer apellido Min 1 Max 40 COND Obligatorio si personType es NATURAL
secondLastName cadena segundo apellido Min 1 Max 40 NO
spbviCode lista Nombre del SPBVI destino. Ver tabla “VALORES PARA LOS SPBVI HABILITADOS” lista COND Obligatorio si el movementType es *-BREB
location objeto N/A N/A NO
city cadena Código de la ciudad (código DANE) Min 1 Max 5 SI
postalCode cadena Código postal de la ciudad Min 1 Max 10 SI
alias objeto N/A N/A COND Obligatorio si el movementType es *-BREB
aliasType lista Identificador del tipo de llave. Ver tabla “VALORES PARA EL TIPO DE LLAVE” lista SI
aliasValue cadena Valor de la llave Debe responder a las reglas según tipo de llave descritas en la tabla de tipos de llave Min 1 Max 92 SI
qr objeto N/A N/A NO
qrId cadena Identificador del QR Ver tabla “COMO OBTENER EL ID PARA EL ID QR” Min 35 Max 35 NO
hash cadena Cadena de seguridad del QR. Se obtiene del Tag 91 - SubTag 01 del estándar EMVCo v1.5 Min 64 Max 64 NO
crc cadena Código de redundancia cíclica del QR. Se obtiene del Tag 63 del estándar EMVCo v1.5 Min 1 Max 4 NO
accountInformation objeto N/A N/A SI
accountId cadena Número de cuenta del destino de la transacción Min 1 Max 34 SI
accountType lista Tipo de cuenta del beneficiario de la transacción Ver tabla “VALORES PARA EL TIPO DE CUENTA” lista SI
financialInstitutionId entero Identificador de la entidad destino Número NIT sin digito de verificación. Min 1 Max 9 SI
purposeInformation objeto N/A N/A COND Obligatorio si el movementType es *-BREB
transactionPurpose lista Motivo de la transacción Ver tabla “VALORES PARA EL MOTIVO DE LA TRANSACCIÓN.” Min 1 - Máx 25 SI
useCaseInformation objeto N/A N/A COND Obligatorio si el movementType es *-BREB
channel Lista Canal origen de la transacción. Ver lista “VALORES PARA EL CANAL (Channel)” Lista SI
timestamps objeto N/A N/A COND Obligatorio si el movementType es *-BREB
received fecha El participante recibe del cliente la orden de intent. Es obligatorio con el movementType [P2P-BREB, P2B-BREB]. Ver tabla “REGLAS PARA LOS VALORES DE TIPO FECHA” SI
dispatched fecha El participante envía el intent luego de hacer validaciones. Es obligatorio con el movementType [P2P-BREB, P2B-BREB]. Ver tabla “REGLAS PARA LOS VALORES DE TIPO FECHA” SI
deviceFingerprint objeto N/A N/A NO
ipAddress cadena Entregado por el SDK de prevención fraude o por la entidad Min 1 - Máx 255 NO
ipLocation cadena Entregado por el SDK de prevención fraude o por la entidad Min 1 - Máx 255 NO
ipCountryCode cadena Entregado por el SDK de prevención fraude o por la entidad Min 1 - Máx 255 NO
deviceIpRegion cadena Entregado por el SDK de prevención fraude o por la entidad Min 1 - Máx 255 NO
deviceIsp cadena Entregado por el SDK de prevención fraude o por la entidad Min 1 - Máx 255 NO
deviceModel cadena Entregado por el SDK de prevención fraude o por la entidad Min 1 - Máx 255 NO
latitude cadena Entregado por el SDK de prevención fraude o por la entidad Min 1 - Máx 255 NO
longitude cadena Entregado por el SDK de prevención fraude o por la entidad Min 1 - Máx 255 NO
deviceScreenHeight cadena Entregado por el SDK de prevención fraude o por la entidad Min 1 - Máx 255 NO
deviceScreenWidth cadena Entregado por el SDK de prevención fraude o por la entidad Min 1 - Máx 255 NO
deviceLanguage cadena Entregado por el SDK de prevención fraude o por la entidad Min 1 - Máx 255 NO
deviceCookiesEnabled cadena Entregado por el SDK de prevención fraude o por la entidad Min 1 - Máx 255 NO
deviceUserAgent cadena Entregado por el SDK de prevención fraude o por la entidad Min 1 - Máx 255 NO
deviceBrowser cadena Entregado por el SDK de prevención fraude o por la entidad Min 1 - Máx 255 NO
deviceBrowserVersion cadena Entregado por el SDK de prevención fraude o por la entidad Min 1 - Máx 255 NO
deviceOs cadena Entregado por el SDK de prevención fraude o por la entidad Min 1 - Máx 255 NO
ipAddress cadena Entregado por el SDK de prevención fraude o por la entidad Min 1 - Máx 255 NO

Request creación de transferencia

curl --location 'https://url_ach/v1/money_movements/transfers' \
--header 'x-hash: 695ffdf84f0dad0c19e3b8b09a4565246c156d747ffb26149e4c2dc5d3b66ca1' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer XXXXXXXXXXXXXXXXXX' \
--data '{...}'

Data:

{
    "meta": {
        "requestId": "cadena",
        "version": "cadena",
        "timestamp": "fecha"
    },
    "data": {
        "id": "cadena",
        "movementType": ["lista"],
        "amountInformation": {
            "amount": "decimal",
            "currency": ["lista"]
        },
        "source": {
            "personType": ["lista"],
            "document": {
                "number": "cadena",
                "type": ["lista"],
                "fullName": "cadena",
                "firstName": "cadena",
                "secondName": "cadena",
                "firstLastName": "cadena",
                "secondLastName": "cadena"
            },
            "accountInformation": {
                "accountId": "cadena",
                "accountType": ["lista"],
                "financialInstitutionId": "entero"
            }
        },
        "target": {
            "personType": ["lista"],
            "document": {
                "number": "cadena",
                "type": ["lista"],
                "fullName": "cadena",
                "firstName": "cadena",
                "secondName": "cadena",
                "firstLastName": "cadena",
                "secondLastName": "cadena"
            },
            "spbviCode": ["lista"],
            "alias": {
                "aliasType": ["lista"],
                "aliasValue": "cadena"
            },
            "qr": {
                "qrId": "cadena",
                "accountInformation": {
                    "accountId": "cadena",
                    "accountType": ["lista"],
                    "financialInstitutionId": "entero"
                }
            }
        },
        "purposeInformation": {
            "transactionPurpose": ["lista"]
        },
        "useCaseInformation": {
            "channel": ["lista"]
        },
        "timestamps": {
            "received": "fecha",
            "dispatched": "fecha"
        },
        "deviceFingerprint": {
            "deviceHash": "cadena",
            "ipAddress": "cadena",
            "ipLocation": "cadena",
            "ipCountryCode": "cadena",
            "deviceIpRegion": "cadena",
            "deviceIsp": "cadena",
            "deviceModel": "cadena",
            "latitude": "cadena",
            "longitude": "cadena",
            "deviceScreenHeight": "cadena",
            "deviceScreenWidth": "cadena",
            "deviceLanguage": "cadena",
            "deviceCookiesEnabled": "cadena",
            "deviceUserAgent": "cadena",
            "deviceBrowser": "cadena",
            "deviceBrowserVersion": "cadena",
            "deviceOs": "cadena"
        }
    }
}

Campos de salida creación de transferencia

Campo Tipo Validación Longitud Mapeo de datos
meta objeto N/A N/A N/A
requestId cadena UUID que identifica el mensaje Min 36 - Max 36 N/A
version cadena Versión del protocolo de mensajería. valor fijo "1.0.0" Min 1 Max 15 N/A
timestamp fecha Marca de tiempo de envío del mensaje Ver tabla “REGLAS PARA LOS VALORES DE TIPO FECHA” N/A
data Objeto Contiene información N/A N/A
id cadena Identificador único de la transacción (Regulatorio o no) Min 1 Max 36 data.handle
movementType cadena Identificador del schema del flujo transaccional. Ver tabla “VALORES PARA LAS LOS MOVEMENT TYPE” lista data.schema
status cadena Estado de la transacción. Ver tabla “VALORES PARA LAS ACCIONES Y ESTADOS (status)” lista meta.status
creationDateTime fecha Momento de la respuesta al participante Ver tabla “REGLAS PARA LOS VALORES DE TIPO FECHA” N/A

Response creación de transferencia

{
    "meta": {
        "requestId": "string",
        "version": "string",
        "timestamp": "2026-02-23T15:20:50Z"
    },
    "data": {
        "id": "string",
        "movementType": "string",
        "status": "string",
        "creationDateTime": "2026-02-23T15:20:50Z"
    }
}

Campo id:identificación única asignada por la Entidad Participante origen de la transacción “YYYYMMDD#########TFY000000000000005”

  • YYYYMMDD: fecha (8 caracteres), en horario local y que corresponde a la fecha del momento en que el SPBVI originador recibe la confirmación de la orden de pago y/o transferencia de fondo inmediata por parte del Participante Originador.
  • NIT: (9 caracteres - #########) NIT del Participante Originador (sin dígito de verificación) o código asignado por el BR.
  • Sigla del SPBVI Originador TFY: Corresponde a la abreviación del Sistema de Pago de Bajo Valor Inmediato Originador.
  • Secuencia (15 dígitos): Número ascendente que debe ser único para cada fecha en formato “YYYYMMDD”. Si el valor tiene menos de 15 dígitos, se debe completar con ceros a la izquierda como en el ejemplo.

Aceptación en el flujo regulado

En el modelo regulado, la aceptación de una transferencia no depende de una acción explícita por parte del usuario final, como podría suceder en flujos tradicionales. Sin embargo, sí requiere de una validación formal por parte de la entidad financiera que actúa como banco receptor.

Este paso de aceptación es obligatorio antes de continuar con el procesamiento y consiste en que la entidad receptora verifique que la cuenta destino:

  • Existe y está activa.
  • Está habilitada para recibir pagos.
  • Cumple con los requisitos establecidos por la regulación, como los límites de monto o tipo de moneda.

Una vez realizada esta validación, el banco destinatario confirma la aceptación utilizando el mecanismo estándar ya existente en ACH En Línea para flujos asincrónicos. Esta aceptación por parte de la entidad equivale a una aprobación regulatoria que habilita a continuar con la operación de crédito y la posterior liquidación a través del MOL.

Modelo de liquidación

Una vez que MOL entre en funcionamiento, cada transferencia deberá enviarse a MOL para su procesamiento y se pausará el procesamiento interno hasta recibir una llamada de continuación desde MOL.

Orderarticle 1