Cómo enviar cuenta a cuenta
Guia sobre transferencias cuenta a cuenta
El flujo base de ACH En Línea permite procesar transferencias reguladas y no reguladas a través de esquemas dinámicos referenciados en el campo MovementType. El sistema al detectar el valor para el flujo no regulado habilita las capacidades requeridas para el procesamiento de la transaccional no regulada (sin aplicar los topes de Bre-B y sin liquidación en el MOL).
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-TRANSFER, P2B-TRANSFER, B2B-TRANSFER y B2P-TRANSFER.
Dominio: https://bank.apihub.crt.achcolombia.com.co POST /ach/bk/v1/money-movement/transfers Campos de entrada creación de transferencia B2P
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 | version del protocolo de mensajeria. valor fijo "1.0.0" | Min 1 Max 15 | SI |
| timestamp | fecha | Marca de tiempo de envio del mensaje. Ver tabla "REGLAS PARA LOS VALORES DE TIPO FECHA" | N/A | SI |
| data | objeto | N/A | N/A | SI |
| id | cadena | Identificador unico de la transaccion. | Min 1 Max 36 | NO. Si la Entidad Participante Origen no informa este campo, el sistema genera un ID automaticamente |
| movementType | lista | Identificador del schema del flujo transaccional. Ver Tablas de referencia: "Valores para el campo movementType". | Lista | SI |
| amountInformation | objeto | N/A | N/A | SI |
| amount | decimal | Valor de la transaccion. 13 enteros, 2 decimales, siempre mayor que cero. El monto maximo por transaccion corresponde a 250 MM. | (13,2) | SI |
| currency | lista | Valor por defecto "COP" | Lista | SI |
| source | objeto | N/A | N/A | SI |
| personType | lista | Tipo de persona que originda la transaccion. Ver Tablas de referencia: "Valores para el campo personType". | Lista | SI |
| document | objeto | N/A | N/A | SI |
| number | entero | Numero de identificacion del ordenante del pago. Solo numeros, si el campo type es NIT. El valor no debe superar los 9 digitos y sin caracteres especiales. | Entero | SI |
| type | lista | Tipo de identificacion del ordenante del pago. Ver Tablas de referencia: "Tipos de documento". | Lista | SI |
| fullName | cadena | Nombre comercial, se usa para persona juridica. | 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 |
| accountId | cadena | Numero de cuenta del origen de la transaccion. El numero de cuenta no debera superar los 34 caracteres de longitud y en caso de que aplique, contemplar los 0 (ceros) a la izquierda. | Min 1 Max 34 | SI |
| accountType | lista | Tipo de cuenta del origen de la transaccion. Ver Tablas de referencia: "Tipos de cuenta". | Lista | SI |
| financialInstitutionId | entero | Identificador de la entidad origen. Numero NIT sin digito de verificacion y sin caracteres especiales. | Min 1 Max 9 | SI |
| target | objeto | N/A | N/A | SI |
| personType | lista | Tipo de persona beneficiaria de la transaccion. Ver Tablas de referencia: "Valores para el campo personType". | Lista | SI |
| document | objeto | N/A | N/A | SI |
| number | entero | Numero de identificacion del beneficiario del pago. Solo numeros, si el campo type es NIT. El valor no debe superar los 9 digitos y sin caracteres especiales. | Entero | SI |
| type | lista | Tipo de identificacion del beneficiario del pago. Ver Tablas de referencia: "Tipos de documento". | Lista | SI |
| fullName | cadena | Nombre comercial, se usa para persona juridica. | 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 |
| accountInformation | objeto | N/A | N/A | SI |
| accountId | cadena | Numero de cuenta del origen de la transaccion. El numero de cuenta no debera superar los 34 caracteres de longitud y en caso de que aplique, contemplar los 0 (ceros) a la izquierda. | Min 1 Max 34 | SI |
| accountType | lista | Tipo de cuenta del beneficiario de la transaccion. Ver Tablas de referencia: "Tipos de cuenta". | Lista | SI |
| financialInstitutionId | entero | Identificador de la entidad destino. Numero NIT sin digito de verificacion y sin caracteres especiales. | Min 1 Max 9 | SI |
| purposeInformation | objeto | N/A | N/A | COND. Obligatorio si el movementType es *-TRANSFER |
| transactionPurpose | lista | Motivo de la transaccion. Ver Tablas de referencia: "Valores para el campo transactionPurpose". | Min 1 - Max 25 | COND. Obligatorio si el movementType es *-TRANSFER |
| useCaseInformation | objeto | N/A | N/A | COND. Obligatorio si el movementType es *-TRANSFER |
| channel | lista | Canal origen de la transaccion. Ver Tablas de referencia: "Valores para el campo channel". | Lista | COND. Obligatorio si el movementType es *-TRANSFER |
| deviceFingerprint | objeto | N/A | N/A | NO |
| deviceHash | cadena | Entregado por el SDK de prevención fraude o por la entidad. | Min 1 - Max 255 | NO |
| ipAddress | cadena | Entregado por el SDK de prevención fraude o por la entidad. | Min 1 - Max 255 | NO |
| ipLocation | cadena | Entregado por el SDK de prevención fraude o por la entidad. | Min 1 - Max 255 | NO |
| ipCountryCode | cadena | Entregado por el SDK de prevención fraude o por la entidad. | Min 1 - Max 255 | NO |
| deviceIpRegion | cadena | Entregado por el SDK de prevención fraude o por la entidad. | Min 1 - Max 255 | NO |
| deviceIsp | cadena | Entregado por el SDK de prevención fraude o por la entidad. | Min 1 - Max 255 | NO |
| deviceModel | cadena | Entregado por el SDK de prevención fraude o por la entidad. | Min 1 - Max 255 | NO |
| latitude | cadena | Entregado por el SDK de prevención fraude o por la entidad. | Min 1 - Max 255 | NO |
| longitude | cadena | Entregado por el SDK de prevención fraude o por la entidad. | Min 1 - Max 255 | NO |
| deviceScreenHeight | cadena | Entregado por el SDK de prevención fraude o por la entidad. | Min 1 - Max 255 | NO |
| deviceScreenWidth | cadena | Entregado por el SDK de prevención fraude o por la entidad. | Min 1 - Max 255 | NO |
| deviceLanguage | cadena | Entregado por el SDK de prevención fraude o por la entidad. | Min 1 - Max 255 | NO |
| deviceCookiesEnabled | cadena | Entregado por el SDK de prevención fraude o por la entidad. | Min 1 - Max 255 | NO |
| deviceUserAgent | cadena | Entregado por el SDK de prevención fraude o por la entidad. | Min 1 - Max 255 | NO |
| deviceBrowser | cadena | Entregado por el SDK de prevención fraude o por la entidad. | Min 1 - Max 255 | NO |
| deviceBrowserVersion | cadena | Entregado por el SDK de prevención fraude o por la entidad. | Min 1 - Max 255 | NO |
| deviceOs | cadena | Entregado por el SDK de prevención fraude o por la entidad. | Min 1 - Max 255 | NO |
Request creación de transferencia B2P
curl --location 'https://bank.apihub.crt.achcolombia.com.co/ach/bk/v1/money-movement/transfers' \
--header 'x-hash: 08a8102ca3ccbae5f4e206018483c69e7022f20f9f134ca28047e2348cdb0b93' \
--data '{
"meta": {
"requestId": "ec3deea7-4698-466c-accb-204ea1a7ca1a",
"version": "1.0.0",
"timestamp": "{{fechaLocal}}"
},
"data": {
"id":"20260820ACHENLINEA835569530998125",
"movementType": "B2P-TRANSFER",
"amountInformation": {
"amount": 2500,
"currency": "COP"
},
"source": {
"personType": "LEGAL",
"document": {
"number": "23171077",
"type": "NIT"
},
"fullName": "PRUEBAS",
"accountInformation": {
"accountId": "20753221513",
"accountType": "CAHO",
"financialInstitutionId": 900504005
}
},
"target": {
"personType": "NATURAL",
"document": {
"number": "13171077",
"type": "CC"
},
"firstName": "Hernan",
"firsLastName": "Sanguino",
"secondLastName": "Vega",
"accountInformation": {
"accountId": "20753228543",
"accountType": "CAHO",
"financialInstitutionId": 900504003
}
},
"purposeInformation": {
"transactionPurpose": "COMPRAS"
},
"useCaseInformation": {
"channel": "OFC",
"deviceFingerprint": {
"deviceHash": "abc123hashdevice",
"ipAddress": "192.168.1.10",
"ipLocation": "Bogotá",
"ipCountryCode": "CO",
"deviceIpRegion": "Cundinamarca",
"deviceIsp": "Claro",
"deviceModel": "iPhone 13",
"latitude": "4.60971",
"longitude": "-74.08175",
"deviceScreenHeight": "2532",
"deviceScreenWidth": "1170",
"deviceLanguage": "es-CO",
"deviceCookiesEnabled": "true",
"deviceUserAgent": "Mozilla/5.0 (iPhone; CPU iPhone OS 15_0 like Mac OS X)",
"deviceBrowser": "Safari",
"deviceBrowserVersion": "15.0",
"deviceOs": "iOS"
}
}
}
}' Campos de salida creación de transferencia
| Campo | Tipo | Validación | Longitud |
|---|---|---|---|
| meta | objeto | N/A | N/A |
| requestId | cadena | UUID que identifica el mensaje | Min 36 - Max 36 |
| version | cadena | Versión del protocolo de mensajería. Valor fijo "1.0.0" | Min 1 Max 15 |
| timestamp | fecha | Marca de tiempo de envío del mensaje | N/A |
| data | Objeto | Contiene información | N/A |
| id | cadena | Identificador único de la transacción | Min 1 Max 36 |
| movementType | cadena | Identificador del schema del flujo transaccional. Ver Tablas de referencia: "Valores para el campo movementType". | lista |
| status | cadena | Estado de la transacción. Ver Tablas de referencia: "Estados de las transacciones". | lista |
| creationDateTime | fecha | Momento de la respuesta al participante | N/A |
Response creación de transferencia
{
"meta": {
"requestId": "1604a52e-9f5f-41f2-b6ae-4a5ce4bf7dec",
"version": "1.0.0",
"timestamp": "2026-08-20T17:03:02.911"
},
"data": {
"id": "20260820ACHENLINEA618077635543655",
"movementType": "B2P-TRANSFER",
"status": "pending",
"creationDateTime": "2026-08-20T17:03:02.511"
}
} Aceptación en el flujo no regulado
La aceptación de una transferencia no depende de una acción explícita por parte del usuario final. 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.
Modelo de liquidación
Para el flujo no regulado, ACH En Línea implementa su propio mecanismo de liquidación y compensación a través de Prefondeo y reintegro de recursos soportados a través del movimiento de dinero en las cuentas CUD de las Entidades Participantes y ACH Colombia.
