Cómo debitar al usuario origen

Débito al usuario origen

El endpoint de débito se invoca al inicio del procesamiento de una transferencia, con el objetivo de debitar la cuenta del usuario origen. Este endpoint debe garantizar que la cuenta esté activa y sea válida, y debe reservar los fondos necesarios para que la operación pueda ejecutarse.

En ACH En Línea, una operación de débito se representa como una acción de tipo COMMIT DEBIT. Si esta acción se marca como COMPLETED exitosamente, pero más adelante ocurre un error en el procesamiento, ACH En Línea ejecutará una operación opuesta (de tipo credito) para revertir el movimiento de saldo y restablecer el estado original de la cuenta.

Proceso de débito paso a paso

A continuación, se describe detalladamente el flujo de procesamiento para una transferencia tipo regulada, enfocándonos en la etapa de débito al usuario origen. Este flujo se ejecuta en múltiples etapas, combinando interacciones entre ACH En Línea y el banco originador, tanto en fases síncronas como asincrónicas.

El objetivo principal de este proceso es asegurar que los fondos del usuario origen estén disponibles y sean reservados o debitados correctamente antes de avanzar con el resto de la operación. El flujo también contempla los mecanismos necesarios para revertir movimientos en caso de errores, así como el cumplimiento de los tiempos regulatorios.

A continuación, se detallan las acciones involucradas, junto con ejemplos prácticos y consideraciones técnicas relevantes.

sequenceDiagram
autonumber
  participant sb as Entidad Origen
  participant ach as ACH En Línea

  sb ->> +ach: Creación de la tx
  Note over ach,sb: POST /v1/money-movement/transfers
  ach -->> +sb: 200 OK
  ach ->> +sb: Llama al prepare debit 
status: prepare Note over sb,ach: POST /v1/debits sb -->> +ach: 200 OK sb ->> +sb: Reserva de fondos sb ->> +ach: Confirma preparación del debit
status: prepared Note over ach,sb: POST /v1/money-movement/transfers/{id}/status ach -->> -sb: 200 OK ach ->> -sb: Llama al commit debit
status: commit Note over ach,sb: POST /v1/debits/{idDebit}/commit sb ->> +sb: Realiza débito de fondos sb ->>+ach: Confirma débito
Status: comited Note over sb,ach: POST /v1/money-movement/transfers/{id}/status ach -->> +sb: 200 OK ach ->> -sb: Confirma estado final
status: completed Note over ach,sb: PUT v1/transfers/{id} sb -->> +ach: 200 OK

1. ACH En Línea llama al banco origen para procesar la operación de preparación del débito

A continuación, se detalla la información requerida para la implementación y puesta en marcha del servicio para la preparación del débito en la Entidad Origen.

Dominio: URL Base Entidad
POST /v1/debits

Campos de entrada preparación del débito

Campo Tipo Validación Longitud Obligatoriedad
meta objeto N/A N/A SI
id cadena Identificador único de la transacción. Min 1 Max 36 SI
status cadena Estado de la transacción. Ver Tablas de referencia: "Estados de las transacciones". Min 1 Max 8 SI
data objeto N/A N/A SI
debitId cadena Identificador del debit prepare, el banco debe guardar este valor. Min 1 Max 36 SI
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 transacción. 13 enteros, 2 decimales, siempre mayor que cero. El monto máximo por transacción 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 origina la transacción. Ver Tablas de referencia: "Valores para el campo personType". lista SI
document objeto N/A N/A SI
number cadena Número de identificación del ordenante del pago. Solo números, si el campo type es NIT. El valor no debe superar los 9 dígitos y sin caracteres especiales. entero SI
type lista Tipo de identificación del ordenante del pago. Ver Tablas de referencia: "Tipos 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
accountInformation objeto N/A N/A SI
accountId cadena Número de cuenta del origen de la transacción. Tomar la parte en negrilla: svgs:20753228543@bancorojo.com.co Min 1 Max 34 SI
accountType lista Tipo de cuenta del origen de la transacción. Traducir de la tabla la parte en negrilla: svgs:20753228543@bancorojo.com.co lista SI
financialInstitutionId entero Identificador de la entidad origen. Número NIT sin dígito de verificación y sin caracteres especiales. Min 1 Max 9 SI
target objeto N/A N/A SI
personType lista Tipo de persona beneficiaria de la transacción. Ver Tablas de referencia: "Valores para el campo personType". lista SI
document Objeto N/A N/A SI
number cadena Número de identificación del beneficiario del pago. Solo números, si el campo type es NIT. El valor no debe superar los 9 dígitos y sin caracteres especiales. entero SI
type lista Tipo de identificación del beneficiario del pago. Ver Tablas de referencia: "Tipos 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
accountInformation objeto N/A N/A SI
accountId cadena Número de cuenta del beneficiario de la transacción. Tomar la parte en negrilla: svgs:20753228543@bancorojo.com.co Min 1 Max 34 SI
accountType lista Tipo de cuenta del beneficiario de la transacción. Traducir de la tabla la parte en negrilla: svgs:20753228543@bancorojo.com.co lista SI
financialInstitutionId entero Identificador de la entidad destino. Número NIT sin dígito de verificación y sin caracteres especiales. Min 1 Max 9 SI

Request preparación del débito

{
  "meta": {
    "id": "debf4f70-c30d-4f27-95e6-2f96b91c0001",
    "status": "prepare"
  },
  "data": {
    "debitId": "9d2f9ed9-7fdb-4d3b-a7bf-8cd1a8e50001",
    "movementType": "B2P-TRANSFER",
    "amountInformation": {
      "amount": 2500000.00,
      "currency": "COP"
    },
    "source": {
      "personType": "LEGAL",
      "document": {
        "number": "900123456",
        "type": "NIT"
      },
      "fullName": "COMERCIALIZADORA ABC SAS",
      "accountInformation": {
        "accountId": "200012345678",
        "accountType": "CCTE",
        "financialInstitutionId": 900123456
      }
    },
    "target": {
      "personType": "NATURAL",
      "document": {
        "number": "1020304050",
        "type": "CC"
      },
      "firstName": "CARLOS",
      "firstLastName": "RAMIREZ",
      "accountInformation": {
        "accountId": "3001234567",
        "accountType": "CAHO",
        "financialInstitutionId": 860987654
      }
    }
  }
}

2. La Entidad Participante origen envía respuesta al llamado de preparación del débito

La Entidad Participante confirma la recepción de la instrucción para preparación del débito.

Response preparación del débito

HTTP/1.1 200 OK 
Content-Length: 0

3. Reserva de fondos

La Entidad Participante asegura la reserva de fondos al usuario origen.

4. Procesar rechazo de la transferencia

Si alguna de las validaciones no se cumple, la Entidad Participante originadora rechaza la operación enviando una solicitud al endpoint v1/money-movement/transfers/{id}/status con el estado "failed".

Dominio: https://bank.apihub.crt.achcolombia.com.co
POST v1/money-movement/transfer/{id}/status

Campos de entrada error en la preparación del débito (header)

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

Campos de entrada error en la preparación del débito (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 N/A SI
data objeto N/A N/A SI
movementType lista Identificador del schema del flujo transaccional.
Ver Tablas de referencia: "Valores para el campo movementType".
Lista SI
status cadena Estado de la transacción.
Ver Tablas de referencia: "Estados de las transacciones".
Lista SI
creationDateTime fecha Momento en el que se confirma la preparación del débito o crédito N/A SI
debitId cadena Identificador del debit prepare, el banco debe enviar el valor que corresponde a la transferencia. Este valor fue entregado por ACH En-línea en el llamado al endpoint /v1/debits. Min 1 Max 36 COND
Si la acción es un débito se debe informar este campo
coreId cadena Identificador interno del banco para la preparación del débito o crédito. Min 1 Max 255 SI
custom objeto N/A N/A COND
Si el status = failed o aborted. Se debe informar este objeto con sus campos.
error subobjeto N/A N/A COND
code cadena Identificador del error.
Ver tabla "VALORES PARA EL CAMPO CODE DEL STATUS".
Min 1 Max 36 COND
description cadena Descripción del error Min 1 Max 255 COND

Request rechazo

curl --location 'https://url_ach/v1/money_movement/transfers/{id}/status' \
--header 'hash: 695ffdf84f0dad0c19e3b8b09a4565246c156d747ffb26149e4c2dc5d3b66ca1' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiJkZW1vLXVzdWFyaW8iLCJyb2xlIjoiYXBwLXRlc3QiLCJpYXQiOjE3MDAwMDAwMDAsImV4cCI6MTcwMDA4NjQwMH0.abc123xyz987fakeSignatureOnlyForDemoPurposes' \
--data '{
    "meta": {
        "requestId": "45cdaa41-b567-4057-9fb7-7240efdfb437",
        "version": "1.0.0",
        "timestamp": "2026-06-15T14:27:28.001"
    },
    "data": {
        "movementType": "P2P-TRANSFER",
        "status": "failed",
        "creationDateTime": "2026-06-15T14:27:28.001",
        "debitId": "deb_03rgXTmRB7aI7jomy",
        "coreId": "13456278395678906789"
    },
    "custom": {
        "error": {
            "code": "bridge.account-not-found",
            "description": "1039: Cuenta no encontrada"
        }
    }
}'

Response rechazo preparación débito

HTTP/1.1 200 OK 
Content-Length: 0

5. ACH solicita la Entidad Originadora abortar la transferencia

ACH En-línea solicita a la Entidad Particiánte origen abortar la transferencia, consumiendo el servicio v1/debits/{idDebit}/abort con el estado "abort".

Dominio: URL Base Entidad
POST v1/debits/{idDebit}/abort

Campos de entrada abort del debit

Campo Tipo Validación Longitud Obligatoriedad
meta objeto N/A N/A SI
id cadena Identificador único de la transacción. Min 1 Max 36 SI
status cadena Estado de la transacción. Ver Tablas de referencia: "Estados de las transacciones". Min 1 Max 8 SI
data objeto N/A N/A SI
debitId cadena Identificador del debit prepare, el banco debe guardar este valor. Min 1 Max 36 SI
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 transacción. 13 enteros, 2 decimales, siempre mayor que cero. El monto máximo por transacción 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 origina la transacción. Ver Tablas de referencia: "Valores para el campo personType". lista SI
document objeto N/A N/A SI
number cadena Número de identificación del ordenante del pago. Solo números, si el campo type es NIT. El valor no debe superar los 9 dígitos y sin caracteres especiales. entero SI
type lista Tipo de identificación del ordenante del pago. Ver Tablas de referencia: "Tipos 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
accountInformation objeto N/A N/A SI
accountId cadena Número de cuenta del origen de la transacción. Tomar la parte en negrilla: svgs:20753228543@bancorojo.com.co Min 1 Max 34 SI
accountType lista Tipo de cuenta del origen de la transacción. Traducir de la tabla la parte en negrilla: svgs:20753228543@bancorojo.com.co lista SI
financialInstitutionId entero Identificador de la entidad origen. Número NIT sin dígito de verificación y sin caracteres especiales. Min 1 Max 9 SI
target objeto N/A N/A SI
personType lista Tipo de persona beneficiaria de la transacción. Ver Tablas de referencia: "Valores para el campo personType". lista SI
document Objeto N/A N/A SI
number cadena Número de identificación del beneficiario del pago. Solo números, si el campo type es NIT. El valor no debe superar los 9 dígitos y sin caracteres especiales. entero SI
type lista Tipo de identificación del beneficiario del pago. Ver Tablas de referencia: "Tipos 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
accountInformation objeto N/A N/A SI
accountId cadena Número de cuenta del beneficiario de la transacción. Tomar la parte en negrilla: svgs:20753228543@bancorojo.com.co Min 1 Max 34 SI
accountType lista Tipo de cuenta del beneficiario de la transacción. Traducir de la tabla la parte en negrilla: svgs:20753228543@bancorojo.com.co lista SI
financialInstitutionId entero Identificador de la entidad destino. Número NIT sin dígito de verificación y sin caracteres especiales. Min 1 Max 9 SI

Request abort del debit

curl --location 'https://url_participante/v1/debits/{idDebit}/commit' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiJkZW1vLXVzdWFyaW8iLCJyb2xlIjoiYXBwLXRlc3QiLCJpYXQiOjE3MDAwMDAwMDAsImV4cCI6MTcwMDA4NjQwMH0.abc123xyz987fakeSignatureOnlyForDemoPurposes' \
--data '{...}'
{
  "meta": {
    "id": "debf4f70-c30d-4f27-95e6-2f96b91c0001",
    "status": "abort"
  },
  "data": {
    "debitId": "9d2f9ed9-7fdb-4d3b-a7bf-8cd1a8e50001",
    "movementType": "B2P-TRANSFER",
    "amountInformation": {
      "amount": 2500000.00,
      "currency": "COP"
    },
    "source": {
      "personType": "LEGAL",
      "document": {
        "number": "900123456",
        "type": "NIT"
      },
      "fullName": "COMERCIALIZADORA ABC SAS",
      "accountInformation": {
        "accountId": "200012345678",
        "accountType": "CCTE",
        "financialInstitutionId": 900123456
      }
    },
    "target": {
      "personType": "NATURAL",
      "document": {
        "number": "1020304050",
        "type": "CC"
      },
      "firstName": "CARLOS",
      "firstLastName": "RAMIREZ",
      "accountInformation": {
        "accountId": "3001234567",
        "accountType": "CAHO",
        "financialInstitutionId": 860987654
      }
    }
  }
}

Response abort del débito

HTTP/1.1 200 OK
Content-Length: 0

6. Confirma rechazo de la preparación débito

La Entidad Participante confirma que procesó el rechazo de la transferencia consumiendo el servicio v1/money-movement/transfers/{id}/status con el estado "aborted".

Dominio: https://bank.apihub.crt.achcolombia.com.co
POST v1/money-movement/transfers/{id}/status

Campos de entrada rechazo de la preparación débito

Campos de entrada rechazo de la preparación débito (header)

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

Campos de entrada confirmación del débito (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 N/A SI
data objeto N/A N/A SI
movementType lista Identificador del schema del flujo transaccional.
Ver Tablas de referencia: "Valores para el campo movementType".
Lista SI
status cadena Estado de la transacción.
Ver Tablas de referencia: "Estados de las transacciones".
Lista SI
creationDateTime fecha Momento en el que se confirma la preparación del débito o crédito N/A SI
debitId cadena Identificador del debit prepare, el banco debe enviar el valor que corresponde a la transferencias. Este valor fue entregado por ACH En-línea en el llamado al endpoint /v1/debits. Min 1 Max 36 COND
Si la acción es un débito se debe informar este campo
coreId cadena Identificador interno del banco para la preparación del débito o crédito. Min 1 Max 255 SI
custom objeto N/A N/A COND
Si el status = failed o aborted. Se debe informar este objeto con sus campos.
error subobjeto N/A N/A COND
code cadena Identificador del error. Ver tabla "VALORES PARA EL CAMPO CODE DEL STATUS". Min 1 Max 36 COND
description cadena Descripción del error. Min 1 Max 255 COND

Request confirmación de preparación del débito

curl --location 'https://url_ach/v1/money-movement/transfers/{id}/status' \
--header 'x-hash: 695ffdf84f0dad0c19e3b8b09a4565246c156d747ffb26149e4c2dc5d3b66ca1' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiJkZW1vLXVzdWFyaW8iLCJyb2xlIjoiYXBwLXRlc3QiLCJpYXQiOjE3MDAwMDAwMDAsImV4cCI6MTcwMDA4NjQwMH0.abc123xyz987fakeSignatureOnlyForDemoPurposes' \
--data '{...}'
{
  "meta": {
    "requestId": "550e8400-e29b-41d4-a716-446655440000",
    "version": "1.0.0",
    "timestamp": "2026-08-20T14:30:00-05:00"
  },
  "data": {
    "movementType": "P2P-TRANSFER",
    "status": "aborted",
    "creationDateTime": "2026-08-20T14:35:20-05:00",
    "debitId": "dbt-3f8d8b9a-1234-4567-89ab-123456789abc",
    "coreId": "CORE-987654321"
  }
}

Response confirmación preparación débito

HTTP/1.1 200 OK 
Content-Length: 0

7. Confirma preparación del débito (Happy path)

La Entidad Participante envía la confirmación de la preparación del débito a ACH En Línea. Solicitud POST al endpoint v1/money-movement/transfers/{id}/status con el estado "prepared"

Dominio: https://bank.apihub.crt.achcolombia.com.co
POST v1/money-movement/transfers/{id}/status

Campos de entrada confirmación preparación débito

Campos de entrada confirmación de preparación del débito (header)

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

Campos de entrada confirmación del débito (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 N/A SI
data objeto N/A N/A SI
movementType lista Identificador del schema del flujo transaccional.
Ver Tablas de referencia: "Valores para el campo movementType".
Lista SI
status cadena Estado de la transacción.
Ver Tablas de referencia: "Estados de las transacciones".
Lista SI
creationDateTime fecha Momento en el que se confirma la preparación del débito o crédito N/A SI
debitId cadena Identificador del debit prepare, el banco debe enviar el valor que corresponde a la transferencias. Este valor fue entregado por ACH En-línea en el llamado al endpoint /v1/debits. Min 1 Max 36 COND
Si la acción es un débito se debe informar este campo
coreId cadena Identificador interno del banco para la preparación del débito o crédito. Min 1 Max 255 SI
custom objeto N/A N/A COND
Si el status = failed o aborted. Se debe informar este objeto con sus campos.
error subobjeto N/A N/A COND
code cadena Identificador del error. Ver tabla "VALORES PARA EL CAMPO CODE DEL STATUS". Min 1 Max 36 COND
description cadena Descripción del error. Min 1 Max 255 COND

Request confirmación de preparación del débito

curl --location 'https://url_ach/v1/money-movement/transfers/{id}/status' \
--header 'x-hash: 695ffdf84f0dad0c19e3b8b09a4565246c156d747ffb26149e4c2dc5d3b66ca1' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiJkZW1vLXVzdWFyaW8iLCJyb2xlIjoiYXBwLXRlc3QiLCJpYXQiOjE3MDAwMDAwMDAsImV4cCI6MTcwMDA4NjQwMH0.abc123xyz987fakeSignatureOnlyForDemoPurposes' \
--data '{...}'
{
  "meta": {
    "requestId": "550e8400-e29b-41d4-a716-446655440000",
    "version": "1.0.0",
    "timestamp": "2026-08-20T14:30:00-05:00"
  },
  "data": {
    "movementType": "P2P-TRANSFER",
    "status": "prepared",
    "creationDateTime": "2026-08-20T14:35:20-05:00",
    "debitId": "dbt-3f8d8b9a-1234-4567-89ab-123456789abc",
    "coreId": "CORE-987654321"
  }
}

Response confirmación preparación débito

HTTP/1.1 200 OK 
Content-Length: 0

8. ACH En Línea llama al banco origen para procesar la operación commit del débito

ACH En Línea ejecuta la solicitud POST al endpoint v1/debits/{idDebit}/commit (status: commit) del banco origen para dejar en firme el débito al usuario.

Dominio: URL Base Entidad
POST v1/debits/{idDebit}/commit

Campos de entrada commit debit

Campo Tipo Validación Longitud Obligatoriedad
meta objeto N/A N/A SI
id cadena Identificador único de la transacción. Min 1 Max 36 SI
status cadena Estado de la transacción. Ver Tablas de referencia: "Estados de las transacciones". Min 1 Max 8 SI
data objeto N/A N/A SI
debitId cadena Identificador del debit prepare, el banco debe guardar este valor. Min 1 Max 36 SI
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 transacción. 13 enteros, 2 decimales, siempre mayor que cero. El monto máximo por transacción 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 origina la transacción. Ver Tablas de referencia: "Valores para el campo personType". lista SI
document objeto N/A N/A SI
number cadena Número de identificación del ordenante del pago. Solo números, si el campo type es NIT. El valor no debe superar los 9 dígitos y sin caracteres especiales. entero SI
type lista Tipo de identificación del ordenante del pago. Ver Tablas de referencia: "Tipos 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
accountInformation objeto N/A N/A SI
accountId cadena Número de cuenta del origen de la transacción. Tomar la parte en negrilla: svgs:20753228543@bancorojo.com.co Min 1 Max 34 SI
accountType lista Tipo de cuenta del origen de la transacción. Traducir de la tabla la parte en negrilla: svgs:20753228543@bancorojo.com.co lista SI
financialInstitutionId entero Identificador de la entidad origen. Número NIT sin dígito de verificación y sin caracteres especiales. Min 1 Max 9 SI
target objeto N/A N/A SI
personType lista Tipo de persona beneficiaria de la transacción. Ver Tablas de referencia: "Valores para el campo personType". lista SI
document Objeto N/A N/A SI
number cadena Número de identificación del beneficiario del pago. Solo números, si el campo type es NIT. El valor no debe superar los 9 dígitos y sin caracteres especiales. entero SI
type lista Tipo de identificación del beneficiario del pago. Ver Tablas de referencia: "Tipos 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
accountInformation objeto N/A N/A SI
accountId cadena Número de cuenta del beneficiario de la transacción. Tomar la parte en negrilla: svgs:20753228543@bancorojo.com.co Min 1 Max 34 SI
accountType lista Tipo de cuenta del beneficiario de la transacción. Traducir de la tabla la parte en negrilla: svgs:20753228543@bancorojo.com.co lista SI
financialInstitutionId entero Identificador de la entidad destino. Número NIT sin dígito de verificación y sin caracteres especiales. Min 1 Max 9 SI

Request commit debit

curl --location 'https://url_participante/v1/debits/{idDebit}/commit' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiJkZW1vLXVzdWFyaW8iLCJyb2xlIjoiYXBwLXRlc3QiLCJpYXQiOjE3MDAwMDAwMDAsImV4cCI6MTcwMDA4NjQwMH0.abc123xyz987fakeSignatureOnlyForDemoPurposes' \
--data '{...}'
{
  "meta": {
    "id": "debf4f70-c30d-4f27-95e6-2f96b91c0001",
    "status": "commit"
  },
  "data": {
    "debitId": "9d2f9ed9-7fdb-4d3b-a7bf-8cd1a8e50001",
    "movementType": "B2P-TRANSFER",
    "amountInformation": {
      "amount": 2500000.00,
      "currency": "COP"
    },
    "source": {
      "personType": "LEGAL",
      "document": {
        "number": "900123456",
        "type": "NIT"
      },
      "fullName": "COMERCIALIZADORA ABC SAS",
      "accountInformation": {
        "accountId": "200012345678",
        "accountType": "CCTE",
        "financialInstitutionId": 900123456
      }
    },
    "target": {
      "personType": "NATURAL",
      "document": {
        "number": "1020304050",
        "type": "CC"
      },
      "firstName": "CARLOS",
      "firstLastName": "RAMIREZ",
      "accountInformation": {
        "accountId": "3001234567",
        "accountType": "CAHO",
        "financialInstitutionId": 860987654
      }
    }
  }
}

Response commit del débito

HTTP/1.1 200 OK
Content-Length: 0

9. Confirma commit del débito

La Entidad Participante envía la confirmación del commit del débito a ACH En Línea. Solicitud POST al endpoint v1/money-movement/transfers/{id}/status con status:comited

Dominio: https://bank.apihub.crt.achcolombia.com.co
POST v1/money-movement/transfers/{id}/status

Campos de entrada confirmación del commit débito

Campos de entrada confirmación del commit del débito (header)

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

Campos de entrada confirmación del commit débito (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 N/A SI
data objeto N/A N/A SI
movementType lista Identificador del schema del flujo transaccional.
Ver Tablas de referencia: "Valores para el campo movementType".
Lista SI
status cadena Estado de la transacción.
Ver Tablas de referencia: "Estados de las transacciones".
Lista SI
creationDateTime fecha Momento en el que se confirma la preparación del débito o crédito N/A SI
debitId cadena Identificador del debit prepare, el banco debe enviar el valor que corresponde a la transferencias. Este valor fue entregado por ACH En-línea en el llamado al endpoint /v1/debits. Min 1 Max 36 COND
Si la acción es un débito se debe informar este campo
coreId cadena Identificador interno del banco para la preparación del débito o crédito. Min 1 Max 255 SI
custom objeto N/A N/A COND
Si el status = failed o aborted. Se debe informar este objeto con sus campos.
error subobjeto N/A N/A COND
code cadena Identificador del error. Ver tabla "VALORES PARA EL CAMPO CODE DEL STATUS". Min 1 Max 36 COND
description cadena Descripción del error. Min 1 Max 255 COND

Request confirmación del commit del débito

curl --location 'https://url_ach/v1/money-movement/transfers/{id}/status' \
--header 'x-hash: 695ffdf84f0dad0c19e3b8b09a4565246c156d747ffb26149e4c2dc5d3b66ca1' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiJkZW1vLXVzdWFyaW8iLCJyb2xlIjoiYXBwLXRlc3QiLCJpYXQiOjE3MDAwMDAwMDAsImV4cCI6MTcwMDA4NjQwMH0.abc123xyz987fakeSignatureOnlyForDemoPurposes' \
--data '{...}'
{
  "meta": {
    "requestId": "550e8400-e29b-41d4-a716-446655440000",
    "version": "1.0.0",
    "timestamp": "2026-08-20T14:30:00-05:00"
  },
  "data": {
    "movementType": "P2P-TRANSFER",
    "status": "comited",
    "creationDateTime": "2026-08-20T14:35:20-05:00",
    "debitId": "dbt-3f8d8b9a-1234-4567-89ab-123456789abc",
    "coreId": "CORE-987654321"
  }
}

Response confirmación del commit débito

HTTP/1.1 200 OK
Content-Length: 0

10. Notificación estado final

ACH En-línea confirma el estado final de la transferencia tanto a la Entidad Participante Origen como a la Entidad Participante Receptora

Dominio: URL Base entidad
PUT /v1/transfers/{id}

Campos de entrada notificación estado final

Campo Tipo Validación Descripción Obligatoriedad
data objeto N/A N/A SI
id cadena Identificador único de la transacción Min 1 Max 36 SI
status cadena Estado de la transacción.
Ver Tablas de referencia: "Estados de las transacciones".
Para estados finales, los valores serán:
completed
rejected
SI
creationDateTime fecha Momento de la respuesta al participante N/A SI
movementType lista Identificador del schema del flujo transaccional.
Ver Tablas de referencia: "Valores para el campo movementType".
Lista SI

Request notificación estado final

{
  "data": {
    "id": "550e8400-e29b-41d4-a716-446655440000",
    "status": "completed",
    "creationDateTime": "2026-08-21T10:15:30-05:00",
    "movementType": "P2P-TRANSFER"
  }
}

Response notificación estado final

HTTP/1.1 200 OK
Content-Length: 0
Orderarticle 3
Cómo enviar cuenta a cuenta Anterior